/* =========================== Module _Cm =========================== */ #include "Python.h" #include "pymactoolbox.h" /* Macro to test whether a weak-loaded CFM function exists */ #define PyMac_PRECHECK(rtn) do { if ( &rtn == NULL ) {\ PyErr_SetString(PyExc_NotImplementedError, \ "Not available in this shared library/OS version"); \ return NULL; \ }} while(0) #include #ifdef USE_TOOLBOX_OBJECT_GLUE extern PyObject *_CmpObj_New(Component); extern int _CmpObj_Convert(PyObject *, Component *); extern PyObject *_CmpInstObj_New(ComponentInstance); extern int _CmpInstObj_Convert(PyObject *, ComponentInstance *); #define CmpObj_New _CmpObj_New #define CmpObj_Convert _CmpObj_Convert #define CmpInstObj_New _CmpInstObj_New #define CmpInstObj_Convert _CmpInstObj_Convert #endif /* ** Parse/generate ComponentDescriptor records */ static PyObject * CmpDesc_New(ComponentDescription *itself) { return Py_BuildValue("O&O&O&ll", PyMac_BuildOSType, itself->componentType, PyMac_BuildOSType, itself->componentSubType, PyMac_BuildOSType, itself->componentManufacturer, itself->componentFlags, itself->componentFlagsMask); } static int CmpDesc_Convert(PyObject *v, ComponentDescription *p_itself) { return PyArg_ParseTuple(v, "O&O&O&ll", PyMac_GetOSType, &p_itself->componentType, PyMac_GetOSType, &p_itself->componentSubType, PyMac_GetOSType, &p_itself->componentManufacturer, &p_itself->componentFlags, &p_itself->componentFlagsMask); } static PyObject *Cm_Error; /* ----------------- Object type ComponentInstance ------------------ */ PyTypeObject ComponentInstance_Type; #define CmpInstObj_Check(x) (Py_Type(x) == &ComponentInstance_Type || PyObject_TypeCheck((x), &ComponentInstance_Type)) typedef struct ComponentInstanceObject { PyObject_HEAD ComponentInstance ob_itself; } ComponentInstanceObject; PyObject *CmpInstObj_New(ComponentInstance itself) { ComponentInstanceObject *it; if (itself == NULL) { PyErr_SetString(Cm_Error,"NULL ComponentInstance"); return NULL; } it = PyObject_NEW(ComponentInstanceObject, &ComponentInstance_Type); if (it == NULL) return NULL; it->ob_itself = itself; return (PyObject *)it; } int CmpInstObj_Convert(PyObject *v, ComponentInstance *p_itself) { if (!CmpInstObj_Check(v)) { PyErr_SetString(PyExc_TypeError, "ComponentInstance required"); return 0; } *p_itself = ((ComponentInstanceObject *)v)->ob_itself; return 1; } static void CmpInstObj_dealloc(ComponentInstanceObject *self) { /* Cleanup of self->ob_itself goes here */ Py_Type(self)->tp_free((PyObject *)self); } static PyObject *CmpInstObj_CloseComponent(ComponentInstanceObject *_self, PyObject *_args) { PyObject *_res = NULL; OSErr _err; #ifndef CloseComponent PyMac_PRECHECK(CloseComponent); #endif if (!PyArg_ParseTuple(_args, "")) return NULL; _err = CloseComponent(_self->ob_itself); if (_err != noErr) return PyMac_Error(_err); Py_INCREF(Py_None); _res = Py_None; return _res; } static PyObject *CmpInstObj_GetComponentInstanceError(ComponentInstanceObject *_self, PyObject *_args) { PyObject *_res = NULL; OSErr _err; #ifndef GetComponentInstanceError PyMac_PRECHECK(GetComponentInstanceError); #endif if (!PyArg_ParseTuple(_args, "")) return NULL; _err = GetComponentInstanceError(_self->ob_itself); if (_err != noErr) return PyMac_Error(_err); Py_INCREF(Py_None); _res = Py_None; return _res; } static PyObject *CmpInstObj_SetComponentInstanceError(ComponentInstanceObject *_self, PyObject *_args) { PyObject *_res = NULL; OSErr theError; #ifndef SetComponentInstanceError PyMac_PRECHECK(SetComponentInstanceError); #endif if (!PyArg_ParseTuple(_args, "h", &theError)) return NULL; SetComponentInstanceError(_self->ob_itself, theError); Py_INCREF(Py_None); _res = Py_None; return _res; } static PyObject *CmpInstObj_GetComponentInstanceStorage(ComponentInstanceObject *_self, PyObject *_args) { PyObject *_res = NULL; Handle _rv; #ifndef GetComponentInstanceStorage PyMac_PRECHECK(GetComponentInstanceStorage); #endif if (!PyArg_ParseTuple(_args, "")) return NULL; _rv = GetComponentInstanceStorage(_self->ob_itself); _res = Py_BuildValue("O&", ResObj_New, _rv); return _res; } static PyObject *CmpInstObj_SetComponentInstanceStorage(ComponentInstanceObject *_self, PyObject *_args) { PyObject *_res = NULL; Handle theStorage; #ifndef SetComponentInstanceStorage PyMac_PRECHECK(SetComponentInstanceStorage); #endif if (!PyArg_ParseTuple(_args, "O&", ResObj_Convert, &theStorage)) return NULL; SetComponentInstanceStorage(_self->ob_itself, theStorage); Py_INCREF(Py_None); _res = Py_None; return _res; } static PyObject *CmpInstObj_ComponentFunctionImplemented(ComponentInstanceObject *_self, PyObject *_args) { PyObject *_res = NULL; long _rv; short ftnNumber; #ifndef ComponentFunctionImplemented PyMac_PRECHECK(ComponentFunctionImplemented); #endif if (!PyArg_ParseTuple(_args, "h", &ftnNumber)) return NULL; _rv = ComponentFunctionImplemented(_self->ob_itself, ftnNumber); _res = Py_BuildValue("l", _rv); return _res; } static PyObject *CmpInstObj_GetComponentVersion(ComponentInstanceObject *_self, PyObject *_args) { PyObject *_res = NULL; long _rv; #ifndef GetComponentVersion PyMac_PRECHECK(GetComponentVersion); #endif if (!PyArg_ParseTuple(_args, "")) return NULL; _rv = GetComponentVersion(_self->ob_itself); _res = Py_BuildValue("l", _rv); return _res; } static PyObject *CmpInstObj_ComponentSetTarget(ComponentInstanceObject *_self, PyObject *_args) { PyObject *_res = NULL; long _rv; ComponentInstance target; #ifndef ComponentSetTarget PyMac_PRECHECK(ComponentSetTarget); #endif if (!PyArg_ParseTuple(_args, "O&", CmpInstObj_Convert, &target)) return NULL; _rv = ComponentSetTarget(_self->ob_itself, target); _res = Py_BuildValue("l", _rv); return _res; } static PyMethodDef CmpInstObj_methods[] = { {"CloseComponent", (PyCFunction)CmpInstObj_CloseComponent, 1, PyDoc_STR("() -> None")}, {"GetComponentInstanceError", (PyCFunction)CmpInstObj_GetComponentInstanceError, 1, PyDoc_STR("() -> None")}, {"SetComponentInstanceError", (PyCFunction)CmpInstObj_SetComponentInstanceError, 1, PyDoc_STR("(OSErr theError) -> None")}, {"GetComponentInstanceStorage", (PyCFunction)CmpInstObj_GetComponentInstanceStorage, 1, PyDoc_STR("() -> (Handle _rv)")}, {"SetComponentInstanceStorage", (PyCFunction)CmpInstObj_SetComponentInstanceStorage, 1, PyDoc_STR("(Handle theStorage) -> None")}, {"ComponentFunctionImplemented", (PyCFunction)CmpInstObj_ComponentFunctionImplemented, 1, PyDoc_STR("(short ftnNumber) -> (long _rv)")}, {"GetComponentVersion", (PyCFunction)CmpInstObj_GetComponentVersion, 1, PyDoc_STR("() -> (long _rv)")}, {"ComponentSetTarget", (PyCFunction)CmpInstObj_ComponentSetTarget, 1, PyDoc_STR("(ComponentInstance target) -> (long _rv)")}, {NULL, NULL, 0} }; #define CmpInstObj_getsetlist NULL #define CmpInstObj_compare NULL #define CmpInstObj_repr NULL #define CmpInstObj_hash NULL #define CmpInstObj_tp_init 0 #define CmpInstObj_tp_alloc PyType_GenericAlloc static PyObject *CmpInstObj_tp_new(PyTypeObject *type, PyObject *_args, PyObject *_kwds) { PyObject *_self; ComponentInstance itself; char *kw[] = {"itself", 0}; if (!PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, CmpInstObj_Convert, &itself)) return NULL; if ((_self = type->tp_alloc(type, 0)) == NULL) return NULL; ((ComponentInstanceObject *)_self)->ob_itself = itself; return _self; } #define CmpInstObj_tp_free PyObject_Del PyTypeObject ComponentInstance_Type = { PyVarObject_HEAD_INIT(NULL, 0) "_Cm.ComponentInstance", /*tp_name*/ sizeof(ComponentInstanceObject), /*tp_basicsize*/ 0, /*tp_itemsize*/ /* methods */ (destructor) CmpInstObj_dealloc, /*tp_dealloc*/ 0, /*tp_print*/ (getattrfunc)0, /*tp_getattr*/ (setattrfunc)0, /*tp_setattr*/ (cmpfunc) CmpInstObj_compare, /*tp_compare*/ (reprfunc) CmpInstObj_repr, /*tp_repr*/ (PyNumberMethods *)0, /* tp_as_number */ (PySequenceMethods *)0, /* tp_as_sequence */ (PyMappingMethods *)0, /* tp_as_mapping */ (hashfunc) CmpInstObj_hash, /*tp_hash*/ 0, /*tp_call*/ 0, /*tp_str*/ PyObject_GenericGetAttr, /*tp_getattro*/ PyObject_GenericSetAttr, /*tp_setattro */ 0, /*tp_as_buffer*/ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /* tp_flags */ 0, /*tp_doc*/ 0, /*tp_traverse*/ 0, /*tp_clear*/ 0, /*tp_richcompare*/ 0, /*tp_weaklistoffset*/ 0, /*tp_iter*/ 0, /*tp_iternext*/ CmpInstObj_methods, /* tp_methods */ 0, /*tp_members*/ CmpInstObj_getsetlist, /*tp_getset*/ 0, /*tp_base*/ 0, /*tp_dict*/ 0, /*tp_descr_get*/ 0, /*tp_descr_set*/ 0, /*tp_dictoffset*/ CmpInstObj_tp_init, /* tp_init */ CmpInstObj_tp_alloc, /* tp_alloc */ CmpInstObj_tp_new, /* tp_new */ CmpInstObj_tp_free, /* tp_free */ }; /* --------------- End object type ComponentInstance ---------------- */ /* --------------------- Object type Component ---------------------- */ PyTypeObject Component_Type; #define CmpObj_Check(x) (Py_Type(x) == &Component_Type || PyObject_TypeCheck((x), &Component_Type)) typedef struct ComponentObject { PyObject_HEAD Component ob_itself; } ComponentObject; PyObject *CmpObj_New(Component itself) { ComponentObject *it; if (itself == NULL) { /* XXXX Or should we return None? */ PyErr_SetString(Cm_Error,"No such component"); return NULL; } it = PyObject_NEW(ComponentObject, &Component_Type); if (it == NULL) return NULL; it->ob_itself = itself; return (PyObject *)it; } int CmpObj_Convert(PyObject *v, Component *p_itself) { if ( v == Py_None ) { *p_itself = 0; return 1; } if (!CmpObj_Check(v)) { PyErr_SetString(PyExc_TypeError, "Component required"); return 0; } *p_itself = ((ComponentObject *)v)->ob_itself; return 1; } static void CmpObj_dealloc(ComponentObject *self) { /* Cleanup of self->ob_itself goes here */ Py_Type(self)->tp_free((PyObject *)self); } static PyObject *CmpObj_UnregisterComponent(ComponentObject *_self, PyObject *_args) { PyObject *_res = NULL; OSErr _err; #ifndef UnregisterComponent PyMac_PRECHECK(UnregisterComponent); #endif if (!PyArg_ParseTuple(_args, "")) return NULL; _err = UnregisterComponent(_self->ob_itself); if (_err != noErr) return PyMac_Error(_err); Py_INCREF(Py_None); _res = Py_None; return _res; } static PyObject *CmpObj_GetComponentInfo(ComponentObject *_self, PyObject *_args) { PyObject *_res = NULL; OSErr _err; ComponentDescription cd; Handle componentName; Handle componentInfo; Handle componentIcon; #ifndef GetComponentInfo PyMac_PRECHECK(GetComponentInfo); #endif if (!PyArg_ParseTuple(_args, "O&O&O&", ResObj_Convert, &componentName, ResObj_Convert, &componentInfo, ResObj_Convert, &componentIcon)) return NULL; _err = GetComponentInfo(_self->ob_itself, &cd, componentName, componentInfo, componentIcon); if (_err != noErr) return PyMac_Error(_err); _res = Py_BuildValue("O&", CmpDesc_New, &cd); return _res; } static PyObject *CmpObj_OpenComponent(ComponentObject *_self, PyObject *_args) { PyObject *_res = NULL; ComponentInstance _rv; #ifndef OpenComponent PyMac_PRECHECK(OpenComponent); #endif if (!PyArg_ParseTuple(_args, "")) return NULL; _rv = OpenComponent(_self->ob_itself); _res = Py_BuildValue("O&", CmpInstObj_New, _rv); return _res; } static PyObject *CmpObj_ResolveComponentAlias(ComponentObject *_self, PyObject *_args) { PyObject *_res = NULL; Component _rv; #ifndef ResolveComponentAlias PyMac_PRECHECK(ResolveComponentAlias); #endif if (!PyArg_ParseTuple(_args, "")) return NULL; _rv = ResolveComponentAlias(_self->ob_itself); _res = Py_BuildValue("O&", CmpObj_New, _rv); return _res; } static PyObject *CmpObj_GetComponentPublicIndString(ComponentObject *_self, PyObject *_args) { PyObject *_res = NULL; OSErr _err; Str255 theString; short strListID; short index; #ifndef GetComponentPublicIndString PyMac_PRECHECK(GetComponentPublicIndString); #endif if (!PyArg_ParseTuple(_args, "O&hh", PyMac_GetStr255, theString, &strListID, &index)) return NULL; _err = GetComponentPublicIndString(_self->ob_itself, theString, strListID, index); if (_err != noErr) return PyMac_Error(_err); Py_INCREF(Py_None); _res = Py_None; return _res; } static PyObject *CmpObj_GetComponentRefcon(ComponentObject *_self, PyObject *_args) { PyObject *_res = NULL; long _rv; #ifndef GetComponentRefcon PyMac_PRECHECK(GetComponentRefcon); #endif if (!PyArg_ParseTuple(_args, "")) return NULL; _rv = GetComponentRefcon(_self->ob_itself); _res = Py_BuildValue("l", _rv); return _res; } static PyObject *CmpObj_SetComponentRefcon(ComponentObject *_self, PyObject *_args) { PyObject *_res = NULL; long theRefcon; #ifndef SetComponentRefcon PyMac_PRECHECK(SetComponentRefcon); #endif if (!PyArg_ParseTuple(_args, "l", &theRefcon)) return NULL; SetComponentRefcon(_self->ob_itself, theRefcon); Py_INCREF(Py_None); _res = Py_None; return _res; } static PyObject *CmpObj_OpenComponentResFile(ComponentObject *_self, PyObject *_args) { PyObject *_res = NULL; short _rv; #ifndef OpenComponentResFile PyMac_PRECHECK(OpenComponentResFile); #endif if (!PyArg_ParseTuple(_args, "")) return NULL; _rv = OpenComponentResFile(_self->ob_itself); _res = Py_BuildValue("h", _rv); return _res; } static PyObject *CmpObj_GetComponentResource(ComponentObject *_self, PyObject *_args) { PyObject *_res = NULL; OSErr _err; OSType resType; short resID; Handle theResource; #ifndef GetComponentResource PyMac_PRECHECK(GetComponentResource); #endif if (!PyArg_ParseTuple(_args, "O&h", PyMac_GetOSType, &resType, &resID)) return NULL; _err = GetComponentResource(_self->ob_itself, resType, resID, &theResource); if (_err != noErr) return PyMac_Error(_err); _res = Py_BuildValue("O&", ResObj_New, theResource); return _res; } static PyObject *CmpObj_GetComponentIndString(ComponentObject *_self, PyObject *_args) { PyObject *_res = NULL; OSErr _err; Str255 theString; short strListID; short index; #ifndef GetComponentIndString PyMac_PRECHECK(GetComponentIndString); #endif if (!PyArg_ParseTuple(_args, "O&hh", PyMac_GetStr255, theString, &strListID, &index)) return NULL; _err = GetComponentIndString(_self->ob_itself, theString, strListID, index); if (_err != noErr) return PyMac_Error(_err); Py_INCREF(Py_None); _res = Py_None; return _res; } static PyObject *CmpObj_CountComponentInstances(ComponentObject *_self, PyObject *_args) { PyObject *_res = NULL; long _rv; #ifndef CountComponentInstances PyMac_PRECHECK(CountComponentInstances); #endif if (!PyArg_ParseTuple(_args, "")) return NULL; _rv = CountComponentInstances(_self->ob_itself); _res = Py_BuildValue("l", _rv); return _res; } static PyObject *CmpObj_SetDefaultComponent(ComponentObject *_self, PyObject *_args) { PyObject *_res = NULL; OSErr _err; short flags; #ifndef SetDefaultComponent PyMac_PRECHECK(SetDefaultComponent); #endif if (!PyArg_ParseTuple(_args, "h", &flags)) return NULL; _err = SetDefaultComponent(_self->ob_itself, flags); if (_err != noErr) return PyMac_Error(_err); Py_INCREF(Py_None); _res = Py_None; return _res; } static PyObject *CmpObj_CaptureComponent(ComponentObject *_self, PyObject *_args) { PyObject *_res = NULL; Component _rv; Component capturingComponent; #ifndef CaptureComponent PyMac_PRECHECK(CaptureComponent); #endif if (!PyArg_ParseTuple(_args, "O&", CmpObj_Convert, &capturingComponent)) return NULL; _rv = CaptureComponent(_self->ob_itself, capturingComponent); _res = Py_BuildValue("O&", CmpObj_New, _rv); return _res; } static PyObject *CmpObj_UncaptureComponent(ComponentObject *_self, PyObject *_args) { PyObject *_res = NULL; OSErr _err; #ifndef UncaptureComponent PyMac_PRECHECK(UncaptureComponent); #endif if (!PyArg_ParseTuple(_args, "")) return NULL; _err = UncaptureComponent(_self->ob_itself); if (_err != noErr) return PyMac_Error(_err); Py_INCREF(Py_None); _res = Py_None; return _res; } static PyObject *CmpObj_GetComponentIconSuite(ComponentObject *_self, PyObject *_args) { PyObject *_res = NULL; OSErr _err; Handle iconSuite; #ifndef GetComponentIconSuite PyMac_PRECHECK(GetComponentIconSuite); #endif if (!PyArg_ParseTuple(_args, "")) return NULL; _err = GetComponentIconSuite(_self->ob_itself, &iconSuite); if (_err != noErr) return PyMac_Error(_err); _res = Py_BuildValue("O&", ResObj_New, iconSuite); return _res; } static PyMethodDef CmpObj_methods[] = { {"UnregisterComponent", (PyCFunction)CmpObj_UnregisterComponent, 1, PyDoc_STR("() -> None")}, {"GetComponentInfo", (PyCFunction)CmpObj_GetComponentInfo, 1, PyDoc_STR("(Handle componentName, Handle componentInfo, Handle componentIcon) -> (ComponentDescription cd)")}, {"OpenComponent", (PyCFunction)CmpObj_OpenComponent, 1, PyDoc_STR("() -> (ComponentInstance _rv)")}, {"ResolveComponentAlias", (PyCFunction)CmpObj_ResolveComponentAlias, 1, PyDoc_STR("() -> (Component _rv)")}, {"GetComponentPublicIndString", (PyCFunction)CmpObj_GetComponentPublicIndString, 1, PyDoc_STR("(Str255 theString, short strListID, short index) -> None")}, {"GetComponentRefcon", (PyCFunction)CmpObj_GetComponentRefcon, 1, PyDoc_STR("() -> (long _rv)")}, {"SetComponentRefcon", (PyCFunction)CmpObj_SetComponentRefcon, 1, PyDoc_STR("(long theRefcon) -> None")}, {"OpenComponentResFile", (PyCFunction)CmpObj_OpenComponentResFile, 1, PyDoc_STR("() -> (short _rv)")}, {"GetComponentResource", (PyCFunction)CmpObj_GetComponentResource, 1, PyDoc_STR("(OSType resType, short resID) -> (Handle theResource)")}, {"GetComponentIndString", (PyCFunction)CmpObj_GetComponentIndString, 1, PyDoc_STR("(Str255 theString, short strListID, short index) -> None")}, {"CountComponentInstances", (PyCFunction)CmpObj_CountComponentInstances, 1, PyDoc_STR("() -> (long _rv)")}, {"SetDefaultComponent", (PyCFunction)CmpObj_SetDefaultComponent, 1, PyDoc_STR("(short flags) -> None")}, {"CaptureComponent", (PyCFunction)CmpObj_CaptureComponent, 1, PyDoc_STR("(Component capturingComponent) -> (Component _rv)")}, {"UncaptureComponent", (PyCFunction)CmpObj_UncaptureComponent, 1, PyDoc_STR("() -> None")}, {"GetComponentIconSuite", (PyCFunction)CmpObj_GetComponentIconSuite, 1, PyDoc_STR("() -> (Handle iconSuite)")}, {NULL, NULL, 0} }; #define CmpObj_getsetlist NULL #define CmpObj_compare NULL #define CmpObj_repr NULL #define CmpObj_hash NULL #define CmpObj_tp_init 0 #define CmpObj_tp_alloc PyType_GenericAlloc static PyObject *CmpObj_tp_new(PyTypeObject *type, PyObject *_args, PyObject *_kwds) { PyObject *_self; Component itself; char *kw[] = {"itself", 0}; if (!PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, CmpObj_Convert, &itself)) return NULL; if ((_self = type->tp_alloc(type, 0)) == NULL) return NULL; ((ComponentObject *)_self)->ob_itself = itself; return _self; } #define CmpObj_tp_free PyObject_Del PyTypeObject Component_Type = { PyVarObject_HEAD_INIT(NULL, 0) "_Cm.Component", /*tp_name*/ sizeof(ComponentObject), /*tp_basicsize*/ 0, /*tp_itemsize*/ /* methods */ (destructor) CmpObj_dealloc, /*tp_dealloc*/ 0, /*tp_print*/ (getattrfunc)0, /*tp_getattr*/ (setattrfunc)0, /*tp_setattr*/ (cmpfunc) CmpObj_compare, /*tp_compare*/ (reprfunc) CmpObj_repr, /*tp_repr*/ (PyNumberMethods *)0, /* tp_as_number */ (PySequenceMethods *)0, /* tp_as_sequence */ (PyMappingMethods *)0, /* tp_as_mapping */ (hashfunc) CmpObj_hash, /*tp_hash*/ 0, /*tp_call*/ 0, /*tp_str*/ PyObject_GenericGetAttr, /*tp_getattro*/ PyObject_GenericSetAttr, /*tp_setattro */ 0, /*tp_as_buffer*/ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /* tp_flags */ 0, /*tp_doc*/ 0, /*tp_traverse*/ 0, /*tp_clear*/ 0, /*tp_richcompare*/ 0, /*tp_weaklistoffset*/ 0, /*tp_iter*/ 0, /*tp_iternext*/ CmpObj_methods, /* tp_methods */ 0, /*tp_members*/ CmpObj_getsetlist, /*tp_getset*/ 0, /*tp_base*/ 0, /*tp_dict*/ 0, /*tp_descr_get*/ 0, /*tp_descr_set*/ 0, /*tp_dictoffset*/ CmpObj_tp_init, /* tp_init */ CmpObj_tp_alloc, /* tp_alloc */ CmpObj_tp_new, /* tp_new */ CmpObj_tp_free, /* tp_free */ }; /* ------------------- End object type Component -------------------- */ static PyObject *Cm_RegisterComponentResource(PyObject *_self, PyObject *_args) { PyObject *_res = NULL; Component _rv; ComponentResourceHandle cr; short global; #ifndef RegisterComponentResource PyMac_PRECHECK(RegisterComponentResource); #endif if (!PyArg_ParseTuple(_args, "O&h", ResObj_Convert, &cr, &global)) return NULL; _rv = RegisterComponentResource(cr, global); _res = Py_BuildValue("O&", CmpObj_New, _rv); return _res; } static PyObject *Cm_FindNextComponent(PyObject *_self, PyObject *_args) { PyObject *_res = NULL; Component _rv; Component aComponent; ComponentDescription looking; #ifndef FindNextComponent PyMac_PRECHECK(FindNextComponent); #endif if (!PyArg_ParseTuple(_args, "O&O&", CmpObj_Convert, &aComponent, CmpDesc_Convert, &looking)) return NULL; _rv = FindNextComponent(aComponent, &looking); _res = Py_BuildValue("O&", CmpObj_New, _rv); return _res; } static PyObject *Cm_CountComponents(PyObject *_self, PyObject *_args) { PyObject *_res = NULL; long _rv; ComponentDescription looking; #ifndef CountComponents PyMac_PRECHECK(CountComponents); #endif if (!PyArg_ParseTuple(_args, "O&", CmpDesc_Convert, &looking)) return NULL; _rv = CountComponents(&looking); _res = Py_BuildValue("l", _rv); return _res; } static PyObject *Cm_GetComponentListModSeed(PyObject *_self, PyObject *_args) { PyObject *_res = NULL; long _rv; #ifndef GetComponentListModSeed PyMac_PRECHECK(GetComponentListModSeed); #endif if (!PyArg_ParseTuple(_args, "")) return NULL; _rv = GetComponentListModSeed(); _res = Py_BuildValue("l", _rv); return _res; } static PyObject *Cm_CloseComponentResFile(PyObject *_self, PyObject *_args) { PyObject *_res = NULL; OSErr _err; short refnum; #ifndef CloseComponentResFile PyMac_PRECHECK(CloseComponentResFile); #endif if (!PyArg_ParseTuple(_args, "h", &refnum)) return NULL; _err = CloseComponentResFile(refnum); if (_err != noErr) return PyMac_Error(_err); Py_INCREF(Py_None); _res = Py_None; return _res; } static PyObject *Cm_OpenDefaultComponent(PyObject *_self, PyObject *_args) { PyObject *_res = NULL; ComponentInstance _rv; OSType componentType; OSType componentSubType; #ifndef OpenDefaultComponent PyMac_PRECHECK(OpenDefaultComponent); #endif if (!PyArg_ParseTuple(_args, "O&O&", PyMac_GetOSType, &componentType, PyMac_GetOSType, &componentSubType)) return NULL; _rv = OpenDefaultComponent(componentType, componentSubType); _res = Py_BuildValue("O&", CmpInstObj_New, _rv); return _res; } static PyObject *Cm_RegisterComponentResourceFile(PyObject *_self, PyObject *_args) { PyObject *_res = NULL; long _rv; short resRefNum; short global; #ifndef RegisterComponentResourceFile PyMac_PRECHECK(RegisterComponentResourceFile); #endif if (!PyArg_ParseTuple(_args, "hh", &resRefNum, &global)) return NULL; _rv = RegisterComponentResourceFile(resRefNum, global); _res = Py_BuildValue("l", _rv); return _res; } static PyMethodDef Cm_methods[] = { {"RegisterComponentResource", (PyCFunction)Cm_RegisterComponentResource, 1, PyDoc_STR("(ComponentResourceHandle cr, short global) -> (Component _rv)")}, {"FindNextComponent", (PyCFunction)Cm_FindNextComponent, 1, PyDoc_STR("(Component aComponent, ComponentDescription looking) -> (Component _rv)")}, {"CountComponents", (PyCFunction)Cm_CountComponents, 1, PyDoc_STR("(ComponentDescription looking) -> (long _rv)")}, {"GetComponentListModSeed", (PyCFunction)Cm_GetComponentListModSeed, 1, PyDoc_STR("() -> (long _rv)")}, {"CloseComponentResFile", (PyCFunction)Cm_CloseComponentResFile, 1, PyDoc_STR("(short refnum) -> None")}, {"OpenDefaultComponent", (PyCFunction)Cm_OpenDefaultComponent, 1, PyDoc_STR("(OSType componentType, OSType componentSubType) -> (ComponentInstance _rv)")}, {"RegisterComponentResourceFile", (PyCFunction)Cm_RegisterComponentResourceFile, 1, PyDoc_STR("(short resRefNum, short global) -> (long _rv)")}, {NULL, NULL, 0} }; void init_Cm(void) { PyObject *m; PyObject *d; PyMac_INIT_TOOLBOX_OBJECT_NEW(Component, CmpObj_New); PyMac_INIT_TOOLBOX_OBJECT_CONVERT(Component, CmpObj_Convert); PyMac_INIT_TOOLBOX_OBJECT_NEW(ComponentInstance, CmpInstObj_New); PyMac_INIT_TOOLBOX_OBJECT_CONVERT(ComponentInstance, CmpInstObj_Convert); m = Py_InitModule("_Cm", Cm_methods); d = PyModule_GetDict(m); Cm_Error = PyMac_GetOSErrException(); if (Cm_Error == NULL || PyDict_SetItemString(d, "Error", Cm_Error) != 0) return; Py_Type(&ComponentInstance_Type) = &PyType_Type; if (PyType_Ready(&ComponentInstance_Type) < 0) return; Py_INCREF(&ComponentInstance_Type); PyModule_AddObject(m, "ComponentInstance", (PyObject *)&ComponentInstance_Type); /* Backward-compatible name */ Py_INCREF(&ComponentInstance_Type); PyModule_AddObject(m, "ComponentInstanceType", (PyObject *)&ComponentInstance_Type); Py_Type(&Component_Type) = &PyType_Type; if (PyType_Ready(&Component_Type) < 0) return; Py_INCREF(&Component_Type); PyModule_AddObject(m, "Component", (PyObject *)&Component_Type); /* Backward-compatible name */ Py_INCREF(&Component_Type); PyModule_AddObject(m, "ComponentType", (PyObject *)&Component_Type); } /* ========================= End module _Cm ========================= */