* when talloc_get_type() returns NULL. */
#define pytalloc_get_type(py_obj, type) (talloc_get_type(pytalloc_get_ptr(py_obj), type))
-#define pytalloc_get_ptr(py_obj) (((pytalloc_Object *)py_obj)->ptr)
-#define pytalloc_get_mem_ctx(py_obj) ((pytalloc_Object *)py_obj)->talloc_ctx
+void *_pytalloc_get_ptr(PyObject *py_obj);
+#define pytalloc_get_ptr(py_obj) _pytalloc_get_ptr((PyObject *)(py_obj))
+TALLOC_CTX *_pytalloc_get_mem_ctx(PyObject *py_obj);
+#define pytalloc_get_mem_ctx(py_obj) _pytalloc_get_mem_ctx((PyObject *)(py_obj))
PyObject *pytalloc_steal_ex(PyTypeObject *py_type, TALLOC_CTX *mem_ctx, void *ptr);
PyObject *pytalloc_steal(PyTypeObject *py_type, void *ptr);
return PyObject_TypeCheck(obj, tp);
}
+
+_PUBLIC_ void *_pytalloc_get_ptr(PyObject *py_obj)
+{
+ return ((pytalloc_Object *)py_obj)->ptr;
+}
+
+_PUBLIC_ TALLOC_CTX *_pytalloc_get_mem_ctx(PyObject *py_obj)
+{
+ return ((pytalloc_Object *)py_obj)->talloc_ctx;
+}
}
static PyObject *testpytalloc_reference(PyObject *mod, PyObject *args) {
- pytalloc_Object *source = NULL;
+ PyObject *source = NULL;
void *ptr;
if (!PyArg_ParseTuple(args, "O!", pytalloc_GetObjectType(), &source))
return NULL;
- ptr = source->ptr;
+ ptr = pytalloc_get_ptr(source);
return pytalloc_reference_ex(pytalloc_GetObjectType(), ptr, ptr);
}
vnum=VERSION,
hide_symbols=True,
abi_directory='ABI',
- abi_match='pytalloc_*',
+ abi_match='pytalloc_* _pytalloc_*',
private_library=private_library,
public_headers=('' if private_library else 'pytalloc.h'),
pc_files='pytalloc-util.pc'