Skip to content

Commit 92a3c31

Browse files
committed
Sync DeclareConverters and DeclareExecutors
1 parent 802afc2 commit 92a3c31

File tree

2 files changed

+14
-11
lines changed

2 files changed

+14
-11
lines changed

src/DeclareConverters.h

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -216,6 +216,8 @@ CPPYY_DECLARE_ARRAY_CONVERTER(UChar);
216216
#if __cplusplus > 201402L
217217
CPPYY_DECLARE_ARRAY_CONVERTER(Byte);
218218
#endif
219+
CPPYY_DECLARE_ARRAY_CONVERTER(Int8);
220+
CPPYY_DECLARE_ARRAY_CONVERTER(UInt8);
219221
CPPYY_DECLARE_ARRAY_CONVERTER(Short);
220222
CPPYY_DECLARE_ARRAY_CONVERTER(UShort);
221223
CPPYY_DECLARE_ARRAY_CONVERTER(Int);
@@ -232,6 +234,9 @@ CPPYY_DECLARE_ARRAY_CONVERTER(ComplexD);
232234

233235
class CStringArrayConverter : public SCharArrayConverter {
234236
public:
237+
CStringArrayConverter(cdims_t dims, bool fixed) : SCharArrayConverter(dims) {
238+
fIsFixed = fixed; // overrides SCharArrayConverter decision
239+
}
235240
using SCharArrayConverter::SCharArrayConverter;
236241
virtual bool SetArg(PyObject*, Parameter&, CallContext* = nullptr);
237242
virtual PyObject* FromMemory(void* address);
@@ -369,6 +374,7 @@ CPPYY_DECLARE_BASIC_CONVERTER(PyObject);
369374
class name##Converter : public InstanceConverter { \
370375
public: \
371376
name##Converter(bool keepControl = true); \
377+
\
372378
public: \
373379
virtual bool SetArg(PyObject*, Parameter&, CallContext* = nullptr); \
374380
virtual PyObject* FromMemory(void* address); \
@@ -380,14 +386,10 @@ protected: \
380386
}
381387

382388
CPPYY_DECLARE_STRING_CONVERTER(STLString, std::string);
389+
CPPYY_DECLARE_STRING_CONVERTER(STLWString, std::wstring);
383390
#if __cplusplus > 201402L
384-
CPPYY_DECLARE_STRING_CONVERTER(STLStringViewBase, std::string_view);
385-
class STLStringViewConverter : public STLStringViewBaseConverter {
386-
public:
387-
virtual bool SetArg(PyObject*, Parameter&, CallContext* = nullptr);
388-
};
391+
CPPYY_DECLARE_STRING_CONVERTER(STLStringView, std::string_view);
389392
#endif
390-
CPPYY_DECLARE_STRING_CONVERTER(STLWString, std::wstring);
391393

392394
class STLStringMoveConverter : public STLStringConverter {
393395
public:
@@ -467,9 +469,7 @@ class SmartPtrConverter : public Converter {
467469
// initializer lists
468470
class InitializerListConverter : public InstanceConverter {
469471
public:
470-
InitializerListConverter(Cppyy::TCppType_t klass,
471-
Converter* cnv, Cppyy::TCppType_t valuetype, size_t sz) : InstanceConverter(klass),
472-
fBuffer(nullptr), fConverter(cnv), fValueType(valuetype), fValueSize(sz) {}
472+
InitializerListConverter(Cppyy::TCppType_t klass, std::string const& value_type);
473473
InitializerListConverter(const InitializerListConverter&) = delete;
474474
InitializerListConverter& operator=(const InitializerListConverter&) = delete;
475475
virtual ~InitializerListConverter();
@@ -483,8 +483,9 @@ class InitializerListConverter : public InstanceConverter {
483483
void Clear();
484484

485485
protected:
486-
void* fBuffer;
487-
Converter* fConverter;
486+
void* fBuffer = nullptr;
487+
std::vector<Converter*> fConverters;
488+
std::string fValueTypeName;
488489
Cppyy::TCppType_t fValueType;
489490
size_t fValueSize;
490491
};

src/DeclareExecutors.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,8 @@ class InstanceExecutor : public Executor {
115115
class IteratorExecutor : public InstanceExecutor {
116116
public:
117117
IteratorExecutor(Cppyy::TCppScope_t klass);
118+
virtual PyObject* Execute(
119+
Cppyy::TCppMethod_t, Cppyy::TCppObject_t, CallContext*);
118120
};
119121

120122
CPPYY_DECL_EXEC(Constructor);

0 commit comments

Comments
 (0)