symbian-qemu-0.9.1-12/python-2.6.1/Include/cobject.h
changeset 1 2fb8b9db1c86
equal deleted inserted replaced
0:ffa851df0825 1:2fb8b9db1c86
       
     1 
       
     2 /* C objects to be exported from one extension module to another.
       
     3  
       
     4    C objects are used for communication between extension modules.
       
     5    They provide a way for an extension module to export a C interface
       
     6    to other extension modules, so that extension modules can use the
       
     7    Python import mechanism to link to one another.
       
     8 
       
     9 */
       
    10 
       
    11 #ifndef Py_COBJECT_H
       
    12 #define Py_COBJECT_H
       
    13 #ifdef __cplusplus
       
    14 extern "C" {
       
    15 #endif
       
    16 
       
    17 PyAPI_DATA(PyTypeObject) PyCObject_Type;
       
    18 
       
    19 #define PyCObject_Check(op) (Py_TYPE(op) == &PyCObject_Type)
       
    20 
       
    21 /* Create a PyCObject from a pointer to a C object and an optional
       
    22    destructor function.  If the second argument is non-null, then it
       
    23    will be called with the first argument if and when the PyCObject is
       
    24    destroyed.
       
    25 
       
    26 */
       
    27 PyAPI_FUNC(PyObject *) PyCObject_FromVoidPtr(
       
    28 	void *cobj, void (*destruct)(void*));
       
    29 
       
    30 
       
    31 /* Create a PyCObject from a pointer to a C object, a description object,
       
    32    and an optional destructor function.  If the third argument is non-null,
       
    33    then it will be called with the first and second arguments if and when 
       
    34    the PyCObject is destroyed.
       
    35 */
       
    36 PyAPI_FUNC(PyObject *) PyCObject_FromVoidPtrAndDesc(
       
    37 	void *cobj, void *desc, void (*destruct)(void*,void*));
       
    38 
       
    39 /* Retrieve a pointer to a C object from a PyCObject. */
       
    40 PyAPI_FUNC(void *) PyCObject_AsVoidPtr(PyObject *);
       
    41 
       
    42 /* Retrieve a pointer to a description object from a PyCObject. */
       
    43 PyAPI_FUNC(void *) PyCObject_GetDesc(PyObject *);
       
    44 
       
    45 /* Import a pointer to a C object from a module using a PyCObject. */
       
    46 PyAPI_FUNC(void *) PyCObject_Import(char *module_name, char *cobject_name);
       
    47 
       
    48 /* Modify a C object. Fails (==0) if object has a destructor. */
       
    49 PyAPI_FUNC(int) PyCObject_SetVoidPtr(PyObject *self, void *cobj);
       
    50 
       
    51 
       
    52 typedef struct {
       
    53     PyObject_HEAD
       
    54     void *cobject;
       
    55     void *desc;
       
    56     void (*destructor)(void *);
       
    57 } PyCObject;
       
    58 
       
    59 
       
    60 #ifdef __cplusplus
       
    61 }
       
    62 #endif
       
    63 #endif /* !Py_COBJECT_H */