~neon/kross-interpreters/master

« back to all changes in this revision

Viewing changes to python/cxx/Config.hxx

  • Committer: Pino Toscano
  • Date: 2019-02-08 22:22:55 UTC
  • Revision ID: git-v1:d350f27d49881c96f676e1d205877c03be0a4a7d
python: bump PyCXX to 7.1.0

Bump the embedded copy of PyCXX to 7.1.0, using only the Python2 sources
with a layout that matches the upstream sources (and thus it is easier
to build the sources with no changes).

Adapt krosspython to the new PyCXX:
- adjust the paths to sources, and to includes to the new layout of the
  files
- build the new cxx_exceptions.cxx
- build with -DPYCXX_PYTHON_2TO3 to use all the compatibility functions
  not available in Python 3
- build the C sources as C99, as they use C99 features
- explicitly use PyCxx_ssize_t as type for a couple of methods, instead
  of 'int' used by old versions
- unambiguate one Py::MethodDefExt constructor call

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
//-----------------------------------------------------------------------------
2
 
//
3
 
// Copyright (c) 1998 - 2007, The Regents of the University of California
4
 
// Produced at the Lawrence Livermore National Laboratory
5
 
// All rights reserved.
6
 
//
7
 
// This file is part of PyCXX. For details,see http://cxx.sourceforge.net/. The
8
 
// full copyright notice is contained in the file COPYRIGHT located at the root
9
 
// of the PyCXX distribution.
10
 
//
11
 
// Redistribution  and  use  in  source  and  binary  forms,  with  or  without
12
 
// modification, are permitted provided that the following conditions are met:
13
 
//
14
 
//  - Redistributions of  source code must  retain the above  copyright notice,
15
 
//    this list of conditions and the disclaimer below.
16
 
//  - Redistributions in binary form must reproduce the above copyright notice,
17
 
//    this  list of  conditions  and  the  disclaimer (as noted below)  in  the
18
 
//    documentation and/or materials provided with the distribution.
19
 
//  - Neither the name of the UC/LLNL nor  the names of its contributors may be
20
 
//    used to  endorse or  promote products derived from  this software without
21
 
//    specific prior written permission.
22
 
//
23
 
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT  HOLDERS AND CONTRIBUTORS "AS IS"
24
 
// AND ANY EXPRESS OR  IMPLIED WARRANTIES, INCLUDING,  BUT NOT  LIMITED TO, THE
25
 
// IMPLIED WARRANTIES OF MERCHANTABILITY AND  FITNESS FOR A PARTICULAR  PURPOSE
26
 
// ARE  DISCLAIMED.  IN  NO  EVENT  SHALL  THE  REGENTS  OF  THE  UNIVERSITY OF
27
 
// CALIFORNIA, THE U.S.  DEPARTMENT  OF  ENERGY OR CONTRIBUTORS BE  LIABLE  FOR
28
 
// ANY  DIRECT,  INDIRECT,  INCIDENTAL,  SPECIAL,  EXEMPLARY,  OR CONSEQUENTIAL
29
 
// DAMAGES (INCLUDING, BUT NOT  LIMITED TO, PROCUREMENT OF  SUBSTITUTE GOODS OR
30
 
// SERVICES; LOSS OF  USE, DATA, OR PROFITS; OR  BUSINESS INTERRUPTION) HOWEVER
31
 
// CAUSED  AND  ON  ANY  THEORY  OF  LIABILITY,  WHETHER  IN  CONTRACT,  STRICT
32
 
// LIABILITY, OR TORT  (INCLUDING NEGLIGENCE OR OTHERWISE)  ARISING IN ANY  WAY
33
 
// OUT OF THE  USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
34
 
// DAMAGE.
35
 
//
36
 
//-----------------------------------------------------------------------------
37
 
 
38
 
#ifndef __PyCXX_config_hh__
39
 
#define __PyCXX_config_hh__
40
 
 
41
 
//
42
 
// Microsoft VC++ 6.0 has no traits
43
 
//
44
 
#if defined( _MSC_VER )
45
 
 
46
 
#  define STANDARD_LIBRARY_HAS_ITERATOR_TRAITS 1
47
 
 
48
 
#elif defined( __GNUC__ )
49
 
#  if __GNUC__ >= 3
50
 
#    define STANDARD_LIBRARY_HAS_ITERATOR_TRAITS 1
51
 
#  else
52
 
#    define STANDARD_LIBRARY_HAS_ITERATOR_TRAITS 0
53
 
#endif
54
 
 
55
 
//
56
 
//      Assume all other compilers do
57
 
//
58
 
#else
59
 
 
60
 
// Macros to deal with deficiencies in compilers
61
 
#  define STANDARD_LIBRARY_HAS_ITERATOR_TRAITS 1
62
 
#endif
63
 
 
64
 
#if STANDARD_LIBRARY_HAS_ITERATOR_TRAITS
65
 
#  define random_access_iterator_parent(itemtype) std::iterator<std::random_access_iterator_tag,itemtype,int>
66
 
#else
67
 
#  define random_access_iterator_parent(itemtype) std::random_access_iterator<itemtype, int>
68
 
#endif
69
 
 
70
 
//
71
 
//      Which C++ standard is in use?
72
 
//
73
 
#if defined( _MSC_VER )
74
 
#  if _MSC_VER <= 1200
75
 
// MSVC++ 6.0
76
 
#    define PYCXX_ISO_CPP_LIB 0
77
 
#    define STR_STREAM <strstream>
78
 
#    define TEMPLATE_TYPENAME class
79
 
#  else
80
 
#    define PYCXX_ISO_CPP_LIB 1
81
 
#    define STR_STREAM <sstream>
82
 
#    define TEMPLATE_TYPENAME typename
83
 
#  endif
84
 
#elif defined( __GNUC__ )
85
 
#  if __GNUC__ >= 3
86
 
#    define PYCXX_ISO_CPP_LIB 1
87
 
#    define STR_STREAM <sstream>
88
 
#    define TEMPLATE_TYPENAME typename
89
 
#  else
90
 
#    define PYCXX_ISO_CPP_LIB 0
91
 
#    define STR_STREAM <strstream>
92
 
#    define TEMPLATE_TYPENAME class
93
 
#  endif
94
 
#endif
95
 
 
96
 
#if PYCXX_ISO_CPP_LIB
97
 
#    define STR_STREAM <sstream>
98
 
#    define OSTRSTREAM ostringstream
99
 
#    define EXPLICIT_TYPENAME typename
100
 
#    define EXPLICIT_CLASS class
101
 
#    define TEMPLATE_TYPENAME typename
102
 
#else
103
 
#    define STR_STREAM <strstream>
104
 
#    define OSTRSTREAM ostrstream
105
 
#    define EXPLICIT_TYPENAME
106
 
#    define EXPLICIT_CLASS
107
 
#    define TEMPLATE_TYPENAME class
108
 
#endif
109
 
 
110
 
// before 2.5 Py_ssize_t was missing
111
 
#ifndef PY_MAJOR_VERSION
112
 
#error not defined PY_MAJOR_VERSION
113
 
#endif
114
 
#if PY_MAJOR_VERSION < 2 || (PY_MAJOR_VERSION == 2 && PY_MINOR_VERSION < 5)
115
 
typedef int Py_ssize_t;
116
 
#endif
117
 
 
118
 
#endif //  __PyCXX_config_hh__