Author: Wim Lavrijsen <[email protected]>
Branch: cppyy-packaging
Changeset: r94738:9820fab951d5
Date: 2018-06-07 15:57 -0700
http://bitbucket.org/pypy/pypy/changeset/9820fab951d5/
Log: bring the dummy backend for testing up-to-date
diff --git a/pypy/module/_cppyy/converter.py b/pypy/module/_cppyy/converter.py
--- a/pypy/module/_cppyy/converter.py
+++ b/pypy/module/_cppyy/converter.py
@@ -68,9 +68,11 @@
pass
# array type
try:
+ if hasattr(space, "fake"):
+ raise NotImplementedError
arr = space.interp_w(W_ArrayInstance, w_obj, can_be_None=True)
- #if arr:
- #return rffi.cast(rffi.VOIDP, space.uint_w(arr.getbuffer(space)))
+ if arr:
+ return rffi.cast(rffi.VOIDP, space.uint_w(arr.getbuffer(space)))
except Exception:
pass
# pre-defined nullptr
diff --git a/pypy/module/_cppyy/src/dummy_backend.cxx
b/pypy/module/_cppyy/src/dummy_backend.cxx
--- a/pypy/module/_cppyy/src/dummy_backend.cxx
+++ b/pypy/module/_cppyy/src/dummy_backend.cxx
@@ -60,7 +60,6 @@
const std::string& returntype,
EMethodType mtype = kNormal) :
m_name(name), m_argtypes(argtypes), m_returntype(returntype),
m_type(mtype) {}
-
std::string m_name;
std::vector<std::string> m_argtypes;
std::string m_returntype;
@@ -72,7 +71,6 @@
const std::string& type,
ptrdiff_t offset, bool isstatic) :
m_name(name), m_type(type), m_offset(offset), m_isstatic(isstatic) {}
-
std::string m_name;
std::string m_type;
ptrdiff_t m_offset;
@@ -81,20 +79,20 @@
struct Cppyy_PseudoClassInfo {
Cppyy_PseudoClassInfo() {}
- Cppyy_PseudoClassInfo(const std::vector<Cppyy_PseudoMethodInfo>& methods,
- long method_offset,
+ Cppyy_PseudoClassInfo(const std::vector<Cppyy_PseudoMethodInfo*>& methods,
const std::vector<Cppyy_PseudoDatambrInfo>& data) :
- m_methods(methods), m_method_offset(method_offset), m_datambrs(data) {}
-
- std::vector<Cppyy_PseudoMethodInfo> m_methods;
- long m_method_offset;
+ m_methods(methods), m_datambrs(data) {}
+ std::vector<Cppyy_PseudoMethodInfo*> m_methods;
std::vector<Cppyy_PseudoDatambrInfo> m_datambrs;
};
typedef std::map<cppyy_scope_t, Cppyy_PseudoClassInfo> Scopes_t;
static Scopes_t s_scopes;
-static std::map<std::string, long> s_methods;
+static std::map<std::string, Cppyy_PseudoMethodInfo*> s_methods;
+struct CleanPseudoMethods {
+ ~CleanPseudoMethods() { for (auto& x : s_methods) delete x.second; }
+} _clean;
int Pseudo_kNothing = 6;
int Pseudo_kSomething = 111;
@@ -105,28 +103,28 @@
offsetof(dummy::CppyyTestData, m_##dmname), false)); \
/* <type> get_<type>() */ \
argtypes.clear(); \
- methods.push_back(Cppyy_PseudoMethodInfo( \
+ methods.push_back(new Cppyy_PseudoMethodInfo( \
"get_"#dmname, argtypes, #dmtype)); \
- s_methods["CppyyTestData::get_"#dmname] = s_method_id++; \
+ s_methods["CppyyTestData::get_"#dmname] = methods.back(); \
/* <type>& get_<type>_r() */ \
- methods.push_back(Cppyy_PseudoMethodInfo( \
+ methods.push_back(new Cppyy_PseudoMethodInfo( \
"get_"#dmname"_r", argtypes, #dmtype"&")); \
- s_methods["CppyyTestData::get_"#dmname"_r"] = s_method_id++; \
+ s_methods["CppyyTestData::get_"#dmname"_r"] = methods.back(); \
/* const <type>& get_<type>_cr() */ \
- methods.push_back(Cppyy_PseudoMethodInfo( \
+ methods.push_back(new Cppyy_PseudoMethodInfo( \
"get_"#dmname"_cr", argtypes, "const "#dmtype"&")); \
- s_methods["CppyyTestData::get_"#dmname"_cr"] = s_method_id++; \
+ s_methods["CppyyTestData::get_"#dmname"_cr"] = methods.back(); \
/* void set_<type>(<type>) */ \
argtypes.push_back(#dmtype); \
- methods.push_back(Cppyy_PseudoMethodInfo( \
+ methods.push_back(new Cppyy_PseudoMethodInfo( \
"set_"#dmname, argtypes, "void")); \
- s_methods["CppyyTestData::set_"#dmname] = s_method_id++; \
+ s_methods["CppyyTestData::set_"#dmname] = methods.back(); \
argtypes.clear(); \
/* void set_<type>(const <type>&) */ \
argtypes.push_back("const "#dmtype"&"); \
- methods.push_back(Cppyy_PseudoMethodInfo( \
+ methods.push_back(new Cppyy_PseudoMethodInfo( \
"set_"#dmname"_cr", argtypes, "void")); \
- s_methods["CppyyTestData::set_"#dmname"_cr"] = s_method_id++
+ s_methods["CppyyTestData::set_"#dmname"_cr"] = methods.back()
#define PUBLIC_CPPYY_DATA2(dmname, dmtype) \
PUBLIC_CPPYY_DATA(dmname, dmtype); \
@@ -135,23 +133,23 @@
data.push_back(Cppyy_PseudoDatambrInfo("m_"#dmname"_array2", #dmtype"*", \
offsetof(dummy::CppyyTestData, m_##dmname##_array2), false)); \
argtypes.clear(); \
- methods.push_back(Cppyy_PseudoMethodInfo( \
+ methods.push_back(new Cppyy_PseudoMethodInfo( \
"get_"#dmname"_array", argtypes, #dmtype"*")); \
- s_methods["CppyyTestData::get_"#dmname"_array"] = s_method_id++; \
- methods.push_back(Cppyy_PseudoMethodInfo( \
+ s_methods["CppyyTestData::get_"#dmname"_array"] = methods.back(); \
+ methods.push_back(new Cppyy_PseudoMethodInfo( \
"get_"#dmname"_array2", argtypes, #dmtype"*")); \
- s_methods["CppyyTestData::get_"#dmname"_array2"] = s_method_id++
+ s_methods["CppyyTestData::get_"#dmname"_array2"] = methods.back()
#define PUBLIC_CPPYY_DATA3(dmname, dmtype, key) \
PUBLIC_CPPYY_DATA2(dmname, dmtype); \
argtypes.push_back(#dmtype"*"); \
- methods.push_back(Cppyy_PseudoMethodInfo( \
+ methods.push_back(new Cppyy_PseudoMethodInfo( \
"pass_array", argtypes, #dmtype"*")); \
- s_methods["CppyyTestData::pass_array_"#dmname] = s_method_id++; \
+ s_methods["CppyyTestData::pass_array_"#dmname] = methods.back(); \
argtypes.clear(); argtypes.push_back("void*"); \
- methods.push_back(Cppyy_PseudoMethodInfo( \
+ methods.push_back(new Cppyy_PseudoMethodInfo( \
"pass_void_array_"#key, argtypes, #dmtype"*")); \
- s_methods["CppyyTestData::pass_void_array_"#key] = s_method_id++
+ s_methods["CppyyTestData::pass_void_array_"#key] = methods.back()
#define PUBLIC_CPPYY_STATIC_DATA(dmname, dmtype) \
data.push_back(Cppyy_PseudoDatambrInfo("s_"#dmname, #dmtype, \
@@ -162,7 +160,6 @@
Cppyy_InitPseudoReflectionInfo() {
// class example01 --
static long s_scope_id = 0;
- static long s_method_id = 0;
{ // namespace ''
s_handles[""] = (cppyy_scope_t)++s_scope_id;
@@ -175,33 +172,33 @@
{ // class example01 --
s_handles["example01"] = (cppyy_scope_t)++s_scope_id;
- std::vector<Cppyy_PseudoMethodInfo> methods;
+ std::vector<Cppyy_PseudoMethodInfo*> methods;
// static double staticAddToDouble(double a)
std::vector<std::string> argtypes;
argtypes.push_back("double");
- methods.push_back(Cppyy_PseudoMethodInfo("staticAddToDouble",
argtypes, "double", kStatic));
- s_methods["static_example01::staticAddToDouble_double"] =
s_method_id++;
+ methods.push_back(new Cppyy_PseudoMethodInfo("staticAddToDouble",
argtypes, "double", kStatic));
+ s_methods["static_example01::staticAddToDouble_double"] =
methods.back();
// static int staticAddOneToInt(int a)
// static int staticAddOneToInt(int a, int b)
argtypes.clear();
argtypes.push_back("int");
- methods.push_back(Cppyy_PseudoMethodInfo("staticAddOneToInt",
argtypes, "int", kStatic));
- s_methods["static_example01::staticAddOneToInt_int"] = s_method_id++;
+ methods.push_back(new Cppyy_PseudoMethodInfo("staticAddOneToInt",
argtypes, "int", kStatic));
+ s_methods["static_example01::staticAddOneToInt_int"] = methods.back();
argtypes.push_back("int");
- methods.push_back(Cppyy_PseudoMethodInfo("staticAddOneToInt",
argtypes, "int", kStatic));
- s_methods["static_example01::staticAddOneToInt_int_int"] =
s_method_id++;
+ methods.push_back(new Cppyy_PseudoMethodInfo("staticAddOneToInt",
argtypes, "int", kStatic));
+ s_methods["static_example01::staticAddOneToInt_int_int"] =
methods.back();
// static int staticAtoi(const char* str)
argtypes.clear();
argtypes.push_back("const char*");
- methods.push_back(Cppyy_PseudoMethodInfo("staticAtoi", argtypes,
"int", kStatic));
- s_methods["static_example01::staticAtoi_cchar*"] = s_method_id++;
+ methods.push_back(new Cppyy_PseudoMethodInfo("staticAtoi", argtypes,
"int", kStatic));
+ s_methods["static_example01::staticAtoi_cchar*"] = methods.back();
// static char* staticStrcpy(const char* strin)
- methods.push_back(Cppyy_PseudoMethodInfo("staticStrcpy", argtypes,
"char*", kStatic));
- s_methods["static_example01::staticStrcpy_cchar*"] = s_method_id++;
+ methods.push_back(new Cppyy_PseudoMethodInfo("staticStrcpy", argtypes,
"char*", kStatic));
+ s_methods["static_example01::staticStrcpy_cchar*"] = methods.back();
// static void staticSetPayload(payload* p, double d)
// static payload* staticCyclePayload(payload* p, double d)
@@ -209,90 +206,89 @@
argtypes.clear();
argtypes.push_back("payload*");
argtypes.push_back("double");
- methods.push_back(Cppyy_PseudoMethodInfo("staticSetPayload", argtypes,
"void", kStatic));
- s_methods["static_example01::staticSetPayload_payload*_double"] =
s_method_id++;
- methods.push_back(Cppyy_PseudoMethodInfo("staticCyclePayload",
argtypes, "payload*", kStatic));
- s_methods["static_example01::staticCyclePayload_payload*_double"] =
s_method_id++;
- methods.push_back(Cppyy_PseudoMethodInfo("staticCopyCyclePayload",
argtypes, "payload", kStatic));
- s_methods["static_example01::staticCopyCyclePayload_payload*_double"]
= s_method_id++;
+ methods.push_back(new Cppyy_PseudoMethodInfo("staticSetPayload",
argtypes, "void", kStatic));
+ s_methods["static_example01::staticSetPayload_payload*_double"] =
methods.back();
+ methods.push_back(new Cppyy_PseudoMethodInfo("staticCyclePayload",
argtypes, "payload*", kStatic));
+ s_methods["static_example01::staticCyclePayload_payload*_double"] =
methods.back();
+ methods.push_back(new Cppyy_PseudoMethodInfo("staticCopyCyclePayload",
argtypes, "payload", kStatic));
+ s_methods["static_example01::staticCopyCyclePayload_payload*_double"]
= methods.back();
// static int getCount()
// static void setCount(int)
argtypes.clear();
- methods.push_back(Cppyy_PseudoMethodInfo("getCount", argtypes, "int",
kStatic));
- s_methods["static_example01::getCount"] = s_method_id++;
+ methods.push_back(new Cppyy_PseudoMethodInfo("getCount", argtypes,
"int", kStatic));
+ s_methods["static_example01::getCount"] = methods.back();
argtypes.push_back("int");
- methods.push_back(Cppyy_PseudoMethodInfo("setCount", argtypes, "void",
kStatic));
- s_methods["static_example01::setCount_int"] = s_method_id++;
+ methods.push_back(new Cppyy_PseudoMethodInfo("setCount", argtypes,
"void", kStatic));
+ s_methods["static_example01::setCount_int"] = methods.back();
// example01()
// example01(int a)
argtypes.clear();
- methods.push_back(Cppyy_PseudoMethodInfo("example01", argtypes,
"constructor", kConstructor));
- s_methods["example01::example01"] = s_method_id++;
+ methods.push_back(new Cppyy_PseudoMethodInfo("example01", argtypes,
"constructor", kConstructor));
+ s_methods["example01::example01"] = methods.back();
argtypes.push_back("int");
- methods.push_back(Cppyy_PseudoMethodInfo("example01", argtypes,
"constructor", kConstructor));
- s_methods["example01::example01_int"] = s_method_id++;
+ methods.push_back(new Cppyy_PseudoMethodInfo("example01", argtypes,
"constructor", kConstructor));
+ s_methods["example01::example01_int"] = methods.back();
// int addDataToInt(int a)
argtypes.clear();
argtypes.push_back("int");
- methods.push_back(Cppyy_PseudoMethodInfo("addDataToInt", argtypes,
"int"));
- s_methods["example01::addDataToInt_int"] = s_method_id++;
+ methods.push_back(new Cppyy_PseudoMethodInfo("addDataToInt", argtypes,
"int"));
+ s_methods["example01::addDataToInt_int"] = methods.back();
// int addDataToIntConstRef(const int& a)
argtypes.clear();
argtypes.push_back("const int&");
- methods.push_back(Cppyy_PseudoMethodInfo("addDataToIntConstRef",
argtypes, "int"));
- s_methods["example01::addDataToIntConstRef_cint&"] = s_method_id++;
+ methods.push_back(new Cppyy_PseudoMethodInfo("addDataToIntConstRef",
argtypes, "int"));
+ s_methods["example01::addDataToIntConstRef_cint&"] = methods.back();
// int overloadedAddDataToInt(int a, int b)
argtypes.clear();
argtypes.push_back("int");
argtypes.push_back("int");
- methods.push_back(Cppyy_PseudoMethodInfo("overloadedAddDataToInt",
argtypes, "int"));
- s_methods["example01::overloadedAddDataToInt_int_int"] = s_method_id++;
+ methods.push_back(new Cppyy_PseudoMethodInfo("overloadedAddDataToInt",
argtypes, "int"));
+ s_methods["example01::overloadedAddDataToInt_int_int"] =
methods.back();
// int overloadedAddDataToInt(int a)
// int overloadedAddDataToInt(int a, int b, int c)
argtypes.clear();
argtypes.push_back("int");
- methods.push_back(Cppyy_PseudoMethodInfo("overloadedAddDataToInt",
argtypes, "int"));
- s_methods["example01::overloadedAddDataToInt_int"] = s_method_id++;
+ methods.push_back(new Cppyy_PseudoMethodInfo("overloadedAddDataToInt",
argtypes, "int"));
+ s_methods["example01::overloadedAddDataToInt_int"] = methods.back();
argtypes.push_back("int");
argtypes.push_back("int");
- methods.push_back(Cppyy_PseudoMethodInfo("overloadedAddDataToInt",
argtypes, "int"));
- s_methods["example01::overloadedAddDataToInt_int_int_int"] =
s_method_id++;
+ methods.push_back(new Cppyy_PseudoMethodInfo("overloadedAddDataToInt",
argtypes, "int"));
+ s_methods["example01::overloadedAddDataToInt_int_int_int"] =
methods.back();
// double addDataToDouble(double a)
argtypes.clear();
argtypes.push_back("double");
- methods.push_back(Cppyy_PseudoMethodInfo("addDataToDouble", argtypes,
"double"));
- s_methods["example01::addDataToDouble_double"] = s_method_id++;
+ methods.push_back(new Cppyy_PseudoMethodInfo("addDataToDouble",
argtypes, "double"));
+ s_methods["example01::addDataToDouble_double"] = methods.back();
// int addDataToAtoi(const char* str)
// char* addToStringValue(const char* str)
argtypes.clear();
argtypes.push_back("const char*");
- methods.push_back(Cppyy_PseudoMethodInfo("addDataToAtoi", argtypes,
"int"));
- s_methods["example01::addDataToAtoi_cchar*"] = s_method_id++;
- methods.push_back(Cppyy_PseudoMethodInfo("addToStringValue", argtypes,
"char*"));
- s_methods["example01::addToStringValue_cchar*"] = s_method_id++;
+ methods.push_back(new Cppyy_PseudoMethodInfo("addDataToAtoi",
argtypes, "int"));
+ s_methods["example01::addDataToAtoi_cchar*"] = methods.back();
+ methods.push_back(new Cppyy_PseudoMethodInfo("addToStringValue",
argtypes, "char*"));
+ s_methods["example01::addToStringValue_cchar*"] = methods.back();
// void setPayload(payload* p)
// payload* cyclePayload(payload* p)
// payload copyCyclePayload(payload* p)
argtypes.clear();
argtypes.push_back("payload*");
- methods.push_back(Cppyy_PseudoMethodInfo("setPayload", argtypes,
"void"));
- s_methods["example01::setPayload_payload*"] = s_method_id++;
- methods.push_back(Cppyy_PseudoMethodInfo("cyclePayload", argtypes,
"payload*"));
- s_methods["example01::cyclePayload_payload*"] = s_method_id++;
- methods.push_back(Cppyy_PseudoMethodInfo("copyCyclePayload", argtypes,
"payload"));
- s_methods["example01::copyCyclePayload_payload*"] = s_method_id++;
+ methods.push_back(new Cppyy_PseudoMethodInfo("setPayload", argtypes,
"void"));
+ s_methods["example01::setPayload_payload*"] = methods.back();
+ methods.push_back(new Cppyy_PseudoMethodInfo("cyclePayload", argtypes,
"payload*"));
+ s_methods["example01::cyclePayload_payload*"] = methods.back();
+ methods.push_back(new Cppyy_PseudoMethodInfo("copyCyclePayload",
argtypes, "payload"));
+ s_methods["example01::copyCyclePayload_payload*"] = methods.back();
- Cppyy_PseudoClassInfo info(
- methods, s_method_id - methods.size(),
std::vector<Cppyy_PseudoDatambrInfo>());
+ Cppyy_PseudoClassInfo info(methods,
std::vector<Cppyy_PseudoDatambrInfo>());
s_scopes[(cppyy_scope_t)s_scope_id] = info;
} // -- class example01
@@ -301,27 +297,26 @@
{ // class payload --
s_handles["payload"] = (cppyy_scope_t)++s_scope_id;
- std::vector<Cppyy_PseudoMethodInfo> methods;
+ std::vector<Cppyy_PseudoMethodInfo*> methods;
// payload(double d = 0.)
std::vector<std::string> argtypes;
argtypes.push_back("double");
- methods.push_back(Cppyy_PseudoMethodInfo("payload", argtypes,
"constructor", kConstructor));
- s_methods["payload::payload_double"] = s_method_id++;
+ methods.push_back(new Cppyy_PseudoMethodInfo("payload", argtypes,
"constructor", kConstructor));
+ s_methods["payload::payload_double"] = methods.back();
// double getData()
argtypes.clear();
- methods.push_back(Cppyy_PseudoMethodInfo("getData", argtypes,
"double"));
- s_methods["payload::getData"] = s_method_id++;
+ methods.push_back(new Cppyy_PseudoMethodInfo("getData", argtypes,
"double"));
+ s_methods["payload::getData"] = methods.back();
// void setData(double d)
argtypes.clear();
argtypes.push_back("double");
- methods.push_back(Cppyy_PseudoMethodInfo("setData", argtypes, "void"));
- s_methods["payload::setData_double"] = s_method_id++;
+ methods.push_back(new Cppyy_PseudoMethodInfo("setData", argtypes,
"void"));
+ s_methods["payload::setData_double"] = methods.back();
- Cppyy_PseudoClassInfo info(
- methods, s_method_id - methods.size(),
std::vector<Cppyy_PseudoDatambrInfo>());
+ Cppyy_PseudoClassInfo info(methods,
std::vector<Cppyy_PseudoDatambrInfo>());
s_scopes[(cppyy_scope_t)s_scope_id] = info;
} // -- class payload
@@ -330,21 +325,21 @@
{ // class CppyyTestData --
s_handles["CppyyTestData"] = (cppyy_scope_t)++s_scope_id;
- std::vector<Cppyy_PseudoMethodInfo> methods;
+ std::vector<Cppyy_PseudoMethodInfo*> methods;
// CppyyTestData()
std::vector<std::string> argtypes;
- methods.push_back(Cppyy_PseudoMethodInfo("CppyyTestData", argtypes,
"constructor", kConstructor));
- s_methods["CppyyTestData::CppyyTestData"] = s_method_id++;
+ methods.push_back(new Cppyy_PseudoMethodInfo("CppyyTestData",
argtypes, "constructor", kConstructor));
+ s_methods["CppyyTestData::CppyyTestData"] = methods.back();
- methods.push_back(Cppyy_PseudoMethodInfo("destroy_arrays", argtypes,
"void"));
- s_methods["CppyyTestData::destroy_arrays"] = s_method_id++;
+ methods.push_back(new Cppyy_PseudoMethodInfo("destroy_arrays",
argtypes, "void"));
+ s_methods["CppyyTestData::destroy_arrays"] = methods.back();
std::vector<Cppyy_PseudoDatambrInfo> data;
PUBLIC_CPPYY_DATA2(bool, bool);
PUBLIC_CPPYY_DATA (char, char);
PUBLIC_CPPYY_DATA (schar, signed char);
- PUBLIC_CPPYY_DATA (uchar, unsigned char);
+ PUBLIC_CPPYY_DATA2(uchar, unsigned char);
PUBLIC_CPPYY_DATA3(short, short, h);
PUBLIC_CPPYY_DATA3(ushort, unsigned short, H);
PUBLIC_CPPYY_DATA3(int, int, i);
@@ -389,7 +384,7 @@
data.push_back(Cppyy_PseudoDatambrInfo(
"kLots", "CppyyTestData::EWhat", (ptrdiff_t)&Pseudo_kLots, true));
- Cppyy_PseudoClassInfo info(methods, s_method_id - methods.size(),
data);
+ Cppyy_PseudoClassInfo info(methods, data);
s_scopes[(cppyy_scope_t)s_scope_id] = info;
} // -- class CppyyTest_data
@@ -432,7 +427,7 @@
/* method/function dispatching -------------------------------------------- */
void cppyy_call_v(cppyy_method_t method, cppyy_object_t self, int nargs, void*
args) {
- long idx = (long)method;
+ Cppyy_PseudoMethodInfo* idx = (Cppyy_PseudoMethodInfo*)method;
if (idx ==
s_methods["static_example01::staticSetPayload_payload*_double"]) {
assert(!self && nargs == 2);
dummy::example01::staticSetPayload((dummy::payload*)(*(long*)&((CPPYY_G__value*)args)[0]),
@@ -522,7 +517,7 @@
unsigned char cppyy_call_b(cppyy_method_t method, cppyy_object_t self, int
nargs, void* args) {
unsigned char result = 0;
- const long idx = (long)method;
+ Cppyy_PseudoMethodInfo* idx = (Cppyy_PseudoMethodInfo*)method;
if (idx == s_methods["CppyyTestData::get_bool"]) {
assert(self && nargs == 0);
result = (unsigned char)((dummy::CppyyTestData*)self)->get_bool();
@@ -534,7 +529,7 @@
char cppyy_call_c(cppyy_method_t method, cppyy_object_t self, int nargs, void*
args) {
char result = 0;
- const long idx = (long)method;
+ Cppyy_PseudoMethodInfo* idx = (Cppyy_PseudoMethodInfo*)method;
if (idx == s_methods["CppyyTestData::get_char"]) {
assert(self && nargs == 0);
result = ((dummy::CppyyTestData*)self)->get_char();
@@ -549,7 +544,7 @@
short cppyy_call_h(cppyy_method_t method, cppyy_object_t self, int nargs,
void* args) {
short result = 0;
- const long idx = (long)method;
+ Cppyy_PseudoMethodInfo* idx = (Cppyy_PseudoMethodInfo*)method;
if (idx == s_methods["CppyyTestData::get_short"]) {
assert(self && nargs == 0);
result = ((dummy::CppyyTestData*)self)->get_short();
@@ -564,7 +559,7 @@
int cppyy_call_i(cppyy_method_t method, cppyy_object_t self, int nargs, void*
args) {
int result = 0;
- const long idx = (long)method;
+ Cppyy_PseudoMethodInfo* idx = (Cppyy_PseudoMethodInfo*)method;
if (idx == s_methods["static_example01::staticAddOneToInt_int"]) {
assert(!self && nargs == 1);
result =
dummy::example01::staticAddOneToInt(((CPPYY_G__value*)args)[0].obj.in);
@@ -596,7 +591,7 @@
long cppyy_call_l(cppyy_method_t method, cppyy_object_t self, int nargs, void*
args) {
long result = 0;
- const long idx = (long)method;
+ Cppyy_PseudoMethodInfo* idx = (Cppyy_PseudoMethodInfo*)method;
if (idx == s_methods["static_example01::staticStrcpy_cchar*"]) {
assert(!self && nargs == 1);
result = (long)dummy::example01::staticStrcpy(
@@ -629,6 +624,12 @@
} else if (idx == s_methods["CppyyTestData::get_bool_array2"]) {
assert(self && nargs == 0);
result = (long)((dummy::CppyyTestData*)self)->get_bool_array2();
+ } else if (idx == s_methods["CppyyTestData::get_uchar_array"]) {
+ assert(self && nargs == 0);
+ result = (long)((dummy::CppyyTestData*)self)->get_uchar_array();
+ } else if (idx == s_methods["CppyyTestData::get_uchar_array2"]) {
+ assert(self && nargs == 0);
+ result = (long)((dummy::CppyyTestData*)self)->get_uchar_array2();
} else if (idx == s_methods["CppyyTestData::get_short_array"]) {
assert(self && nargs == 0);
result = (long)((dummy::CppyyTestData*)self)->get_short_array();
@@ -737,7 +738,7 @@
long long cppyy_call_ll(cppyy_method_t method, cppyy_object_t self, int nargs,
void* args) {
long long result = 0;
- const long idx = (long)method;
+ Cppyy_PseudoMethodInfo* idx = (Cppyy_PseudoMethodInfo*)method;
if (idx == s_methods["CppyyTestData::get_llong"]) {
assert(self && nargs == 0);
result = ((dummy::CppyyTestData*)self)->get_llong();
@@ -752,7 +753,7 @@
float cppyy_call_f(cppyy_method_t method, cppyy_object_t self, int nargs,
void* args) {
float result = 0;
- const long idx = (long)method;
+ Cppyy_PseudoMethodInfo* idx = (Cppyy_PseudoMethodInfo*)method;
if (idx == s_methods["CppyyTestData::get_float"]) {
assert(self && nargs == 0);
result = ((dummy::CppyyTestData*)self)->get_float();
@@ -764,7 +765,7 @@
double cppyy_call_d(cppyy_method_t method, cppyy_object_t self, int nargs,
void* args) {
double result = 0.;
- const long idx = (long)method;
+ Cppyy_PseudoMethodInfo* idx = (Cppyy_PseudoMethodInfo*)method;
if (idx == s_methods["static_example01::staticAddToDouble_double"]) {
assert(!self && nargs == 1);
result =
dummy::example01::staticAddToDouble(((CPPYY_G__value*)args)[0].obj.d);
@@ -794,7 +795,7 @@
void* cppyy_call_r(cppyy_method_t method, cppyy_object_t self, int nargs,
void* args) {
void* result = nullptr;
- const long idx = (long)method;
+ Cppyy_PseudoMethodInfo* idx = (Cppyy_PseudoMethodInfo*)method;
if (0) {}
DISPATCH_CALL_R_GET(bool)
DISPATCH_CALL_R_GET(short)
@@ -818,7 +819,7 @@
char* cppyy_call_s(cppyy_method_t method, cppyy_object_t self, int nargs,
void* args, size_t* /* length */) {
char* result = 0;
- const long idx = (long)method;
+ Cppyy_PseudoMethodInfo* idx = (Cppyy_PseudoMethodInfo*)method;
if (idx == s_methods["static_example01::staticStrcpy_cchar*"]) {
assert(!self && nargs == 1);
result = dummy::example01::staticStrcpy((const
char*)(*(long*)&((CPPYY_G__value*)args)[0]));
@@ -830,7 +831,7 @@
cppyy_object_t cppyy_constructor(cppyy_method_t method, cppyy_type_t handle,
int nargs, void* args) {
void* result = 0;
- const long idx = (long)method;
+ Cppyy_PseudoMethodInfo* idx = (Cppyy_PseudoMethodInfo*)method;
if (idx == s_methods["example01::example01"]) {
assert(nargs == 0);
result = new dummy::example01;
@@ -850,11 +851,7 @@
return (cppyy_object_t)result;
}
-cppyy_funcaddr_t cppyy_function_address_from_index(cppyy_scope_t /* scope */,
cppyy_index_t /* idx */) {
- return (cppyy_funcaddr_t)0;
-}
-
-cppyy_funcaddr_t cppyy_function_address_from_method(cppyy_method_t /* method
*/) {
+cppyy_funcaddr_t cppyy_function_address(cppyy_method_t /* method */) {
return (cppyy_funcaddr_t)0;
}
@@ -922,12 +919,15 @@
return 0;
}
+int cppyy_smartptr_info(const char* name, cppyy_type_t* raw, cppyy_method_t*
deref) {
+ return 0;
+}
+
/* method/function reflection information --------------------------------- */
-cppyy_method_t cppyy_get_method(cppyy_scope_t handle, cppyy_index_t
method_index) {
+cppyy_method_t cppyy_get_method(cppyy_scope_t handle, cppyy_index_t idx) {
if (s_scopes.find(handle) != s_scopes.end()) {
- long id = s_scopes[handle].m_method_offset + (long)method_index;
- return (cppyy_method_t)id;
+ return (cppyy_method_t)s_scopes[handle].m_methods[idx];
}
assert(!"unknown class in cppyy_get_method");
return (cppyy_method_t)0;
@@ -937,24 +937,24 @@
return s_scopes[handle].m_methods.size();
}
-char* cppyy_method_name(cppyy_scope_t handle, cppyy_index_t method_index) {
- return
cppstring_to_cstring(s_scopes[handle].m_methods[(int)method_index].m_name);
+char* cppyy_method_name(cppyy_method_t method) {
+ return cppstring_to_cstring(((Cppyy_PseudoMethodInfo*)method)->m_name);
}
-char* cppyy_method_result_type(cppyy_scope_t handle, cppyy_index_t
method_index) {
- return
cppstring_to_cstring(s_scopes[handle].m_methods[method_index].m_returntype);
+char* cppyy_method_result_type(cppyy_method_t method) {
+ return
cppstring_to_cstring(((Cppyy_PseudoMethodInfo*)method)->m_returntype);
}
-int cppyy_method_num_args(cppyy_scope_t handle, cppyy_index_t method_index) {
- return s_scopes[handle].m_methods[method_index].m_argtypes.size();
+int cppyy_method_num_args(cppyy_method_t method) {
+ return ((Cppyy_PseudoMethodInfo*)method)->m_argtypes.size();
}
-int cppyy_method_req_args(cppyy_scope_t handle, cppyy_index_t method_index) {
- return cppyy_method_num_args(handle, method_index);
+int cppyy_method_req_args(cppyy_method_t method) {
+ return cppyy_method_num_args(method);
}
-char* cppyy_method_arg_type(cppyy_scope_t handle, cppyy_index_t method_index,
int arg_index) {
- return
cppstring_to_cstring(s_scopes[handle].m_methods[method_index].m_argtypes[arg_index]);
+char* cppyy_method_arg_type(cppyy_method_t method, int idx) {
+ return
cppstring_to_cstring(((Cppyy_PseudoMethodInfo*)method)->m_argtypes[idx]);
}
char* cppyy_method_arg_default(cppyy_method_t, int /* arg_index */) {
@@ -969,6 +969,10 @@
return cppstring_to_cstring("");
}
+int cppyy_exists_method_template(cppyy_scope_t scope, const char* name) {
+ return 0;
+}
+
int cppyy_method_is_template(cppyy_scope_t /* handle */, cppyy_index_t /*
method_index */) {
return 0;
}
@@ -980,24 +984,24 @@
/* method properties ----------------------------------------------------- */
-int cppyy_is_publicmethod(cppyy_type_t /* handle */, cppyy_index_t /*
method_index */) {
+int cppyy_is_publicmethod(cppyy_method_t) {
return 1;
}
-int cppyy_is_constructor(cppyy_type_t handle, cppyy_index_t method_index) {
- if (s_scopes.find(handle) != s_scopes.end())
- return s_scopes[handle].m_methods[method_index].m_type == kConstructor;
+int cppyy_is_constructor(cppyy_method_t method) {
+ if (method)
+ return ((Cppyy_PseudoMethodInfo*)method)->m_type == kConstructor;
assert(!"unknown class in cppyy_is_constructor");
return 0;
}
-int cppyy_is_destructor(cppyy_type_t /* handle */, cppyy_index_t /*
method_index */) {
+int cppyy_is_destructor(cppyy_method_t) {
return 0;
}
-int cppyy_is_staticmethod(cppyy_type_t handle, cppyy_index_t method_index) {
- if (s_scopes.find(handle) != s_scopes.end())
- return s_scopes[handle].m_methods[method_index].m_type == kStatic;
+int cppyy_is_staticmethod(cppyy_method_t method) {
+ if (method)
+ return ((Cppyy_PseudoMethodInfo*)method)->m_type == kStatic;
assert(!"unknown class in cppyy_is_staticmethod");
return 0;
}
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit