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; }
218#if (__cplusplus > 201402L) || (defined(_MSC_VER) && _MSVC_LANG > 201402L)
241class CStringArrayConverter :
public SCharArrayConverter {
243 CStringArrayConverter(
cdims_t dims,
bool fixed) : SCharArrayConverter(
dims) {
246 using SCharArrayConverter::SCharArrayConverter;
248 PyObject* FromMemory(
void* address)
override;
252 std::vector<const char*>
fBuffer;
255class NonConstCStringArrayConverter :
public CStringArrayConverter {
257 using CStringArrayConverter::CStringArrayConverter;
258 PyObject* FromMemory(
void* address)
override;
262class NullptrConverter :
public Converter {
267class InstanceConverter :
public StrictInstancePtrConverter {
269 using StrictInstancePtrConverter::StrictInstancePtrConverter;
271 PyObject* FromMemory(
void*)
override;
275class InstanceRefConverter :
public Converter {
282 PyObject* FromMemory(
void* address)
override;
283 bool HasState()
override {
return true; }
290class InstanceMoveConverter :
public InstanceRefConverter {
296template <
bool ISREFERENCE>
297class InstancePtrPtrConverter :
public InstancePtrConverter<false> {
303 PyObject* FromMemory(
void* address)
override;
307class InstanceArrayConverter :
public InstancePtrConverter<false> {
311 InstanceArrayConverter(
const InstanceArrayConverter&) =
delete;
312 InstanceArrayConverter&
operator=(
const InstanceArrayConverter&) =
delete;
316 PyObject* FromMemory(
void* address)
override;
324class ComplexDConverter:
public InstanceConverter {
330 PyObject* FromMemory(
void* address)
override;
332 bool HasState()
override {
return true; }
341class STLIteratorConverter :
public Converter {
348class VoidPtrRefConverter :
public Converter {
353class VoidPtrPtrConverter :
public Converter {
359 PyObject* FromMemory(
void* address)
override;
360 bool HasState()
override {
return true; }
370#define CPPYY_DECLARE_STRING_CONVERTER(name, strtype) \
371class name##Converter : public InstanceConverter { \
373 name##Converter(bool keepControl = true); \
376 bool SetArg(PyObject*, Parameter&, CallContext* = nullptr) override; \
377 PyObject* FromMemory(void* address) override; \
378 bool ToMemory(PyObject*, void*, PyObject* = nullptr) override; \
379 bool HasState() override { return true; } \
387#if (__cplusplus > 201402L) || (defined(_MSC_VER) && _MSVC_LANG > 201402L)
391class STLStringMoveConverter :
public STLStringConverter {
393 using STLStringConverter::STLStringConverter;
401class FunctionPointerConverter :
public Converter {
403 FunctionPointerConverter(
const std::string&
ret,
const std::string& sig) :
408 PyObject* FromMemory(
void* address)
override;
410 bool HasState()
override {
return true; }
418class StdFunctionConverter :
public FunctionPointerConverter {
420 StdFunctionConverter(Converter*
cnv,
const std::string&
ret,
const std::string& sig) :
422 StdFunctionConverter(
const StdFunctionConverter&) =
delete;
423 StdFunctionConverter&
operator=(
const StdFunctionConverter&) =
delete;
428 PyObject* FromMemory(
void* address)
override;
437class SmartPtrConverter :
public Converter {
448 PyObject* FromMemory(
void* address)
override;
450 bool HasState()
override {
return true; }
453 virtual bool GetAddressSpecialCase(
PyObject*,
void*&) {
return false; }
463class InitializerListConverter :
public InstanceConverter {
466 InitializerListConverter(
const InitializerListConverter&) =
delete;
467 InitializerListConverter&
operator=(
const InitializerListConverter&) =
delete;
472 bool HasState()
override {
return true; }
487class 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)