Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
py3Compat.h
Go to the documentation of this file.
1
//
2
// Copyright 2020 Pixar
3
//
4
// Licensed under the Apache License, Version 2.0 (the "Apache License")
5
// with the following modification; you may not use this file except in
6
// compliance with the Apache License and the following modification to it:
7
// Section 6. Trademarks. is deleted and replaced with:
8
//
9
// 6. Trademarks. This License does not grant permission to use the trade
10
// names, trademarks, service marks, or product names of the Licensor
11
// and its affiliates, except as required to comply with Section 4(c) of
12
// the License and to reproduce the content of the NOTICE file.
13
//
14
// You may obtain a copy of the Apache License at
15
//
16
// http://www.apache.org/licenses/LICENSE-2.0
17
//
18
// Unless required by applicable law or agreed to in writing, software
19
// distributed under the Apache License with the above modification is
20
// distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
21
// KIND, either express or implied. See the Apache License for the specific
22
// language governing permissions and limitations under the Apache License.
23
//
24
#ifndef PXR_BASE_TF_PY_3_COMPAT_H
25
#define PXR_BASE_TF_PY_3_COMPAT_H
26
29
30
#include "
pxr/pxr.h
"
31
32
#include "
pxr/base/tf/pySafePython.h
"
33
34
PXR_NAMESPACE_OPEN_SCOPE
35
36
// Python 3 migrating helpers:
37
#if PY_MAJOR_VERSION >= 3
38
39
// These flags are needed in python 2 only, stub them out in python 3.
40
// In python 3 this behavior is the default. See PEP-3118
41
#define TfPy_TPFLAGS_HAVE_NEWBUFFER 0
42
#define TfPy_TPFLAGS_HAVE_GETCHARBUFFER 0
43
44
#define TfPyString_Check(a) (PyBytes_Check(a) || PyUnicode_Check(a))
45
#define TfPyString_AsString PyUnicode_AsUTF8
46
47
// PyInt -> PyLong remapping
48
#define TfPyInt_Check PyLong_Check
49
// Note: Slightly different semantics, the macro does not do any error checking
50
#define TfPyInt_AS_LONG PyLong_AsLong
51
52
// Method and module names that are changed in python 3
53
#define TfPyIteratorNextMethodName "__next__"
54
#define TfPyClassMethodFuncName "__func__"
55
#define TfPyBoolBuiltinFuncName "__bool__"
56
#define TfPyBuiltinModuleName "builtins"
57
58
#else // Python 2
59
60
#define TfPy_TPFLAGS_HAVE_NEWBUFFER Py_TPFLAGS_HAVE_NEWBUFFER
61
#define TfPy_TPFLAGS_HAVE_GETCHARBUFFER Py_TPFLAGS_HAVE_GETCHARBUFFER
62
63
#define TfPyInt_Check PyInt_Check
64
#define TfPyInt_AS_LONG PyInt_AS_LONG
65
66
#define TfPyIteratorNextMethodName "next"
67
#define TfPyClassMethodFuncName "im_func"
68
#define TfPyBoolBuiltinFuncName "__nonzero__"
69
#define TfPyBuiltinModuleName "__builtin__"
70
71
#define TfPyString_AsString PyString_AsString
72
#define TfPyString_Check PyString_Check
73
74
#endif
75
76
PXR_NAMESPACE_CLOSE_SCOPE
77
78
#endif // PXR_BASE_TF_PY_3_COMPAT_H
79
pxr.h
pySafePython.h
Intended to replace a direct include of Python.h, which causes several build problems with certain co...
pxr
base
tf
py3Compat.h
Generated on Thu Jul 15 2021 00:08:58 by
1.8.5