1#ifndef CPYCPPYY_DECLARECONVERTERS_H
2#define CPYCPPYY_DECLARECONVERTERS_H
20#define CPPYY_DECLARE_BASIC_CONVERTER(name) \
21class name##Converter : public Converter { \
23 virtual bool SetArg(PyObject*, Parameter&, CallContext* = nullptr); \
24 virtual PyObject* FromMemory(void*); \
25 virtual bool ToMemory(PyObject*, void*, PyObject* = nullptr); \
28class Const##name##RefConverter : public Converter { \
30 virtual bool SetArg(PyObject*, Parameter&, CallContext* = nullptr); \
31 virtual PyObject* FromMemory(void*); \
35#define CPPYY_DECLARE_BASIC_CONVERTER2(name, base) \
36class name##Converter : public base##Converter { \
38 virtual PyObject* FromMemory(void*); \
39 virtual bool ToMemory(PyObject*, void*, PyObject* = nullptr); \
42class Const##name##RefConverter : public Converter { \
44 virtual bool SetArg(PyObject*, Parameter&, CallContext* = nullptr); \
45 virtual PyObject* FromMemory(void*); \
48#define CPPYY_DECLARE_REFCONVERTER(name) \
49class name##RefConverter : public Converter { \
51 virtual bool SetArg(PyObject*, Parameter&, CallContext* = nullptr); \
52 virtual PyObject* FromMemory(void*); \
55#define CPPYY_DECLARE_ARRAY_CONVERTER(name) \
56class name##ArrayConverter : public Converter { \
58 name##ArrayConverter(cdims_t dims); \
59 name##ArrayConverter(const name##ArrayConverter&) = delete; \
60 name##ArrayConverter& operator=(const name##ArrayConverter&) = delete; \
61 virtual bool SetArg(PyObject*, Parameter&, CallContext* = nullptr); \
62 virtual PyObject* FromMemory(void*); \
63 virtual bool ToMemory(PyObject*, void*, PyObject* = nullptr); \
64 virtual bool HasState() { return true; } \
75class SCharAsIntConverter :
public CharConverter {
77 using CharConverter::CharConverter;
81class UCharAsIntConverter :
public UCharConverter {
83 using UCharConverter::UCharConverter;
131class VoidConverter :
public Converter {
136class CStringConverter :
public Converter {
142 virtual PyObject* FromMemory(
void* address);
144 virtual bool HasState() {
return true; }
151class NonConstCStringConverter :
public CStringConverter {
153 using CStringConverter::CStringConverter;
157 virtual PyObject* FromMemory(
void* address);
160class WCStringConverter :
public Converter {
162 WCStringConverter(std::wstring::size_type
maxSize = std::wstring::npos) :
164 WCStringConverter(
const WCStringConverter&) =
delete;
165 WCStringConverter&
operator=(
const WCStringConverter&) =
delete;
170 virtual PyObject* FromMemory(
void* address);
172 virtual bool HasState() {
return true; }
179class CString16Converter :
public Converter {
181 CString16Converter(std::wstring::size_type
maxSize = std::wstring::npos) :
183 CString16Converter(
const CString16Converter&) =
delete;
184 CString16Converter&
operator=(
const CString16Converter&) =
delete;
189 virtual PyObject* FromMemory(
void* address);
191 virtual bool HasState() {
return true; }
198class CString32Converter :
public Converter {
200 CString32Converter(std::wstring::size_type
maxSize = std::wstring::npos) :
202 CString32Converter(
const CString32Converter&) =
delete;
203 CString32Converter&
operator=(
const CString32Converter&) =
delete;
208 virtual PyObject* FromMemory(
void* address);
210 virtual bool HasState() {
return true; }
221#if (__cplusplus > 201402L) || (defined(_MSC_VER) && _MSVC_LANG > 201402L)
244class CStringArrayConverter :
public SCharArrayConverter {
246 CStringArrayConverter(
cdims_t dims,
bool fixed) : SCharArrayConverter(
dims) {
249 using SCharArrayConverter::SCharArrayConverter;
251 virtual PyObject* FromMemory(
void* address);
255 std::vector<const char*>
fBuffer;
258class NonConstCStringArrayConverter :
public CStringArrayConverter {
260 using CStringArrayConverter::CStringArrayConverter;
261 virtual PyObject* FromMemory(
void* address);
265class NullptrConverter :
public Converter {
270class InstanceConverter :
public StrictInstancePtrConverter {
272 using StrictInstancePtrConverter::StrictInstancePtrConverter;
274 virtual PyObject* FromMemory(
void*);
278class InstanceRefConverter :
public Converter {
285 virtual PyObject* FromMemory(
void* address);
286 virtual bool HasState() {
return true; }
293class InstanceMoveConverter :
public InstanceRefConverter {
299template <
bool ISREFERENCE>
300class InstancePtrPtrConverter :
public InstancePtrConverter<false> {
306 virtual PyObject* FromMemory(
void* address);
310class InstanceArrayConverter :
public InstancePtrConverter<false> {
314 InstanceArrayConverter(
const InstanceArrayConverter&) =
delete;
315 InstanceArrayConverter&
operator=(
const InstanceArrayConverter&) =
delete;
319 virtual PyObject* FromMemory(
void* address);
327class ComplexDConverter:
public InstanceConverter {
333 virtual PyObject* FromMemory(
void* address);
335 virtual bool HasState() {
return true; }
344class STLIteratorConverter :
public Converter {
351class VoidPtrRefConverter :
public Converter {
356class VoidPtrPtrConverter :
public Converter {
362 virtual PyObject* FromMemory(
void* address);
363 virtual bool HasState() {
return true; }
373#define CPPYY_DECLARE_STRING_CONVERTER(name, strtype) \
374class name##Converter : public InstanceConverter { \
376 name##Converter(bool keepControl = true); \
379 virtual bool SetArg(PyObject*, Parameter&, CallContext* = nullptr); \
380 virtual PyObject* FromMemory(void* address); \
381 virtual bool ToMemory(PyObject*, void*, PyObject* = nullptr); \
382 virtual bool HasState() { return true; } \
391#if (__cplusplus > 201402L) || (defined(_MSC_VER) && _MSVC_LANG > 201402L)
395class STLStringMoveConverter :
public STLStringConverter {
397 using STLStringConverter::STLStringConverter;
405class FunctionPointerConverter :
public Converter {
407 FunctionPointerConverter(
const std::string&
ret,
const std::string& sig) :
412 virtual PyObject* FromMemory(
void* address);
414 virtual bool HasState() {
return true; }
422class StdFunctionConverter :
public FunctionPointerConverter {
424 StdFunctionConverter(Converter*
cnv,
const std::string&
ret,
const std::string& sig) :
426 StdFunctionConverter(
const StdFunctionConverter&) =
delete;
427 StdFunctionConverter&
operator=(
const StdFunctionConverter&) =
delete;
432 virtual PyObject* FromMemory(
void* address);
441class SmartPtrConverter :
public Converter {
452 virtual PyObject* FromMemory(
void* address);
454 virtual bool HasState() {
return true; }
457 virtual bool GetAddressSpecialCase(
PyObject*,
void*&) {
return false; }
467class InitializerListConverter :
public InstanceConverter {
470 InitializerListConverter(
const InitializerListConverter&) =
delete;
471 InitializerListConverter&
operator=(
const InitializerListConverter&) =
delete;
476 virtual bool HasState() {
return true; }
491class NotImplementedConverter :
public Converter {
#define CPPYY_DECLARE_ARRAY_CONVERTER(name)
#define CPPYY_DECLARE_STRING_CONVERTER(name, strtype)
std::string fValueTypeName
Cppyy::TCppType_t fValueType
#define CPPYY_DECLARE_BASIC_CONVERTER(name)
#define CPPYY_DECLARE_REFCONVERTER(name)
Cppyy::TCppType_t fSmartPtrType
Cppyy::TCppType_t fUnderlyingType
#define CPPYY_DECLARE_BASIC_CONVERTER2(name, base)
std::string::size_type fMaxSize
std::vector< Converter * > fConverters
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void value
void operator=(const TProof &)
InstancePtrConverter(Cppyy::TCppType_t klass, bool keepControl=false)