home *** CD-ROM | disk | FTP | other *** search
/ PC World 2005 June / PCWorld_2005-06_cd.bin / software / vyzkuste / firewally / firewally.exe / framework-2.3.exe / cobject.h < prev    next >
C/C++ Source or Header  |  2003-12-30  |  2KB  |  52 lines

  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) ((op)->ob_type == &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. #ifdef __cplusplus
  49. }
  50. #endif
  51. #endif /* !Py_COBJECT_H */
  52.