Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
PyStrings.cxx
Go to the documentation of this file.
1// Bindings
2#include "cpyrt.h"
3
4using namespace cppjit;
5#include "PyStrings.h"
6
7//- data _____________________________________________________________________
43
46
51
54
67
70
72
75
78
82
83//-----------------------------------------------------------------------------
84#define CPPJIT_INITIALIZE_STRING(var, str) \
85 if (!(PyStrings::var = PyUnicode_InternFromString((char*)#str))) \
86 return false
87
89 // Build cache of commonly used python strings (the cache is python intern, so
90 // all strings are shared python-wide, not just in cppjit).
91 CPPJIT_INITIALIZE_STRING(gAssign, __assign__);
92 CPPJIT_INITIALIZE_STRING(gBases, __bases__);
93 CPPJIT_INITIALIZE_STRING(gBase, __base__);
94 CPPJIT_INITIALIZE_STRING(gContains, contains);
95 CPPJIT_INITIALIZE_STRING(gCopy, copy);
96 CPPJIT_INITIALIZE_STRING(gCppBool, __cpp_bool__);
97 CPPJIT_INITIALIZE_STRING(gCppName, __cpp_name__);
98 CPPJIT_INITIALIZE_STRING(gAnnotations, __annotations__);
99 CPPJIT_INITIALIZE_STRING(gCastCpp, __cast_cpp__);
100 CPPJIT_INITIALIZE_STRING(gCType, __ctype__);
101 CPPJIT_INITIALIZE_STRING(gDeref, __deref__);
102 CPPJIT_INITIALIZE_STRING(gPreInc, __preinc__);
103 CPPJIT_INITIALIZE_STRING(gPostInc, __postinc__);
104 CPPJIT_INITIALIZE_STRING(gDict, __dict__);
105 if (!(PyStrings::gEmptyString = PyUnicode_FromString((char*)"")))
106 return false;
107 CPPJIT_INITIALIZE_STRING(gEq, __eq__);
108 CPPJIT_INITIALIZE_STRING(gFollow, __follow__);
109 CPPJIT_INITIALIZE_STRING(gHasValue, has_value);
110 CPPJIT_INITIALIZE_STRING(gGetItem, __getitem__);
111 CPPJIT_INITIALIZE_STRING(gGetNoCheck, _getitem__unchecked);
112 CPPJIT_INITIALIZE_STRING(gSetItem, __setitem__);
113 CPPJIT_INITIALIZE_STRING(gInit, __init__);
114 CPPJIT_INITIALIZE_STRING(gIter, __iter__);
115 CPPJIT_INITIALIZE_STRING(gLen, __len__);
116 CPPJIT_INITIALIZE_STRING(gLifeLine, __lifeline);
117 CPPJIT_INITIALIZE_STRING(gModule, __module__);
118 CPPJIT_INITIALIZE_STRING(gMRO, __mro__);
119 CPPJIT_INITIALIZE_STRING(gName, __name__);
120 CPPJIT_INITIALIZE_STRING(gNe, __ne__);
121 CPPJIT_INITIALIZE_STRING(gRepr, __repr__);
122 CPPJIT_INITIALIZE_STRING(gCppRepr, __cpp_repr);
123 CPPJIT_INITIALIZE_STRING(gStr, __str__);
124 CPPJIT_INITIALIZE_STRING(gCppStr, __cpp_str);
125 CPPJIT_INITIALIZE_STRING(gTypeCode, typecode);
126 CPPJIT_INITIALIZE_STRING(gCTypesType, _type_);
127
128 CPPJIT_INITIALIZE_STRING(gUnderlying, __underlying);
129 CPPJIT_INITIALIZE_STRING(gRealInit, __real_init);
130
131 CPPJIT_INITIALIZE_STRING(gAdd, __add__);
132 CPPJIT_INITIALIZE_STRING(gSub, __sub__);
133 CPPJIT_INITIALIZE_STRING(gMul, __mul__);
134 CPPJIT_INITIALIZE_STRING(gDiv, __truediv__);
135
136 CPPJIT_INITIALIZE_STRING(gLShift, __lshift__);
137 CPPJIT_INITIALIZE_STRING(gLShiftC, __lshiftc__);
138
140 CPPJIT_INITIALIZE_STRING(gBegin, begin);
141 CPPJIT_INITIALIZE_STRING(gEnd, end);
142 CPPJIT_INITIALIZE_STRING(gFirst, first);
143 CPPJIT_INITIALIZE_STRING(gSecond, second);
145 CPPJIT_INITIALIZE_STRING(gTemplate, Template);
146 CPPJIT_INITIALIZE_STRING(gVectorAt, _vector__at);
147 CPPJIT_INITIALIZE_STRING(gInsert, insert);
148 CPPJIT_INITIALIZE_STRING(gValueType, value_type);
149 CPPJIT_INITIALIZE_STRING(gValueTypePtr, _value_type);
150 CPPJIT_INITIALIZE_STRING(gValueSize, value_size);
151
152 CPPJIT_INITIALIZE_STRING(gCppReal, __cpp_real);
153 CPPJIT_INITIALIZE_STRING(gCppImag, __cpp_imag);
154
156
157 CPPJIT_INITIALIZE_STRING(gDispInit, _init_dispatchptr);
158 CPPJIT_INITIALIZE_STRING(gDispGet, _get_dispatch);
159
160 CPPJIT_INITIALIZE_STRING(gExPythonize, __cppjit_explicit_pythonize__);
161 CPPJIT_INITIALIZE_STRING(gPythonize, __cppjit_pythonize__);
162
163 CPPJIT_INITIALIZE_STRING(gArray, __array__);
164 CPPJIT_INITIALIZE_STRING(gDType, dtype);
165 CPPJIT_INITIALIZE_STRING(gFromBuffer, frombuffer);
166
167 return true;
168}
169
170//-----------------------------------------------------------------------------
172 // Remove all cached python strings.
173 Py_DECREF(PyStrings::gBases);
174 PyStrings::gBases = nullptr;
175 Py_DECREF(PyStrings::gBase);
176 PyStrings::gBase = nullptr;
177 Py_DECREF(PyStrings::gContains);
178 PyStrings::gContains = nullptr;
179 Py_DECREF(PyStrings::gCopy);
180 PyStrings::gCopy = nullptr;
181 Py_DECREF(PyStrings::gCppBool);
182 PyStrings::gCppBool = nullptr;
183 Py_DECREF(PyStrings::gCppName);
184 PyStrings::gCppName = nullptr;
185 Py_DECREF(PyStrings::gAnnotations);
186 PyStrings::gAnnotations = nullptr;
187 Py_DECREF(PyStrings::gCType);
188 PyStrings::gCType = nullptr;
189 Py_DECREF(PyStrings::gDeref);
190 PyStrings::gDeref = nullptr;
191 Py_DECREF(PyStrings::gPreInc);
192 PyStrings::gPreInc = nullptr;
193 Py_DECREF(PyStrings::gPostInc);
194 PyStrings::gPostInc = nullptr;
195 Py_DECREF(PyStrings::gDict);
196 PyStrings::gDict = nullptr;
197 Py_DECREF(PyStrings::gEmptyString);
198 PyStrings::gEmptyString = nullptr;
199 Py_DECREF(PyStrings::gEq);
200 PyStrings::gEq = nullptr;
201 Py_DECREF(PyStrings::gFollow);
202 PyStrings::gFollow = nullptr;
203 Py_DECREF(PyStrings::gHasValue);
204 PyStrings::gHasValue = nullptr;
205 Py_DECREF(PyStrings::gGetItem);
206 PyStrings::gGetItem = nullptr;
207 Py_DECREF(PyStrings::gGetNoCheck);
208 PyStrings::gGetNoCheck = nullptr;
209 Py_DECREF(PyStrings::gSetItem);
210 PyStrings::gSetItem = nullptr;
211 Py_DECREF(PyStrings::gInit);
212 PyStrings::gInit = nullptr;
213 Py_DECREF(PyStrings::gIter);
214 PyStrings::gIter = nullptr;
215 Py_DECREF(PyStrings::gLen);
216 PyStrings::gLen = nullptr;
217 Py_DECREF(PyStrings::gLifeLine);
218 PyStrings::gLifeLine = nullptr;
219 Py_DECREF(PyStrings::gModule);
220 PyStrings::gModule = nullptr;
221 Py_DECREF(PyStrings::gMRO);
222 PyStrings::gMRO = nullptr;
223 Py_DECREF(PyStrings::gName);
224 PyStrings::gName = nullptr;
225 Py_DECREF(PyStrings::gNe);
226 PyStrings::gNe = nullptr;
227 Py_DECREF(PyStrings::gTypeCode);
228 PyStrings::gTypeCode = nullptr;
229 Py_DECREF(PyStrings::gCTypesType);
230 PyStrings::gCTypesType = nullptr;
231
232 Py_DECREF(PyStrings::gUnderlying);
233 PyStrings::gUnderlying = nullptr;
234 Py_DECREF(PyStrings::gRealInit);
235 PyStrings::gRealInit = nullptr;
236
237 Py_DECREF(PyStrings::gAdd);
238 PyStrings::gAdd = nullptr;
239 Py_DECREF(PyStrings::gSub);
240 PyStrings::gSub = nullptr;
241 Py_DECREF(PyStrings::gMul);
242 PyStrings::gMul = nullptr;
243 Py_DECREF(PyStrings::gDiv);
244 PyStrings::gDiv = nullptr;
245
246 Py_DECREF(PyStrings::gLShift);
247 PyStrings::gLShift = nullptr;
248 Py_DECREF(PyStrings::gLShiftC);
249 PyStrings::gLShiftC = nullptr;
250
251 Py_DECREF(PyStrings::gAt);
252 PyStrings::gAt = nullptr;
253 Py_DECREF(PyStrings::gBegin);
254 PyStrings::gBegin = nullptr;
255 Py_DECREF(PyStrings::gEnd);
256 PyStrings::gEnd = nullptr;
257 Py_DECREF(PyStrings::gFirst);
258 PyStrings::gFirst = nullptr;
259 Py_DECREF(PyStrings::gSecond);
260 PyStrings::gSecond = nullptr;
261 Py_DECREF(PyStrings::gSize);
262 PyStrings::gSize = nullptr;
263 Py_DECREF(PyStrings::gTemplate);
264 PyStrings::gTemplate = nullptr;
265 Py_DECREF(PyStrings::gVectorAt);
266 PyStrings::gVectorAt = nullptr;
267 Py_DECREF(PyStrings::gInsert);
268 PyStrings::gInsert = nullptr;
269 Py_DECREF(PyStrings::gValueType);
270 PyStrings::gValueType = nullptr;
271 Py_DECREF(PyStrings::gValueTypePtr);
272 PyStrings::gValueTypePtr = nullptr;
273 Py_DECREF(PyStrings::gValueSize);
274 PyStrings::gValueSize = nullptr;
275
276 Py_DECREF(PyStrings::gCppReal);
277 PyStrings::gCppReal = nullptr;
278 Py_DECREF(PyStrings::gCppImag);
279 PyStrings::gCppImag = nullptr;
280
281 Py_DECREF(PyStrings::gThisModule);
282 PyStrings::gThisModule = nullptr;
283
284 Py_DECREF(PyStrings::gDispInit);
285 PyStrings::gDispInit = nullptr;
286 Py_DECREF(PyStrings::gDispGet);
287 PyStrings::gDispGet = nullptr;
288
289 Py_DECREF(PyStrings::gExPythonize);
290 PyStrings::gExPythonize = nullptr;
291 Py_DECREF(PyStrings::gPythonize);
292 PyStrings::gPythonize = nullptr;
293
294 Py_DECREF(PyStrings::gArray);
295 PyStrings::gArray = nullptr;
296 Py_DECREF(PyStrings::gDType);
297 PyStrings::gDType = nullptr;
298 Py_DECREF(PyStrings::gFromBuffer);
299 PyStrings::gFromBuffer = nullptr;
300
302}
_object PyObject
#define CPPJIT_INITIALIZE_STRING(var, str)
Definition PyStrings.cxx:84
size_t size(const MatrixT &matrix)
retrieve the size of a square matrix
#define Py_RETURN_NONE
Definition cpyrt.h:69
PyObject * gThisModule
Definition CPPMethod.cxx:30
bool CreatePyStrings()
Definition PyStrings.cxx:88
PyObject * DestroyPyStrings()
Definition API.cxx:34