ยปCore Development>Code coverage>Mac/Modules/res/_Resmodule.c

Python code coverage for Mac/Modules/res/_Resmodule.c

#countcontent
1n/a
2n/a/* ========================== Module _Res =========================== */
3n/a
4n/a#include "Python.h"
5n/a
6n/a
7n/a#include "pymactoolbox.h"
8n/a
9n/a/* Macro to test whether a weak-loaded CFM function exists */
10n/a#define PyMac_PRECHECK(rtn) do { if ( &rtn == NULL ) {\
11n/a PyErr_SetString(PyExc_NotImplementedError, \
12n/a "Not available in this shared library/OS version"); \
13n/a return NULL; \
14n/a }} while(0)
15n/a
16n/a
17n/a#include <Carbon/Carbon.h>
18n/a
19n/a#ifdef USE_TOOLBOX_OBJECT_GLUE
20n/aextern PyObject *_ResObj_New(Handle);
21n/aextern int _ResObj_Convert(PyObject *, Handle *);
22n/aextern PyObject *_OptResObj_New(Handle);
23n/aextern int _OptResObj_Convert(PyObject *, Handle *);
24n/a#define ResObj_New _ResObj_New
25n/a#define ResObj_Convert _ResObj_Convert
26n/a#define OptResObj_New _OptResObj_New
27n/a#define OptResObj_Convert _OptResObj_Convert
28n/a#endif
29n/a
30n/a/* Function to dispose a resource, with a "normal" calling sequence */
31n/astatic void
32n/aPyMac_AutoDisposeHandle(Handle h)
33n/a{
34n/a DisposeHandle(h);
35n/a}
36n/a
37n/astatic PyObject *Res_Error;
38n/a
39n/a/* ---------------------- Object type Resource ---------------------- */
40n/a
41n/aPyTypeObject Resource_Type;
42n/a
43n/a#define ResObj_Check(x) ((x)->ob_type == &Resource_Type || PyObject_TypeCheck((x), &Resource_Type))
44n/a
45n/atypedef struct ResourceObject {
46n/a PyObject_HEAD
47n/a Handle ob_itself;
48n/a void (*ob_freeit)(Handle ptr);
49n/a} ResourceObject;
50n/a
51n/aPyObject *ResObj_New(Handle itself)
52n/a{
53n/a ResourceObject *it;
54n/a if (itself == NULL) return PyMac_Error(resNotFound);
55n/a it = PyObject_NEW(ResourceObject, &Resource_Type);
56n/a if (it == NULL) return NULL;
57n/a it->ob_itself = itself;
58n/a it->ob_freeit = NULL;
59n/a return (PyObject *)it;
60n/a}
61n/a
62n/aint ResObj_Convert(PyObject *v, Handle *p_itself)
63n/a{
64n/a if (!ResObj_Check(v))
65n/a {
66n/a PyObject *tmp;
67n/a if ( (tmp=PyObject_CallMethod(v, "as_Resource", "")) )
68n/a {
69n/a *p_itself = ((ResourceObject *)tmp)->ob_itself;
70n/a Py_DECREF(tmp);
71n/a return 1;
72n/a }
73n/a PyErr_Clear();
74n/a }
75n/a if (!ResObj_Check(v))
76n/a {
77n/a PyErr_SetString(PyExc_TypeError, "Resource required");
78n/a return 0;
79n/a }
80n/a *p_itself = ((ResourceObject *)v)->ob_itself;
81n/a return 1;
82n/a}
83n/a
84n/astatic void ResObj_dealloc(ResourceObject *self)
85n/a{
86n/a if (self->ob_freeit && self->ob_itself)
87n/a {
88n/a self->ob_freeit(self->ob_itself);
89n/a }
90n/a self->ob_itself = NULL;
91n/a self->ob_type->tp_free((PyObject *)self);
92n/a}
93n/a
94n/astatic PyObject *ResObj_HomeResFile(ResourceObject *_self, PyObject *_args)
95n/a{
96n/a PyObject *_res = NULL;
97n/a short _rv;
98n/a#ifndef HomeResFile
99n/a PyMac_PRECHECK(HomeResFile);
100n/a#endif
101n/a if (!PyArg_ParseTuple(_args, ""))
102n/a return NULL;
103n/a _rv = HomeResFile(_self->ob_itself);
104n/a {
105n/a OSErr _err = ResError();
106n/a if (_err != noErr) return PyMac_Error(_err);
107n/a }
108n/a _res = Py_BuildValue("h",
109n/a _rv);
110n/a return _res;
111n/a}
112n/a
113n/astatic PyObject *ResObj_MacLoadResource(ResourceObject *_self, PyObject *_args)
114n/a{
115n/a PyObject *_res = NULL;
116n/a#ifndef MacLoadResource
117n/a PyMac_PRECHECK(MacLoadResource);
118n/a#endif
119n/a if (!PyArg_ParseTuple(_args, ""))
120n/a return NULL;
121n/a MacLoadResource(_self->ob_itself);
122n/a {
123n/a OSErr _err = ResError();
124n/a if (_err != noErr) return PyMac_Error(_err);
125n/a }
126n/a Py_INCREF(Py_None);
127n/a _res = Py_None;
128n/a return _res;
129n/a}
130n/a
131n/astatic PyObject *ResObj_ReleaseResource(ResourceObject *_self, PyObject *_args)
132n/a{
133n/a PyObject *_res = NULL;
134n/a#ifndef ReleaseResource
135n/a PyMac_PRECHECK(ReleaseResource);
136n/a#endif
137n/a if (!PyArg_ParseTuple(_args, ""))
138n/a return NULL;
139n/a ReleaseResource(_self->ob_itself);
140n/a {
141n/a OSErr _err = ResError();
142n/a if (_err != noErr) return PyMac_Error(_err);
143n/a }
144n/a Py_INCREF(Py_None);
145n/a _res = Py_None;
146n/a return _res;
147n/a}
148n/a
149n/astatic PyObject *ResObj_DetachResource(ResourceObject *_self, PyObject *_args)
150n/a{
151n/a PyObject *_res = NULL;
152n/a#ifndef DetachResource
153n/a PyMac_PRECHECK(DetachResource);
154n/a#endif
155n/a if (!PyArg_ParseTuple(_args, ""))
156n/a return NULL;
157n/a DetachResource(_self->ob_itself);
158n/a {
159n/a OSErr _err = ResError();
160n/a if (_err != noErr) return PyMac_Error(_err);
161n/a }
162n/a Py_INCREF(Py_None);
163n/a _res = Py_None;
164n/a return _res;
165n/a}
166n/a
167n/astatic PyObject *ResObj_GetResAttrs(ResourceObject *_self, PyObject *_args)
168n/a{
169n/a PyObject *_res = NULL;
170n/a short _rv;
171n/a#ifndef GetResAttrs
172n/a PyMac_PRECHECK(GetResAttrs);
173n/a#endif
174n/a if (!PyArg_ParseTuple(_args, ""))
175n/a return NULL;
176n/a _rv = GetResAttrs(_self->ob_itself);
177n/a {
178n/a OSErr _err = ResError();
179n/a if (_err != noErr) return PyMac_Error(_err);
180n/a }
181n/a _res = Py_BuildValue("h",
182n/a _rv);
183n/a return _res;
184n/a}
185n/a
186n/astatic PyObject *ResObj_GetResInfo(ResourceObject *_self, PyObject *_args)
187n/a{
188n/a PyObject *_res = NULL;
189n/a short theID;
190n/a ResType theType;
191n/a Str255 name;
192n/a#ifndef GetResInfo
193n/a PyMac_PRECHECK(GetResInfo);
194n/a#endif
195n/a if (!PyArg_ParseTuple(_args, ""))
196n/a return NULL;
197n/a GetResInfo(_self->ob_itself,
198n/a &theID,
199n/a &theType,
200n/a name);
201n/a {
202n/a OSErr _err = ResError();
203n/a if (_err != noErr) return PyMac_Error(_err);
204n/a }
205n/a _res = Py_BuildValue("hO&O&",
206n/a theID,
207n/a PyMac_BuildOSType, theType,
208n/a PyMac_BuildStr255, name);
209n/a return _res;
210n/a}
211n/a
212n/astatic PyObject *ResObj_SetResInfo(ResourceObject *_self, PyObject *_args)
213n/a{
214n/a PyObject *_res = NULL;
215n/a short theID;
216n/a Str255 name;
217n/a#ifndef SetResInfo
218n/a PyMac_PRECHECK(SetResInfo);
219n/a#endif
220n/a if (!PyArg_ParseTuple(_args, "hO&",
221n/a &theID,
222n/a PyMac_GetStr255, name))
223n/a return NULL;
224n/a SetResInfo(_self->ob_itself,
225n/a theID,
226n/a name);
227n/a {
228n/a OSErr _err = ResError();
229n/a if (_err != noErr) return PyMac_Error(_err);
230n/a }
231n/a Py_INCREF(Py_None);
232n/a _res = Py_None;
233n/a return _res;
234n/a}
235n/a
236n/astatic PyObject *ResObj_AddResource(ResourceObject *_self, PyObject *_args)
237n/a{
238n/a PyObject *_res = NULL;
239n/a ResType theType;
240n/a short theID;
241n/a Str255 name;
242n/a#ifndef AddResource
243n/a PyMac_PRECHECK(AddResource);
244n/a#endif
245n/a if (!PyArg_ParseTuple(_args, "O&hO&",
246n/a PyMac_GetOSType, &theType,
247n/a &theID,
248n/a PyMac_GetStr255, name))
249n/a return NULL;
250n/a AddResource(_self->ob_itself,
251n/a theType,
252n/a theID,
253n/a name);
254n/a {
255n/a OSErr _err = ResError();
256n/a if (_err != noErr) return PyMac_Error(_err);
257n/a }
258n/a Py_INCREF(Py_None);
259n/a _res = Py_None;
260n/a return _res;
261n/a}
262n/a
263n/astatic PyObject *ResObj_GetResourceSizeOnDisk(ResourceObject *_self, PyObject *_args)
264n/a{
265n/a PyObject *_res = NULL;
266n/a long _rv;
267n/a#ifndef GetResourceSizeOnDisk
268n/a PyMac_PRECHECK(GetResourceSizeOnDisk);
269n/a#endif
270n/a if (!PyArg_ParseTuple(_args, ""))
271n/a return NULL;
272n/a _rv = GetResourceSizeOnDisk(_self->ob_itself);
273n/a {
274n/a OSErr _err = ResError();
275n/a if (_err != noErr) return PyMac_Error(_err);
276n/a }
277n/a _res = Py_BuildValue("l",
278n/a _rv);
279n/a return _res;
280n/a}
281n/a
282n/astatic PyObject *ResObj_GetMaxResourceSize(ResourceObject *_self, PyObject *_args)
283n/a{
284n/a PyObject *_res = NULL;
285n/a long _rv;
286n/a#ifndef GetMaxResourceSize
287n/a PyMac_PRECHECK(GetMaxResourceSize);
288n/a#endif
289n/a if (!PyArg_ParseTuple(_args, ""))
290n/a return NULL;
291n/a _rv = GetMaxResourceSize(_self->ob_itself);
292n/a {
293n/a OSErr _err = ResError();
294n/a if (_err != noErr) return PyMac_Error(_err);
295n/a }
296n/a _res = Py_BuildValue("l",
297n/a _rv);
298n/a return _res;
299n/a}
300n/a
301n/astatic PyObject *ResObj_SetResAttrs(ResourceObject *_self, PyObject *_args)
302n/a{
303n/a PyObject *_res = NULL;
304n/a short attrs;
305n/a#ifndef SetResAttrs
306n/a PyMac_PRECHECK(SetResAttrs);
307n/a#endif
308n/a if (!PyArg_ParseTuple(_args, "h",
309n/a &attrs))
310n/a return NULL;
311n/a SetResAttrs(_self->ob_itself,
312n/a attrs);
313n/a {
314n/a OSErr _err = ResError();
315n/a if (_err != noErr) return PyMac_Error(_err);
316n/a }
317n/a Py_INCREF(Py_None);
318n/a _res = Py_None;
319n/a return _res;
320n/a}
321n/a
322n/astatic PyObject *ResObj_ChangedResource(ResourceObject *_self, PyObject *_args)
323n/a{
324n/a PyObject *_res = NULL;
325n/a#ifndef ChangedResource
326n/a PyMac_PRECHECK(ChangedResource);
327n/a#endif
328n/a if (!PyArg_ParseTuple(_args, ""))
329n/a return NULL;
330n/a ChangedResource(_self->ob_itself);
331n/a {
332n/a OSErr _err = ResError();
333n/a if (_err != noErr) return PyMac_Error(_err);
334n/a }
335n/a Py_INCREF(Py_None);
336n/a _res = Py_None;
337n/a return _res;
338n/a}
339n/a
340n/astatic PyObject *ResObj_RemoveResource(ResourceObject *_self, PyObject *_args)
341n/a{
342n/a PyObject *_res = NULL;
343n/a#ifndef RemoveResource
344n/a PyMac_PRECHECK(RemoveResource);
345n/a#endif
346n/a if (!PyArg_ParseTuple(_args, ""))
347n/a return NULL;
348n/a RemoveResource(_self->ob_itself);
349n/a {
350n/a OSErr _err = ResError();
351n/a if (_err != noErr) return PyMac_Error(_err);
352n/a }
353n/a Py_INCREF(Py_None);
354n/a _res = Py_None;
355n/a return _res;
356n/a}
357n/a
358n/astatic PyObject *ResObj_WriteResource(ResourceObject *_self, PyObject *_args)
359n/a{
360n/a PyObject *_res = NULL;
361n/a#ifndef WriteResource
362n/a PyMac_PRECHECK(WriteResource);
363n/a#endif
364n/a if (!PyArg_ParseTuple(_args, ""))
365n/a return NULL;
366n/a WriteResource(_self->ob_itself);
367n/a {
368n/a OSErr _err = ResError();
369n/a if (_err != noErr) return PyMac_Error(_err);
370n/a }
371n/a Py_INCREF(Py_None);
372n/a _res = Py_None;
373n/a return _res;
374n/a}
375n/a
376n/astatic PyObject *ResObj_SetResourceSize(ResourceObject *_self, PyObject *_args)
377n/a{
378n/a PyObject *_res = NULL;
379n/a long newSize;
380n/a#ifndef SetResourceSize
381n/a PyMac_PRECHECK(SetResourceSize);
382n/a#endif
383n/a if (!PyArg_ParseTuple(_args, "l",
384n/a &newSize))
385n/a return NULL;
386n/a SetResourceSize(_self->ob_itself,
387n/a newSize);
388n/a {
389n/a OSErr _err = ResError();
390n/a if (_err != noErr) return PyMac_Error(_err);
391n/a }
392n/a Py_INCREF(Py_None);
393n/a _res = Py_None;
394n/a return _res;
395n/a}
396n/a
397n/astatic PyObject *ResObj_GetNextFOND(ResourceObject *_self, PyObject *_args)
398n/a{
399n/a PyObject *_res = NULL;
400n/a Handle _rv;
401n/a#ifndef GetNextFOND
402n/a PyMac_PRECHECK(GetNextFOND);
403n/a#endif
404n/a if (!PyArg_ParseTuple(_args, ""))
405n/a return NULL;
406n/a _rv = GetNextFOND(_self->ob_itself);
407n/a {
408n/a OSErr _err = ResError();
409n/a if (_err != noErr) return PyMac_Error(_err);
410n/a }
411n/a _res = Py_BuildValue("O&",
412n/a ResObj_New, _rv);
413n/a return _res;
414n/a}
415n/a
416n/a#ifndef __LP64__
417n/astatic PyObject *ResObj_as_Control(ResourceObject *_self, PyObject *_args)
418n/a{
419n/a PyObject *_res = NULL;
420n/a
421n/a _res = CtlObj_New((ControlHandle)_self->ob_itself);
422n/a return _res;
423n/a
424n/a}
425n/a
426n/astatic PyObject *ResObj_as_Menu(ResourceObject *_self, PyObject *_args)
427n/a{
428n/a PyObject *_res = NULL;
429n/a
430n/a _res = MenuObj_New((MenuHandle)_self->ob_itself);
431n/a return _res;
432n/a
433n/a}
434n/a#endif /* !__LP64__ */
435n/a
436n/astatic PyObject *ResObj_LoadResource(ResourceObject *_self, PyObject *_args)
437n/a{
438n/a PyObject *_res = NULL;
439n/a#ifndef LoadResource
440n/a PyMac_PRECHECK(LoadResource);
441n/a#endif
442n/a if (!PyArg_ParseTuple(_args, ""))
443n/a return NULL;
444n/a LoadResource(_self->ob_itself);
445n/a {
446n/a OSErr _err = ResError();
447n/a if (_err != noErr) return PyMac_Error(_err);
448n/a }
449n/a Py_INCREF(Py_None);
450n/a _res = Py_None;
451n/a return _res;
452n/a}
453n/a
454n/astatic PyObject *ResObj_AutoDispose(ResourceObject *_self, PyObject *_args)
455n/a{
456n/a PyObject *_res = NULL;
457n/a
458n/a int onoff, old = 0;
459n/a if (!PyArg_ParseTuple(_args, "i", &onoff))
460n/a return NULL;
461n/a if ( _self->ob_freeit )
462n/a old = 1;
463n/a if ( onoff )
464n/a _self->ob_freeit = PyMac_AutoDisposeHandle;
465n/a else
466n/a _self->ob_freeit = NULL;
467n/a _res = Py_BuildValue("i", old);
468n/a return _res;
469n/a
470n/a}
471n/a
472n/astatic PyMethodDef ResObj_methods[] = {
473n/a {"HomeResFile", (PyCFunction)ResObj_HomeResFile, 1,
474n/a PyDoc_STR("() -> (short _rv)")},
475n/a {"MacLoadResource", (PyCFunction)ResObj_MacLoadResource, 1,
476n/a PyDoc_STR("() -> None")},
477n/a {"ReleaseResource", (PyCFunction)ResObj_ReleaseResource, 1,
478n/a PyDoc_STR("() -> None")},
479n/a {"DetachResource", (PyCFunction)ResObj_DetachResource, 1,
480n/a PyDoc_STR("() -> None")},
481n/a {"GetResAttrs", (PyCFunction)ResObj_GetResAttrs, 1,
482n/a PyDoc_STR("() -> (short _rv)")},
483n/a {"GetResInfo", (PyCFunction)ResObj_GetResInfo, 1,
484n/a PyDoc_STR("() -> (short theID, ResType theType, Str255 name)")},
485n/a {"SetResInfo", (PyCFunction)ResObj_SetResInfo, 1,
486n/a PyDoc_STR("(short theID, Str255 name) -> None")},
487n/a {"AddResource", (PyCFunction)ResObj_AddResource, 1,
488n/a PyDoc_STR("(ResType theType, short theID, Str255 name) -> None")},
489n/a {"GetResourceSizeOnDisk", (PyCFunction)ResObj_GetResourceSizeOnDisk, 1,
490n/a PyDoc_STR("() -> (long _rv)")},
491n/a {"GetMaxResourceSize", (PyCFunction)ResObj_GetMaxResourceSize, 1,
492n/a PyDoc_STR("() -> (long _rv)")},
493n/a {"SetResAttrs", (PyCFunction)ResObj_SetResAttrs, 1,
494n/a PyDoc_STR("(short attrs) -> None")},
495n/a {"ChangedResource", (PyCFunction)ResObj_ChangedResource, 1,
496n/a PyDoc_STR("() -> None")},
497n/a {"RemoveResource", (PyCFunction)ResObj_RemoveResource, 1,
498n/a PyDoc_STR("() -> None")},
499n/a {"WriteResource", (PyCFunction)ResObj_WriteResource, 1,
500n/a PyDoc_STR("() -> None")},
501n/a {"SetResourceSize", (PyCFunction)ResObj_SetResourceSize, 1,
502n/a PyDoc_STR("(long newSize) -> None")},
503n/a {"GetNextFOND", (PyCFunction)ResObj_GetNextFOND, 1,
504n/a PyDoc_STR("() -> (Handle _rv)")},
505n/a#ifndef __LP64__
506n/a {"as_Control", (PyCFunction)ResObj_as_Control, 1,
507n/a PyDoc_STR("Return this resource/handle as a Control")},
508n/a {"as_Menu", (PyCFunction)ResObj_as_Menu, 1,
509n/a PyDoc_STR("Return this resource/handle as a Menu")},
510n/a#endif /* !__LP64__ */
511n/a {"LoadResource", (PyCFunction)ResObj_LoadResource, 1,
512n/a PyDoc_STR("() -> None")},
513n/a {"AutoDispose", (PyCFunction)ResObj_AutoDispose, 1,
514n/a PyDoc_STR("(int)->int. Automatically DisposeHandle the object on Python object cleanup")},
515n/a {NULL, NULL, 0}
516n/a};
517n/a
518n/astatic PyObject *ResObj_get_data(ResourceObject *self, void *closure)
519n/a{
520n/a
521n/a PyObject *res;
522n/a char state;
523n/a
524n/a state = HGetState(self->ob_itself);
525n/a HLock(self->ob_itself);
526n/a res = PyString_FromStringAndSize(
527n/a *self->ob_itself,
528n/a GetHandleSize(self->ob_itself));
529n/a HUnlock(self->ob_itself);
530n/a HSetState(self->ob_itself, state);
531n/a return res;
532n/a
533n/a}
534n/a
535n/astatic int ResObj_set_data(ResourceObject *self, PyObject *v, void *closure)
536n/a{
537n/a
538n/a char *data;
539n/a long size;
540n/a
541n/a if ( v == NULL )
542n/a return -1;
543n/a if ( !PyString_Check(v) )
544n/a return -1;
545n/a size = PyString_Size(v);
546n/a data = PyString_AsString(v);
547n/a /* XXXX Do I need the GetState/SetState calls? */
548n/a SetHandleSize(self->ob_itself, size);
549n/a if ( MemError())
550n/a return -1;
551n/a HLock(self->ob_itself);
552n/a memcpy((char *)*self->ob_itself, data, size);
553n/a HUnlock(self->ob_itself);
554n/a /* XXXX Should I do the Changed call immedeately? */
555n/a return 0;
556n/a
557n/a return 0;
558n/a}
559n/a
560n/astatic PyObject *ResObj_get_size(ResourceObject *self, void *closure)
561n/a{
562n/a return PyInt_FromLong(GetHandleSize(self->ob_itself));
563n/a}
564n/a
565n/a#define ResObj_set_size NULL
566n/a
567n/astatic PyGetSetDef ResObj_getsetlist[] = {
568n/a {"data", (getter)ResObj_get_data, (setter)ResObj_set_data, "The resource data"},
569n/a {"size", (getter)ResObj_get_size, (setter)ResObj_set_size, "The length of the resource data"},
570n/a {NULL, NULL, NULL, NULL},
571n/a};
572n/a
573n/a
574n/a#define ResObj_compare NULL
575n/a
576n/a#define ResObj_repr NULL
577n/a
578n/a#define ResObj_hash NULL
579n/astatic int ResObj_tp_init(PyObject *_self, PyObject *_args, PyObject *_kwds)
580n/a{
581n/a char *srcdata = NULL;
582n/a int srclen = 0;
583n/a Handle itself;
584n/a char *kw[] = {"itself", 0};
585n/a
586n/a if (PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, ResObj_Convert, &itself))
587n/a {
588n/a ((ResourceObject *)_self)->ob_itself = itself;
589n/a return 0;
590n/a }
591n/a PyErr_Clear();
592n/a if (!PyArg_ParseTupleAndKeywords(_args, _kwds, "|s#", kw, &srcdata, &srclen)) return -1;
593n/a if ((itself = NewHandle(srclen)) == NULL)
594n/a {
595n/a PyErr_NoMemory();
596n/a return 0;
597n/a }
598n/a ((ResourceObject *)_self)->ob_itself = itself;
599n/a if (srclen && srcdata)
600n/a {
601n/a HLock(itself);
602n/a memcpy(*itself, srcdata, srclen);
603n/a HUnlock(itself);
604n/a }
605n/a return 0;
606n/a}
607n/a
608n/a#define ResObj_tp_alloc PyType_GenericAlloc
609n/a
610n/astatic PyObject *ResObj_tp_new(PyTypeObject *type, PyObject *_args, PyObject *_kwds)
611n/a{
612n/a PyObject *self;
613n/a if ((self = type->tp_alloc(type, 0)) == NULL) return NULL;
614n/a ((ResourceObject *)self)->ob_itself = NULL;
615n/a ((ResourceObject *)self)->ob_freeit = NULL;
616n/a return self;
617n/a}
618n/a
619n/a#define ResObj_tp_free PyObject_Del
620n/a
621n/a
622n/aPyTypeObject Resource_Type = {
623n/a PyObject_HEAD_INIT(NULL)
624n/a 0, /*ob_size*/
625n/a "_Res.Resource", /*tp_name*/
626n/a sizeof(ResourceObject), /*tp_basicsize*/
627n/a 0, /*tp_itemsize*/
628n/a /* methods */
629n/a (destructor) ResObj_dealloc, /*tp_dealloc*/
630n/a 0, /*tp_print*/
631n/a (getattrfunc)0, /*tp_getattr*/
632n/a (setattrfunc)0, /*tp_setattr*/
633n/a (cmpfunc) ResObj_compare, /*tp_compare*/
634n/a (reprfunc) ResObj_repr, /*tp_repr*/
635n/a (PyNumberMethods *)0, /* tp_as_number */
636n/a (PySequenceMethods *)0, /* tp_as_sequence */
637n/a (PyMappingMethods *)0, /* tp_as_mapping */
638n/a (hashfunc) ResObj_hash, /*tp_hash*/
639n/a 0, /*tp_call*/
640n/a 0, /*tp_str*/
641n/a PyObject_GenericGetAttr, /*tp_getattro*/
642n/a PyObject_GenericSetAttr, /*tp_setattro */
643n/a 0, /*tp_as_buffer*/
644n/a Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /* tp_flags */
645n/a 0, /*tp_doc*/
646n/a 0, /*tp_traverse*/
647n/a 0, /*tp_clear*/
648n/a 0, /*tp_richcompare*/
649n/a 0, /*tp_weaklistoffset*/
650n/a 0, /*tp_iter*/
651n/a 0, /*tp_iternext*/
652n/a ResObj_methods, /* tp_methods */
653n/a 0, /*tp_members*/
654n/a ResObj_getsetlist, /*tp_getset*/
655n/a 0, /*tp_base*/
656n/a 0, /*tp_dict*/
657n/a 0, /*tp_descr_get*/
658n/a 0, /*tp_descr_set*/
659n/a 0, /*tp_dictoffset*/
660n/a ResObj_tp_init, /* tp_init */
661n/a ResObj_tp_alloc, /* tp_alloc */
662n/a ResObj_tp_new, /* tp_new */
663n/a ResObj_tp_free, /* tp_free */
664n/a};
665n/a
666n/a/* -------------------- End object type Resource -------------------- */
667n/a
668n/a
669n/astatic PyObject *Res_CloseResFile(PyObject *_self, PyObject *_args)
670n/a{
671n/a PyObject *_res = NULL;
672n/a short refNum;
673n/a#ifndef CloseResFile
674n/a PyMac_PRECHECK(CloseResFile);
675n/a#endif
676n/a if (!PyArg_ParseTuple(_args, "h",
677n/a &refNum))
678n/a return NULL;
679n/a CloseResFile(refNum);
680n/a {
681n/a OSErr _err = ResError();
682n/a if (_err != noErr) return PyMac_Error(_err);
683n/a }
684n/a Py_INCREF(Py_None);
685n/a _res = Py_None;
686n/a return _res;
687n/a}
688n/a
689n/astatic PyObject *Res_ResError(PyObject *_self, PyObject *_args)
690n/a{
691n/a PyObject *_res = NULL;
692n/a OSErr _err;
693n/a#ifndef ResError
694n/a PyMac_PRECHECK(ResError);
695n/a#endif
696n/a if (!PyArg_ParseTuple(_args, ""))
697n/a return NULL;
698n/a _err = ResError();
699n/a if (_err != noErr) return PyMac_Error(_err);
700n/a Py_INCREF(Py_None);
701n/a _res = Py_None;
702n/a return _res;
703n/a}
704n/a
705n/astatic PyObject *Res_CurResFile(PyObject *_self, PyObject *_args)
706n/a{
707n/a PyObject *_res = NULL;
708n/a short _rv;
709n/a#ifndef CurResFile
710n/a PyMac_PRECHECK(CurResFile);
711n/a#endif
712n/a if (!PyArg_ParseTuple(_args, ""))
713n/a return NULL;
714n/a _rv = CurResFile();
715n/a {
716n/a OSErr _err = ResError();
717n/a if (_err != noErr) return PyMac_Error(_err);
718n/a }
719n/a _res = Py_BuildValue("h",
720n/a _rv);
721n/a return _res;
722n/a}
723n/a
724n/astatic PyObject *Res_UseResFile(PyObject *_self, PyObject *_args)
725n/a{
726n/a PyObject *_res = NULL;
727n/a short refNum;
728n/a#ifndef UseResFile
729n/a PyMac_PRECHECK(UseResFile);
730n/a#endif
731n/a if (!PyArg_ParseTuple(_args, "h",
732n/a &refNum))
733n/a return NULL;
734n/a UseResFile(refNum);
735n/a {
736n/a OSErr _err = ResError();
737n/a if (_err != noErr) return PyMac_Error(_err);
738n/a }
739n/a Py_INCREF(Py_None);
740n/a _res = Py_None;
741n/a return _res;
742n/a}
743n/a
744n/astatic PyObject *Res_CountTypes(PyObject *_self, PyObject *_args)
745n/a{
746n/a PyObject *_res = NULL;
747n/a short _rv;
748n/a#ifndef CountTypes
749n/a PyMac_PRECHECK(CountTypes);
750n/a#endif
751n/a if (!PyArg_ParseTuple(_args, ""))
752n/a return NULL;
753n/a _rv = CountTypes();
754n/a {
755n/a OSErr _err = ResError();
756n/a if (_err != noErr) return PyMac_Error(_err);
757n/a }
758n/a _res = Py_BuildValue("h",
759n/a _rv);
760n/a return _res;
761n/a}
762n/a
763n/astatic PyObject *Res_Count1Types(PyObject *_self, PyObject *_args)
764n/a{
765n/a PyObject *_res = NULL;
766n/a short _rv;
767n/a#ifndef Count1Types
768n/a PyMac_PRECHECK(Count1Types);
769n/a#endif
770n/a if (!PyArg_ParseTuple(_args, ""))
771n/a return NULL;
772n/a _rv = Count1Types();
773n/a {
774n/a OSErr _err = ResError();
775n/a if (_err != noErr) return PyMac_Error(_err);
776n/a }
777n/a _res = Py_BuildValue("h",
778n/a _rv);
779n/a return _res;
780n/a}
781n/a
782n/astatic PyObject *Res_GetIndType(PyObject *_self, PyObject *_args)
783n/a{
784n/a PyObject *_res = NULL;
785n/a ResType theType;
786n/a short index;
787n/a#ifndef GetIndType
788n/a PyMac_PRECHECK(GetIndType);
789n/a#endif
790n/a if (!PyArg_ParseTuple(_args, "h",
791n/a &index))
792n/a return NULL;
793n/a GetIndType(&theType,
794n/a index);
795n/a {
796n/a OSErr _err = ResError();
797n/a if (_err != noErr) return PyMac_Error(_err);
798n/a }
799n/a _res = Py_BuildValue("O&",
800n/a PyMac_BuildOSType, theType);
801n/a return _res;
802n/a}
803n/a
804n/astatic PyObject *Res_Get1IndType(PyObject *_self, PyObject *_args)
805n/a{
806n/a PyObject *_res = NULL;
807n/a ResType theType;
808n/a short index;
809n/a#ifndef Get1IndType
810n/a PyMac_PRECHECK(Get1IndType);
811n/a#endif
812n/a if (!PyArg_ParseTuple(_args, "h",
813n/a &index))
814n/a return NULL;
815n/a Get1IndType(&theType,
816n/a index);
817n/a {
818n/a OSErr _err = ResError();
819n/a if (_err != noErr) return PyMac_Error(_err);
820n/a }
821n/a _res = Py_BuildValue("O&",
822n/a PyMac_BuildOSType, theType);
823n/a return _res;
824n/a}
825n/a
826n/astatic PyObject *Res_SetResLoad(PyObject *_self, PyObject *_args)
827n/a{
828n/a PyObject *_res = NULL;
829n/a Boolean load;
830n/a#ifndef SetResLoad
831n/a PyMac_PRECHECK(SetResLoad);
832n/a#endif
833n/a if (!PyArg_ParseTuple(_args, "b",
834n/a &load))
835n/a return NULL;
836n/a SetResLoad(load);
837n/a {
838n/a OSErr _err = ResError();
839n/a if (_err != noErr) return PyMac_Error(_err);
840n/a }
841n/a Py_INCREF(Py_None);
842n/a _res = Py_None;
843n/a return _res;
844n/a}
845n/a
846n/astatic PyObject *Res_CountResources(PyObject *_self, PyObject *_args)
847n/a{
848n/a PyObject *_res = NULL;
849n/a short _rv;
850n/a ResType theType;
851n/a#ifndef CountResources
852n/a PyMac_PRECHECK(CountResources);
853n/a#endif
854n/a if (!PyArg_ParseTuple(_args, "O&",
855n/a PyMac_GetOSType, &theType))
856n/a return NULL;
857n/a _rv = CountResources(theType);
858n/a {
859n/a OSErr _err = ResError();
860n/a if (_err != noErr) return PyMac_Error(_err);
861n/a }
862n/a _res = Py_BuildValue("h",
863n/a _rv);
864n/a return _res;
865n/a}
866n/a
867n/astatic PyObject *Res_Count1Resources(PyObject *_self, PyObject *_args)
868n/a{
869n/a PyObject *_res = NULL;
870n/a short _rv;
871n/a ResType theType;
872n/a#ifndef Count1Resources
873n/a PyMac_PRECHECK(Count1Resources);
874n/a#endif
875n/a if (!PyArg_ParseTuple(_args, "O&",
876n/a PyMac_GetOSType, &theType))
877n/a return NULL;
878n/a _rv = Count1Resources(theType);
879n/a {
880n/a OSErr _err = ResError();
881n/a if (_err != noErr) return PyMac_Error(_err);
882n/a }
883n/a _res = Py_BuildValue("h",
884n/a _rv);
885n/a return _res;
886n/a}
887n/a
888n/astatic PyObject *Res_GetIndResource(PyObject *_self, PyObject *_args)
889n/a{
890n/a PyObject *_res = NULL;
891n/a Handle _rv;
892n/a ResType theType;
893n/a short index;
894n/a#ifndef GetIndResource
895n/a PyMac_PRECHECK(GetIndResource);
896n/a#endif
897n/a if (!PyArg_ParseTuple(_args, "O&h",
898n/a PyMac_GetOSType, &theType,
899n/a &index))
900n/a return NULL;
901n/a _rv = GetIndResource(theType,
902n/a index);
903n/a {
904n/a OSErr _err = ResError();
905n/a if (_err != noErr) return PyMac_Error(_err);
906n/a }
907n/a _res = Py_BuildValue("O&",
908n/a ResObj_New, _rv);
909n/a return _res;
910n/a}
911n/a
912n/astatic PyObject *Res_Get1IndResource(PyObject *_self, PyObject *_args)
913n/a{
914n/a PyObject *_res = NULL;
915n/a Handle _rv;
916n/a ResType theType;
917n/a short index;
918n/a#ifndef Get1IndResource
919n/a PyMac_PRECHECK(Get1IndResource);
920n/a#endif
921n/a if (!PyArg_ParseTuple(_args, "O&h",
922n/a PyMac_GetOSType, &theType,
923n/a &index))
924n/a return NULL;
925n/a _rv = Get1IndResource(theType,
926n/a index);
927n/a {
928n/a OSErr _err = ResError();
929n/a if (_err != noErr) return PyMac_Error(_err);
930n/a }
931n/a _res = Py_BuildValue("O&",
932n/a ResObj_New, _rv);
933n/a return _res;
934n/a}
935n/a
936n/astatic PyObject *Res_GetResource(PyObject *_self, PyObject *_args)
937n/a{
938n/a PyObject *_res = NULL;
939n/a Handle _rv;
940n/a ResType theType;
941n/a short theID;
942n/a#ifndef GetResource
943n/a PyMac_PRECHECK(GetResource);
944n/a#endif
945n/a if (!PyArg_ParseTuple(_args, "O&h",
946n/a PyMac_GetOSType, &theType,
947n/a &theID))
948n/a return NULL;
949n/a _rv = GetResource(theType,
950n/a theID);
951n/a {
952n/a OSErr _err = ResError();
953n/a if (_err != noErr) return PyMac_Error(_err);
954n/a }
955n/a _res = Py_BuildValue("O&",
956n/a ResObj_New, _rv);
957n/a return _res;
958n/a}
959n/a
960n/astatic PyObject *Res_Get1Resource(PyObject *_self, PyObject *_args)
961n/a{
962n/a PyObject *_res = NULL;
963n/a Handle _rv;
964n/a ResType theType;
965n/a short theID;
966n/a#ifndef Get1Resource
967n/a PyMac_PRECHECK(Get1Resource);
968n/a#endif
969n/a if (!PyArg_ParseTuple(_args, "O&h",
970n/a PyMac_GetOSType, &theType,
971n/a &theID))
972n/a return NULL;
973n/a _rv = Get1Resource(theType,
974n/a theID);
975n/a {
976n/a OSErr _err = ResError();
977n/a if (_err != noErr) return PyMac_Error(_err);
978n/a }
979n/a _res = Py_BuildValue("O&",
980n/a ResObj_New, _rv);
981n/a return _res;
982n/a}
983n/a
984n/astatic PyObject *Res_GetNamedResource(PyObject *_self, PyObject *_args)
985n/a{
986n/a PyObject *_res = NULL;
987n/a Handle _rv;
988n/a ResType theType;
989n/a Str255 name;
990n/a#ifndef GetNamedResource
991n/a PyMac_PRECHECK(GetNamedResource);
992n/a#endif
993n/a if (!PyArg_ParseTuple(_args, "O&O&",
994n/a PyMac_GetOSType, &theType,
995n/a PyMac_GetStr255, name))
996n/a return NULL;
997n/a _rv = GetNamedResource(theType,
998n/a name);
999n/a {
1000n/a OSErr _err = ResError();
1001n/a if (_err != noErr) return PyMac_Error(_err);
1002n/a }
1003n/a _res = Py_BuildValue("O&",
1004n/a ResObj_New, _rv);
1005n/a return _res;
1006n/a}
1007n/a
1008n/astatic PyObject *Res_Get1NamedResource(PyObject *_self, PyObject *_args)
1009n/a{
1010n/a PyObject *_res = NULL;
1011n/a Handle _rv;
1012n/a ResType theType;
1013n/a Str255 name;
1014n/a#ifndef Get1NamedResource
1015n/a PyMac_PRECHECK(Get1NamedResource);
1016n/a#endif
1017n/a if (!PyArg_ParseTuple(_args, "O&O&",
1018n/a PyMac_GetOSType, &theType,
1019n/a PyMac_GetStr255, name))
1020n/a return NULL;
1021n/a _rv = Get1NamedResource(theType,
1022n/a name);
1023n/a {
1024n/a OSErr _err = ResError();
1025n/a if (_err != noErr) return PyMac_Error(_err);
1026n/a }
1027n/a _res = Py_BuildValue("O&",
1028n/a ResObj_New, _rv);
1029n/a return _res;
1030n/a}
1031n/a
1032n/astatic PyObject *Res_UniqueID(PyObject *_self, PyObject *_args)
1033n/a{
1034n/a PyObject *_res = NULL;
1035n/a short _rv;
1036n/a ResType theType;
1037n/a#ifndef UniqueID
1038n/a PyMac_PRECHECK(UniqueID);
1039n/a#endif
1040n/a if (!PyArg_ParseTuple(_args, "O&",
1041n/a PyMac_GetOSType, &theType))
1042n/a return NULL;
1043n/a _rv = UniqueID(theType);
1044n/a {
1045n/a OSErr _err = ResError();
1046n/a if (_err != noErr) return PyMac_Error(_err);
1047n/a }
1048n/a _res = Py_BuildValue("h",
1049n/a _rv);
1050n/a return _res;
1051n/a}
1052n/a
1053n/astatic PyObject *Res_Unique1ID(PyObject *_self, PyObject *_args)
1054n/a{
1055n/a PyObject *_res = NULL;
1056n/a short _rv;
1057n/a ResType theType;
1058n/a#ifndef Unique1ID
1059n/a PyMac_PRECHECK(Unique1ID);
1060n/a#endif
1061n/a if (!PyArg_ParseTuple(_args, "O&",
1062n/a PyMac_GetOSType, &theType))
1063n/a return NULL;
1064n/a _rv = Unique1ID(theType);
1065n/a {
1066n/a OSErr _err = ResError();
1067n/a if (_err != noErr) return PyMac_Error(_err);
1068n/a }
1069n/a _res = Py_BuildValue("h",
1070n/a _rv);
1071n/a return _res;
1072n/a}
1073n/a
1074n/astatic PyObject *Res_UpdateResFile(PyObject *_self, PyObject *_args)
1075n/a{
1076n/a PyObject *_res = NULL;
1077n/a short refNum;
1078n/a#ifndef UpdateResFile
1079n/a PyMac_PRECHECK(UpdateResFile);
1080n/a#endif
1081n/a if (!PyArg_ParseTuple(_args, "h",
1082n/a &refNum))
1083n/a return NULL;
1084n/a UpdateResFile(refNum);
1085n/a {
1086n/a OSErr _err = ResError();
1087n/a if (_err != noErr) return PyMac_Error(_err);
1088n/a }
1089n/a Py_INCREF(Py_None);
1090n/a _res = Py_None;
1091n/a return _res;
1092n/a}
1093n/a
1094n/astatic PyObject *Res_SetResPurge(PyObject *_self, PyObject *_args)
1095n/a{
1096n/a PyObject *_res = NULL;
1097n/a Boolean install;
1098n/a#ifndef SetResPurge
1099n/a PyMac_PRECHECK(SetResPurge);
1100n/a#endif
1101n/a if (!PyArg_ParseTuple(_args, "b",
1102n/a &install))
1103n/a return NULL;
1104n/a SetResPurge(install);
1105n/a {
1106n/a OSErr _err = ResError();
1107n/a if (_err != noErr) return PyMac_Error(_err);
1108n/a }
1109n/a Py_INCREF(Py_None);
1110n/a _res = Py_None;
1111n/a return _res;
1112n/a}
1113n/a
1114n/astatic PyObject *Res_GetResFileAttrs(PyObject *_self, PyObject *_args)
1115n/a{
1116n/a PyObject *_res = NULL;
1117n/a short _rv;
1118n/a short refNum;
1119n/a#ifndef GetResFileAttrs
1120n/a PyMac_PRECHECK(GetResFileAttrs);
1121n/a#endif
1122n/a if (!PyArg_ParseTuple(_args, "h",
1123n/a &refNum))
1124n/a return NULL;
1125n/a _rv = GetResFileAttrs(refNum);
1126n/a {
1127n/a OSErr _err = ResError();
1128n/a if (_err != noErr) return PyMac_Error(_err);
1129n/a }
1130n/a _res = Py_BuildValue("h",
1131n/a _rv);
1132n/a return _res;
1133n/a}
1134n/a
1135n/astatic PyObject *Res_SetResFileAttrs(PyObject *_self, PyObject *_args)
1136n/a{
1137n/a PyObject *_res = NULL;
1138n/a short refNum;
1139n/a short attrs;
1140n/a#ifndef SetResFileAttrs
1141n/a PyMac_PRECHECK(SetResFileAttrs);
1142n/a#endif
1143n/a if (!PyArg_ParseTuple(_args, "hh",
1144n/a &refNum,
1145n/a &attrs))
1146n/a return NULL;
1147n/a SetResFileAttrs(refNum,
1148n/a attrs);
1149n/a {
1150n/a OSErr _err = ResError();
1151n/a if (_err != noErr) return PyMac_Error(_err);
1152n/a }
1153n/a Py_INCREF(Py_None);
1154n/a _res = Py_None;
1155n/a return _res;
1156n/a}
1157n/a
1158n/a#ifndef __LP64__
1159n/astatic PyObject *Res_OpenRFPerm(PyObject *_self, PyObject *_args)
1160n/a{
1161n/a PyObject *_res = NULL;
1162n/a short _rv;
1163n/a Str255 fileName;
1164n/a short vRefNum;
1165n/a SignedByte permission;
1166n/a#ifndef OpenRFPerm
1167n/a PyMac_PRECHECK(OpenRFPerm);
1168n/a#endif
1169n/a if (!PyArg_ParseTuple(_args, "O&hb",
1170n/a PyMac_GetStr255, fileName,
1171n/a &vRefNum,
1172n/a &permission))
1173n/a return NULL;
1174n/a _rv = OpenRFPerm(fileName,
1175n/a vRefNum,
1176n/a permission);
1177n/a {
1178n/a OSErr _err = ResError();
1179n/a if (_err != noErr) return PyMac_Error(_err);
1180n/a }
1181n/a _res = Py_BuildValue("h",
1182n/a _rv);
1183n/a return _res;
1184n/a}
1185n/a
1186n/astatic PyObject *Res_HOpenResFile(PyObject *_self, PyObject *_args)
1187n/a{
1188n/a PyObject *_res = NULL;
1189n/a short _rv;
1190n/a short vRefNum;
1191n/a long dirID;
1192n/a Str255 fileName;
1193n/a SignedByte permission;
1194n/a#ifndef HOpenResFile
1195n/a PyMac_PRECHECK(HOpenResFile);
1196n/a#endif
1197n/a if (!PyArg_ParseTuple(_args, "hlO&b",
1198n/a &vRefNum,
1199n/a &dirID,
1200n/a PyMac_GetStr255, fileName,
1201n/a &permission))
1202n/a return NULL;
1203n/a _rv = HOpenResFile(vRefNum,
1204n/a dirID,
1205n/a fileName,
1206n/a permission);
1207n/a {
1208n/a OSErr _err = ResError();
1209n/a if (_err != noErr) return PyMac_Error(_err);
1210n/a }
1211n/a _res = Py_BuildValue("h",
1212n/a _rv);
1213n/a return _res;
1214n/a}
1215n/a
1216n/astatic PyObject *Res_HCreateResFile(PyObject *_self, PyObject *_args)
1217n/a{
1218n/a PyObject *_res = NULL;
1219n/a short vRefNum;
1220n/a long dirID;
1221n/a Str255 fileName;
1222n/a#ifndef HCreateResFile
1223n/a PyMac_PRECHECK(HCreateResFile);
1224n/a#endif
1225n/a if (!PyArg_ParseTuple(_args, "hlO&",
1226n/a &vRefNum,
1227n/a &dirID,
1228n/a PyMac_GetStr255, fileName))
1229n/a return NULL;
1230n/a HCreateResFile(vRefNum,
1231n/a dirID,
1232n/a fileName);
1233n/a {
1234n/a OSErr _err = ResError();
1235n/a if (_err != noErr) return PyMac_Error(_err);
1236n/a }
1237n/a Py_INCREF(Py_None);
1238n/a _res = Py_None;
1239n/a return _res;
1240n/a}
1241n/a
1242n/astatic PyObject *Res_FSpOpenResFile(PyObject *_self, PyObject *_args)
1243n/a{
1244n/a PyObject *_res = NULL;
1245n/a short _rv;
1246n/a FSSpec spec;
1247n/a SignedByte permission;
1248n/a#ifndef FSpOpenResFile
1249n/a PyMac_PRECHECK(FSpOpenResFile);
1250n/a#endif
1251n/a if (!PyArg_ParseTuple(_args, "O&b",
1252n/a PyMac_GetFSSpec, &spec,
1253n/a &permission))
1254n/a return NULL;
1255n/a _rv = FSpOpenResFile(&spec,
1256n/a permission);
1257n/a {
1258n/a OSErr _err = ResError();
1259n/a if (_err != noErr) return PyMac_Error(_err);
1260n/a }
1261n/a _res = Py_BuildValue("h",
1262n/a _rv);
1263n/a return _res;
1264n/a}
1265n/a
1266n/astatic PyObject *Res_FSpCreateResFile(PyObject *_self, PyObject *_args)
1267n/a{
1268n/a PyObject *_res = NULL;
1269n/a FSSpec spec;
1270n/a OSType creator;
1271n/a OSType fileType;
1272n/a ScriptCode scriptTag;
1273n/a#ifndef FSpCreateResFile
1274n/a PyMac_PRECHECK(FSpCreateResFile);
1275n/a#endif
1276n/a if (!PyArg_ParseTuple(_args, "O&O&O&h",
1277n/a PyMac_GetFSSpec, &spec,
1278n/a PyMac_GetOSType, &creator,
1279n/a PyMac_GetOSType, &fileType,
1280n/a &scriptTag))
1281n/a return NULL;
1282n/a FSpCreateResFile(&spec,
1283n/a creator,
1284n/a fileType,
1285n/a scriptTag);
1286n/a {
1287n/a OSErr _err = ResError();
1288n/a if (_err != noErr) return PyMac_Error(_err);
1289n/a }
1290n/a Py_INCREF(Py_None);
1291n/a _res = Py_None;
1292n/a return _res;
1293n/a}
1294n/a#endif /* !__LP64__ */
1295n/a
1296n/astatic PyObject *Res_InsertResourceFile(PyObject *_self, PyObject *_args)
1297n/a{
1298n/a PyObject *_res = NULL;
1299n/a OSErr _err;
1300n/a SInt16 refNum;
1301n/a RsrcChainLocation where;
1302n/a#ifndef InsertResourceFile
1303n/a PyMac_PRECHECK(InsertResourceFile);
1304n/a#endif
1305n/a if (!PyArg_ParseTuple(_args, "hh",
1306n/a &refNum,
1307n/a &where))
1308n/a return NULL;
1309n/a _err = InsertResourceFile(refNum,
1310n/a where);
1311n/a if (_err != noErr) return PyMac_Error(_err);
1312n/a Py_INCREF(Py_None);
1313n/a _res = Py_None;
1314n/a return _res;
1315n/a}
1316n/a
1317n/astatic PyObject *Res_DetachResourceFile(PyObject *_self, PyObject *_args)
1318n/a{
1319n/a PyObject *_res = NULL;
1320n/a OSErr _err;
1321n/a SInt16 refNum;
1322n/a#ifndef DetachResourceFile
1323n/a PyMac_PRECHECK(DetachResourceFile);
1324n/a#endif
1325n/a if (!PyArg_ParseTuple(_args, "h",
1326n/a &refNum))
1327n/a return NULL;
1328n/a _err = DetachResourceFile(refNum);
1329n/a if (_err != noErr) return PyMac_Error(_err);
1330n/a Py_INCREF(Py_None);
1331n/a _res = Py_None;
1332n/a return _res;
1333n/a}
1334n/a
1335n/a#ifndef __LP64__
1336n/astatic PyObject *Res_FSpResourceFileAlreadyOpen(PyObject *_self, PyObject *_args)
1337n/a{
1338n/a PyObject *_res = NULL;
1339n/a Boolean _rv;
1340n/a FSSpec resourceFile;
1341n/a Boolean inChain;
1342n/a SInt16 refNum;
1343n/a#ifndef FSpResourceFileAlreadyOpen
1344n/a PyMac_PRECHECK(FSpResourceFileAlreadyOpen);
1345n/a#endif
1346n/a if (!PyArg_ParseTuple(_args, "O&",
1347n/a PyMac_GetFSSpec, &resourceFile))
1348n/a return NULL;
1349n/a _rv = FSpResourceFileAlreadyOpen(&resourceFile,
1350n/a &inChain,
1351n/a &refNum);
1352n/a {
1353n/a OSErr _err = ResError();
1354n/a if (_err != noErr) return PyMac_Error(_err);
1355n/a }
1356n/a _res = Py_BuildValue("bbh",
1357n/a _rv,
1358n/a inChain,
1359n/a refNum);
1360n/a return _res;
1361n/a}
1362n/a
1363n/astatic PyObject *Res_FSpOpenOrphanResFile(PyObject *_self, PyObject *_args)
1364n/a{
1365n/a PyObject *_res = NULL;
1366n/a OSErr _err;
1367n/a FSSpec spec;
1368n/a SignedByte permission;
1369n/a SInt16 refNum;
1370n/a#ifndef FSpOpenOrphanResFile
1371n/a PyMac_PRECHECK(FSpOpenOrphanResFile);
1372n/a#endif
1373n/a if (!PyArg_ParseTuple(_args, "O&b",
1374n/a PyMac_GetFSSpec, &spec,
1375n/a &permission))
1376n/a return NULL;
1377n/a _err = FSpOpenOrphanResFile(&spec,
1378n/a permission,
1379n/a &refNum);
1380n/a if (_err != noErr) return PyMac_Error(_err);
1381n/a _res = Py_BuildValue("h",
1382n/a refNum);
1383n/a return _res;
1384n/a}
1385n/a
1386n/astatic PyObject *Res_GetTopResourceFile(PyObject *_self, PyObject *_args)
1387n/a{
1388n/a PyObject *_res = NULL;
1389n/a OSErr _err;
1390n/a SInt16 refNum;
1391n/a#ifndef GetTopResourceFile
1392n/a PyMac_PRECHECK(GetTopResourceFile);
1393n/a#endif
1394n/a if (!PyArg_ParseTuple(_args, ""))
1395n/a return NULL;
1396n/a _err = GetTopResourceFile(&refNum);
1397n/a if (_err != noErr) return PyMac_Error(_err);
1398n/a _res = Py_BuildValue("h",
1399n/a refNum);
1400n/a return _res;
1401n/a}
1402n/a
1403n/a
1404n/astatic PyObject *Res_GetNextResourceFile(PyObject *_self, PyObject *_args)
1405n/a{
1406n/a PyObject *_res = NULL;
1407n/a OSErr _err;
1408n/a SInt16 curRefNum;
1409n/a SInt16 nextRefNum;
1410n/a#ifndef GetNextResourceFile
1411n/a PyMac_PRECHECK(GetNextResourceFile);
1412n/a#endif
1413n/a if (!PyArg_ParseTuple(_args, "h",
1414n/a &curRefNum))
1415n/a return NULL;
1416n/a _err = GetNextResourceFile(curRefNum,
1417n/a &nextRefNum);
1418n/a if (_err != noErr) return PyMac_Error(_err);
1419n/a _res = Py_BuildValue("h",
1420n/a nextRefNum);
1421n/a return _res;
1422n/a}
1423n/a#endif /* !__LP64__ */
1424n/a
1425n/astatic PyObject *Res_FSOpenResFile(PyObject *_self, PyObject *_args)
1426n/a{
1427n/a PyObject *_res = NULL;
1428n/a short _rv;
1429n/a FSRef ref;
1430n/a SignedByte permission;
1431n/a#ifndef FSOpenResFile
1432n/a PyMac_PRECHECK(FSOpenResFile);
1433n/a#endif
1434n/a if (!PyArg_ParseTuple(_args, "O&b",
1435n/a PyMac_GetFSRef, &ref,
1436n/a &permission))
1437n/a return NULL;
1438n/a _rv = FSOpenResFile(&ref,
1439n/a permission);
1440n/a {
1441n/a OSErr _err = ResError();
1442n/a if (_err != noErr) return PyMac_Error(_err);
1443n/a }
1444n/a _res = Py_BuildValue("h",
1445n/a _rv);
1446n/a return _res;
1447n/a}
1448n/a
1449n/a
1450n/a#ifndef __LP64__
1451n/astatic PyObject *Res_FSCreateResFile(PyObject *_self, PyObject *_args)
1452n/a{
1453n/a PyObject *_res = NULL;
1454n/a FSRef parentRef;
1455n/a UniChar *nameLength__in__;
1456n/a UniCharCount nameLength__len__;
1457n/a int nameLength__in_len__;
1458n/a FSRef newRef;
1459n/a FSSpec newSpec;
1460n/a#ifndef FSCreateResFile
1461n/a PyMac_PRECHECK(FSCreateResFile);
1462n/a#endif
1463n/a if (!PyArg_ParseTuple(_args, "O&u#",
1464n/a PyMac_GetFSRef, &parentRef,
1465n/a &nameLength__in__, &nameLength__in_len__))
1466n/a return NULL;
1467n/a nameLength__len__ = nameLength__in_len__;
1468n/a FSCreateResFile(&parentRef,
1469n/a nameLength__len__, nameLength__in__,
1470n/a 0,
1471n/a (FSCatalogInfo *)0,
1472n/a &newRef,
1473n/a &newSpec);
1474n/a {
1475n/a OSErr _err = ResError();
1476n/a if (_err != noErr) return PyMac_Error(_err);
1477n/a }
1478n/a _res = Py_BuildValue("O&O&",
1479n/a PyMac_BuildFSRef, &newRef,
1480n/a PyMac_BuildFSSpec, &newSpec);
1481n/a return _res;
1482n/a}
1483n/a
1484n/astatic PyObject *Res_FSResourceFileAlreadyOpen(PyObject *_self, PyObject *_args)
1485n/a{
1486n/a PyObject *_res = NULL;
1487n/a Boolean _rv;
1488n/a FSRef resourceFileRef;
1489n/a Boolean inChain;
1490n/a SInt16 refNum;
1491n/a#ifndef FSResourceFileAlreadyOpen
1492n/a PyMac_PRECHECK(FSResourceFileAlreadyOpen);
1493n/a#endif
1494n/a if (!PyArg_ParseTuple(_args, "O&",
1495n/a PyMac_GetFSRef, &resourceFileRef))
1496n/a return NULL;
1497n/a _rv = FSResourceFileAlreadyOpen(&resourceFileRef,
1498n/a &inChain,
1499n/a &refNum);
1500n/a {
1501n/a OSErr _err = ResError();
1502n/a if (_err != noErr) return PyMac_Error(_err);
1503n/a }
1504n/a _res = Py_BuildValue("bbh",
1505n/a _rv,
1506n/a inChain,
1507n/a refNum);
1508n/a return _res;
1509n/a}
1510n/a
1511n/astatic PyObject *Res_FSCreateResourceFile(PyObject *_self, PyObject *_args)
1512n/a{
1513n/a PyObject *_res = NULL;
1514n/a OSErr _err;
1515n/a FSRef parentRef;
1516n/a UniChar *nameLength__in__;
1517n/a UniCharCount nameLength__len__;
1518n/a int nameLength__in_len__;
1519n/a UniChar *forkNameLength__in__;
1520n/a UniCharCount forkNameLength__len__;
1521n/a int forkNameLength__in_len__;
1522n/a FSRef newRef;
1523n/a FSSpec newSpec;
1524n/a#ifndef FSCreateResourceFile
1525n/a PyMac_PRECHECK(FSCreateResourceFile);
1526n/a#endif
1527n/a if (!PyArg_ParseTuple(_args, "O&u#u#",
1528n/a PyMac_GetFSRef, &parentRef,
1529n/a &nameLength__in__, &nameLength__in_len__,
1530n/a &forkNameLength__in__, &forkNameLength__in_len__))
1531n/a return NULL;
1532n/a nameLength__len__ = nameLength__in_len__;
1533n/a forkNameLength__len__ = forkNameLength__in_len__;
1534n/a _err = FSCreateResourceFile(&parentRef,
1535n/a nameLength__len__, nameLength__in__,
1536n/a 0,
1537n/a (FSCatalogInfo *)0,
1538n/a forkNameLength__len__, forkNameLength__in__,
1539n/a &newRef,
1540n/a &newSpec);
1541n/a if (_err != noErr) return PyMac_Error(_err);
1542n/a _res = Py_BuildValue("O&O&",
1543n/a PyMac_BuildFSRef, &newRef,
1544n/a PyMac_BuildFSSpec, &newSpec);
1545n/a return _res;
1546n/a}
1547n/a#endif /* __LP64__ */
1548n/a
1549n/astatic PyObject *Res_FSOpenResourceFile(PyObject *_self, PyObject *_args)
1550n/a{
1551n/a PyObject *_res = NULL;
1552n/a OSErr _err;
1553n/a FSRef ref;
1554n/a UniChar *forkNameLength__in__;
1555n/a UniCharCount forkNameLength__len__;
1556n/a int forkNameLength__in_len__;
1557n/a SignedByte permissions;
1558n/a ResFileRefNum refNum;
1559n/a#ifndef FSOpenResourceFile
1560n/a PyMac_PRECHECK(FSOpenResourceFile);
1561n/a#endif
1562n/a if (!PyArg_ParseTuple(_args, "O&u#b",
1563n/a PyMac_GetFSRef, &ref,
1564n/a &forkNameLength__in__, &forkNameLength__in_len__,
1565n/a &permissions))
1566n/a return NULL;
1567n/a forkNameLength__len__ = forkNameLength__in_len__;
1568n/a _err = FSOpenResourceFile(&ref,
1569n/a forkNameLength__len__, forkNameLength__in__,
1570n/a permissions,
1571n/a &refNum);
1572n/a if (_err != noErr) return PyMac_Error(_err);
1573n/a _res = Py_BuildValue("h",
1574n/a refNum);
1575n/a return _res;
1576n/a}
1577n/a
1578n/astatic PyObject *Res_Handle(PyObject *_self, PyObject *_args)
1579n/a{
1580n/a PyObject *_res = NULL;
1581n/a
1582n/a char *buf;
1583n/a int len;
1584n/a Handle h;
1585n/a ResourceObject *rv;
1586n/a
1587n/a if (!PyArg_ParseTuple(_args, "s#", &buf, &len))
1588n/a return NULL;
1589n/a h = NewHandle(len);
1590n/a if ( h == NULL ) {
1591n/a PyErr_NoMemory();
1592n/a return NULL;
1593n/a }
1594n/a HLock(h);
1595n/a memcpy(*h, buf, len);
1596n/a HUnlock(h);
1597n/a rv = (ResourceObject *)ResObj_New(h);
1598n/a rv->ob_freeit = PyMac_AutoDisposeHandle;
1599n/a _res = (PyObject *)rv;
1600n/a return _res;
1601n/a
1602n/a}
1603n/a
1604n/astatic PyMethodDef Res_methods[] = {
1605n/a {"CloseResFile", (PyCFunction)Res_CloseResFile, 1,
1606n/a PyDoc_STR("(short refNum) -> None")},
1607n/a {"ResError", (PyCFunction)Res_ResError, 1,
1608n/a PyDoc_STR("() -> None")},
1609n/a {"CurResFile", (PyCFunction)Res_CurResFile, 1,
1610n/a PyDoc_STR("() -> (short _rv)")},
1611n/a {"UseResFile", (PyCFunction)Res_UseResFile, 1,
1612n/a PyDoc_STR("(short refNum) -> None")},
1613n/a {"CountTypes", (PyCFunction)Res_CountTypes, 1,
1614n/a PyDoc_STR("() -> (short _rv)")},
1615n/a {"Count1Types", (PyCFunction)Res_Count1Types, 1,
1616n/a PyDoc_STR("() -> (short _rv)")},
1617n/a {"GetIndType", (PyCFunction)Res_GetIndType, 1,
1618n/a PyDoc_STR("(short index) -> (ResType theType)")},
1619n/a {"Get1IndType", (PyCFunction)Res_Get1IndType, 1,
1620n/a PyDoc_STR("(short index) -> (ResType theType)")},
1621n/a {"SetResLoad", (PyCFunction)Res_SetResLoad, 1,
1622n/a PyDoc_STR("(Boolean load) -> None")},
1623n/a {"CountResources", (PyCFunction)Res_CountResources, 1,
1624n/a PyDoc_STR("(ResType theType) -> (short _rv)")},
1625n/a {"Count1Resources", (PyCFunction)Res_Count1Resources, 1,
1626n/a PyDoc_STR("(ResType theType) -> (short _rv)")},
1627n/a {"GetIndResource", (PyCFunction)Res_GetIndResource, 1,
1628n/a PyDoc_STR("(ResType theType, short index) -> (Handle _rv)")},
1629n/a {"Get1IndResource", (PyCFunction)Res_Get1IndResource, 1,
1630n/a PyDoc_STR("(ResType theType, short index) -> (Handle _rv)")},
1631n/a {"GetResource", (PyCFunction)Res_GetResource, 1,
1632n/a PyDoc_STR("(ResType theType, short theID) -> (Handle _rv)")},
1633n/a {"Get1Resource", (PyCFunction)Res_Get1Resource, 1,
1634n/a PyDoc_STR("(ResType theType, short theID) -> (Handle _rv)")},
1635n/a {"GetNamedResource", (PyCFunction)Res_GetNamedResource, 1,
1636n/a PyDoc_STR("(ResType theType, Str255 name) -> (Handle _rv)")},
1637n/a {"Get1NamedResource", (PyCFunction)Res_Get1NamedResource, 1,
1638n/a PyDoc_STR("(ResType theType, Str255 name) -> (Handle _rv)")},
1639n/a {"UniqueID", (PyCFunction)Res_UniqueID, 1,
1640n/a PyDoc_STR("(ResType theType) -> (short _rv)")},
1641n/a {"Unique1ID", (PyCFunction)Res_Unique1ID, 1,
1642n/a PyDoc_STR("(ResType theType) -> (short _rv)")},
1643n/a {"UpdateResFile", (PyCFunction)Res_UpdateResFile, 1,
1644n/a PyDoc_STR("(short refNum) -> None")},
1645n/a {"SetResPurge", (PyCFunction)Res_SetResPurge, 1,
1646n/a PyDoc_STR("(Boolean install) -> None")},
1647n/a {"GetResFileAttrs", (PyCFunction)Res_GetResFileAttrs, 1,
1648n/a PyDoc_STR("(short refNum) -> (short _rv)")},
1649n/a {"SetResFileAttrs", (PyCFunction)Res_SetResFileAttrs, 1,
1650n/a PyDoc_STR("(short refNum, short attrs) -> None")},
1651n/a#ifndef __LP64__
1652n/a {"OpenRFPerm", (PyCFunction)Res_OpenRFPerm, 1,
1653n/a PyDoc_STR("(Str255 fileName, short vRefNum, SignedByte permission) -> (short _rv)")},
1654n/a {"HOpenResFile", (PyCFunction)Res_HOpenResFile, 1,
1655n/a PyDoc_STR("(short vRefNum, long dirID, Str255 fileName, SignedByte permission) -> (short _rv)")},
1656n/a {"HCreateResFile", (PyCFunction)Res_HCreateResFile, 1,
1657n/a PyDoc_STR("(short vRefNum, long dirID, Str255 fileName) -> None")},
1658n/a {"FSpOpenResFile", (PyCFunction)Res_FSpOpenResFile, 1,
1659n/a PyDoc_STR("(FSSpec spec, SignedByte permission) -> (short _rv)")},
1660n/a {"FSpCreateResFile", (PyCFunction)Res_FSpCreateResFile, 1,
1661n/a PyDoc_STR("(FSSpec spec, OSType creator, OSType fileType, ScriptCode scriptTag) -> None")},
1662n/a#endif /* !__LP64__ */
1663n/a {"InsertResourceFile", (PyCFunction)Res_InsertResourceFile, 1,
1664n/a PyDoc_STR("(SInt16 refNum, RsrcChainLocation where) -> None")},
1665n/a {"DetachResourceFile", (PyCFunction)Res_DetachResourceFile, 1,
1666n/a PyDoc_STR("(SInt16 refNum) -> None")},
1667n/a#ifndef __LP64__
1668n/a {"FSpResourceFileAlreadyOpen", (PyCFunction)Res_FSpResourceFileAlreadyOpen, 1,
1669n/a PyDoc_STR("(FSSpec resourceFile) -> (Boolean _rv, Boolean inChain, SInt16 refNum)")},
1670n/a {"FSpOpenOrphanResFile", (PyCFunction)Res_FSpOpenOrphanResFile, 1,
1671n/a PyDoc_STR("(FSSpec spec, SignedByte permission) -> (SInt16 refNum)")},
1672n/a {"GetTopResourceFile", (PyCFunction)Res_GetTopResourceFile, 1,
1673n/a PyDoc_STR("() -> (SInt16 refNum)")},
1674n/a {"GetNextResourceFile", (PyCFunction)Res_GetNextResourceFile, 1,
1675n/a PyDoc_STR("(SInt16 curRefNum) -> (SInt16 nextRefNum)")},
1676n/a#endif /* __LP64__ */
1677n/a {"FSOpenResFile", (PyCFunction)Res_FSOpenResFile, 1,
1678n/a PyDoc_STR("(FSRef ref, SignedByte permission) -> (short _rv)")},
1679n/a#ifndef __LP64__
1680n/a {"FSCreateResFile", (PyCFunction)Res_FSCreateResFile, 1,
1681n/a PyDoc_STR("(FSRef parentRef, Buffer nameLength) -> (FSRef newRef, FSSpec newSpec)")},
1682n/a {"FSResourceFileAlreadyOpen", (PyCFunction)Res_FSResourceFileAlreadyOpen, 1,
1683n/a PyDoc_STR("(FSRef resourceFileRef) -> (Boolean _rv, Boolean inChain, SInt16 refNum)")},
1684n/a {"FSCreateResourceFile", (PyCFunction)Res_FSCreateResourceFile, 1,
1685n/a PyDoc_STR("(FSRef parentRef, Buffer nameLength, Buffer forkNameLength) -> (FSRef newRef, FSSpec newSpec)")},
1686n/a#endif /* __LP64__ */
1687n/a {"FSOpenResourceFile", (PyCFunction)Res_FSOpenResourceFile, 1,
1688n/a PyDoc_STR("(FSRef ref, Buffer forkNameLength, SignedByte permissions) -> (SInt16 refNum)")},
1689n/a {"Handle", (PyCFunction)Res_Handle, 1,
1690n/a 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")},
1691n/a {NULL, NULL, 0}
1692n/a};
1693n/a
1694n/a
1695n/a
1696n/a/* Alternative version of ResObj_New, which returns None for null argument */
1697n/aPyObject *OptResObj_New(Handle itself)
1698n/a{
1699n/a if (itself == NULL) {
1700n/a Py_INCREF(Py_None);
1701n/a return Py_None;
1702n/a }
1703n/a return ResObj_New(itself);
1704n/a}
1705n/a
1706n/aint OptResObj_Convert(PyObject *v, Handle *p_itself)
1707n/a{
1708n/a PyObject *tmp;
1709n/a
1710n/a if ( v == Py_None ) {
1711n/a *p_itself = NULL;
1712n/a return 1;
1713n/a }
1714n/a if (ResObj_Check(v))
1715n/a {
1716n/a *p_itself = ((ResourceObject *)v)->ob_itself;
1717n/a return 1;
1718n/a }
1719n/a /* If it isn't a resource yet see whether it is convertible */
1720n/a if ( (tmp=PyObject_CallMethod(v, "as_Resource", "")) ) {
1721n/a *p_itself = ((ResourceObject *)tmp)->ob_itself;
1722n/a Py_DECREF(tmp);
1723n/a return 1;
1724n/a }
1725n/a PyErr_Clear();
1726n/a PyErr_SetString(PyExc_TypeError, "Resource required");
1727n/a return 0;
1728n/a}
1729n/a
1730n/a
1731n/avoid init_Res(void)
1732n/a{
1733n/a PyObject *m;
1734n/a PyObject *d;
1735n/a
1736n/a
1737n/a
1738n/a PyMac_INIT_TOOLBOX_OBJECT_NEW(Handle, ResObj_New);
1739n/a PyMac_INIT_TOOLBOX_OBJECT_CONVERT(Handle, ResObj_Convert);
1740n/a PyMac_INIT_TOOLBOX_OBJECT_NEW(Handle, OptResObj_New);
1741n/a PyMac_INIT_TOOLBOX_OBJECT_CONVERT(Handle, OptResObj_Convert);
1742n/a
1743n/a
1744n/a m = Py_InitModule("_Res", Res_methods);
1745n/a d = PyModule_GetDict(m);
1746n/a Res_Error = PyMac_GetOSErrException();
1747n/a if (Res_Error == NULL ||
1748n/a PyDict_SetItemString(d, "Error", Res_Error) != 0)
1749n/a return;
1750n/a Resource_Type.ob_type = &PyType_Type;
1751n/a if (PyType_Ready(&Resource_Type) < 0) return;
1752n/a Py_INCREF(&Resource_Type);
1753n/a PyModule_AddObject(m, "Resource", (PyObject *)&Resource_Type);
1754n/a /* Backward-compatible name */
1755n/a Py_INCREF(&Resource_Type);
1756n/a PyModule_AddObject(m, "ResourceType", (PyObject *)&Resource_Type);
1757n/a}
1758n/a
1759n/a/* ======================== End module _Res ========================= */
1760n/a