home *** CD-ROM | disk | FTP | other *** search
- // Support for PythonCOM and its extensions to register the interfaces,
- // gateways and IIDs it supports.
- //
- // The module can simply declare an array of type PyCom_InterfaceSupportInfo, then
- // use the macros to populate it.
- //
- // See Register.cpp and AXScript.cpp for examples on its use.
-
- #ifndef __PYTHONCOMREGISTER_H__
- #define __PYTHONCOMREGISTER_H__
-
- #include "PythonCOMServer.h" // Need defns in this file...
-
- typedef struct
- {
- const GUID *pGUID; // The supported IID - required
- const char *interfaceName; // Name of the interface - required
- const char *iidName; // Name of the IID that goes into the dict. - required
- PyTypeObject *pTypeOb; // the type object for client PyI* side - NULL for server only support.
- pfnPyGatewayConstructor ctor; // Gateway (PyG*) interface constructor - NULL for client only support
-
- } PyCom_InterfaceSupportInfo;
-
- #define PYCOM_INTERFACE_IID_ONLY(ifc) { &IID_I##ifc, "I" #ifc, "IID_I" #ifc, NULL, NULL }
- #define PYCOM_INTERFACE_CLSID_ONLY(ifc) { &CLSID_##ifc, "CLSID_" #ifc, "CLSID_" #ifc, NULL, NULL }
- #define PYCOM_INTERFACE_CATID_ONLY(ifc) { &CATID_##ifc, "CATID_" #ifc, "CATID_" #ifc, NULL, NULL }
- #define PYCOM_INTERFACE_CLIENT_ONLY(ifc) { &IID_I##ifc, "I" #ifc, "IID_I" #ifc, &PyI##ifc::type, NULL }
- #define PYCOM_INTERFACE_SERVER_ONLY(ifc) { &IID_I##ifc, "I" #ifc, "IID_I" #ifc, NULL, GET_PYGATEWAY_CTOR(PyG##ifc)}
- #define PYCOM_INTERFACE_FULL(ifc) { &IID_I##ifc, "I" #ifc, "IID_I" #ifc, &PyI##ifc::type, GET_PYGATEWAY_CTOR(PyG##ifc)}
-
- // Prototypes for the register functions
-
- // Register a PythonCOM extension module
- PYCOM_EXPORT int PyCom_RegisterExtensionSupport( PyObject *dict, const PyCom_InterfaceSupportInfo *pInterfaces, int numEntries);
-
- // THESE SHOULD NO LONGER BE USED. Instead, use the functions above passing an
- // array of PyCom_InterfaceSupportInfo objects.
-
- PYCOM_EXPORT int PyCom_RegisterClientType(PyTypeObject *typeOb, const GUID *guid);
-
- HRESULT PYCOM_EXPORT PyCom_RegisterGatewayObject(REFIID iid, pfnPyGatewayConstructor ctor, const char *interfaceName);
- PYCOM_EXPORT int PyCom_IsGatewayRegistered(REFIID iid);
-
-
- #endif /* __PYTHONCOMREGISTER_H__ */
-