Logo ROOT  
Reference Guide
Converters.cxx File Reference
#include "CPyCppyy.h"
#include "DeclareConverters.h"
#include "CallContext.h"
#include "CPPExcInstance.h"
#include "CPPInstance.h"
#include "CPPOverload.h"
#include "CustomPyTypes.h"
#include "LowLevelViews.h"
#include "MemoryRegulator.h"
#include "ProxyWrappers.h"
#include "PyStrings.h"
#include "TemplateProxy.h"
#include "TupleOfInstances.h"
#include "TypeManip.h"
#include "Utility.h"
#include <limits.h>
#include <stddef.h>
#include <string.h>
#include <array>
#include <utility>
#include <sstream>
#include "ROOT/RStringView.hxx"
Include dependency graph for Converters.cxx:

Classes

struct  CPyCppyy_tagCDataObject
 
struct  CPyCppyy_tagPyCArgObject
 

Namespaces

namespace  CPyCppyy
 Set of helper functions that are invoked from the pythonizors, on the Python side.
 

Macros

#define CPPYY_IMPL_ARRAY_CONVERTER(name, ctype, type, code)
 
#define CPPYY_IMPL_BASIC_CHAR_CONVERTER(name, type, low, high)
 
#define CPPYY_IMPL_BASIC_CONST_CHAR_REFCONVERTER(name, type, ctype, low, high)
 
#define CPPYY_IMPL_BASIC_CONST_REFCONVERTER(name, type, ctype, F1)
 
#define CPPYY_IMPL_BASIC_CONVERTER(name, type, stype, ctype, F1, F2, tc)
 
#define CPPYY_IMPL_REFCONVERTER(name, ctype, type, code)
 
#define CPPYY_IMPL_REFCONVERTER_FROM_MEMORY(name, ctype)
 
#define CPPYY_IMPL_STRING_AS_PRIMITIVE_CONVERTER(name, type, F1, F2)
 
#define ct_c_bool   0
 
#define ct_c_byte   3
 
#define ct_c_char   1
 
#define ct_c_char_p   18
 
#define ct_c_complex   21
 
#define ct_c_double   16
 
#define ct_c_float   15
 
#define ct_c_int   8
 
#define ct_c_int8   3
 
#define ct_c_long   11
 
#define ct_c_longdouble   17
 
#define ct_c_longlong   13
 
#define ct_c_shar   1
 
#define ct_c_short   5
 
#define ct_c_ubyte   4
 
#define ct_c_uchar   4
 
#define ct_c_uint   9
 
#define ct_c_uint16   7
 
#define ct_c_uint32   10
 
#define ct_c_uint8   4
 
#define ct_c_ulong   12
 
#define ct_c_ulonglong   14
 
#define ct_c_ushort   6
 
#define ct_c_void_p   20
 
#define ct_c_wchar   2
 
#define ct_c_wchar_p   19
 
#define NO_KNOWN_INITIALIZER_LIST   1
 
#define NTYPES   22
 
#define STRINGVIEW   "basic_string_view<char,char_traits<char> >"
 
#define UNKNOWN_ARRAY_SIZE   -2
 
#define UNKNOWN_SIZE   -1
 
#define WSTRING   "basic_string<wchar_t,char_traits<wchar_t>,allocator<wchar_t> >"
 

Typedefs

typedef std::map< std::string, cf_t > CPyCppyy::ConvFactories_t
 
typedef std::pair< std::string, std::string > RetSigKey_t
 

Functions

static bool CArraySetArg (PyObject *pyobject, CPyCppyy::Parameter &para, char tc, int size)
 
