Logo ROOT  
Reference Guide
PyStrings.cxx
Go to the documentation of this file.
1 // Bindings
2 #include "CPyCppyy.h"
3 #include "PyStrings.h"
4 
5 
6 //- data _____________________________________________________________________
30 
32 
37 
40 
49 
52 
54 
56 
59 
60 
61 //-----------------------------------------------------------------------------
62 #define CPPYY_INITIALIZE_STRING(var, str) \
63  if (!(PyStrings::var = CPyCppyy_PyText_InternFromString((char*)#str))) \
64  return false
65 
67 // Build cache of commonly used python strings (the cache is python intern, so
68 // all strings are shared python-wide, not just in cppyy).
69  CPPYY_INITIALIZE_STRING(gAssign, __assign__);
70  CPPYY_INITIALIZE_STRING(gBases, __bases__);
71  CPPYY_INITIALIZE_STRING(gBase, __base__);
72  CPPYY_INITIALIZE_STRING(gCppName, __cpp_name__);
73  CPPYY_INITIALIZE_STRING(gDeref, __deref__);
74  CPPYY_INITIALIZE_STRING(gPreInc, __preinc__);
75  CPPYY_INITIALIZE_STRING(gPostInc, __postinc__);
76  CPPYY_INITIALIZE_STRING(gDict, __dict__);
78  return false;
80  CPPYY_INITIALIZE_STRING(gFollow, __follow__);
81  CPPYY_INITIALIZE_STRING(gGetItem, __getitem__);
82  CPPYY_INITIALIZE_STRING(gGetNoCheck, _getitem__unchecked);
83  CPPYY_INITIALIZE_STRING(gInit, __init__);
84  CPPYY_INITIALIZE_STRING(gIter, __iter__);
85  CPPYY_INITIALIZE_STRING(gLen, __len__);
87  CPPYY_INITIALIZE_STRING(gModule, __module__);
88  CPPYY_INITIALIZE_STRING(gMRO, __mro__);
89  CPPYY_INITIALIZE_STRING(gName, __name__);
93 
94  CPPYY_INITIALIZE_STRING(gUnderlying, __underlying);
95 
96  CPPYY_INITIALIZE_STRING(gAdd, __add__);
97  CPPYY_INITIALIZE_STRING(gSub, __sub__);
98  CPPYY_INITIALIZE_STRING(gMul, __mul__);
100 
101  CPPYY_INITIALIZE_STRING(gLShift, __lshift__);
102  CPPYY_INITIALIZE_STRING(gLShiftC, __lshiftc__);
103 
111  CPPYY_INITIALIZE_STRING(gVectorAt, _vector__at);
112 
113  CPPYY_INITIALIZE_STRING(gCppReal, __cpp_real);
114  CPPYY_INITIALIZE_STRING(gCppImag, __cpp_imag);
115 
117 
118  CPPYY_INITIALIZE_STRING(gNoImplicit, __cppyy_no_implicit);
119 
120  CPPYY_INITIALIZE_STRING(gExPythonize, __cppyy_explicit_pythonize__);
121  CPPYY_INITIALIZE_STRING(gPythonize, __cppyy_pythonize__);
122 
123  return true;
124 }
125 
126 
127 //-----------------------------------------------------------------------------
129 // Remove all cached python strings.
130  Py_DECREF(PyStrings::gBases); PyStrings::gBases = nullptr;
131  Py_DECREF(PyStrings::gBase); PyStrings::gBase = nullptr;
132  Py_DECREF(PyStrings::gCppName); PyStrings::gCppName = nullptr;
133  Py_DECREF(PyStrings::gDeref); PyStrings::gDeref = nullptr;
134  Py_DECREF(PyStrings::gPreInc); PyStrings::gPreInc = nullptr;
135  Py_DECREF(PyStrings::gPostInc); PyStrings::gPostInc = nullptr;
136  Py_DECREF(PyStrings::gDict); PyStrings::gDict = nullptr;
137  Py_DECREF(PyStrings::gEmptyString); PyStrings::gEmptyString = nullptr;
138  Py_DECREF(PyStrings::gEq); PyStrings::gEq = nullptr;
139  Py_DECREF(PyStrings::gFollow); PyStrings::gFollow = nullptr;
140  Py_DECREF(PyStrings::gGetItem); PyStrings::gGetItem = nullptr;
141  Py_DECREF(PyStrings::gGetNoCheck); PyStrings::gGetNoCheck = nullptr;
142  Py_DECREF(PyStrings::gInit); PyStrings::gInit = nullptr;
143  Py_DECREF(PyStrings::gIter); PyStrings::gIter = nullptr;
144  Py_DECREF(PyStrings::gLen); PyStrings::gLen = nullptr;
145  Py_DECREF(PyStrings::gLifeLine); PyStrings::gLifeLine = nullptr;
146  Py_DECREF(PyStrings::gModule); PyStrings::gModule = nullptr;
147  Py_DECREF(PyStrings::gMRO); PyStrings::gMRO = nullptr;
148  Py_DECREF(PyStrings::gName); PyStrings::gName = nullptr;
149  Py_DECREF(PyStrings::gNe); PyStrings::gNe = nullptr;
150  Py_DECREF(PyStrings::gTypeCode); PyStrings::gTypeCode = nullptr;
151  Py_DECREF(PyStrings::gCTypesType); PyStrings::gCTypesType = nullptr;
152 
153  Py_DECREF(PyStrings::gUnderlying); PyStrings::gUnderlying = nullptr;
154 
155  Py_DECREF(PyStrings::gAdd); PyStrings::gAdd = nullptr;
156  Py_DECREF(PyStrings::gSub); PyStrings::gSub = nullptr;
157  Py_DECREF(PyStrings::gMul); PyStrings::gMul = nullptr;
158  Py_DECREF(PyStrings::gDiv); PyStrings::gDiv = nullptr;
159 
160  Py_DECREF(PyStrings::gLShift); PyStrings::gLShift = nullptr;
161  Py_DECREF(PyStrings::gLShiftC); PyStrings::gLShiftC = nullptr;
162 
163  Py_DECREF(PyStrings::gAt); PyStrings::gAt = nullptr;
164  Py_DECREF(PyStrings::gBegin); PyStrings::gBegin = nullptr;
165  Py_DECREF(PyStrings::gEnd); PyStrings::gEnd = nullptr;
166  Py_DECREF(PyStrings::gFirst); PyStrings::gFirst = nullptr;
167  Py_DECREF(PyStrings::gSecond); PyStrings::gSecond = nullptr;
168  Py_DECREF(PyStrings::gSize); PyStrings::gSize = nullptr;
169  Py_DECREF(PyStrings::gTemplate); PyStrings::gTemplate = nullptr;
170  Py_DECREF(PyStrings::gVectorAt); PyStrings::gVectorAt = nullptr;
171 
172  Py_DECREF(PyStrings::gCppReal); PyStrings::gCppReal = nullptr;
173  Py_DECREF(PyStrings::gCppImag); PyStrings::gCppImag = nullptr;
174 
175  Py_DECREF(PyStrings::gThisModule); PyStrings::gThisModule = nullptr;
176 
177  Py_DECREF(PyStrings::gNoImplicit); PyStrings::gNoImplicit = nullptr;
178 
179  Py_DECREF(PyStrings::gExPythonize); PyStrings::gExPythonize = nullptr;
180  Py_DECREF(PyStrings::gPythonize); PyStrings::gPythonize = nullptr;
181 
183 }
CPyCppyy::PyStrings::gTemplate
PyObject * gTemplate
Definition: PyStrings.cxx:47
CPyCppyy::PyStrings::gGetNoCheck
PyObject * gGetNoCheck
Definition: PyStrings.cxx:19
first
Definition: first.py:1
CPyCppyy::PyStrings::gDict
PyObject * gDict
Definition: PyStrings.cxx:14
CPyCppyy::PyStrings::gCTypesType
PyObject * gCTypesType
Definition: PyStrings.cxx:29
CPyCppyy::PyStrings::gModule
R__EXTERN PyObject * gModule
Definition: TPython.cxx:104
CPyCppyy::PyStrings::gEq
PyObject * gEq
Definition: PyStrings.cxx:16
PyObject
_object PyObject
Definition: PyMethodBase.h:42
CPyCppyy::PyStrings::gSize
PyObject * gSize
Definition: PyStrings.cxx:46
CPyCppyy::PyStrings::gDiv
PyObject * gDiv
Definition: PyStrings.cxx:36
CPyCppyy::PyStrings::gEmptyString
PyObject * gEmptyString
Definition: PyStrings.cxx:15
CPyCppyy::PyStrings::gLen
PyObject * gLen
Definition: PyStrings.cxx:22
CPyCppyy::PyStrings::gTypeCode
PyObject * gTypeCode
Definition: PyStrings.cxx:28
CPyCppyy::PyStrings::gCppReal
PyObject * gCppReal
Definition: PyStrings.cxx:50
CPyCppyy::PyStrings::gLifeLine
PyObject * gLifeLine
Definition: PyStrings.cxx:23
CPyCppyy::PyStrings::gPreInc
PyObject * gPreInc
Definition: PyStrings.cxx:12
CPyCppyy::PyStrings::gAdd
PyObject * gAdd
Definition: PyStrings.cxx:33
CPyCppyy::PyStrings::gBegin
PyObject * gBegin
Definition: PyStrings.cxx:42
CPyCppyy::PyStrings::gUnderlying
PyObject * gUnderlying
Definition: PyStrings.cxx:31
CPyCppyy::PyStrings::gSecond
PyObject * gSecond
Definition: PyStrings.cxx:45
CPyCppyy::PyStrings::gExPythonize
PyObject * gExPythonize
Definition: PyStrings.cxx:57
CPyCppyy::PyStrings::gMRO
PyObject * gMRO
Definition: PyzPythonHelpers.cxx:46
CPyCppyy::CreatePyStrings
bool CreatePyStrings()
Definition: PyStrings.cxx:66
CPyCppyy_PyText_FromString
#define CPyCppyy_PyText_FromString
Definition: CPyCppyy.h:102
CPyCppyy::PyStrings::gInit
PyObject * gInit
Definition: PyStrings.cxx:20
CPyCppyy::PyStrings::gCppImag
PyObject * gCppImag
Definition: PyStrings.cxx:51
CPyCppyy::PyStrings::gVectorAt
PyObject * gVectorAt
Definition: PyStrings.cxx:48
CPyCppyy::PyStrings::gPostInc
PyObject * gPostInc
Definition: PyStrings.cxx:13
CPyCppyy::PyStrings::gGetItem
PyObject * gGetItem
Definition: PyStrings.cxx:18
CPyCppyy::PyStrings::gPythonize
PyObject * gPythonize
Definition: PyStrings.cxx:58
CPyCppyy::PyStrings::gNoImplicit
PyObject * gNoImplicit
Definition: PyStrings.cxx:55
CPyCppyy::PyStrings::gFirst
PyObject * gFirst
Definition: PyStrings.cxx:44
CPyCppyy::PyStrings::gLShiftC
PyObject * gLShiftC
Definition: PyStrings.cxx:39
CPyCppyy::PyStrings::gCppName
R__EXTERN PyObject * gCppName
Definition: TPython.cxx:103
CPyCppyy::PyStrings::gAt
PyObject * gAt
Definition: PyStrings.cxx:41
CPyCppyy::PyStrings::gBases
R__EXTERN PyObject * gBases
Definition: TPyClassGenerator.cxx:34
CPyCppyy::PyStrings::gLShift
PyObject * gLShift
Definition: PyStrings.cxx:38
CPPYY__div__
#define CPPYY__div__
Definition: CPyCppyy.h:130
CPyCppyy::PyStrings::gBase
PyObject * gBase
Definition: PyStrings.cxx:9
CPyCppyy.h
CPyCppyy::PyStrings::gAssign
PyObject * gAssign
Definition: PyStrings.cxx:7
CPyCppyy::PyStrings::gName
R__EXTERN PyObject * gName
Definition: TPython.cxx:105
CPyCppyy::PyStrings::gThisModule
PyObject * gThisModule
Definition: PyStrings.cxx:53
CPPYY_INITIALIZE_STRING
#define CPPYY_INITIALIZE_STRING(var, str)
Definition: PyStrings.cxx:62
CPyCppyy::PyStrings::gSub
PyObject * gSub
Definition: PyStrings.cxx:34
CPyCppyy::PyStrings::gNe
PyObject * gNe
Definition: PyStrings.cxx:27
CPyCppyy::PyStrings::gDeref
PyObject * gDeref
Definition: PyStrings.cxx:11
CPyCppyy::PyStrings::gMul
PyObject * gMul
Definition: PyStrings.cxx:35
CPyCppyy::PyStrings::gFollow
PyObject * gFollow
Definition: PyStrings.cxx:17
CPyCppyy::DestroyPyStrings
PyObject * DestroyPyStrings()
Definition: PyStrings.cxx:128
TGeant4Unit::second
static constexpr double second
Definition: TGeant4SystemOfUnits.h:157
CPyCppyy::gThisModule
R__EXTERN PyObject * gThisModule
Definition: TPython.cxx:100
CPyCppyy::PyStrings::gEnd
PyObject * gEnd
Definition: PyStrings.cxx:43
CPyCppyy::PyStrings::gIter
PyObject * gIter
Definition: PyStrings.cxx:21
PyStrings.h
Py_RETURN_NONE
#define Py_RETURN_NONE
Definition: CPyCppyy.h:281