1#ifndef CPYCPPYY_DECLARECONVERTERS_H
2#define CPYCPPYY_DECLARECONVERTERS_H
17#define CPPYY_DECLARE_BASIC_CONVERTER(name) \
18class name##Converter : public Converter { \
20 bool SetArg(PyObject*, Parameter&, CallContext* = nullptr) override; \
21 PyObject* FromMemory(void*) override; \
22 bool ToMemory(PyObject*, void*, PyObject* = nullptr) override; \
25class Const##name##RefConverter : public Converter { \
27 bool SetArg(PyObject*, Parameter&, CallContext* = nullptr) override; \
28 PyObject* FromMemory(void*) override; \
32#define CPPYY_DECLARE_BASIC_CONVERTER2(name, base) \
33class name##Converter : public base##Converter { \
35 PyObject* FromMemory(void*) override; \
36 bool ToMemory(PyObject*, void*, PyObject* = nullptr) override; \
39class Const##name##RefConverter : public Converter { \
41 bool SetArg(PyObject*, Parameter&, CallContext* = nullptr) override; \
42 PyObject* FromMemory(void*) override; \
45#define CPPYY_DECLARE_REFCONVERTER(name) \
46class name##RefConverter : public Converter { \
48 bool SetArg(PyObject*, Parameter&, CallContext* = nullptr) override; \
49 PyObject* FromMemory(void*) override; \
52#define CPPYY_DECLARE_ARRAY_CONVERTER(name) \
53class name##ArrayConverter : public Converter { \
55 name##ArrayConverter(cdims_t dims); \
56 name##ArrayConverter(const name##ArrayConverter&) = delete; \
57 name##ArrayConverter& operator=(const name##ArrayConverter&) = delete; \
58 bool SetArg(PyObject*, Parameter&, CallContext* = nullptr) override; \
59 PyObject* FromMemory(void*) override; \
60 bool ToMemory(PyObject*, void*, PyObject* = nullptr) override; \
61 bool HasState() override { return true; } \
72class SCharAsIntConverter :
public CharConverter {
74 using CharConverter::CharConverter;
75 PyObject* FromMemory(
void*)
override;
78class UCharAsIntConverter :
public UCharConverter {
80 using UCharConverter::UCharConverter;
81 PyObject* FromMemory(
void*)
override;
128class VoidConverter :
public Converter {
133class CStringConverter :
public Converter {
139 PyObject* FromMemory(
void* address)
override;
141 bool HasState()
override {
return true; }
148class NonConstCStringConverter :
public CStringConverter {
150 using CStringConverter::CStringConverter;
154 PyObject* FromMemory(
void* address)
override;
157class WCStringConverter :
public Converter {
159 WCStringConverter(std::wstring::size_type
maxSize = std::wstring::npos) :
161 WCStringConverter(
const WCStringConverter&) =
delete;
162 WCStringConverter&
operator=(
const WCStringConverter&) =
delete;
167 PyObject* FromMemory(
void* address)
override;
169 bool HasState()
override {
return true; }
176class CString16Converter :
public Converter {
178 CString16Converter(std::wstring::size_type
maxSize = std::wstring::npos) :
180 CString16Converter(
const CString16Converter&) =
delete;
181 CString16Converter&
operator=(
const CString16Converter&) =
delete;
186 PyObject* FromMemory(
void* address)
override;
188 bool HasState()
override {
return true; }
195class CString32Converter :
public Converter {
197 CString32Converter(std::wstring::size_type
maxSize = std::wstring::npos) :
199 CString32Converter(
const CString32Converter&) =
delete;
200 CString32Converter&
operator=(
const CString32Converter&) =
delete;
205 PyObject* FromMemory(
void* address)
override;
207 bool HasState()
override {
return true; }
239class CStringArrayConverter :
public SCharArrayConverter {
241 CStringArrayConverter(
cdims_t dims,
bool fixed) : SCharArrayConverter(
dims) {
244 using SCharArrayConverter::SCharArrayConverter;
246 PyObject* FromMemory(
void* address)
override;
250 std::vector<const char*>
fBuffer;
253class NonConstCStringArrayConverter :
public CStringArrayConverter {
255 using CStringArrayConverter::CStringArrayConverter;
256 PyObject* FromMemory(
void* address)
override;
260class NullptrConverter :
public Converter {
265class InstanceConverter :
public StrictInstancePtrConverter {
267 using StrictInstancePtrConverter::StrictInstancePtrConverter;
269 PyObject* FromMemory(
void*)
override;
273class InstanceRefConverter :
public Converter {
280 PyObject* FromMemory(
void* address)
override;
281 bool HasState()
override {
return true; }
288class InstanceMoveConverter :
public InstanceRefConverter {
294template <
bool ISREFERENCE>
295class InstancePtrPtrConverter :
public InstancePtrConverter<false> {
301 PyObject* FromMemory(
void* address)
override;
305class InstanceArrayConverter :
public InstancePtrConverter<false> {
309 InstanceArrayConverter(
const InstanceArrayConverter&) =
delete;
310 InstanceArrayConverter&
operator=(
const InstanceArrayConverter&) =
delete;
314 PyObject* FromMemory(
void* address)
override;
322class ComplexDConverter:
public InstanceConverter {
328 PyObject* FromMemory(
void* address)
override;
330 bool HasState()
override {
return true; }
339class STLIteratorConverter :
public Converter {
346class VoidPtrRefConverter :
public Converter {
351class VoidPtrPtrConverter :
public Converter {
357 PyObject* FromMemory(
void* address)
override;
358 bool HasState()
override {
return true; }
368#define CPPYY_DECLARE_STRING_CONVERTER(name, strtype) \
369class name##Converter : public InstanceConverter { \
371 name##Converter(bool keepControl = true); \
374 bool SetArg(PyObject*, Parameter&, CallContext* = nullptr) override; \
375 PyObject* FromMemory(void* address) override; \
376 bool ToMemory(PyObject*, void*, PyObject* = nullptr) override; \
377 bool HasState() override { return true; } \
387class STLStringMoveConverter :
public STLStringConverter {
389 using STLStringConverter::STLStringConverter;
397class FunctionPointerConverter :
public Converter {
399 FunctionPointerConverter(
const std::string&
ret,
const std::string& sig) :
404 PyObject* FromMemory(
void* address)
override;
406 bool HasState()
override {
return true; }
414class StdFunctionConverter :
public FunctionPointerConverter {
416 StdFunctionConverter(Converter*
cnv,
const std::string&
ret,
const std::string& sig) :
418 StdFunctionConverter(
const StdFunctionConverter&) =
delete;
419 StdFunctionConverter&
operator=(
const StdFunctionConverter&) =
delete;
424 PyObject* FromMemory(
void* address)
override;
433class SmartPtrConverter :
public Converter {
444 PyObject* FromMemory(
void* address)
override;
446 bool HasState()
override {
return true; }
449 virtual bool GetAddressSpecialCase(
PyObject*,
void*&) {
return false; }
459class InitializerListConverter :
public InstanceConverter {
462 InitializerListConverter(
const InitializerListConverter&) =
delete;
463 InitializerListConverter&
operator=(
const InitializerListConverter&) =
delete;
468 bool HasState()
override {
return true; }
483class 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
Binding & operator=(OUT(*fun)(void))
InstancePtrConverter(Cppyy::TCppType_t klass, bool keepControl=false)