static bool ConvertImplicit (Cppyy::TCppType_t klass, PyObject *pyobject, CPyCppyy::Parameter &para, CPyCppyy::CallContext *ctxt)
 
 CPPYY_IMPL_REFCONVERTER_FROM_MEMORY (Bool, c_bool)
 
 CPPYY_IMPL_REFCONVERTER_FROM_MEMORY (Char, c_char)
 
 CPPYY_IMPL_REFCONVERTER_FROM_MEMORY (Char16, c_uint16)
 
 CPPYY_IMPL_REFCONVERTER_FROM_MEMORY (Char32, c_uint32)
 
 CPPYY_IMPL_REFCONVERTER_FROM_MEMORY (Float, c_float)
 
 CPPYY_IMPL_REFCONVERTER_FROM_MEMORY (Int8, c_int8)
 
 CPPYY_IMPL_REFCONVERTER_FROM_MEMORY (LDouble, c_longdouble)
 
 CPPYY_IMPL_REFCONVERTER_FROM_MEMORY (LLong, c_longlong)
 
 CPPYY_IMPL_REFCONVERTER_FROM_MEMORY (SChar, c_byte)
 
 CPPYY_IMPL_REFCONVERTER_FROM_MEMORY (Short, c_short)
 
 CPPYY_IMPL_REFCONVERTER_FROM_MEMORY (UChar, c_ubyte)
 
 CPPYY_IMPL_REFCONVERTER_FROM_MEMORY (UInt, c_uint)
 
 CPPYY_IMPL_REFCONVERTER_FROM_MEMORY (UInt8, c_uint8)
 
 CPPYY_IMPL_REFCONVERTER_FROM_MEMORY (ULLong, c_ulonglong)
 
 CPPYY_IMPL_REFCONVERTER_FROM_MEMORY (ULong, c_ulong)
 
 CPPYY_IMPL_REFCONVERTER_FROM_MEMORY (UShort, c_ushort)
 
 CPPYY_IMPL_REFCONVERTER_FROM_MEMORY (WChar, c_wchar)
 
static bool CPyCppyy_PyLong_AsBool (PyObject *pyobject)
 
static int8_t CPyCppyy_PyLong_AsInt8 (PyObject *pyobject)
 
static short CPyCppyy_PyLong_AsShort (PyObject *pyobject)
 
static int CPyCppyy_PyLong_AsStrictInt (PyObject *pyobject)
 
static long CPyCppyy_PyLong_AsStrictLong (PyObject *pyobject)
 
static uint8_t CPyCppyy_PyLong_AsUInt8 (PyObject *pyobject)
 
static unsigned short CPyCppyy_PyLong_AsUShort (PyObject *pyobject)
 
static char CPyCppyy_PyText_AsChar (PyObject *pyobject)
 
static int ExtractChar (PyObject *pyobject, const char *tname, int low, int high)
 
static CPyCppyy::CPPInstanceGetCppInstance (PyObject *pyobject)
 
static PyTypeObject * GetCTypesPtrType (int nidx)
 
static PyTypeObject * GetCTypesType (int nidx)
 
static void init_shape (Py_ssize_t defdim, dims_t dims, Py_ssize_t *&shape)
 
static bool IsCTypesArrayOrPointer (PyObject *pyobject)
 
static bool IsPyCArgObject (PyObject *pyobject)
 
static void * PyFunction_AsCPointer (PyObject *pyobject, const std::string &rettype, const std::string &signature)
 
static CPyCppyy::ConverterselectInstanceCnv (Cppyy::TCppScope_t klass, const std::string &cpd, long size, dims_t dims, bool isConst, bool control)
 
static bool SetLifeLine (PyObject *holder, PyObject *target, intptr_t ref)
 
static PyObjectWrapperCacheEraser (PyObject *, PyObject *pyref)
 

Variables

static const char * FPCFM_ERRMSG = "conversion to std::function failed"
 
static ConvFactories_t CPyCppyy::gConvFactories
 
static std::array< const char *, 22 > gCTypesNames
 
static std::array< PyTypeObject *, 22 > gCTypesPtrTypes
 
static std::array< PyTypeObject *, 22 > gCTypesTypes
 
PyObjectCPyCppyy::gNullPtrObject = nullptr
 
static PyMethodDef gWrapperCacheEraserMethodDef
 
const size_t MOVE_REFCOUNT_CUTOFF = 1
 
static std::map< void *, std::string > sFuncWrapperLookup
 
static unsigned int sWrapperCounter = 0
 
