2 /* ========================== Module _Res =========================== */
7 #include "pymactoolbox.h"
9 /* Macro to test whether a weak-loaded CFM function exists */
10 #define PyMac_PRECHECK(rtn) do { if ( &rtn == NULL ) {\
11 PyErr_SetString(PyExc_NotImplementedError, \
12 "Not available in this shared library/OS version"); \
17 #include <Carbon/Carbon.h>
19 #ifdef USE_TOOLBOX_OBJECT_GLUE
20 extern PyObject
*_ResObj_New(Handle
);
21 extern int _ResObj_Convert(PyObject
*, Handle
*);
22 extern PyObject
*_OptResObj_New(Handle
);
23 extern int _OptResObj_Convert(PyObject
*, Handle
*);
24 #define ResObj_New _ResObj_New
25 #define ResObj_Convert _ResObj_Convert
26 #define OptResObj_New _OptResObj_New
27 #define OptResObj_Convert _OptResObj_Convert
30 /* Function to dispose a resource, with a "normal" calling sequence */
32 PyMac_AutoDisposeHandle(Handle h
)
37 static PyObject
*Res_Error
;
39 /* ---------------------- Object type Resource ---------------------- */
41 PyTypeObject Resource_Type
;
43 #define ResObj_Check(x) ((x)->ob_type == &Resource_Type || PyObject_TypeCheck((x), &Resource_Type))
45 typedef struct ResourceObject
{
48 void (*ob_freeit
)(Handle ptr
);
51 PyObject
*ResObj_New(Handle itself
)
54 if (itself
== NULL
) return PyMac_Error(resNotFound
);
55 it
= PyObject_NEW(ResourceObject
, &Resource_Type
);
56 if (it
== NULL
) return NULL
;
57 it
->ob_itself
= itself
;
59 return (PyObject
*)it
;
62 int ResObj_Convert(PyObject
*v
, Handle
*p_itself
)
67 if ( (tmp
=PyObject_CallMethod(v
, "as_Resource", "")) )
69 *p_itself
= ((ResourceObject
*)tmp
)->ob_itself
;
77 PyErr_SetString(PyExc_TypeError
, "Resource required");
80 *p_itself
= ((ResourceObject
*)v
)->ob_itself
;
84 static void ResObj_dealloc(ResourceObject
*self
)
86 if (self
->ob_freeit
&& self
->ob_itself
)
88 self
->ob_freeit(self
->ob_itself
);
90 self
->ob_itself
= NULL
;
91 self
->ob_type
->tp_free((PyObject
*)self
);
94 static PyObject
*ResObj_HomeResFile(ResourceObject
*_self
, PyObject
*_args
)
96 PyObject
*_res
= NULL
;
99 PyMac_PRECHECK(HomeResFile
);
101 if (!PyArg_ParseTuple(_args
, ""))
103 _rv
= HomeResFile(_self
->ob_itself
);
105 OSErr _err
= ResError();
106 if (_err
!= noErr
) return PyMac_Error(_err
);
108 _res
= Py_BuildValue("h",
113 static PyObject
*ResObj_MacLoadResource(ResourceObject
*_self
, PyObject
*_args
)
115 PyObject
*_res
= NULL
;
116 #ifndef MacLoadResource
117 PyMac_PRECHECK(MacLoadResource
);
119 if (!PyArg_ParseTuple(_args
, ""))
121 MacLoadResource(_self
->ob_itself
);
123 OSErr _err
= ResError();
124 if (_err
!= noErr
) return PyMac_Error(_err
);
131 static PyObject
*ResObj_ReleaseResource(ResourceObject
*_self
, PyObject
*_args
)
133 PyObject
*_res
= NULL
;
134 #ifndef ReleaseResource
135 PyMac_PRECHECK(ReleaseResource
);
137 if (!PyArg_ParseTuple(_args
, ""))
139 ReleaseResource(_self
->ob_itself
);
141 OSErr _err
= ResError();
142 if (_err
!= noErr
) return PyMac_Error(_err
);
149 static PyObject
*ResObj_DetachResource(ResourceObject
*_self
, PyObject
*_args
)
151 PyObject
*_res
= NULL
;
152 #ifndef DetachResource
153 PyMac_PRECHECK(DetachResource
);
155 if (!PyArg_ParseTuple(_args
, ""))
157 DetachResource(_self
->ob_itself
);
159 OSErr _err
= ResError();
160 if (_err
!= noErr
) return PyMac_Error(_err
);
167 static PyObject
*ResObj_GetResAttrs(ResourceObject
*_self
, PyObject
*_args
)
169 PyObject
*_res
= NULL
;
172 PyMac_PRECHECK(GetResAttrs
);
174 if (!PyArg_ParseTuple(_args
, ""))
176 _rv
= GetResAttrs(_self
->ob_itself
);
178 OSErr _err
= ResError();
179 if (_err
!= noErr
) return PyMac_Error(_err
);
181 _res
= Py_BuildValue("h",
186 static PyObject
*ResObj_GetResInfo(ResourceObject
*_self
, PyObject
*_args
)
188 PyObject
*_res
= NULL
;
193 PyMac_PRECHECK(GetResInfo
);
195 if (!PyArg_ParseTuple(_args
, ""))
197 GetResInfo(_self
->ob_itself
,
202 OSErr _err
= ResError();
203 if (_err
!= noErr
) return PyMac_Error(_err
);
205 _res
= Py_BuildValue("hO&O&",
207 PyMac_BuildOSType
, theType
,
208 PyMac_BuildStr255
, name
);
212 static PyObject
*ResObj_SetResInfo(ResourceObject
*_self
, PyObject
*_args
)
214 PyObject
*_res
= NULL
;
218 PyMac_PRECHECK(SetResInfo
);
220 if (!PyArg_ParseTuple(_args
, "hO&",
222 PyMac_GetStr255
, name
))
224 SetResInfo(_self
->ob_itself
,
228 OSErr _err
= ResError();
229 if (_err
!= noErr
) return PyMac_Error(_err
);
236 static PyObject
*ResObj_AddResource(ResourceObject
*_self
, PyObject
*_args
)
238 PyObject
*_res
= NULL
;
243 PyMac_PRECHECK(AddResource
);
245 if (!PyArg_ParseTuple(_args
, "O&hO&",
246 PyMac_GetOSType
, &theType
,
248 PyMac_GetStr255
, name
))
250 AddResource(_self
->ob_itself
,
255 OSErr _err
= ResError();
256 if (_err
!= noErr
) return PyMac_Error(_err
);
263 static PyObject
*ResObj_GetResourceSizeOnDisk(ResourceObject
*_self
, PyObject
*_args
)
265 PyObject
*_res
= NULL
;
267 #ifndef GetResourceSizeOnDisk
268 PyMac_PRECHECK(GetResourceSizeOnDisk
);
270 if (!PyArg_ParseTuple(_args
, ""))
272 _rv
= GetResourceSizeOnDisk(_self
->ob_itself
);
274 OSErr _err
= ResError();
275 if (_err
!= noErr
) return PyMac_Error(_err
);
277 _res
= Py_BuildValue("l",
282 static PyObject
*ResObj_GetMaxResourceSize(ResourceObject
*_self
, PyObject
*_args
)
284 PyObject
*_res
= NULL
;
286 #ifndef GetMaxResourceSize
287 PyMac_PRECHECK(GetMaxResourceSize
);
289 if (!PyArg_ParseTuple(_args
, ""))
291 _rv
= GetMaxResourceSize(_self
->ob_itself
);
293 OSErr _err
= ResError();
294 if (_err
!= noErr
) return PyMac_Error(_err
);
296 _res
= Py_BuildValue("l",
301 static PyObject
*ResObj_SetResAttrs(ResourceObject
*_self
, PyObject
*_args
)
303 PyObject
*_res
= NULL
;
306 PyMac_PRECHECK(SetResAttrs
);
308 if (!PyArg_ParseTuple(_args
, "h",
311 SetResAttrs(_self
->ob_itself
,
314 OSErr _err
= ResError();
315 if (_err
!= noErr
) return PyMac_Error(_err
);
322 static PyObject
*ResObj_ChangedResource(ResourceObject
*_self
, PyObject
*_args
)
324 PyObject
*_res
= NULL
;
325 #ifndef ChangedResource
326 PyMac_PRECHECK(ChangedResource
);
328 if (!PyArg_ParseTuple(_args
, ""))
330 ChangedResource(_self
->ob_itself
);
332 OSErr _err
= ResError();
333 if (_err
!= noErr
) return PyMac_Error(_err
);
340 static PyObject
*ResObj_RemoveResource(ResourceObject
*_self
, PyObject
*_args
)
342 PyObject
*_res
= NULL
;
343 #ifndef RemoveResource
344 PyMac_PRECHECK(RemoveResource
);
346 if (!PyArg_ParseTuple(_args
, ""))
348 RemoveResource(_self
->ob_itself
);
350 OSErr _err
= ResError();
351 if (_err
!= noErr
) return PyMac_Error(_err
);
358 static PyObject
*ResObj_WriteResource(ResourceObject
*_self
, PyObject
*_args
)
360 PyObject
*_res
= NULL
;
361 #ifndef WriteResource
362 PyMac_PRECHECK(WriteResource
);
364 if (!PyArg_ParseTuple(_args
, ""))
366 WriteResource(_self
->ob_itself
);
368 OSErr _err
= ResError();
369 if (_err
!= noErr
) return PyMac_Error(_err
);
376 static PyObject
*ResObj_SetResourceSize(ResourceObject
*_self
, PyObject
*_args
)
378 PyObject
*_res
= NULL
;
380 #ifndef SetResourceSize
381 PyMac_PRECHECK(SetResourceSize
);
383 if (!PyArg_ParseTuple(_args
, "l",
386 SetResourceSize(_self
->ob_itself
,
389 OSErr _err
= ResError();
390 if (_err
!= noErr
) return PyMac_Error(_err
);
397 static PyObject
*ResObj_GetNextFOND(ResourceObject
*_self
, PyObject
*_args
)
399 PyObject
*_res
= NULL
;
402 PyMac_PRECHECK(GetNextFOND
);
404 if (!PyArg_ParseTuple(_args
, ""))
406 _rv
= GetNextFOND(_self
->ob_itself
);
408 OSErr _err
= ResError();
409 if (_err
!= noErr
) return PyMac_Error(_err
);
411 _res
= Py_BuildValue("O&",
417 static PyObject
*ResObj_as_Control(ResourceObject
*_self
, PyObject
*_args
)
419 PyObject
*_res
= NULL
;
421 _res
= CtlObj_New((ControlHandle
)_self
->ob_itself
);
426 static PyObject
*ResObj_as_Menu(ResourceObject
*_self
, PyObject
*_args
)
428 PyObject
*_res
= NULL
;
430 _res
= MenuObj_New((MenuHandle
)_self
->ob_itself
);
434 #endif /* !__LP64__ */
436 static PyObject
*ResObj_LoadResource(ResourceObject
*_self
, PyObject
*_args
)
438 PyObject
*_res
= NULL
;
440 PyMac_PRECHECK(LoadResource
);
442 if (!PyArg_ParseTuple(_args
, ""))
444 LoadResource(_self
->ob_itself
);
446 OSErr _err
= ResError();
447 if (_err
!= noErr
) return PyMac_Error(_err
);
454 static PyObject
*ResObj_AutoDispose(ResourceObject
*_self
, PyObject
*_args
)
456 PyObject
*_res
= NULL
;
459 if (!PyArg_ParseTuple(_args
, "i", &onoff
))
461 if ( _self
->ob_freeit
)
464 _self
->ob_freeit
= PyMac_AutoDisposeHandle
;
466 _self
->ob_freeit
= NULL
;
467 _res
= Py_BuildValue("i", old
);
472 static PyMethodDef ResObj_methods
[] = {
473 {"HomeResFile", (PyCFunction
)ResObj_HomeResFile
, 1,
474 PyDoc_STR("() -> (short _rv)")},
475 {"MacLoadResource", (PyCFunction
)ResObj_MacLoadResource
, 1,
476 PyDoc_STR("() -> None")},
477 {"ReleaseResource", (PyCFunction
)ResObj_ReleaseResource
, 1,
478 PyDoc_STR("() -> None")},
479 {"DetachResource", (PyCFunction
)ResObj_DetachResource
, 1,
480 PyDoc_STR("() -> None")},
481 {"GetResAttrs", (PyCFunction
)ResObj_GetResAttrs
, 1,
482 PyDoc_STR("() -> (short _rv)")},
483 {"GetResInfo", (PyCFunction
)ResObj_GetResInfo
, 1,
484 PyDoc_STR("() -> (short theID, ResType theType, Str255 name)")},
485 {"SetResInfo", (PyCFunction
)ResObj_SetResInfo
, 1,
486 PyDoc_STR("(short theID, Str255 name) -> None")},
487 {"AddResource", (PyCFunction
)ResObj_AddResource
, 1,
488 PyDoc_STR("(ResType theType, short theID, Str255 name) -> None")},
489 {"GetResourceSizeOnDisk", (PyCFunction
)ResObj_GetResourceSizeOnDisk
, 1,
490 PyDoc_STR("() -> (long _rv)")},
491 {"GetMaxResourceSize", (PyCFunction
)ResObj_GetMaxResourceSize
, 1,
492 PyDoc_STR("() -> (long _rv)")},
493 {"SetResAttrs", (PyCFunction
)ResObj_SetResAttrs
, 1,
494 PyDoc_STR("(short attrs) -> None")},
495 {"ChangedResource", (PyCFunction
)ResObj_ChangedResource
, 1,
496 PyDoc_STR("() -> None")},
497 {"RemoveResource", (PyCFunction
)ResObj_RemoveResource
, 1,
498 PyDoc_STR("() -> None")},
499 {"WriteResource", (PyCFunction
)ResObj_WriteResource
, 1,
500 PyDoc_STR("() -> None")},
501 {"SetResourceSize", (PyCFunction
)ResObj_SetResourceSize
, 1,
502 PyDoc_STR("(long newSize) -> None")},
503 {"GetNextFOND", (PyCFunction
)ResObj_GetNextFOND
, 1,
504 PyDoc_STR("() -> (Handle _rv)")},
506 {"as_Control", (PyCFunction
)ResObj_as_Control
, 1,
507 PyDoc_STR("Return this resource/handle as a Control")},
508 {"as_Menu", (PyCFunction
)ResObj_as_Menu
, 1,
509 PyDoc_STR("Return this resource/handle as a Menu")},
510 #endif /* !__LP64__ */
511 {"LoadResource", (PyCFunction
)ResObj_LoadResource
, 1,
512 PyDoc_STR("() -> None")},
513 {"AutoDispose", (PyCFunction
)ResObj_AutoDispose
, 1,
514 PyDoc_STR("(int)->int. Automatically DisposeHandle the object on Python object cleanup")},
518 static PyObject
*ResObj_get_data(ResourceObject
*self
, void *closure
)
524 state
= HGetState(self
->ob_itself
);
525 HLock(self
->ob_itself
);
526 res
= PyString_FromStringAndSize(
528 GetHandleSize(self
->ob_itself
));
529 HUnlock(self
->ob_itself
);
530 HSetState(self
->ob_itself
, state
);
535 static int ResObj_set_data(ResourceObject
*self
, PyObject
*v
, void *closure
)
543 if ( !PyString_Check(v
) )
545 size
= PyString_Size(v
);
546 data
= PyString_AsString(v
);
547 /* XXXX Do I need the GetState/SetState calls? */
548 SetHandleSize(self
->ob_itself
, size
);
551 HLock(self
->ob_itself
);
552 memcpy((char *)*self
->ob_itself
, data
, size
);
553 HUnlock(self
->ob_itself
);
554 /* XXXX Should I do the Changed call immedeately? */
560 static PyObject
*ResObj_get_size(ResourceObject
*self
, void *closure
)
562 return PyInt_FromLong(GetHandleSize(self
->ob_itself
));
565 #define ResObj_set_size NULL
567 static PyGetSetDef ResObj_getsetlist
[] = {
568 {"data", (getter
)ResObj_get_data
, (setter
)ResObj_set_data
, "The resource data"},
569 {"size", (getter
)ResObj_get_size
, (setter
)ResObj_set_size
, "The length of the resource data"},
570 {NULL
, NULL
, NULL
, NULL
},
574 #define ResObj_compare NULL
576 #define ResObj_repr NULL
578 #define ResObj_hash NULL
579 static int ResObj_tp_init(PyObject
*_self
, PyObject
*_args
, PyObject
*_kwds
)
581 char *srcdata
= NULL
;
584 char *kw
[] = {"itself", 0};
586 if (PyArg_ParseTupleAndKeywords(_args
, _kwds
, "O&", kw
, ResObj_Convert
, &itself
))
588 ((ResourceObject
*)_self
)->ob_itself
= itself
;
592 if (!PyArg_ParseTupleAndKeywords(_args
, _kwds
, "|s#", kw
, &srcdata
, &srclen
)) return -1;
593 if ((itself
= NewHandle(srclen
)) == NULL
)
598 ((ResourceObject
*)_self
)->ob_itself
= itself
;
599 if (srclen
&& srcdata
)
602 memcpy(*itself
, srcdata
, srclen
);
608 #define ResObj_tp_alloc PyType_GenericAlloc
610 static PyObject
*ResObj_tp_new(PyTypeObject
*type
, PyObject
*_args
, PyObject
*_kwds
)
613 if ((self
= type
->tp_alloc(type
, 0)) == NULL
) return NULL
;
614 ((ResourceObject
*)self
)->ob_itself
= NULL
;
615 ((ResourceObject
*)self
)->ob_freeit
= NULL
;
619 #define ResObj_tp_free PyObject_Del
622 PyTypeObject Resource_Type
= {
623 PyObject_HEAD_INIT(NULL
)
625 "_Res.Resource", /*tp_name*/
626 sizeof(ResourceObject
), /*tp_basicsize*/
629 (destructor
) ResObj_dealloc
, /*tp_dealloc*/
631 (getattrfunc
)0, /*tp_getattr*/
632 (setattrfunc
)0, /*tp_setattr*/
633 (cmpfunc
) ResObj_compare
, /*tp_compare*/
634 (reprfunc
) ResObj_repr
, /*tp_repr*/
635 (PyNumberMethods
*)0, /* tp_as_number */
636 (PySequenceMethods
*)0, /* tp_as_sequence */
637 (PyMappingMethods
*)0, /* tp_as_mapping */
638 (hashfunc
) ResObj_hash
, /*tp_hash*/
641 PyObject_GenericGetAttr
, /*tp_getattro*/
642 PyObject_GenericSetAttr
, /*tp_setattro */
644 Py_TPFLAGS_DEFAULT
|Py_TPFLAGS_BASETYPE
, /* tp_flags */
648 0, /*tp_richcompare*/
649 0, /*tp_weaklistoffset*/
652 ResObj_methods
, /* tp_methods */
654 ResObj_getsetlist
, /*tp_getset*/
660 ResObj_tp_init
, /* tp_init */
661 ResObj_tp_alloc
, /* tp_alloc */
662 ResObj_tp_new
, /* tp_new */
663 ResObj_tp_free
, /* tp_free */
666 /* -------------------- End object type Resource -------------------- */
669 static PyObject
*Res_CloseResFile(PyObject
*_self
, PyObject
*_args
)
671 PyObject
*_res
= NULL
;
674 PyMac_PRECHECK(CloseResFile
);
676 if (!PyArg_ParseTuple(_args
, "h",
679 CloseResFile(refNum
);
681 OSErr _err
= ResError();
682 if (_err
!= noErr
) return PyMac_Error(_err
);
689 static PyObject
*Res_ResError(PyObject
*_self
, PyObject
*_args
)
691 PyObject
*_res
= NULL
;
694 PyMac_PRECHECK(ResError
);
696 if (!PyArg_ParseTuple(_args
, ""))
699 if (_err
!= noErr
) return PyMac_Error(_err
);
705 static PyObject
*Res_CurResFile(PyObject
*_self
, PyObject
*_args
)
707 PyObject
*_res
= NULL
;
710 PyMac_PRECHECK(CurResFile
);
712 if (!PyArg_ParseTuple(_args
, ""))
716 OSErr _err
= ResError();
717 if (_err
!= noErr
) return PyMac_Error(_err
);
719 _res
= Py_BuildValue("h",
724 static PyObject
*Res_UseResFile(PyObject
*_self
, PyObject
*_args
)
726 PyObject
*_res
= NULL
;
729 PyMac_PRECHECK(UseResFile
);
731 if (!PyArg_ParseTuple(_args
, "h",
736 OSErr _err
= ResError();
737 if (_err
!= noErr
) return PyMac_Error(_err
);
744 static PyObject
*Res_CountTypes(PyObject
*_self
, PyObject
*_args
)
746 PyObject
*_res
= NULL
;
749 PyMac_PRECHECK(CountTypes
);
751 if (!PyArg_ParseTuple(_args
, ""))
755 OSErr _err
= ResError();
756 if (_err
!= noErr
) return PyMac_Error(_err
);
758 _res
= Py_BuildValue("h",
763 static PyObject
*Res_Count1Types(PyObject
*_self
, PyObject
*_args
)
765 PyObject
*_res
= NULL
;
768 PyMac_PRECHECK(Count1Types
);
770 if (!PyArg_ParseTuple(_args
, ""))
774 OSErr _err
= ResError();
775 if (_err
!= noErr
) return PyMac_Error(_err
);
777 _res
= Py_BuildValue("h",
782 static PyObject
*Res_GetIndType(PyObject
*_self
, PyObject
*_args
)
784 PyObject
*_res
= NULL
;
788 PyMac_PRECHECK(GetIndType
);
790 if (!PyArg_ParseTuple(_args
, "h",
796 OSErr _err
= ResError();
797 if (_err
!= noErr
) return PyMac_Error(_err
);
799 _res
= Py_BuildValue("O&",
800 PyMac_BuildOSType
, theType
);
804 static PyObject
*Res_Get1IndType(PyObject
*_self
, PyObject
*_args
)
806 PyObject
*_res
= NULL
;
810 PyMac_PRECHECK(Get1IndType
);
812 if (!PyArg_ParseTuple(_args
, "h",
815 Get1IndType(&theType
,
818 OSErr _err
= ResError();
819 if (_err
!= noErr
) return PyMac_Error(_err
);
821 _res
= Py_BuildValue("O&",
822 PyMac_BuildOSType
, theType
);
826 static PyObject
*Res_SetResLoad(PyObject
*_self
, PyObject
*_args
)
828 PyObject
*_res
= NULL
;
831 PyMac_PRECHECK(SetResLoad
);
833 if (!PyArg_ParseTuple(_args
, "b",
838 OSErr _err
= ResError();
839 if (_err
!= noErr
) return PyMac_Error(_err
);
846 static PyObject
*Res_CountResources(PyObject
*_self
, PyObject
*_args
)
848 PyObject
*_res
= NULL
;
851 #ifndef CountResources
852 PyMac_PRECHECK(CountResources
);
854 if (!PyArg_ParseTuple(_args
, "O&",
855 PyMac_GetOSType
, &theType
))
857 _rv
= CountResources(theType
);
859 OSErr _err
= ResError();
860 if (_err
!= noErr
) return PyMac_Error(_err
);
862 _res
= Py_BuildValue("h",
867 static PyObject
*Res_Count1Resources(PyObject
*_self
, PyObject
*_args
)
869 PyObject
*_res
= NULL
;
872 #ifndef Count1Resources
873 PyMac_PRECHECK(Count1Resources
);
875 if (!PyArg_ParseTuple(_args
, "O&",
876 PyMac_GetOSType
, &theType
))
878 _rv
= Count1Resources(theType
);
880 OSErr _err
= ResError();
881 if (_err
!= noErr
) return PyMac_Error(_err
);
883 _res
= Py_BuildValue("h",
888 static PyObject
*Res_GetIndResource(PyObject
*_self
, PyObject
*_args
)
890 PyObject
*_res
= NULL
;
894 #ifndef GetIndResource
895 PyMac_PRECHECK(GetIndResource
);
897 if (!PyArg_ParseTuple(_args
, "O&h",
898 PyMac_GetOSType
, &theType
,
901 _rv
= GetIndResource(theType
,
904 OSErr _err
= ResError();
905 if (_err
!= noErr
) return PyMac_Error(_err
);
907 _res
= Py_BuildValue("O&",
912 static PyObject
*Res_Get1IndResource(PyObject
*_self
, PyObject
*_args
)
914 PyObject
*_res
= NULL
;
918 #ifndef Get1IndResource
919 PyMac_PRECHECK(Get1IndResource
);
921 if (!PyArg_ParseTuple(_args
, "O&h",
922 PyMac_GetOSType
, &theType
,
925 _rv
= Get1IndResource(theType
,
928 OSErr _err
= ResError();
929 if (_err
!= noErr
) return PyMac_Error(_err
);
931 _res
= Py_BuildValue("O&",
936 static PyObject
*Res_GetResource(PyObject
*_self
, PyObject
*_args
)
938 PyObject
*_res
= NULL
;
943 PyMac_PRECHECK(GetResource
);
945 if (!PyArg_ParseTuple(_args
, "O&h",
946 PyMac_GetOSType
, &theType
,
949 _rv
= GetResource(theType
,
952 OSErr _err
= ResError();
953 if (_err
!= noErr
) return PyMac_Error(_err
);
955 _res
= Py_BuildValue("O&",
960 static PyObject
*Res_Get1Resource(PyObject
*_self
, PyObject
*_args
)
962 PyObject
*_res
= NULL
;
967 PyMac_PRECHECK(Get1Resource
);
969 if (!PyArg_ParseTuple(_args
, "O&h",
970 PyMac_GetOSType
, &theType
,
973 _rv
= Get1Resource(theType
,
976 OSErr _err
= ResError();
977 if (_err
!= noErr
) return PyMac_Error(_err
);
979 _res
= Py_BuildValue("O&",
984 static PyObject
*Res_GetNamedResource(PyObject
*_self
, PyObject
*_args
)
986 PyObject
*_res
= NULL
;
990 #ifndef GetNamedResource
991 PyMac_PRECHECK(GetNamedResource
);
993 if (!PyArg_ParseTuple(_args
, "O&O&",
994 PyMac_GetOSType
, &theType
,
995 PyMac_GetStr255
, name
))
997 _rv
= GetNamedResource(theType
,
1000 OSErr _err
= ResError();
1001 if (_err
!= noErr
) return PyMac_Error(_err
);
1003 _res
= Py_BuildValue("O&",
1008 static PyObject
*Res_Get1NamedResource(PyObject
*_self
, PyObject
*_args
)
1010 PyObject
*_res
= NULL
;
1014 #ifndef Get1NamedResource
1015 PyMac_PRECHECK(Get1NamedResource
);
1017 if (!PyArg_ParseTuple(_args
, "O&O&",
1018 PyMac_GetOSType
, &theType
,
1019 PyMac_GetStr255
, name
))
1021 _rv
= Get1NamedResource(theType
,
1024 OSErr _err
= ResError();
1025 if (_err
!= noErr
) return PyMac_Error(_err
);
1027 _res
= Py_BuildValue("O&",
1032 static PyObject
*Res_UniqueID(PyObject
*_self
, PyObject
*_args
)
1034 PyObject
*_res
= NULL
;
1038 PyMac_PRECHECK(UniqueID
);
1040 if (!PyArg_ParseTuple(_args
, "O&",
1041 PyMac_GetOSType
, &theType
))
1043 _rv
= UniqueID(theType
);
1045 OSErr _err
= ResError();
1046 if (_err
!= noErr
) return PyMac_Error(_err
);
1048 _res
= Py_BuildValue("h",
1053 static PyObject
*Res_Unique1ID(PyObject
*_self
, PyObject
*_args
)
1055 PyObject
*_res
= NULL
;
1059 PyMac_PRECHECK(Unique1ID
);
1061 if (!PyArg_ParseTuple(_args
, "O&",
1062 PyMac_GetOSType
, &theType
))
1064 _rv
= Unique1ID(theType
);
1066 OSErr _err
= ResError();
1067 if (_err
!= noErr
) return PyMac_Error(_err
);
1069 _res
= Py_BuildValue("h",
1074 static PyObject
*Res_UpdateResFile(PyObject
*_self
, PyObject
*_args
)
1076 PyObject
*_res
= NULL
;
1078 #ifndef UpdateResFile
1079 PyMac_PRECHECK(UpdateResFile
);
1081 if (!PyArg_ParseTuple(_args
, "h",
1084 UpdateResFile(refNum
);
1086 OSErr _err
= ResError();
1087 if (_err
!= noErr
) return PyMac_Error(_err
);
1094 static PyObject
*Res_SetResPurge(PyObject
*_self
, PyObject
*_args
)
1096 PyObject
*_res
= NULL
;
1099 PyMac_PRECHECK(SetResPurge
);
1101 if (!PyArg_ParseTuple(_args
, "b",
1104 SetResPurge(install
);
1106 OSErr _err
= ResError();
1107 if (_err
!= noErr
) return PyMac_Error(_err
);
1114 static PyObject
*Res_GetResFileAttrs(PyObject
*_self
, PyObject
*_args
)
1116 PyObject
*_res
= NULL
;
1119 #ifndef GetResFileAttrs
1120 PyMac_PRECHECK(GetResFileAttrs
);
1122 if (!PyArg_ParseTuple(_args
, "h",
1125 _rv
= GetResFileAttrs(refNum
);
1127 OSErr _err
= ResError();
1128 if (_err
!= noErr
) return PyMac_Error(_err
);
1130 _res
= Py_BuildValue("h",
1135 static PyObject
*Res_SetResFileAttrs(PyObject
*_self
, PyObject
*_args
)
1137 PyObject
*_res
= NULL
;
1140 #ifndef SetResFileAttrs
1141 PyMac_PRECHECK(SetResFileAttrs
);
1143 if (!PyArg_ParseTuple(_args
, "hh",
1147 SetResFileAttrs(refNum
,
1150 OSErr _err
= ResError();
1151 if (_err
!= noErr
) return PyMac_Error(_err
);
1159 static PyObject
*Res_OpenRFPerm(PyObject
*_self
, PyObject
*_args
)
1161 PyObject
*_res
= NULL
;
1165 SignedByte permission
;
1167 PyMac_PRECHECK(OpenRFPerm
);
1169 if (!PyArg_ParseTuple(_args
, "O&hb",
1170 PyMac_GetStr255
, fileName
,
1174 _rv
= OpenRFPerm(fileName
,
1178 OSErr _err
= ResError();
1179 if (_err
!= noErr
) return PyMac_Error(_err
);
1181 _res
= Py_BuildValue("h",
1186 static PyObject
*Res_HOpenResFile(PyObject
*_self
, PyObject
*_args
)
1188 PyObject
*_res
= NULL
;
1193 SignedByte permission
;
1194 #ifndef HOpenResFile
1195 PyMac_PRECHECK(HOpenResFile
);
1197 if (!PyArg_ParseTuple(_args
, "hlO&b",
1200 PyMac_GetStr255
, fileName
,
1203 _rv
= HOpenResFile(vRefNum
,
1208 OSErr _err
= ResError();
1209 if (_err
!= noErr
) return PyMac_Error(_err
);
1211 _res
= Py_BuildValue("h",
1216 static PyObject
*Res_HCreateResFile(PyObject
*_self
, PyObject
*_args
)
1218 PyObject
*_res
= NULL
;
1222 #ifndef HCreateResFile
1223 PyMac_PRECHECK(HCreateResFile
);
1225 if (!PyArg_ParseTuple(_args
, "hlO&",
1228 PyMac_GetStr255
, fileName
))
1230 HCreateResFile(vRefNum
,
1234 OSErr _err
= ResError();
1235 if (_err
!= noErr
) return PyMac_Error(_err
);
1242 static PyObject
*Res_FSpOpenResFile(PyObject
*_self
, PyObject
*_args
)
1244 PyObject
*_res
= NULL
;
1247 SignedByte permission
;
1248 #ifndef FSpOpenResFile
1249 PyMac_PRECHECK(FSpOpenResFile
);
1251 if (!PyArg_ParseTuple(_args
, "O&b",
1252 PyMac_GetFSSpec
, &spec
,
1255 _rv
= FSpOpenResFile(&spec
,
1258 OSErr _err
= ResError();
1259 if (_err
!= noErr
) return PyMac_Error(_err
);
1261 _res
= Py_BuildValue("h",
1266 static PyObject
*Res_FSpCreateResFile(PyObject
*_self
, PyObject
*_args
)
1268 PyObject
*_res
= NULL
;
1272 ScriptCode scriptTag
;
1273 #ifndef FSpCreateResFile
1274 PyMac_PRECHECK(FSpCreateResFile
);
1276 if (!PyArg_ParseTuple(_args
, "O&O&O&h",
1277 PyMac_GetFSSpec
, &spec
,
1278 PyMac_GetOSType
, &creator
,
1279 PyMac_GetOSType
, &fileType
,
1282 FSpCreateResFile(&spec
,
1287 OSErr _err
= ResError();
1288 if (_err
!= noErr
) return PyMac_Error(_err
);
1294 #endif /* !__LP64__ */
1296 static PyObject
*Res_InsertResourceFile(PyObject
*_self
, PyObject
*_args
)
1298 PyObject
*_res
= NULL
;
1301 RsrcChainLocation where
;
1302 #ifndef InsertResourceFile
1303 PyMac_PRECHECK(InsertResourceFile
);
1305 if (!PyArg_ParseTuple(_args
, "hh",
1309 _err
= InsertResourceFile(refNum
,
1311 if (_err
!= noErr
) return PyMac_Error(_err
);
1317 static PyObject
*Res_DetachResourceFile(PyObject
*_self
, PyObject
*_args
)
1319 PyObject
*_res
= NULL
;
1322 #ifndef DetachResourceFile
1323 PyMac_PRECHECK(DetachResourceFile
);
1325 if (!PyArg_ParseTuple(_args
, "h",
1328 _err
= DetachResourceFile(refNum
);
1329 if (_err
!= noErr
) return PyMac_Error(_err
);
1336 static PyObject
*Res_FSpResourceFileAlreadyOpen(PyObject
*_self
, PyObject
*_args
)
1338 PyObject
*_res
= NULL
;
1340 FSSpec resourceFile
;
1343 #ifndef FSpResourceFileAlreadyOpen
1344 PyMac_PRECHECK(FSpResourceFileAlreadyOpen
);
1346 if (!PyArg_ParseTuple(_args
, "O&",
1347 PyMac_GetFSSpec
, &resourceFile
))
1349 _rv
= FSpResourceFileAlreadyOpen(&resourceFile
,
1353 OSErr _err
= ResError();
1354 if (_err
!= noErr
) return PyMac_Error(_err
);
1356 _res
= Py_BuildValue("bbh",
1363 static PyObject
*Res_FSpOpenOrphanResFile(PyObject
*_self
, PyObject
*_args
)
1365 PyObject
*_res
= NULL
;
1368 SignedByte permission
;
1370 #ifndef FSpOpenOrphanResFile
1371 PyMac_PRECHECK(FSpOpenOrphanResFile
);
1373 if (!PyArg_ParseTuple(_args
, "O&b",
1374 PyMac_GetFSSpec
, &spec
,
1377 _err
= FSpOpenOrphanResFile(&spec
,
1380 if (_err
!= noErr
) return PyMac_Error(_err
);
1381 _res
= Py_BuildValue("h",
1386 static PyObject
*Res_GetTopResourceFile(PyObject
*_self
, PyObject
*_args
)
1388 PyObject
*_res
= NULL
;
1391 #ifndef GetTopResourceFile
1392 PyMac_PRECHECK(GetTopResourceFile
);
1394 if (!PyArg_ParseTuple(_args
, ""))
1396 _err
= GetTopResourceFile(&refNum
);
1397 if (_err
!= noErr
) return PyMac_Error(_err
);
1398 _res
= Py_BuildValue("h",
1404 static PyObject
*Res_GetNextResourceFile(PyObject
*_self
, PyObject
*_args
)
1406 PyObject
*_res
= NULL
;
1410 #ifndef GetNextResourceFile
1411 PyMac_PRECHECK(GetNextResourceFile
);
1413 if (!PyArg_ParseTuple(_args
, "h",
1416 _err
= GetNextResourceFile(curRefNum
,
1418 if (_err
!= noErr
) return PyMac_Error(_err
);
1419 _res
= Py_BuildValue("h",
1423 #endif /* !__LP64__ */
1425 static PyObject
*Res_FSOpenResFile(PyObject
*_self
, PyObject
*_args
)
1427 PyObject
*_res
= NULL
;
1430 SignedByte permission
;
1431 #ifndef FSOpenResFile
1432 PyMac_PRECHECK(FSOpenResFile
);
1434 if (!PyArg_ParseTuple(_args
, "O&b",
1435 PyMac_GetFSRef
, &ref
,
1438 _rv
= FSOpenResFile(&ref
,
1441 OSErr _err
= ResError();
1442 if (_err
!= noErr
) return PyMac_Error(_err
);
1444 _res
= Py_BuildValue("h",
1451 static PyObject
*Res_FSCreateResFile(PyObject
*_self
, PyObject
*_args
)
1453 PyObject
*_res
= NULL
;
1455 UniChar
*nameLength__in__
;
1456 UniCharCount nameLength__len__
;
1457 int nameLength__in_len__
;
1460 #ifndef FSCreateResFile
1461 PyMac_PRECHECK(FSCreateResFile
);
1463 if (!PyArg_ParseTuple(_args
, "O&u#",
1464 PyMac_GetFSRef
, &parentRef
,
1465 &nameLength__in__
, &nameLength__in_len__
))
1467 nameLength__len__
= nameLength__in_len__
;
1468 FSCreateResFile(&parentRef
,
1469 nameLength__len__
, nameLength__in__
,
1475 OSErr _err
= ResError();
1476 if (_err
!= noErr
) return PyMac_Error(_err
);
1478 _res
= Py_BuildValue("O&O&",
1479 PyMac_BuildFSRef
, &newRef
,
1480 PyMac_BuildFSSpec
, &newSpec
);
1484 static PyObject
*Res_FSResourceFileAlreadyOpen(PyObject
*_self
, PyObject
*_args
)
1486 PyObject
*_res
= NULL
;
1488 FSRef resourceFileRef
;
1491 #ifndef FSResourceFileAlreadyOpen
1492 PyMac_PRECHECK(FSResourceFileAlreadyOpen
);
1494 if (!PyArg_ParseTuple(_args
, "O&",
1495 PyMac_GetFSRef
, &resourceFileRef
))
1497 _rv
= FSResourceFileAlreadyOpen(&resourceFileRef
,
1501 OSErr _err
= ResError();
1502 if (_err
!= noErr
) return PyMac_Error(_err
);
1504 _res
= Py_BuildValue("bbh",
1511 static PyObject
*Res_FSCreateResourceFile(PyObject
*_self
, PyObject
*_args
)
1513 PyObject
*_res
= NULL
;
1516 UniChar
*nameLength__in__
;
1517 UniCharCount nameLength__len__
;
1518 int nameLength__in_len__
;
1519 UniChar
*forkNameLength__in__
;
1520 UniCharCount forkNameLength__len__
;
1521 int forkNameLength__in_len__
;
1524 #ifndef FSCreateResourceFile
1525 PyMac_PRECHECK(FSCreateResourceFile
);
1527 if (!PyArg_ParseTuple(_args
, "O&u#u#",
1528 PyMac_GetFSRef
, &parentRef
,
1529 &nameLength__in__
, &nameLength__in_len__
,
1530 &forkNameLength__in__
, &forkNameLength__in_len__
))
1532 nameLength__len__
= nameLength__in_len__
;
1533 forkNameLength__len__
= forkNameLength__in_len__
;
1534 _err
= FSCreateResourceFile(&parentRef
,
1535 nameLength__len__
, nameLength__in__
,
1538 forkNameLength__len__
, forkNameLength__in__
,
1541 if (_err
!= noErr
) return PyMac_Error(_err
);
1542 _res
= Py_BuildValue("O&O&",
1543 PyMac_BuildFSRef
, &newRef
,
1544 PyMac_BuildFSSpec
, &newSpec
);
1547 #endif /* __LP64__ */
1549 static PyObject
*Res_FSOpenResourceFile(PyObject
*_self
, PyObject
*_args
)
1551 PyObject
*_res
= NULL
;
1554 UniChar
*forkNameLength__in__
;
1555 UniCharCount forkNameLength__len__
;
1556 int forkNameLength__in_len__
;
1557 SignedByte permissions
;
1558 ResFileRefNum refNum
;
1559 #ifndef FSOpenResourceFile
1560 PyMac_PRECHECK(FSOpenResourceFile
);
1562 if (!PyArg_ParseTuple(_args
, "O&u#b",
1563 PyMac_GetFSRef
, &ref
,
1564 &forkNameLength__in__
, &forkNameLength__in_len__
,
1567 forkNameLength__len__
= forkNameLength__in_len__
;
1568 _err
= FSOpenResourceFile(&ref
,
1569 forkNameLength__len__
, forkNameLength__in__
,
1572 if (_err
!= noErr
) return PyMac_Error(_err
);
1573 _res
= Py_BuildValue("h",
1578 static PyObject
*Res_Handle(PyObject
*_self
, PyObject
*_args
)
1580 PyObject
*_res
= NULL
;
1587 if (!PyArg_ParseTuple(_args
, "s#", &buf
, &len
))
1595 memcpy(*h
, buf
, len
);
1597 rv
= (ResourceObject
*)ResObj_New(h
);
1598 rv
->ob_freeit
= PyMac_AutoDisposeHandle
;
1599 _res
= (PyObject
*)rv
;
1604 static PyMethodDef Res_methods
[] = {
1605 {"CloseResFile", (PyCFunction
)Res_CloseResFile
, 1,
1606 PyDoc_STR("(short refNum) -> None")},
1607 {"ResError", (PyCFunction
)Res_ResError
, 1,
1608 PyDoc_STR("() -> None")},
1609 {"CurResFile", (PyCFunction
)Res_CurResFile
, 1,
1610 PyDoc_STR("() -> (short _rv)")},
1611 {"UseResFile", (PyCFunction
)Res_UseResFile
, 1,
1612 PyDoc_STR("(short refNum) -> None")},
1613 {"CountTypes", (PyCFunction
)Res_CountTypes
, 1,
1614 PyDoc_STR("() -> (short _rv)")},
1615 {"Count1Types", (PyCFunction
)Res_Count1Types
, 1,
1616 PyDoc_STR("() -> (short _rv)")},
1617 {"GetIndType", (PyCFunction
)Res_GetIndType
, 1,
1618 PyDoc_STR("(short index) -> (ResType theType)")},
1619 {"Get1IndType", (PyCFunction
)Res_Get1IndType
, 1,
1620 PyDoc_STR("(short index) -> (ResType theType)")},
1621 {"SetResLoad", (PyCFunction
)Res_SetResLoad
, 1,
1622 PyDoc_STR("(Boolean load) -> None")},
1623 {"CountResources", (PyCFunction
)Res_CountResources
, 1,
1624 PyDoc_STR("(ResType theType) -> (short _rv)")},
1625 {"Count1Resources", (PyCFunction
)Res_Count1Resources
, 1,
1626 PyDoc_STR("(ResType theType) -> (short _rv)")},
1627 {"GetIndResource", (PyCFunction
)Res_GetIndResource
, 1,
1628 PyDoc_STR("(ResType theType, short index) -> (Handle _rv)")},
1629 {"Get1IndResource", (PyCFunction
)Res_Get1IndResource
, 1,
1630 PyDoc_STR("(ResType theType, short index) -> (Handle _rv)")},
1631 {"GetResource", (PyCFunction
)Res_GetResource
, 1,
1632 PyDoc_STR("(ResType theType, short theID) -> (Handle _rv)")},
1633 {"Get1Resource", (PyCFunction
)Res_Get1Resource
, 1,
1634 PyDoc_STR("(ResType theType, short theID) -> (Handle _rv)")},
1635 {"GetNamedResource", (PyCFunction
)Res_GetNamedResource
, 1,
1636 PyDoc_STR("(ResType theType, Str255 name) -> (Handle _rv)")},
1637 {"Get1NamedResource", (PyCFunction
)Res_Get1NamedResource
, 1,
1638 PyDoc_STR("(ResType theType, Str255 name) -> (Handle _rv)")},
1639 {"UniqueID", (PyCFunction
)Res_UniqueID
, 1,
1640 PyDoc_STR("(ResType theType) -> (short _rv)")},
1641 {"Unique1ID", (PyCFunction
)Res_Unique1ID
, 1,
1642 PyDoc_STR("(ResType theType) -> (short _rv)")},
1643 {"UpdateResFile", (PyCFunction
)Res_UpdateResFile
, 1,
1644 PyDoc_STR("(short refNum) -> None")},
1645 {"SetResPurge", (PyCFunction
)Res_SetResPurge
, 1,
1646 PyDoc_STR("(Boolean install) -> None")},
1647 {"GetResFileAttrs", (PyCFunction
)Res_GetResFileAttrs
, 1,
1648 PyDoc_STR("(short refNum) -> (short _rv)")},
1649 {"SetResFileAttrs", (PyCFunction
)Res_SetResFileAttrs
, 1,
1650 PyDoc_STR("(short refNum, short attrs) -> None")},
1652 {"OpenRFPerm", (PyCFunction
)Res_OpenRFPerm
, 1,
1653 PyDoc_STR("(Str255 fileName, short vRefNum, SignedByte permission) -> (short _rv)")},
1654 {"HOpenResFile", (PyCFunction
)Res_HOpenResFile
, 1,
1655 PyDoc_STR("(short vRefNum, long dirID, Str255 fileName, SignedByte permission) -> (short _rv)")},
1656 {"HCreateResFile", (PyCFunction
)Res_HCreateResFile
, 1,
1657 PyDoc_STR("(short vRefNum, long dirID, Str255 fileName) -> None")},
1658 {"FSpOpenResFile", (PyCFunction
)Res_FSpOpenResFile
, 1,
1659 PyDoc_STR("(FSSpec spec, SignedByte permission) -> (short _rv)")},
1660 {"FSpCreateResFile", (PyCFunction
)Res_FSpCreateResFile
, 1,
1661 PyDoc_STR("(FSSpec spec, OSType creator, OSType fileType, ScriptCode scriptTag) -> None")},
1662 #endif /* !__LP64__ */
1663 {"InsertResourceFile", (PyCFunction
)Res_InsertResourceFile
, 1,
1664 PyDoc_STR("(SInt16 refNum, RsrcChainLocation where) -> None")},
1665 {"DetachResourceFile", (PyCFunction
)Res_DetachResourceFile
, 1,
1666 PyDoc_STR("(SInt16 refNum) -> None")},
1668 {"FSpResourceFileAlreadyOpen", (PyCFunction
)Res_FSpResourceFileAlreadyOpen
, 1,
1669 PyDoc_STR("(FSSpec resourceFile) -> (Boolean _rv, Boolean inChain, SInt16 refNum)")},
1670 {"FSpOpenOrphanResFile", (PyCFunction
)Res_FSpOpenOrphanResFile
, 1,
1671 PyDoc_STR("(FSSpec spec, SignedByte permission) -> (SInt16 refNum)")},
1672 {"GetTopResourceFile", (PyCFunction
)Res_GetTopResourceFile
, 1,
1673 PyDoc_STR("() -> (SInt16 refNum)")},
1674 {"GetNextResourceFile", (PyCFunction
)Res_GetNextResourceFile
, 1,
1675 PyDoc_STR("(SInt16 curRefNum) -> (SInt16 nextRefNum)")},
1676 #endif /* __LP64__ */
1677 {"FSOpenResFile", (PyCFunction
)Res_FSOpenResFile
, 1,
1678 PyDoc_STR("(FSRef ref, SignedByte permission) -> (short _rv)")},
1680 {"FSCreateResFile", (PyCFunction
)Res_FSCreateResFile
, 1,
1681 PyDoc_STR("(FSRef parentRef, Buffer nameLength) -> (FSRef newRef, FSSpec newSpec)")},
1682 {"FSResourceFileAlreadyOpen", (PyCFunction
)Res_FSResourceFileAlreadyOpen
, 1,
1683 PyDoc_STR("(FSRef resourceFileRef) -> (Boolean _rv, Boolean inChain, SInt16 refNum)")},
1684 {"FSCreateResourceFile", (PyCFunction
)Res_FSCreateResourceFile
, 1,
1685 PyDoc_STR("(FSRef parentRef, Buffer nameLength, Buffer forkNameLength) -> (FSRef newRef, FSSpec newSpec)")},
1686 #endif /* __LP64__ */
1687 {"FSOpenResourceFile", (PyCFunction
)Res_FSOpenResourceFile
, 1,
1688 PyDoc_STR("(FSRef ref, Buffer forkNameLength, SignedByte permissions) -> (SInt16 refNum)")},
1689 {"Handle", (PyCFunction
)Res_Handle
, 1,
1690 PyDoc_STR("Convert a string to a Handle object.\n\nResource() and Handle() are very similar, but objects created with Handle() are\nby default automatically DisposeHandle()d upon object cleanup. Use AutoDispose()\nto change this.\n")},
1696 /* Alternative version of ResObj_New, which returns None for null argument */
1697 PyObject
*OptResObj_New(Handle itself
)
1699 if (itself
== NULL
) {
1703 return ResObj_New(itself
);
1706 int OptResObj_Convert(PyObject
*v
, Handle
*p_itself
)
1710 if ( v
== Py_None
) {
1714 if (ResObj_Check(v
))
1716 *p_itself
= ((ResourceObject
*)v
)->ob_itself
;
1719 /* If it isn't a resource yet see whether it is convertible */
1720 if ( (tmp
=PyObject_CallMethod(v
, "as_Resource", "")) ) {
1721 *p_itself
= ((ResourceObject
*)tmp
)->ob_itself
;
1726 PyErr_SetString(PyExc_TypeError
, "Resource required");
1738 PyMac_INIT_TOOLBOX_OBJECT_NEW(Handle
, ResObj_New
);
1739 PyMac_INIT_TOOLBOX_OBJECT_CONVERT(Handle
, ResObj_Convert
);
1740 PyMac_INIT_TOOLBOX_OBJECT_NEW(Handle
, OptResObj_New
);
1741 PyMac_INIT_TOOLBOX_OBJECT_CONVERT(Handle
, OptResObj_Convert
);
1744 m
= Py_InitModule("_Res", Res_methods
);
1745 d
= PyModule_GetDict(m
);
1746 Res_Error
= PyMac_GetOSErrException();
1747 if (Res_Error
== NULL
||
1748 PyDict_SetItemString(d
, "Error", Res_Error
) != 0)
1750 Resource_Type
.ob_type
= &PyType_Type
;
1751 if (PyType_Ready(&Resource_Type
) < 0) return;
1752 Py_INCREF(&Resource_Type
);
1753 PyModule_AddObject(m
, "Resource", (PyObject
*)&Resource_Type
);
1754 /* Backward-compatible name */
1755 Py_INCREF(&Resource_Type
);
1756 PyModule_AddObject(m
, "ResourceType", (PyObject
*)&Resource_Type
);
1759 /* ======================== End module _Res ========================= */