Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
CustomPyTypes.h
Go to the documentation of this file.
1#ifndef CPYCPPYY_CUSTOMPYTYPES_H
2#define CPYCPPYY_CUSTOMPYTYPES_H
3
4namespace CPyCppyy {
5
6/** Custom "builtins," detectable by type, for pass by ref and improved
7 performance.
8 */
9
10#if PY_VERSION_HEX < 0x03000000
11//- reference float object type and type verification ------------------------
13
14template<typename T>
15inline bool RefFloat_Check(T* object)
16{
17 return object && PyObject_TypeCheck(object, &RefFloat_Type);
18}
19
20template<typename T>
21inline bool RefFloat_CheckExact(T* object)
22{
23 return object && Py_TYPE(object) == &RefFloat_Type;
24}
25
26//- reference long object type and type verification -------------------------
28
29template<typename T>
30inline bool RefInt_Check(T* object)
31{
32 return object && PyObject_TypeCheck(object, &RefInt_Type);
33}
34
35template<typename T>
36inline bool RefInt_CheckExact(T* object)
37{
38 return object && Py_TYPE(object) == &RefInt_Type;
39}
40#endif
41
42//- custom type representing typedef to pointer of class ---------------------
47
49
50template<typename T>
51inline bool TypedefPointerToClass_Check(T* object)
52{
53 return object && PyObject_TypeCheck(object, &TypedefPointerToClass_Type);
54}
55
56template<typename T>
58{
59 return object && Py_TYPE(object) == &TypedefPointerToClass_Type;
60}
61
62//- custom instance method object type and type verification -----------------
64
65template<typename T>
66inline bool CustomInstanceMethod_Check(T* object)
67{
68 return object && PyObject_TypeCheck(object, &CustomInstanceMethod_Type);
69}
70
71template<typename T>
72inline bool CustomInstanceMethod_CheckExact(T* object)
73{
74 return object && Py_TYPE(object) == &CustomInstanceMethod_Type;
75}
76
78
79//- custom iterator for high performance std::vector iteration ---------------
86
88
89class Converter;
103
105
106} // namespace CPyCppyy
107
108#endif // !CPYCPPYY_CUSTOMPYTYPES_H
#define Py_TYPE(ob)
Definition CPyCppyy.h:196
_object PyObject
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
PyObject * CustomInstanceMethod_New(PyObject *func, PyObject *self, PyObject *pyclass)
PyTypeObject VectorIter_Type
bool RefFloat_Check(T *object)
PyTypeObject CustomInstanceMethod_Type
bool RefFloat_CheckExact(T *object)
PyTypeObject RefFloat_Type
Custom "builtins," detectable by type, for pass by ref and improved performance.
PyTypeObject TypedefPointerToClass_Type
bool RefInt_CheckExact(T *object)
bool CustomInstanceMethod_CheckExact(T *object)
bool RefInt_Check(T *object)
bool TypedefPointerToClass_CheckExact(T *object)
PyTypeObject IndexIter_Type
bool TypedefPointerToClass_Check(T *object)
PyTypeObject RefInt_Type
bool CustomInstanceMethod_Check(T *object)
TCppScope_t TCppType_t
Definition cpp_cppyy.h:35
PyObject_HEAD PyObject * ii_container
PyObject_HEAD Cppyy::TCppType_t fCppType
Cppyy::TCppType_t vi_klass
CPyCppyy::Converter * vi_converter