static std::map< RetSigKey_t, std::vector< void * > > sWrapperFree
 
static std::map< RetSigKey_t, std::map< PyObject *, void * > > sWrapperLookup
 
static std::map< void *, PyObject ** > sWrapperReference
 
static std::map< PyObject *, std::pair< void *, RetSigKey_t > > sWrapperWeakRefs
 

Macro Definition Documentation

◆ CPPYY_IMPL_ARRAY_CONVERTER

#define CPPYY_IMPL_ARRAY_CONVERTER (   name,
  ctype,
  type,
  code 
)

Definition at line 1501 of file Converters.cxx.

◆ CPPYY_IMPL_BASIC_CHAR_CONVERTER

#define CPPYY_IMPL_BASIC_CHAR_CONVERTER (   name,
  type,
  low,
  high 
)

Definition at line 568 of file Converters.cxx.

◆ CPPYY_IMPL_BASIC_CONST_CHAR_REFCONVERTER

#define CPPYY_IMPL_BASIC_CONST_CHAR_REFCONVERTER (   name,
  type,
  ctype,
  low,
  high 
)
Value:
bool CPyCppyy::Const##name##RefConverter::SetArg( \
PyObject* pyobject, Parameter& para, CallContext* /* ctxt */) \
{ \
/* convert <pyobject> to C++ <<type>>, set arg for call, allow int -> char */\
type val = (type)ExtractChar(pyobject, #type, low, high); \
if (val == (type)-1 && PyErr_Occurred()) \
return false; \
para.fValue.fLong = val; \
para.fTypeCode = 'l'; \
return true; \
} \
CPPYY_IMPL_REFCONVERTER_FROM_MEMORY(Const##name, ctype)
static int ExtractChar(PyObject *pyobject, const char *tname, int low, int high)
Definition: Converters.cxx:496
_object PyObject
Definition: PyMethodBase.h:43
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h Atom_t Int_t ULong_t ULong_t unsigned char prop_list Atom_t Atom_t Atom_t Time_t type
char name[80]
Definition: TGX11.cxx:110

Definition at line 552 of file Converters.cxx.

◆ CPPYY_IMPL_BASIC_CONST_REFCONVERTER

#define CPPYY_IMPL_BASIC_CONST_REFCONVERTER (   name,
  type,
  ctype,
  F1 
)
Value:
bool CPyCppyy::Const##name##RefConverter::SetArg( \
PyObject* pyobject, Parameter& para, CallContext* /* ctxt */) \
{ \
type val = (type)F1(pyobject); \
if (val == (type)-1 && PyErr_Occurred()) \
return false; \
para.fValue.f##name = val; \
para.fRef = &para.fValue.f##name; \
para.fTypeCode = 'r'; \
return true; \
} \
CPPYY_IMPL_REFCONVERTER_FROM_MEMORY(Const##name, ctype)
#define F1(x, y, z)
Definition: TMD5.cxx:267

Definition at line 537 of file Converters.cxx.

◆ CPPYY_IMPL_BASIC_CONVERTER

#define CPPYY_IMPL_BASIC_CONVERTER (   name,
  type,
  stype,
  ctype,
  F1,
  F2,
  tc 
)

Definition at line 455 of file Converters.cxx.

◆ CPPYY_IMPL_REFCONVERTER

