diff options
author | Renato Filho <renato.filho@openbossa.org> | 2010-05-10 11:44:11 -0300 |
---|---|---|
committer | Renato Filho <renato.filho@openbossa.org> | 2010-05-10 17:28:19 -0300 |
commit | 2351a7009b83beadb12c75210278684a5b08b362 (patch) | |
tree | 17a304302afc5d7e1783501f017985c2ce988788 /libshiboken/basewrapper.h | |
parent | e3f3c1007a435e647eb0ee026559b9a64b44da9e (diff) |
Created userdata on Python type object.
User type userdata to store metaobject information.
Reviewer: Marcelo Lira <marcelo.lira@openbossa.org>,
Luciano Wolf <luciano.wolf@openbossa.org>
Diffstat (limited to 'libshiboken/basewrapper.h')
-rw-r--r-- | libshiboken/basewrapper.h | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/libshiboken/basewrapper.h b/libshiboken/basewrapper.h index 168d3f43f..b6a9b7950 100644 --- a/libshiboken/basewrapper.h +++ b/libshiboken/basewrapper.h @@ -68,6 +68,9 @@ typedef std::list<TypeDiscoveryFunc> TypeDiscoveryFuncList; typedef void* (*ExtendedToCppFunc)(PyObject*); typedef bool (*ExtendedIsConvertibleFunc)(PyObject*); +// Used in userdata dealloc function +typedef void (*DeleteUserDataFunc)(void*); + LIBSHIBOKEN_API PyAPI_DATA(PyTypeObject) SbkBaseWrapperType_Type; LIBSHIBOKEN_API PyAPI_DATA(SbkBaseWrapperType) SbkBaseWrapper_Type; @@ -99,6 +102,9 @@ struct LIBSHIBOKEN_API SbkBaseWrapperType int is_multicpp:1; /// True if this type was definied by the user. int is_user_type:1; + /// Type user data + void *user_data; + DeleteUserDataFunc d_func; }; struct ParentInfo; @@ -179,6 +185,13 @@ LIBSHIBOKEN_API void* getCppPointer(PyObject* wrapper, PyTypeObject* desiredType LIBSHIBOKEN_API bool setCppPointer(SbkBaseWrapper* wrapper, PyTypeObject* desiredType, void* cptr); /** + * Get/Set Userdata in type class + */ +LIBSHIBOKEN_API void setTypeUserData(SbkBaseWrapper* wrapper, void* user_data, DeleteUserDataFunc d_func); +LIBSHIBOKEN_API void* getTypeUserData(SbkBaseWrapper* wrapper); + + +/** * Shiboken_TypeCheck macro performs a type check using the values registered with SbkType<>() template. */ #define Shiboken_TypeCheck(pyobj, type) (PyObject_TypeCheck(pyobj, SbkType<type>())) |