@@ -216,6 +216,8 @@ CPPYY_DECLARE_ARRAY_CONVERTER(UChar);
216216#if __cplusplus > 201402L
217217CPPYY_DECLARE_ARRAY_CONVERTER (Byte);
218218#endif
219+ CPPYY_DECLARE_ARRAY_CONVERTER (Int8);
220+ CPPYY_DECLARE_ARRAY_CONVERTER (UInt8);
219221CPPYY_DECLARE_ARRAY_CONVERTER (Short);
220222CPPYY_DECLARE_ARRAY_CONVERTER (UShort);
221223CPPYY_DECLARE_ARRAY_CONVERTER (Int);
@@ -232,6 +234,9 @@ CPPYY_DECLARE_ARRAY_CONVERTER(ComplexD);
232234
233235class CStringArrayConverter : public SCharArrayConverter {
234236public:
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);
369374class name ##Converter : public InstanceConverter { \
370375public: \
371376 name##Converter(bool keepControl = true ); \
377+ \
372378public: \
373379 virtual bool SetArg (PyObject*, Parameter&, CallContext* = nullptr ); \
374380 virtual PyObject* FromMemory (void * address); \
@@ -380,14 +386,10 @@ protected: \
380386}
381387
382388CPPYY_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
392394class STLStringMoveConverter : public STLStringConverter {
393395public:
@@ -467,9 +469,7 @@ class SmartPtrConverter : public Converter {
467469// initializer lists
468470class InitializerListConverter : public InstanceConverter {
469471public:
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
485485protected:
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};
0 commit comments