#define CPPYY_IMPL_REFCONVERTER (   name,
  ctype,
  type,
  code 
)
Value:
bool CPyCppyy::name##RefConverter::SetArg( \
PyObject* pyobject, Parameter& para, CallContext* /* ctxt */) \
{ \
/* convert a reference to int to Python through ctypes pointer object */ \
if (Py_TYPE(pyobject) == GetCTypesType(ct_##ctype)) { \
para.fValue.fVoidp = (void*)((CPyCppyy_tagCDataObject*)pyobject)->b_ptr;\
para.fTypeCode = 'V'; \
return true; \
} \
bool res = CArraySetArg(pyobject, para, code, sizeof(type)); \
if (!res) { \
PyErr_SetString(PyExc_TypeError, "use ctypes."#ctype" for pass-by-ref of "#type);\
return false; \
} \
para.fTypeCode = 'V'; \
return res; \
} \
CPPYY_IMPL_REFCONVERTER_FROM_MEMORY(name, ctype)
#define Py_TYPE(ob)
Definition: CPyCppyy.h:217
static PyTypeObject * GetCTypesType(int nidx)
Definition: Converters.cxx:115
static bool CArraySetArg(PyObject *pyobject, CPyCppyy::Parameter &para, char tc, int size)
Definition: Converters.cxx:348

Definition at line 697 of file Converters.cxx.

◆ CPPYY_IMPL_REFCONVERTER_FROM_MEMORY

#define CPPYY_IMPL_REFCONVERTER_FROM_MEMORY (   name,
  ctype 
)
Value:
PyObject* CPyCppyy::name##RefConverter::FromMemory(void* ptr) \
{ \
/* convert a reference to int to Python through ctypes pointer object */ \
PyTypeObject* ctypes_type = GetCTypesType(ct_##ctype); \
if (!ctypes_type) { \
PyErr_SetString(PyExc_RuntimeError, "no ctypes available"); \
return nullptr; \
} \
PyObject* ref = ctypes_type->tp_new(ctypes_type, nullptr, nullptr); \
((CPyCppyy_tagCDataObject*)ref)->b_ptr = (char*)ptr; \
((CPyCppyy_tagCDataObject*)ref)->b_needsfree = 0; \
return ref; \
}

Definition at line 521 of file Converters.cxx.

◆ CPPYY_IMPL_STRING_AS_PRIMITIVE_CONVERTER

#define CPPYY_IMPL_STRING_AS_PRIMITIVE_CONVERTER (   name,
  type,
  F1,
  F2 
)

Definition at line 1635 of file Converters.cxx.

◆ ct_c_bool

#define ct_c_bool   0

Definition at line 75 of file Converters.cxx.

◆ ct_c_byte

#define ct_c_byte   3

Definition at line 79 of file Converters.cxx.

◆ ct_c_char

#define ct_c_char   1

Definition at line 76 of file Converters.cxx.

◆ ct_c_char_p

#define ct_c_char_p   18

Definition at line 97 of file Converters.cxx.

◆ ct_c_complex

#define ct_c_complex   21

Definition at line 100 of file Converters.cxx.

◆ ct_c_double

#define ct_c_double   16

Definition at line 95 of file Converters.cxx.

◆ ct_c_float

#define ct_c_float   15

Definition at line 94 of file Converters.cxx.

◆ ct_c_int

#define ct_c_int   8

Definition at line 87 of file Converters.cxx.

◆ ct_c_int8

#define ct_c_int8   3

Definition at line 80 of file Converters.cxx.

◆ ct_c_long

#define ct_c_long   11

Definition at line 90 of file Converters.cxx.

◆ ct_c_longdouble

#define ct_c_longdouble   17

Definition at line 96 of file Converters.cxx.

◆ ct_c_longlong

#define ct_c_longlong   13

Definition at line 92 of file Converters.cxx.

◆ ct_c_shar

#define ct_c_shar   1

Definition at line 77 of file Converters.cxx.

◆ ct_c_short

#define ct_c_short   5

Definition at line 84 of file Converters.cxx.

◆ ct_c_ubyte

#define ct_c_ubyte   4

Definition at line 81 of file Converters.cxx.

◆ ct_c_uchar

#define ct_c_uchar   4

Definition at line 82 of file Converters.cxx.

◆ ct_c_uint

#define ct_c_uint   9

Definition at line 88 of file Converters.cxx.

◆ ct_c_uint16

#define ct_c_uint16   7

Definition at line 86 of file Converters.cxx.

◆ ct_c_uint32

#define ct_c_uint32   10

Definition at line 89 of file Converters.cxx.

◆ ct_c_uint8

#define ct_c_uint8   4

Definition at line 83 of file Converters.cxx.

◆ ct_c_ulong

#define ct_c_ulong   12

Definition at line 91 of file Converters.cxx.

◆ ct_c_ulonglong

#define ct_c_ulonglong   14

Definition at line 93 of file Converters.cxx.

◆ ct_c_ushort

#define ct_c_ushort   6

Definition at line 85 of file Converters.cxx.

◆ ct_c_void_p

#define ct_c_void_p   20

Definition at line 99 of file Converters.cxx.

◆ ct_c_wchar

#define ct_c_wchar   2

Definition at line 78 of file Converters.cxx.

◆ ct_c_wchar_p

#define ct_c_wchar_p   19

Definition at line 98 of file Converters.cxx.

◆ NO_KNOWN_INITIALIZER_LIST

#define NO_KNOWN_INITIALIZER_LIST   1

Definition at line 2573 of file Converters.cxx.

◆ NTYPES

#define NTYPES   22

Definition at line 101 of file Converters.cxx.

◆ STRINGVIEW

#define STRINGVIEW   "basic_string_view<char,char_traits<char> >"

Definition at line 2914 of file Converters.cxx.

◆ UNKNOWN_ARRAY_SIZE

#define UNKNOWN_ARRAY_SIZE   -2

Definition at line 31 of file Converters.cxx.

◆ UNKNOWN_SIZE

#define UNKNOWN_SIZE   -1

Definition at line 30 of file Converters.cxx.

◆ WSTRING

#define WSTRING   "basic_string<wchar_t,char_traits<wchar_t>,allocator<wchar_t> >"

Definition at line 2915 of file Converters.cxx.

Typedef Documentation

◆ RetSigKey_t

typedef std::pair<std::string, std::string> RetSigKey_t

Definition at line 2194 of file Converters.cxx.

Function Documentation

◆ CArraySetArg()

static bool CArraySetArg ( PyObject pyobject,
CPyCppyy::Parameter para,
char  tc,
int  size 
)
inlinestatic

Definition at line 348 of file Converters.cxx.

◆ ConvertImplicit()

static bool ConvertImplicit ( Cppyy::TCppType_t  klass,
PyObject pyobject,
CPyCppyy::Parameter para,
CPyCppyy::CallContext ctxt 
)
inlinestatic

Definition at line 372 of file Converters.cxx.

◆ CPPYY_IMPL_REFCONVERTER_FROM_MEMORY() [1/17]

CPPYY_IMPL_REFCONVERTER_FROM_MEMORY ( Bool  ,
c_bool   
)

◆ CPPYY_IMPL_REFCONVERTER_FROM_MEMORY() [2/17]

CPPYY_IMPL_REFCONVERTER_FROM_MEMORY ( Char  ,
c_char   
)

◆ CPPYY_IMPL_REFCONVERTER_FROM_MEMORY() [3/17]

CPPYY_IMPL_REFCONVERTER_FROM_MEMORY ( Char16  ,
c_uint16   
)

◆ CPPYY_IMPL_REFCONVERTER_FROM_MEMORY() [4/17]

CPPYY_IMPL_REFCONVERTER_FROM_MEMORY ( Char32  ,
c_uint32   
)

◆ CPPYY_IMPL_REFCONVERTER_FROM_MEMORY() [5/17]

CPPYY_IMPL_REFCONVERTER_FROM_MEMORY ( Float  ,
c_float   
)

◆ CPPYY_IMPL_REFCONVERTER_FROM_MEMORY() [6/17]

CPPYY_IMPL_REFCONVERTER_FROM_MEMORY ( Int8  ,
c_int8   
)

◆ CPPYY_IMPL_REFCONVERTER_FROM_MEMORY() [7/17]

CPPYY_IMPL_REFCONVERTER_FROM_MEMORY ( LDouble  ,
c_longdouble   
)

◆ CPPYY_IMPL_REFCONVERTER_FROM_MEMORY() [8/17]

CPPYY_IMPL_REFCONVERTER_FROM_MEMORY ( LLong  ,
c_longlong   
)

◆ CPPYY_IMPL_REFCONVERTER_FROM_MEMORY() [9/17]

CPPYY_IMPL_REFCONVERTER_FROM_MEMORY ( SChar  ,
c_byte   
)

◆ CPPYY_IMPL_REFCONVERTER_FROM_MEMORY() [10/17]

CPPYY_IMPL_REFCONVERTER_FROM_MEMORY ( Short  ,
c_short   
)

◆ CPPYY_IMPL_REFCONVERTER_FROM_MEMORY() [11/17]

CPPYY_IMPL_REFCONVERTER_FROM_MEMORY ( UChar  ,
c_ubyte   
)

◆ CPPYY_IMPL_REFCONVERTER_FROM_MEMORY() [12/17]

CPPYY_IMPL_REFCONVERTER_FROM_MEMORY ( UInt  ,
c_uint   
)

◆ CPPYY_IMPL_REFCONVERTER_FROM_MEMORY() [13/17]

CPPYY_IMPL_REFCONVERTER_FROM_MEMORY ( UInt8  ,
c_uint8   
)

◆ CPPYY_IMPL_REFCONVERTER_FROM_MEMORY() [14/17]

CPPYY_IMPL_REFCONVERTER_FROM_MEMORY ( ULLong  ,
c_ulonglong   
)

◆ CPPYY_IMPL_REFCONVERTER_FROM_MEMORY() [15/17]

CPPYY_IMPL_REFCONVERTER_FROM_MEMORY ( ULong  ,
c_ulong   
)

◆ CPPYY_IMPL_REFCONVERTER_FROM_MEMORY() [16/17]

CPPYY_IMPL_REFCONVERTER_FROM_MEMORY ( UShort  ,
c_ushort   
)

◆ CPPYY_IMPL_REFCONVERTER_FROM_MEMORY() [17/17]

CPPYY_IMPL_REFCONVERTER_FROM_MEMORY ( WChar  ,
c_wchar   
)

◆ CPyCppyy_PyLong_AsBool()

static bool CPyCppyy_PyLong_AsBool ( PyObject pyobject)
inlinestatic

Definition at line 228 of file Converters.cxx.

◆ CPyCppyy_PyLong_AsInt8()

static int8_t CPyCppyy_PyLong_AsInt8 ( PyObject pyobject)
inlinestatic

Definition at line 262 of file Converters.cxx.

◆ CPyCppyy_PyLong_AsShort()

static short CPyCppyy_PyLong_AsShort ( PyObject pyobject)
inlinestatic

Definition at line 297 of file Converters.cxx.

◆ CPyCppyy_PyLong_AsStrictInt()

static int CPyCppyy_PyLong_AsStrictInt ( PyObject pyobject)
inlinestatic

Definition at line 314 of file Converters.cxx.

◆ CPyCppyy_PyLong_AsStrictLong()

static long CPyCppyy_PyLong_AsStrictLong ( PyObject pyobject)
inlinestatic

Definition at line 334 of file Converters.cxx.

◆ CPyCppyy_PyLong_AsUInt8()

static uint8_t CPyCppyy_PyLong_AsUInt8 ( PyObject pyobject)
inlinestatic

Definition at line 245 of file Converters.cxx.

◆ CPyCppyy_PyLong_AsUShort()

static unsigned short CPyCppyy_PyLong_AsUShort ( PyObject pyobject)
inlinestatic

Definition at line 279 of file Converters.cxx.

◆ CPyCppyy_PyText_AsChar()

static char CPyCppyy_PyText_AsChar ( PyObject pyobject)
inlinestatic

Definition at line 240 of file Converters.cxx.

◆ ExtractChar()

static int ExtractChar ( PyObject pyobject,
const char *  tname,
int  low,
int  high 
)
inlinestatic

Definition at line 496 of file Converters.cxx.

◆ GetCppInstance()

static CPyCppyy::CPPInstance * GetCppInstance ( PyObject pyobject)
inlinestatic

Definition at line 216 of file Converters.cxx.

◆ GetCTypesPtrType()

static PyTypeObject * GetCTypesPtrType ( int  nidx)
static

Definition at line 134 of file Converters.cxx.

◆ GetCTypesType()

static PyTypeObject * GetCTypesType ( int  nidx)
static

Definition at line 115 of file Converters.cxx.

◆ init_shape()

static void init_shape ( Py_ssize_t  defdim,
dims_t  dims,
Py_ssize_t *&  shape 
)
inlinestatic

Definition at line 1487 of file Converters.cxx.

◆ IsCTypesArrayOrPointer()

static bool IsCTypesArrayOrPointer ( PyObject pyobject)
static

Definition at line 181 of file Converters.cxx.

◆ IsPyCArgObject()

static bool IsPyCArgObject ( PyObject pyobject)
static

Definition at line 161 of file Converters.cxx.

◆ PyFunction_AsCPointer()

static void * PyFunction_AsCPointer ( PyObject pyobject,
const std::string &  rettype,
const std::string &  signature 
)
static

Definition at line 2218 of file Converters.cxx.

◆ selectInstanceCnv()

static CPyCppyy::Converter * selectInstanceCnv ( Cppyy::TCppScope_t  klass,
const std::string &  cpd,
long  size,
dims_t  dims,
bool  isConst,
bool  control 
)
inlinestatic

Definition at line 2663 of file Converters.cxx.

◆ SetLifeLine()

static bool SetLifeLine ( PyObject holder,
PyObject target,
intptr_t  ref 
)
inlinestatic

Definition at line 200 of file Converters.cxx.

◆ WrapperCacheEraser()

static PyObject * WrapperCacheEraser ( PyObject ,
PyObject pyref 
)
static

Definition at line 2200 of file Converters.cxx.

Variable Documentation

◆ FPCFM_ERRMSG

const char* FPCFM_ERRMSG = "conversion to std::function failed"
static

Definition at line 2376 of file Converters.cxx.

◆ gCTypesNames

std::array<const char*, 22 > gCTypesNames
static
Initial value:
= {
"c_bool", "c_char", "c_wchar", "c_byte", "c_ubyte", "c_short", "c_ushort", "c_uint16",
"c_int", "c_uint", "c_uint32", "c_long", "c_ulong", "c_longlong", "c_ulonglong",
"c_float", "c_double", "c_longdouble",
"c_char_p", "c_wchar_p", "c_void_p", "c_complex" }

Definition at line 103 of file Converters.cxx.

◆ gCTypesPtrTypes

std::array<PyTypeObject*, 22 > gCTypesPtrTypes
static

Definition at line 109 of file Converters.cxx.

◆ gCTypesTypes

std::array<PyTypeObject*, 22 > gCTypesTypes
static

Definition at line 108 of file Converters.cxx.

◆ gWrapperCacheEraserMethodDef

PyMethodDef gWrapperCacheEraserMethodDef
static
Initial value:
= {
const_cast<char*>("interal_WrapperCacheEraser"),
(PyCFunction)WrapperCacheEraser,
METH_O, nullptr
}
static PyObject * WrapperCacheEraser(PyObject *, PyObject *pyref)

Definition at line 2212 of file Converters.cxx.

◆ MOVE_REFCOUNT_CUTOFF

const size_t MOVE_REFCOUNT_CUTOFF = 1

Definition at line 45 of file Converters.cxx.

◆ sFuncWrapperLookup

std::map<void*, std::string> sFuncWrapperLookup
static

Definition at line 2375 of file Converters.cxx.

◆ sWrapperCounter

unsigned int sWrapperCounter = 0
static

Definition at line 2192 of file Converters.cxx.

◆ sWrapperFree

std::map<RetSigKey_t, std::vector<void*> > sWrapperFree
static

Definition at line 2195 of file Converters.cxx.

◆ sWrapperLookup

std::map<RetSigKey_t, std::map<PyObject*, void*> > sWrapperLookup
static

Definition at line 2196 of file Converters.cxx.

◆ sWrapperReference

std::map<void*, PyObject**> sWrapperReference
static

Definition at line 2198 of file Converters.cxx.

◆ sWrapperWeakRefs

std::map<PyObject*, std::pair<void*, RetSigKey_t> > sWrapperWeakRefs
static

Definition at line 2197 of file Converters.cxx.