Skip to content

Commit ba1c6d2

Browse files
author
Marcus Tomlinson
committed
Store pointer to C++ object in Python class as a unsigned long long ("K") in _Ecs_Expose_Object
1 parent ac2936f commit ba1c6d2

File tree

2 files changed

+14
-13
lines changed

2 files changed

+14
-13
lines changed

include/ecspython/EcsMacros.h

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -193,15 +193,15 @@ static void Ecs_Init##_##Class##_##Method()\
193193
template< class ObjT, class RetT >\
194194
static RetT Class##_##Call##Method( PyObject* args, bool& success )\
195195
{\
196-
success = true; char* obj; std::string pyTypes = "k";\
196+
success = true; char* obj; std::string pyTypes = "K";\
197197
if( _Ecs_ParseTuple( args, pyTypes.c_str(), &obj ) )\
198198
return ( RetT )( ( ObjT* ) obj )->Method();\
199199
success = false; return RetT();\
200200
}\
201201
template< class ObjT, class RetT, class A1T >\
202202
static RetT Class##_##Call##Method( PyObject* args, bool& success )\
203203
{\
204-
success = true; char* objs[2]; std::string pyTypes = "k";\
204+
success = true; char* objs[2]; std::string pyTypes = "K";\
205205
_Ecs_AppendPythonArgType<A1T>( pyTypes );\
206206
if( _Ecs_ParseTuple( args, pyTypes.c_str(), &objs[0], &objs[1] ) )\
207207
return ( RetT )( ( ObjT* ) objs[0] )->Method( (A1T)objs[1] );\
@@ -210,7 +210,7 @@ static RetT Class##_##Call##Method( PyObject* args, bool& success )\
210210
template< class ObjT, class RetT, class A1T, class A2T >\
211211
static RetT Class##_##Call##Method( PyObject* args, bool& success )\
212212
{\
213-
success = true; char* objs[3]; std::string pyTypes = "k";\
213+
success = true; char* objs[3]; std::string pyTypes = "K";\
214214
_Ecs_AppendPythonArgType<A1T>( pyTypes );\
215215
_Ecs_AppendPythonArgType<A2T>( pyTypes );\
216216
if( _Ecs_ParseTuple( args, pyTypes.c_str(), &objs[0], &objs[1], &objs[2] ) )\
@@ -220,7 +220,7 @@ static RetT Class##_##Call##Method( PyObject* args, bool& success )\
220220
template< class ObjT, class RetT, class A1T, class A2T, class A3T >\
221221
static RetT Class##_##Call##Method( PyObject* args, bool& success )\
222222
{\
223-
success = true; char* objs[4]; std::string pyTypes = "k";\
223+
success = true; char* objs[4]; std::string pyTypes = "K";\
224224
_Ecs_AppendPythonArgType<A1T>( pyTypes );\
225225
_Ecs_AppendPythonArgType<A2T>( pyTypes );\
226226
_Ecs_AppendPythonArgType<A3T>( pyTypes );\
@@ -231,7 +231,7 @@ static RetT Class##_##Call##Method( PyObject* args, bool& success )\
231231
template< class ObjT, class RetT, class A1T, class A2T, class A3T, class A4T >\
232232
static RetT Class##_##Call##Method( PyObject* args, bool& success )\
233233
{\
234-
success = true; char* objs[5]; std::string pyTypes = "k";\
234+
success = true; char* objs[5]; std::string pyTypes = "K";\
235235
_Ecs_AppendPythonArgType<A1T>( pyTypes );\
236236
_Ecs_AppendPythonArgType<A2T>( pyTypes );\
237237
_Ecs_AppendPythonArgType<A3T>( pyTypes );\
@@ -243,7 +243,7 @@ static RetT Class##_##Call##Method( PyObject* args, bool& success )\
243243
template< class ObjT, class RetT, class A1T, class A2T, class A3T, class A4T, class A5T >\
244244
static RetT Class##_##Call##Method( PyObject* args, bool& success )\
245245
{\
246-
success = true; char* objs[6]; std::string pyTypes = "k";\
246+
success = true; char* objs[6]; std::string pyTypes = "K";\
247247
_Ecs_AppendPythonArgType<A1T>( pyTypes );\
248248
_Ecs_AppendPythonArgType<A2T>( pyTypes );\
249249
_Ecs_AppendPythonArgType<A3T>( pyTypes );\
@@ -256,7 +256,7 @@ static RetT Class##_##Call##Method( PyObject* args, bool& success )\
256256
template< class ObjT, class RetT, class A1T, class A2T, class A3T, class A4T, class A5T, class A6T >\
257257
static RetT Class##_##Call##Method( PyObject* args, bool& success )\
258258
{\
259-
success = true; char* objs[7]; std::string pyTypes = "k";\
259+
success = true; char* objs[7]; std::string pyTypes = "K";\
260260
_Ecs_AppendPythonArgType<A1T>( pyTypes );\
261261
_Ecs_AppendPythonArgType<A2T>( pyTypes );\
262262
_Ecs_AppendPythonArgType<A3T>( pyTypes );\
@@ -270,7 +270,7 @@ static RetT Class##_##Call##Method( PyObject* args, bool& success )\
270270
template< class ObjT, class RetT, class A1T, class A2T, class A3T, class A4T, class A5T, class A6T, class A7T >\
271271
static RetT Class##_##Call##Method( PyObject* args, bool& success )\
272272
{\
273-
success = true; char* objs[8]; std::string pyTypes = "k";\
273+
success = true; char* objs[8]; std::string pyTypes = "K";\
274274
_Ecs_AppendPythonArgType<A1T>( pyTypes );\
275275
_Ecs_AppendPythonArgType<A2T>( pyTypes );\
276276
_Ecs_AppendPythonArgType<A3T>( pyTypes );\
@@ -285,7 +285,7 @@ static RetT Class##_##Call##Method( PyObject* args, bool& success )\
285285
template< class ObjT, class RetT, class A1T, class A2T, class A3T, class A4T, class A5T, class A6T, class A7T, class A8T >\
286286
static RetT Class##_##Call##Method( PyObject* args, bool& success )\
287287
{\
288-
success = true; char* objs[9]; std::string pyTypes = "k";\
288+
success = true; char* objs[9]; std::string pyTypes = "K";\
289289
_Ecs_AppendPythonArgType<A1T>( pyTypes );\
290290
_Ecs_AppendPythonArgType<A2T>( pyTypes );\
291291
_Ecs_AppendPythonArgType<A3T>( pyTypes );\
@@ -301,7 +301,7 @@ static RetT Class##_##Call##Method( PyObject* args, bool& success )\
301301
template< class ObjT, class RetT, class A1T, class A2T, class A3T, class A4T, class A5T, class A6T, class A7T, class A8T, class A9T >\
302302
static RetT Class##_##Call##Method( PyObject* args, bool& success )\
303303
{\
304-
success = true; char* objs[10]; std::string pyTypes = "k";\
304+
success = true; char* objs[10]; std::string pyTypes = "K";\
305305
_Ecs_AppendPythonArgType<A1T>( pyTypes );\
306306
_Ecs_AppendPythonArgType<A2T>( pyTypes );\
307307
_Ecs_AppendPythonArgType<A3T>( pyTypes );\
@@ -318,7 +318,7 @@ static RetT Class##_##Call##Method( PyObject* args, bool& success )\
318318
template< class ObjT, class RetT, class A1T, class A2T, class A3T, class A4T, class A5T, class A6T, class A7T, class A8T, class A9T, class A10T >\
319319
static RetT Class##_##Call##Method( PyObject* args, bool& success )\
320320
{\
321-
success = true; char* objs[11]; std::string pyTypes = "k";\
321+
success = true; char* objs[11]; std::string pyTypes = "K";\
322322
_Ecs_AppendPythonArgType<A1T>( pyTypes );\
323323
_Ecs_AppendPythonArgType<A2T>( pyTypes );\
324324
_Ecs_AppendPythonArgType<A3T>( pyTypes );\

src/EcsPython.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,12 +30,13 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
3030
************************************************************************/
3131

3232
#include <EcsPython.h>
33-
#include <Python.h>
3433

3534
#include <fstream>
3635
#include <iostream>
3736
#include <string>
3837

38+
#include <Python.h>
39+
3940
PyMODINIT_FUNC _Ecs_PyInit();
4041

4142
//=================================================================================================
@@ -201,7 +202,7 @@ void _Ecs_Expose_Object( char* pyObject, std::string pyClassName, std::string py
201202
{
202203
std::string pythonCall;
203204
PyObject* module = NULL;
204-
PyObject* newPyObject = Py_BuildValue( "i", pyObject );
205+
PyObject* newPyObject = Py_BuildValue( "K", pyObject );
205206

206207
Ecs_Python_Cmd("ecsPtr = 0");
207208

0 commit comments

Comments
 (0)