You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and dots ('.'), can be up to 35 characters long. Letters must be lowercase.
		
		
		
		
		
			
		
			
				
					
					
						
							205 lines
						
					
					
						
							5.2 KiB
						
					
					
				
			
		
		
	
	
							205 lines
						
					
					
						
							5.2 KiB
						
					
					
				//  (C) Copyright David Abrahams 2000. | 
						|
// Distributed under the Boost Software License, Version 1.0. (See | 
						|
// accompanying file LICENSE_1_0.txt or copy at | 
						|
// http://www.boost.org/LICENSE_1_0.txt) | 
						|
// | 
						|
//  The author gratefully acknowleges the support of Dragon Systems, Inc., in | 
						|
//  producing this work. | 
						|
 | 
						|
//  This file serves as a wrapper around <Python.h> which allows it to be | 
						|
//  compiled with GCC 2.95.2 under Win32 and which disables the default MSVC | 
						|
//  behavior so that a program may be compiled in debug mode without requiring a | 
						|
//  special debugging build of the Python library. | 
						|
 | 
						|
 | 
						|
//  To use the Python debugging library, #define BOOST_DEBUG_PYTHON on the | 
						|
//  compiler command-line. | 
						|
 | 
						|
// Revision History: | 
						|
// 05 Mar 01  Suppress warnings under Cygwin with Python 2.0 (Dave Abrahams) | 
						|
// 04 Mar 01  Rolled in some changes from the Dragon fork (Dave Abrahams) | 
						|
// 01 Mar 01  define PyObject_INIT() for Python 1.x (Dave Abrahams) | 
						|
 | 
						|
#ifdef _DEBUG | 
						|
# ifndef BOOST_DEBUG_PYTHON | 
						|
#  ifdef _MSC_VER   | 
						|
    // VC8.0 will complain if system headers are #included both with | 
						|
    // and without _DEBUG defined, so we have to #include all the | 
						|
    // system headers used by pyconfig.h right here. | 
						|
#   include <stddef.h> | 
						|
#   include <stdarg.h> | 
						|
#   include <stdio.h> | 
						|
#   include <stdlib.h> | 
						|
#   include <assert.h> | 
						|
#   include <errno.h> | 
						|
#   include <ctype.h> | 
						|
#   include <wchar.h> | 
						|
#   include <basetsd.h> | 
						|
#   include <io.h> | 
						|
#   include <limits.h> | 
						|
#   include <float.h> | 
						|
#   include <string.h> | 
						|
#   include <math.h> | 
						|
#   include <time.h> | 
						|
#  endif | 
						|
#  undef _DEBUG // Don't let Python force the debug library just because we're debugging. | 
						|
#  define DEBUG_UNDEFINED_FROM_WRAP_PYTHON_H | 
						|
# endif | 
						|
#endif | 
						|
 | 
						|
# include <pyconfig.h> | 
						|
# if defined(_SGI_COMPILER_VERSION) && _SGI_COMPILER_VERSION >= 740 | 
						|
#  undef _POSIX_C_SOURCE | 
						|
#  undef _XOPEN_SOURCE | 
						|
#  undef HAVE_STDINT_H // undo Python 2.5.1 define | 
						|
# endif | 
						|
 | 
						|
// | 
						|
// Python's LongObject.h helpfully #defines ULONGLONG_MAX for us, | 
						|
// which confuses Boost's config | 
						|
// | 
						|
#include <limits.h> | 
						|
#ifndef ULONG_MAX | 
						|
# define BOOST_PYTHON_ULONG_MAX_UNDEFINED | 
						|
#endif | 
						|
#ifndef LONGLONG_MAX | 
						|
# define BOOST_PYTHON_LONGLONG_MAX_UNDEFINED | 
						|
#endif | 
						|
#ifndef ULONGLONG_MAX | 
						|
# define BOOST_PYTHON_ULONGLONG_MAX_UNDEFINED | 
						|
#endif | 
						|
 | 
						|
// | 
						|
// Get ahold of Python's version number | 
						|
// | 
						|
#include <patchlevel.h> | 
						|
 | 
						|
#if PY_MAJOR_VERSION<2 || PY_MAJOR_VERSION==2 && PY_MINOR_VERSION<2 | 
						|
#error Python 2.2 or higher is required for this version of Boost.Python. | 
						|
#endif | 
						|
 | 
						|
// | 
						|
// Some things we need in order to get Python.h to work with compilers other | 
						|
// than MSVC on Win32 | 
						|
// | 
						|
#if defined(_WIN32) || defined(__CYGWIN__) | 
						|
# if defined(__GNUC__) && defined(__CYGWIN__) | 
						|
 | 
						|
#  define SIZEOF_LONG 4 | 
						|
 | 
						|
#  if PY_MAJOR_VERSION < 2 || PY_MAJOR_VERSION == 2 && PY_MINOR_VERSION <= 2 | 
						|
 | 
						|
typedef int pid_t; | 
						|
 | 
						|
#   define WORD_BIT 32 | 
						|
#   define hypot _hypot | 
						|
#   include <stdio.h> | 
						|
 | 
						|
#   if PY_MAJOR_VERSION < 2 | 
						|
#    define HAVE_CLOCK | 
						|
#    define HAVE_STRFTIME | 
						|
#    define HAVE_STRERROR | 
						|
#   endif | 
						|
 | 
						|
#   define NT_THREADS | 
						|
 | 
						|
#   ifndef NETSCAPE_PI | 
						|
#    define USE_SOCKET | 
						|
#   endif | 
						|
 | 
						|
#   ifdef USE_DL_IMPORT | 
						|
#    define DL_IMPORT(RTYPE) __declspec(dllimport) RTYPE | 
						|
#   endif | 
						|
 | 
						|
#   ifdef USE_DL_EXPORT | 
						|
#    define DL_IMPORT(RTYPE) __declspec(dllexport) RTYPE | 
						|
#    define DL_EXPORT(RTYPE) __declspec(dllexport) RTYPE | 
						|
#   endif | 
						|
 | 
						|
#   define HAVE_LONG_LONG 1 | 
						|
#   define LONG_LONG long long | 
						|
#  endif | 
						|
 | 
						|
# elif defined(__MWERKS__) | 
						|
 | 
						|
#  ifndef _MSC_VER | 
						|
#   define PY_MSC_VER_DEFINED_FROM_WRAP_PYTHON_H 1 | 
						|
#   define _MSC_VER 900 | 
						|
#  endif | 
						|
 | 
						|
#  undef hypot // undo the evil #define left by Python. | 
						|
 | 
						|
# elif defined(__BORLANDC__) | 
						|
#  undef HAVE_HYPOT | 
						|
#  define HAVE_HYPOT 1 | 
						|
# endif | 
						|
 | 
						|
#endif // _WIN32 | 
						|
 | 
						|
#if PY_MAJOR_VERSION == 2 && PY_MINOR_VERSION == 2 && PY_MICRO_VERSION < 2 | 
						|
# include <boost/python/detail/python22_fixed.h> | 
						|
#else | 
						|
# include <Python.h> | 
						|
#endif | 
						|
 | 
						|
#ifdef BOOST_PYTHON_ULONG_MAX_UNDEFINED | 
						|
# undef ULONG_MAX | 
						|
# undef BOOST_PYTHON_ULONG_MAX_UNDEFINED | 
						|
#endif | 
						|
 | 
						|
#ifdef BOOST_PYTHON_LONGLONG_MAX_UNDEFINED | 
						|
# undef LONGLONG_MAX | 
						|
# undef BOOST_PYTHON_LONGLONG_MAX_UNDEFINED | 
						|
#endif | 
						|
 | 
						|
#ifdef BOOST_PYTHON_ULONGLONG_MAX_UNDEFINED | 
						|
# undef ULONGLONG_MAX | 
						|
# undef BOOST_PYTHON_ULONGLONG_MAX_UNDEFINED | 
						|
#endif | 
						|
 | 
						|
#ifdef PY_MSC_VER_DEFINED_FROM_WRAP_PYTHON_H | 
						|
# undef _MSC_VER | 
						|
#endif | 
						|
 | 
						|
#ifdef DEBUG_UNDEFINED_FROM_WRAP_PYTHON_H | 
						|
# undef DEBUG_UNDEFINED_FROM_WRAP_PYTHON_H | 
						|
# define _DEBUG | 
						|
# ifdef _CRT_NOFORCE_MANIFEST_DEFINED_FROM_WRAP_PYTHON_H | 
						|
#  undef _CRT_NOFORCE_MANIFEST_DEFINED_FROM_WRAP_PYTHON_H | 
						|
#  undef _CRT_NOFORCE_MANIFEST | 
						|
# endif | 
						|
#endif | 
						|
 | 
						|
#if !defined(PY_MAJOR_VERSION) || PY_MAJOR_VERSION < 2 | 
						|
# define PyObject_INIT(op, typeobj) \ | 
						|
        ( (op)->ob_type = (typeobj), _Py_NewReference((PyObject *)(op)), (op) ) | 
						|
#endif | 
						|
 | 
						|
// Define Python 3 macros for Python 2.x | 
						|
#if PY_VERSION_HEX < 0x02060000 | 
						|
 | 
						|
# define Py_TYPE(o)    (((PyObject*)(o))->ob_type) | 
						|
# define Py_REFCNT(o)  (((PyObject*)(o))->ob_refcnt) | 
						|
# define Py_SIZE(o)    (((PyVarObject*)(o))->ob_size) | 
						|
 | 
						|
# define PyVarObject_HEAD_INIT(type, size) \ | 
						|
        PyObject_HEAD_INIT(type) size, | 
						|
 | 
						|
#endif | 
						|
 | 
						|
 | 
						|
#ifdef __MWERKS__ | 
						|
# pragma warn_possunwant off | 
						|
#elif _MSC_VER | 
						|
# pragma warning(disable:4786) | 
						|
#endif | 
						|
 | 
						|
#if defined(HAVE_LONG_LONG) | 
						|
# if defined(PY_LONG_LONG) | 
						|
#  define BOOST_PYTHON_LONG_LONG PY_LONG_LONG | 
						|
# elif defined(LONG_LONG) | 
						|
#  define BOOST_PYTHON_LONG_LONG LONG_LONG | 
						|
# else | 
						|
#  error "HAVE_LONG_LONG defined but not PY_LONG_LONG or LONG_LONG" | 
						|
# endif | 
						|
#endif
 | 
						|
 |