all llvmpy PyCapsule objects have a name.
pycap_get should throw when PyCapsule_GetPointer returns NULL.
This commit is contained in:
parent
d642bfdfe6
commit
5debe65fe1
1 changed files with 8 additions and 2 deletions
10
llvm/wrap.h
10
llvm/wrap.h
|
|
@ -91,11 +91,17 @@ typedef long long llvmwrap_ll;
|
||||||
/* Type ctor/dtor */
|
/* Type ctor/dtor */
|
||||||
/*===----------------------------------------------------------------------===*/
|
/*===----------------------------------------------------------------------===*/
|
||||||
|
|
||||||
|
static const char PYCAP_OBJECT_NAME[] = "llvm.wrap.h";
|
||||||
|
|
||||||
// Cast python object to aTYPE
|
// Cast python object to aTYPE
|
||||||
template <typename aTYPE>
|
template <typename aTYPE>
|
||||||
aTYPE pycap_get( PyObject* obj )
|
aTYPE pycap_get( PyObject* obj )
|
||||||
{
|
{
|
||||||
return static_cast<aTYPE> ( PyCapsule_GetPointer(obj, NULL) );
|
void *p = PyCapsule_GetPointer(obj, PYCAP_OBJECT_NAME);
|
||||||
|
if (!p){
|
||||||
|
throw py_exception();
|
||||||
|
}
|
||||||
|
return static_cast<aTYPE> (p);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Contruct python object to hold aTYPE pointer
|
// Contruct python object to hold aTYPE pointer
|
||||||
|
|
@ -103,7 +109,7 @@ template <typename aTYPE>
|
||||||
PyObject* pycap_new( aTYPE p )
|
PyObject* pycap_new( aTYPE p )
|
||||||
{
|
{
|
||||||
if (p){
|
if (p){
|
||||||
return PyCapsule_New(p, NULL, NULL);
|
return PyCapsule_New(p, PYCAP_OBJECT_NAME, NULL);
|
||||||
}
|
}
|
||||||
Py_RETURN_NONE;
|
Py_RETURN_NONE;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue