blob: b5857e725bf4c78bc75a3d1720174bc5f1621af6 [file] [log] [blame]
Guido van Rossum17448e21995-01-30 11:53:55 +00001
2/* =========================== Module Res =========================== */
3
4#include "Python.h"
5
6
7
8#define SystemSevenOrLater 1
9
10#include "macglue.h"
11#include <Memory.h>
12#include <Dialogs.h>
13#include <Menus.h>
14#include <Controls.h>
15
16extern PyObject *ResObj_New(Handle);
17extern int ResObj_Convert(PyObject *, Handle *);
Jack Jansen425e9eb1995-12-12 15:02:03 +000018extern PyObject *OptResObj_New(Handle);
19extern int OptResObj_Convert(PyObject *, Handle *);
Guido van Rossum17448e21995-01-30 11:53:55 +000020
21extern PyObject *WinObj_New(WindowPtr);
22extern int WinObj_Convert(PyObject *, WindowPtr *);
Jack Jansen425e9eb1995-12-12 15:02:03 +000023extern PyTypeObject Window_Type;
24#define WinObj_Check(x) ((x)->ob_type == &Window_Type)
Guido van Rossum17448e21995-01-30 11:53:55 +000025
26extern PyObject *DlgObj_New(DialogPtr);
27extern int DlgObj_Convert(PyObject *, DialogPtr *);
28extern PyTypeObject Dialog_Type;
29#define DlgObj_Check(x) ((x)->ob_type == &Dialog_Type)
30
31extern PyObject *MenuObj_New(MenuHandle);
32extern int MenuObj_Convert(PyObject *, MenuHandle *);
33
34extern PyObject *CtlObj_New(ControlHandle);
35extern int CtlObj_Convert(PyObject *, ControlHandle *);
36
Jack Jansen425e9eb1995-12-12 15:02:03 +000037extern PyObject *GrafObj_New(GrafPtr);
38extern int GrafObj_Convert(PyObject *, GrafPtr *);
39
40extern PyObject *BMObj_New(BitMapPtr);
41extern int BMObj_Convert(PyObject *, BitMapPtr *);
42
Guido van Rossum9bcb6411995-02-05 16:54:27 +000043extern PyObject *WinObj_WhichWindow(WindowPtr);
44
Guido van Rossum17448e21995-01-30 11:53:55 +000045#include <Resources.h>
Jack Janseneaf3c9b1997-08-15 14:36:45 +000046#include <string.h>
Guido van Rossum17448e21995-01-30 11:53:55 +000047
48#define resNotFound -192 /* Can't include <Errors.h> because of Python's "errors.h" */
49
50static PyObject *Res_Error;
51
52/* ---------------------- Object type Resource ---------------------- */
53
54PyTypeObject Resource_Type;
55
56#define ResObj_Check(x) ((x)->ob_type == &Resource_Type)
57
58typedef struct ResourceObject {
59 PyObject_HEAD
60 Handle ob_itself;
61} ResourceObject;
62
63PyObject *ResObj_New(itself)
Guido van Rossum227a4231995-03-10 14:42:57 +000064 Handle itself;
Guido van Rossum17448e21995-01-30 11:53:55 +000065{
66 ResourceObject *it;
67 if (itself == NULL) return PyMac_Error(resNotFound);
68 it = PyObject_NEW(ResourceObject, &Resource_Type);
69 if (it == NULL) return NULL;
70 it->ob_itself = itself;
71 return (PyObject *)it;
72}
73ResObj_Convert(v, p_itself)
74 PyObject *v;
75 Handle *p_itself;
76{
77 if (!ResObj_Check(v))
78 {
79 PyErr_SetString(PyExc_TypeError, "Resource required");
80 return 0;
81 }
82 *p_itself = ((ResourceObject *)v)->ob_itself;
83 return 1;
84}
85
86static void ResObj_dealloc(self)
87 ResourceObject *self;
88{
89 /* Cleanup of self->ob_itself goes here */
90 PyMem_DEL(self);
91}
92
93static PyObject *ResObj_HomeResFile(_self, _args)
94 ResourceObject *_self;
95 PyObject *_args;
96{
97 PyObject *_res = NULL;
98 short _rv;
99 if (!PyArg_ParseTuple(_args, ""))
100 return NULL;
101 _rv = HomeResFile(_self->ob_itself);
102 {
103 OSErr _err = ResError();
104 if (_err != noErr) return PyMac_Error(_err);
105 }
106 _res = Py_BuildValue("h",
107 _rv);
108 return _res;
109}
110
Jack Jansen1c4e6141998-04-21 15:23:55 +0000111static PyObject *ResObj_MacLoadResource(_self, _args)
Guido van Rossum17448e21995-01-30 11:53:55 +0000112 ResourceObject *_self;
113 PyObject *_args;
114{
115 PyObject *_res = NULL;
116 if (!PyArg_ParseTuple(_args, ""))
117 return NULL;
Jack Jansen1c4e6141998-04-21 15:23:55 +0000118 MacLoadResource(_self->ob_itself);
Guido van Rossum17448e21995-01-30 11:53:55 +0000119 {
120 OSErr _err = ResError();
121 if (_err != noErr) return PyMac_Error(_err);
122 }
123 Py_INCREF(Py_None);
124 _res = Py_None;
125 return _res;
126}
127
128static PyObject *ResObj_ReleaseResource(_self, _args)
129 ResourceObject *_self;
130 PyObject *_args;
131{
132 PyObject *_res = NULL;
133 if (!PyArg_ParseTuple(_args, ""))
134 return NULL;
135 ReleaseResource(_self->ob_itself);
136 {
137 OSErr _err = ResError();
138 if (_err != noErr) return PyMac_Error(_err);
139 }
140 Py_INCREF(Py_None);
141 _res = Py_None;
142 return _res;
143}
144
145static PyObject *ResObj_DetachResource(_self, _args)
146 ResourceObject *_self;
147 PyObject *_args;
148{
149 PyObject *_res = NULL;
150 if (!PyArg_ParseTuple(_args, ""))
151 return NULL;
152 DetachResource(_self->ob_itself);
153 {
154 OSErr _err = ResError();
155 if (_err != noErr) return PyMac_Error(_err);
156 }
157 Py_INCREF(Py_None);
158 _res = Py_None;
159 return _res;
160}
161
162static PyObject *ResObj_GetResAttrs(_self, _args)
163 ResourceObject *_self;
164 PyObject *_args;
165{
166 PyObject *_res = NULL;
167 short _rv;
168 if (!PyArg_ParseTuple(_args, ""))
169 return NULL;
170 _rv = GetResAttrs(_self->ob_itself);
171 {
172 OSErr _err = ResError();
173 if (_err != noErr) return PyMac_Error(_err);
174 }
175 _res = Py_BuildValue("h",
176 _rv);
177 return _res;
178}
179
180static PyObject *ResObj_GetResInfo(_self, _args)
181 ResourceObject *_self;
182 PyObject *_args;
183{
184 PyObject *_res = NULL;
185 short theID;
186 ResType theType;
187 Str255 name;
188 if (!PyArg_ParseTuple(_args, ""))
189 return NULL;
190 GetResInfo(_self->ob_itself,
191 &theID,
192 &theType,
193 name);
194 {
195 OSErr _err = ResError();
196 if (_err != noErr) return PyMac_Error(_err);
197 }
198 _res = Py_BuildValue("hO&O&",
199 theID,
200 PyMac_BuildOSType, theType,
201 PyMac_BuildStr255, name);
202 return _res;
203}
204
205static PyObject *ResObj_SetResInfo(_self, _args)
206 ResourceObject *_self;
207 PyObject *_args;
208{
209 PyObject *_res = NULL;
210 short theID;
211 Str255 name;
212 if (!PyArg_ParseTuple(_args, "hO&",
213 &theID,
214 PyMac_GetStr255, name))
215 return NULL;
216 SetResInfo(_self->ob_itself,
217 theID,
218 name);
219 {
220 OSErr _err = ResError();
221 if (_err != noErr) return PyMac_Error(_err);
222 }
223 Py_INCREF(Py_None);
224 _res = Py_None;
225 return _res;
226}
227
228static PyObject *ResObj_AddResource(_self, _args)
229 ResourceObject *_self;
230 PyObject *_args;
231{
232 PyObject *_res = NULL;
233 ResType theType;
234 short theID;
235 Str255 name;
236 if (!PyArg_ParseTuple(_args, "O&hO&",
237 PyMac_GetOSType, &theType,
238 &theID,
239 PyMac_GetStr255, name))
240 return NULL;
241 AddResource(_self->ob_itself,
242 theType,
243 theID,
244 name);
245 {
246 OSErr _err = ResError();
247 if (_err != noErr) return PyMac_Error(_err);
248 }
249 Py_INCREF(Py_None);
250 _res = Py_None;
251 return _res;
252}
253
Jack Jansenb81cf9d1995-06-06 13:08:40 +0000254static PyObject *ResObj_GetResourceSizeOnDisk(_self, _args)
Guido van Rossum17448e21995-01-30 11:53:55 +0000255 ResourceObject *_self;
256 PyObject *_args;
257{
258 PyObject *_res = NULL;
259 long _rv;
260 if (!PyArg_ParseTuple(_args, ""))
261 return NULL;
Jack Jansenb81cf9d1995-06-06 13:08:40 +0000262 _rv = GetResourceSizeOnDisk(_self->ob_itself);
Guido van Rossum17448e21995-01-30 11:53:55 +0000263 {
264 OSErr _err = ResError();
265 if (_err != noErr) return PyMac_Error(_err);
266 }
267 _res = Py_BuildValue("l",
268 _rv);
269 return _res;
270}
271
Jack Jansenb81cf9d1995-06-06 13:08:40 +0000272static PyObject *ResObj_GetMaxResourceSize(_self, _args)
Guido van Rossum17448e21995-01-30 11:53:55 +0000273 ResourceObject *_self;
274 PyObject *_args;
275{
276 PyObject *_res = NULL;
277 long _rv;
278 if (!PyArg_ParseTuple(_args, ""))
279 return NULL;
Jack Jansenb81cf9d1995-06-06 13:08:40 +0000280 _rv = GetMaxResourceSize(_self->ob_itself);
Guido van Rossum17448e21995-01-30 11:53:55 +0000281 {
282 OSErr _err = ResError();
283 if (_err != noErr) return PyMac_Error(_err);
284 }
285 _res = Py_BuildValue("l",
286 _rv);
287 return _res;
288}
289
290static PyObject *ResObj_RsrcMapEntry(_self, _args)
291 ResourceObject *_self;
292 PyObject *_args;
293{
294 PyObject *_res = NULL;
295 long _rv;
296 if (!PyArg_ParseTuple(_args, ""))
297 return NULL;
298 _rv = RsrcMapEntry(_self->ob_itself);
299 {
300 OSErr _err = ResError();
301 if (_err != noErr) return PyMac_Error(_err);
302 }
303 _res = Py_BuildValue("l",
304 _rv);
305 return _res;
306}
307
308static PyObject *ResObj_SetResAttrs(_self, _args)
309 ResourceObject *_self;
310 PyObject *_args;
311{
312 PyObject *_res = NULL;
313 short attrs;
314 if (!PyArg_ParseTuple(_args, "h",
315 &attrs))
316 return NULL;
317 SetResAttrs(_self->ob_itself,
318 attrs);
319 {
320 OSErr _err = ResError();
321 if (_err != noErr) return PyMac_Error(_err);
322 }
323 Py_INCREF(Py_None);
324 _res = Py_None;
325 return _res;
326}
327
328static PyObject *ResObj_ChangedResource(_self, _args)
329 ResourceObject *_self;
330 PyObject *_args;
331{
332 PyObject *_res = NULL;
333 if (!PyArg_ParseTuple(_args, ""))
334 return NULL;
335 ChangedResource(_self->ob_itself);
336 {
337 OSErr _err = ResError();
338 if (_err != noErr) return PyMac_Error(_err);
339 }
340 Py_INCREF(Py_None);
341 _res = Py_None;
342 return _res;
343}
344
Jack Jansenb81cf9d1995-06-06 13:08:40 +0000345static PyObject *ResObj_RemoveResource(_self, _args)
Guido van Rossum17448e21995-01-30 11:53:55 +0000346 ResourceObject *_self;
347 PyObject *_args;
348{
349 PyObject *_res = NULL;
350 if (!PyArg_ParseTuple(_args, ""))
351 return NULL;
Jack Jansenb81cf9d1995-06-06 13:08:40 +0000352 RemoveResource(_self->ob_itself);
Guido van Rossum17448e21995-01-30 11:53:55 +0000353 {
354 OSErr _err = ResError();
355 if (_err != noErr) return PyMac_Error(_err);
356 }
357 Py_INCREF(Py_None);
358 _res = Py_None;
359 return _res;
360}
361
362static PyObject *ResObj_WriteResource(_self, _args)
363 ResourceObject *_self;
364 PyObject *_args;
365{
366 PyObject *_res = NULL;
367 if (!PyArg_ParseTuple(_args, ""))
368 return NULL;
369 WriteResource(_self->ob_itself);
370 {
371 OSErr _err = ResError();
372 if (_err != noErr) return PyMac_Error(_err);
373 }
374 Py_INCREF(Py_None);
375 _res = Py_None;
376 return _res;
377}
378
379static PyObject *ResObj_SetResourceSize(_self, _args)
380 ResourceObject *_self;
381 PyObject *_args;
382{
383 PyObject *_res = NULL;
384 long newSize;
385 if (!PyArg_ParseTuple(_args, "l",
386 &newSize))
387 return NULL;
388 SetResourceSize(_self->ob_itself,
389 newSize);
390 {
391 OSErr _err = ResError();
392 if (_err != noErr) return PyMac_Error(_err);
393 }
394 Py_INCREF(Py_None);
395 _res = Py_None;
396 return _res;
397}
398
Jack Jansenb81cf9d1995-06-06 13:08:40 +0000399static PyObject *ResObj_GetNextFOND(_self, _args)
400 ResourceObject *_self;
401 PyObject *_args;
402{
403 PyObject *_res = NULL;
404 Handle _rv;
405 if (!PyArg_ParseTuple(_args, ""))
406 return NULL;
407 _rv = GetNextFOND(_self->ob_itself);
408 {
409 OSErr _err = ResError();
410 if (_err != noErr) return PyMac_Error(_err);
411 }
412 _res = Py_BuildValue("O&",
413 ResObj_New, _rv);
414 return _res;
415}
416
Jack Jansen1e054021995-06-18 20:20:27 +0000417static PyObject *ResObj_as_Control(_self, _args)
418 ResourceObject *_self;
419 PyObject *_args;
420{
421 PyObject *_res = NULL;
422
423 return CtlObj_New((ControlHandle)_self->ob_itself);
424
425}
426
427static PyObject *ResObj_as_Menu(_self, _args)
428 ResourceObject *_self;
429 PyObject *_args;
430{
431 PyObject *_res = NULL;
432
433 return MenuObj_New((MenuHandle)_self->ob_itself);
434
435}
436
Jack Jansene180d991998-04-24 10:28:20 +0000437static PyObject *ResObj_LoadResource(_self, _args)
438 ResourceObject *_self;
439 PyObject *_args;
440{
441 PyObject *_res = NULL;
442 if (!PyArg_ParseTuple(_args, ""))
443 return NULL;
444 LoadResource(_self->ob_itself);
445 {
446 OSErr _err = ResError();
447 if (_err != noErr) return PyMac_Error(_err);
448 }
449 Py_INCREF(Py_None);
450 _res = Py_None;
451 return _res;
452}
453
Guido van Rossum17448e21995-01-30 11:53:55 +0000454static PyMethodDef ResObj_methods[] = {
455 {"HomeResFile", (PyCFunction)ResObj_HomeResFile, 1,
456 "() -> (short _rv)"},
Jack Jansen1c4e6141998-04-21 15:23:55 +0000457 {"MacLoadResource", (PyCFunction)ResObj_MacLoadResource, 1,
Guido van Rossum17448e21995-01-30 11:53:55 +0000458 "() -> None"},
459 {"ReleaseResource", (PyCFunction)ResObj_ReleaseResource, 1,
460 "() -> None"},
461 {"DetachResource", (PyCFunction)ResObj_DetachResource, 1,
462 "() -> None"},
463 {"GetResAttrs", (PyCFunction)ResObj_GetResAttrs, 1,
464 "() -> (short _rv)"},
465 {"GetResInfo", (PyCFunction)ResObj_GetResInfo, 1,
466 "() -> (short theID, ResType theType, Str255 name)"},
467 {"SetResInfo", (PyCFunction)ResObj_SetResInfo, 1,
468 "(short theID, Str255 name) -> None"},
469 {"AddResource", (PyCFunction)ResObj_AddResource, 1,
470 "(ResType theType, short theID, Str255 name) -> None"},
Jack Jansenb81cf9d1995-06-06 13:08:40 +0000471 {"GetResourceSizeOnDisk", (PyCFunction)ResObj_GetResourceSizeOnDisk, 1,
Guido van Rossum17448e21995-01-30 11:53:55 +0000472 "() -> (long _rv)"},
Jack Jansenb81cf9d1995-06-06 13:08:40 +0000473 {"GetMaxResourceSize", (PyCFunction)ResObj_GetMaxResourceSize, 1,
Guido van Rossum17448e21995-01-30 11:53:55 +0000474 "() -> (long _rv)"},
475 {"RsrcMapEntry", (PyCFunction)ResObj_RsrcMapEntry, 1,
476 "() -> (long _rv)"},
477 {"SetResAttrs", (PyCFunction)ResObj_SetResAttrs, 1,
478 "(short attrs) -> None"},
479 {"ChangedResource", (PyCFunction)ResObj_ChangedResource, 1,
480 "() -> None"},
Jack Jansenb81cf9d1995-06-06 13:08:40 +0000481 {"RemoveResource", (PyCFunction)ResObj_RemoveResource, 1,
Guido van Rossum17448e21995-01-30 11:53:55 +0000482 "() -> None"},
483 {"WriteResource", (PyCFunction)ResObj_WriteResource, 1,
484 "() -> None"},
485 {"SetResourceSize", (PyCFunction)ResObj_SetResourceSize, 1,
486 "(long newSize) -> None"},
Jack Jansenb81cf9d1995-06-06 13:08:40 +0000487 {"GetNextFOND", (PyCFunction)ResObj_GetNextFOND, 1,
488 "() -> (Handle _rv)"},
Jack Jansen1e054021995-06-18 20:20:27 +0000489 {"as_Control", (PyCFunction)ResObj_as_Control, 1,
490 "Return this resource/handle as a Control"},
491 {"as_Menu", (PyCFunction)ResObj_as_Menu, 1,
492 "Return this resource/handle as a Menu"},
Jack Jansene180d991998-04-24 10:28:20 +0000493 {"LoadResource", (PyCFunction)ResObj_LoadResource, 1,
494 "() -> None"},
Guido van Rossum17448e21995-01-30 11:53:55 +0000495 {NULL, NULL, 0}
496};
497
498PyMethodChain ResObj_chain = { ResObj_methods, NULL };
499
500static PyObject *ResObj_getattr(self, name)
501 ResourceObject *self;
502 char *name;
503{
504
505 if (strcmp(name, "size") == 0)
506 return PyInt_FromLong(GetHandleSize(self->ob_itself));
507 if (strcmp(name, "data") == 0) {
508 PyObject *res;
509 char state;
510 state = HGetState(self->ob_itself);
511 HLock(self->ob_itself);
512 res = PyString_FromStringAndSize(
513 *self->ob_itself,
514 GetHandleSize(self->ob_itself));
515 HUnlock(self->ob_itself);
516 HSetState(self->ob_itself, state);
517 return res;
518 }
519 if (strcmp(name, "__members__") == 0)
520 return Py_BuildValue("[ss]", "data", "size");
521
522 return Py_FindMethodInChain(&ResObj_chain, (PyObject *)self, name);
523}
524
Jack Jansen1e054021995-06-18 20:20:27 +0000525static int
526ResObj_setattr(self, name, value)
527 ResourceObject *self;
528 char *name;
529 PyObject *value;
530{
531 char *data;
532 long size;
533
534 if (strcmp(name, "data") != 0 || value == NULL )
535 return -1;
536 if ( !PyString_Check(value) )
537 return -1;
538 size = PyString_Size(value);
539 data = PyString_AsString(value);
540 /* XXXX Do I need the GetState/SetState calls? */
541 SetHandleSize(self->ob_itself, size);
542 if ( MemError())
543 return -1;
544 HLock(self->ob_itself);
545 memcpy((char *)*self->ob_itself, data, size);
546 HUnlock(self->ob_itself);
547 /* XXXX Should I do the Changed call immedeately? */
548 return 0;
549}
550
Guido van Rossum17448e21995-01-30 11:53:55 +0000551
Jack Jansena05ac601999-12-12 21:41:51 +0000552#define ResObj_compare NULL
553
554#define ResObj_repr NULL
555
556#define ResObj_hash NULL
557
Guido van Rossum17448e21995-01-30 11:53:55 +0000558PyTypeObject Resource_Type = {
559 PyObject_HEAD_INIT(&PyType_Type)
560 0, /*ob_size*/
561 "Resource", /*tp_name*/
562 sizeof(ResourceObject), /*tp_basicsize*/
563 0, /*tp_itemsize*/
564 /* methods */
565 (destructor) ResObj_dealloc, /*tp_dealloc*/
566 0, /*tp_print*/
567 (getattrfunc) ResObj_getattr, /*tp_getattr*/
568 (setattrfunc) ResObj_setattr, /*tp_setattr*/
Jack Jansena05ac601999-12-12 21:41:51 +0000569 (cmpfunc) ResObj_compare, /*tp_compare*/
570 (reprfunc) ResObj_repr, /*tp_repr*/
571 (PyNumberMethods *)0, /* tp_as_number */
572 (PySequenceMethods *)0, /* tp_as_sequence */
573 (PyMappingMethods *)0, /* tp_as_mapping */
574 (hashfunc) ResObj_hash, /*tp_hash*/
Guido van Rossum17448e21995-01-30 11:53:55 +0000575};
576
577/* -------------------- End object type Resource -------------------- */
578
579
580static PyObject *Res_InitResources(_self, _args)
581 PyObject *_self;
582 PyObject *_args;
583{
584 PyObject *_res = NULL;
585 short _rv;
586 if (!PyArg_ParseTuple(_args, ""))
587 return NULL;
588 _rv = InitResources();
589 {
590 OSErr _err = ResError();
591 if (_err != noErr) return PyMac_Error(_err);
592 }
593 _res = Py_BuildValue("h",
594 _rv);
595 return _res;
596}
597
598static PyObject *Res_RsrcZoneInit(_self, _args)
599 PyObject *_self;
600 PyObject *_args;
601{
602 PyObject *_res = NULL;
603 if (!PyArg_ParseTuple(_args, ""))
604 return NULL;
605 RsrcZoneInit();
606 {
607 OSErr _err = ResError();
608 if (_err != noErr) return PyMac_Error(_err);
609 }
610 Py_INCREF(Py_None);
611 _res = Py_None;
612 return _res;
613}
614
615static PyObject *Res_CloseResFile(_self, _args)
616 PyObject *_self;
617 PyObject *_args;
618{
619 PyObject *_res = NULL;
620 short refNum;
621 if (!PyArg_ParseTuple(_args, "h",
622 &refNum))
623 return NULL;
624 CloseResFile(refNum);
625 {
626 OSErr _err = ResError();
627 if (_err != noErr) return PyMac_Error(_err);
628 }
629 Py_INCREF(Py_None);
630 _res = Py_None;
631 return _res;
632}
633
634static PyObject *Res_ResError(_self, _args)
635 PyObject *_self;
636 PyObject *_args;
637{
638 PyObject *_res = NULL;
Jack Jansen21f96871998-02-20 16:02:09 +0000639 OSErr _rv;
Guido van Rossum17448e21995-01-30 11:53:55 +0000640 if (!PyArg_ParseTuple(_args, ""))
641 return NULL;
642 _rv = ResError();
643 {
644 OSErr _err = ResError();
645 if (_err != noErr) return PyMac_Error(_err);
646 }
647 _res = Py_BuildValue("h",
648 _rv);
649 return _res;
650}
651
652static PyObject *Res_CurResFile(_self, _args)
653 PyObject *_self;
654 PyObject *_args;
655{
656 PyObject *_res = NULL;
657 short _rv;
658 if (!PyArg_ParseTuple(_args, ""))
659 return NULL;
660 _rv = CurResFile();
661 {
662 OSErr _err = ResError();
663 if (_err != noErr) return PyMac_Error(_err);
664 }
665 _res = Py_BuildValue("h",
666 _rv);
667 return _res;
668}
669
670static PyObject *Res_CreateResFile(_self, _args)
671 PyObject *_self;
672 PyObject *_args;
673{
674 PyObject *_res = NULL;
675 Str255 fileName;
676 if (!PyArg_ParseTuple(_args, "O&",
677 PyMac_GetStr255, fileName))
678 return NULL;
679 CreateResFile(fileName);
680 {
681 OSErr _err = ResError();
682 if (_err != noErr) return PyMac_Error(_err);
683 }
684 Py_INCREF(Py_None);
685 _res = Py_None;
686 return _res;
687}
688
689static PyObject *Res_OpenResFile(_self, _args)
690 PyObject *_self;
691 PyObject *_args;
692{
693 PyObject *_res = NULL;
694 short _rv;
695 Str255 fileName;
696 if (!PyArg_ParseTuple(_args, "O&",
697 PyMac_GetStr255, fileName))
698 return NULL;
699 _rv = OpenResFile(fileName);
700 {
701 OSErr _err = ResError();
702 if (_err != noErr) return PyMac_Error(_err);
703 }
704 _res = Py_BuildValue("h",
705 _rv);
706 return _res;
707}
708
709static PyObject *Res_UseResFile(_self, _args)
710 PyObject *_self;
711 PyObject *_args;
712{
713 PyObject *_res = NULL;
714 short refNum;
715 if (!PyArg_ParseTuple(_args, "h",
716 &refNum))
717 return NULL;
718 UseResFile(refNum);
719 {
720 OSErr _err = ResError();
721 if (_err != noErr) return PyMac_Error(_err);
722 }
723 Py_INCREF(Py_None);
724 _res = Py_None;
725 return _res;
726}
727
728static PyObject *Res_CountTypes(_self, _args)
729 PyObject *_self;
730 PyObject *_args;
731{
732 PyObject *_res = NULL;
733 short _rv;
734 if (!PyArg_ParseTuple(_args, ""))
735 return NULL;
736 _rv = CountTypes();
737 {
738 OSErr _err = ResError();
739 if (_err != noErr) return PyMac_Error(_err);
740 }
741 _res = Py_BuildValue("h",
742 _rv);
743 return _res;
744}
745
746static PyObject *Res_Count1Types(_self, _args)
747 PyObject *_self;
748 PyObject *_args;
749{
750 PyObject *_res = NULL;
751 short _rv;
752 if (!PyArg_ParseTuple(_args, ""))
753 return NULL;
754 _rv = Count1Types();
755 {
756 OSErr _err = ResError();
757 if (_err != noErr) return PyMac_Error(_err);
758 }
759 _res = Py_BuildValue("h",
760 _rv);
761 return _res;
762}
763
764static PyObject *Res_GetIndType(_self, _args)
765 PyObject *_self;
766 PyObject *_args;
767{
768 PyObject *_res = NULL;
769 ResType theType;
770 short index;
771 if (!PyArg_ParseTuple(_args, "h",
772 &index))
773 return NULL;
774 GetIndType(&theType,
775 index);
776 {
777 OSErr _err = ResError();
778 if (_err != noErr) return PyMac_Error(_err);
779 }
780 _res = Py_BuildValue("O&",
781 PyMac_BuildOSType, theType);
782 return _res;
783}
784
785static PyObject *Res_Get1IndType(_self, _args)
786 PyObject *_self;
787 PyObject *_args;
788{
789 PyObject *_res = NULL;
790 ResType theType;
791 short index;
792 if (!PyArg_ParseTuple(_args, "h",
793 &index))
794 return NULL;
795 Get1IndType(&theType,
796 index);
797 {
798 OSErr _err = ResError();
799 if (_err != noErr) return PyMac_Error(_err);
800 }
801 _res = Py_BuildValue("O&",
802 PyMac_BuildOSType, theType);
803 return _res;
804}
805
806static PyObject *Res_SetResLoad(_self, _args)
807 PyObject *_self;
808 PyObject *_args;
809{
810 PyObject *_res = NULL;
811 Boolean load;
812 if (!PyArg_ParseTuple(_args, "b",
813 &load))
814 return NULL;
815 SetResLoad(load);
816 {
817 OSErr _err = ResError();
818 if (_err != noErr) return PyMac_Error(_err);
819 }
820 Py_INCREF(Py_None);
821 _res = Py_None;
822 return _res;
823}
824
825static PyObject *Res_CountResources(_self, _args)
826 PyObject *_self;
827 PyObject *_args;
828{
829 PyObject *_res = NULL;
830 short _rv;
831 ResType theType;
832 if (!PyArg_ParseTuple(_args, "O&",
833 PyMac_GetOSType, &theType))
834 return NULL;
835 _rv = CountResources(theType);
836 {
837 OSErr _err = ResError();
838 if (_err != noErr) return PyMac_Error(_err);
839 }
840 _res = Py_BuildValue("h",
841 _rv);
842 return _res;
843}
844
845static PyObject *Res_Count1Resources(_self, _args)
846 PyObject *_self;
847 PyObject *_args;
848{
849 PyObject *_res = NULL;
850 short _rv;
851 ResType theType;
852 if (!PyArg_ParseTuple(_args, "O&",
853 PyMac_GetOSType, &theType))
854 return NULL;
855 _rv = Count1Resources(theType);
856 {
857 OSErr _err = ResError();
858 if (_err != noErr) return PyMac_Error(_err);
859 }
860 _res = Py_BuildValue("h",
861 _rv);
862 return _res;
863}
864
865static PyObject *Res_GetIndResource(_self, _args)
866 PyObject *_self;
867 PyObject *_args;
868{
869 PyObject *_res = NULL;
870 Handle _rv;
871 ResType theType;
872 short index;
873 if (!PyArg_ParseTuple(_args, "O&h",
874 PyMac_GetOSType, &theType,
875 &index))
876 return NULL;
877 _rv = GetIndResource(theType,
878 index);
879 {
880 OSErr _err = ResError();
881 if (_err != noErr) return PyMac_Error(_err);
882 }
883 _res = Py_BuildValue("O&",
884 ResObj_New, _rv);
885 return _res;
886}
887
888static PyObject *Res_Get1IndResource(_self, _args)
889 PyObject *_self;
890 PyObject *_args;
891{
892 PyObject *_res = NULL;
893 Handle _rv;
894 ResType theType;
895 short index;
896 if (!PyArg_ParseTuple(_args, "O&h",
897 PyMac_GetOSType, &theType,
898 &index))
899 return NULL;
900 _rv = Get1IndResource(theType,
901 index);
902 {
903 OSErr _err = ResError();
904 if (_err != noErr) return PyMac_Error(_err);
905 }
906 _res = Py_BuildValue("O&",
907 ResObj_New, _rv);
908 return _res;
909}
910
911static PyObject *Res_GetResource(_self, _args)
912 PyObject *_self;
913 PyObject *_args;
914{
915 PyObject *_res = NULL;
916 Handle _rv;
917 ResType theType;
918 short theID;
919 if (!PyArg_ParseTuple(_args, "O&h",
920 PyMac_GetOSType, &theType,
921 &theID))
922 return NULL;
923 _rv = GetResource(theType,
924 theID);
925 {
926 OSErr _err = ResError();
927 if (_err != noErr) return PyMac_Error(_err);
928 }
929 _res = Py_BuildValue("O&",
930 ResObj_New, _rv);
931 return _res;
932}
933
934static PyObject *Res_Get1Resource(_self, _args)
935 PyObject *_self;
936 PyObject *_args;
937{
938 PyObject *_res = NULL;
939 Handle _rv;
940 ResType theType;
941 short theID;
942 if (!PyArg_ParseTuple(_args, "O&h",
943 PyMac_GetOSType, &theType,
944 &theID))
945 return NULL;
946 _rv = Get1Resource(theType,
947 theID);
948 {
949 OSErr _err = ResError();
950 if (_err != noErr) return PyMac_Error(_err);
951 }
952 _res = Py_BuildValue("O&",
953 ResObj_New, _rv);
954 return _res;
955}
956
957static PyObject *Res_GetNamedResource(_self, _args)
958 PyObject *_self;
959 PyObject *_args;
960{
961 PyObject *_res = NULL;
962 Handle _rv;
963 ResType theType;
964 Str255 name;
965 if (!PyArg_ParseTuple(_args, "O&O&",
966 PyMac_GetOSType, &theType,
967 PyMac_GetStr255, name))
968 return NULL;
969 _rv = GetNamedResource(theType,
970 name);
971 {
972 OSErr _err = ResError();
973 if (_err != noErr) return PyMac_Error(_err);
974 }
975 _res = Py_BuildValue("O&",
976 ResObj_New, _rv);
977 return _res;
978}
979
980static PyObject *Res_Get1NamedResource(_self, _args)
981 PyObject *_self;
982 PyObject *_args;
983{
984 PyObject *_res = NULL;
985 Handle _rv;
986 ResType theType;
987 Str255 name;
988 if (!PyArg_ParseTuple(_args, "O&O&",
989 PyMac_GetOSType, &theType,
990 PyMac_GetStr255, name))
991 return NULL;
992 _rv = Get1NamedResource(theType,
993 name);
994 {
995 OSErr _err = ResError();
996 if (_err != noErr) return PyMac_Error(_err);
997 }
998 _res = Py_BuildValue("O&",
999 ResObj_New, _rv);
1000 return _res;
1001}
1002
1003static PyObject *Res_UniqueID(_self, _args)
1004 PyObject *_self;
1005 PyObject *_args;
1006{
1007 PyObject *_res = NULL;
1008 short _rv;
1009 ResType theType;
1010 if (!PyArg_ParseTuple(_args, "O&",
1011 PyMac_GetOSType, &theType))
1012 return NULL;
1013 _rv = UniqueID(theType);
1014 {
1015 OSErr _err = ResError();
1016 if (_err != noErr) return PyMac_Error(_err);
1017 }
1018 _res = Py_BuildValue("h",
1019 _rv);
1020 return _res;
1021}
1022
1023static PyObject *Res_Unique1ID(_self, _args)
1024 PyObject *_self;
1025 PyObject *_args;
1026{
1027 PyObject *_res = NULL;
1028 short _rv;
1029 ResType theType;
1030 if (!PyArg_ParseTuple(_args, "O&",
1031 PyMac_GetOSType, &theType))
1032 return NULL;
1033 _rv = Unique1ID(theType);
1034 {
1035 OSErr _err = ResError();
1036 if (_err != noErr) return PyMac_Error(_err);
1037 }
1038 _res = Py_BuildValue("h",
1039 _rv);
1040 return _res;
1041}
1042
1043static PyObject *Res_UpdateResFile(_self, _args)
1044 PyObject *_self;
1045 PyObject *_args;
1046{
1047 PyObject *_res = NULL;
1048 short refNum;
1049 if (!PyArg_ParseTuple(_args, "h",
1050 &refNum))
1051 return NULL;
1052 UpdateResFile(refNum);
1053 {
1054 OSErr _err = ResError();
1055 if (_err != noErr) return PyMac_Error(_err);
1056 }
1057 Py_INCREF(Py_None);
1058 _res = Py_None;
1059 return _res;
1060}
1061
1062static PyObject *Res_SetResPurge(_self, _args)
1063 PyObject *_self;
1064 PyObject *_args;
1065{
1066 PyObject *_res = NULL;
1067 Boolean install;
1068 if (!PyArg_ParseTuple(_args, "b",
1069 &install))
1070 return NULL;
1071 SetResPurge(install);
1072 {
1073 OSErr _err = ResError();
1074 if (_err != noErr) return PyMac_Error(_err);
1075 }
1076 Py_INCREF(Py_None);
1077 _res = Py_None;
1078 return _res;
1079}
1080
1081static PyObject *Res_GetResFileAttrs(_self, _args)
1082 PyObject *_self;
1083 PyObject *_args;
1084{
1085 PyObject *_res = NULL;
1086 short _rv;
1087 short refNum;
1088 if (!PyArg_ParseTuple(_args, "h",
1089 &refNum))
1090 return NULL;
1091 _rv = GetResFileAttrs(refNum);
1092 {
1093 OSErr _err = ResError();
1094 if (_err != noErr) return PyMac_Error(_err);
1095 }
1096 _res = Py_BuildValue("h",
1097 _rv);
1098 return _res;
1099}
1100
1101static PyObject *Res_SetResFileAttrs(_self, _args)
1102 PyObject *_self;
1103 PyObject *_args;
1104{
1105 PyObject *_res = NULL;
1106 short refNum;
1107 short attrs;
1108 if (!PyArg_ParseTuple(_args, "hh",
1109 &refNum,
1110 &attrs))
1111 return NULL;
1112 SetResFileAttrs(refNum,
1113 attrs);
1114 {
1115 OSErr _err = ResError();
1116 if (_err != noErr) return PyMac_Error(_err);
1117 }
1118 Py_INCREF(Py_None);
1119 _res = Py_None;
1120 return _res;
1121}
1122
1123static PyObject *Res_OpenRFPerm(_self, _args)
1124 PyObject *_self;
1125 PyObject *_args;
1126{
1127 PyObject *_res = NULL;
1128 short _rv;
1129 Str255 fileName;
1130 short vRefNum;
Jack Jansenb81cf9d1995-06-06 13:08:40 +00001131 SignedByte permission;
1132 if (!PyArg_ParseTuple(_args, "O&hb",
Guido van Rossum17448e21995-01-30 11:53:55 +00001133 PyMac_GetStr255, fileName,
1134 &vRefNum,
1135 &permission))
1136 return NULL;
1137 _rv = OpenRFPerm(fileName,
1138 vRefNum,
1139 permission);
1140 {
1141 OSErr _err = ResError();
1142 if (_err != noErr) return PyMac_Error(_err);
1143 }
1144 _res = Py_BuildValue("h",
1145 _rv);
1146 return _res;
1147}
1148
1149static PyObject *Res_RGetResource(_self, _args)
1150 PyObject *_self;
1151 PyObject *_args;
1152{
1153 PyObject *_res = NULL;
1154 Handle _rv;
1155 ResType theType;
1156 short theID;
1157 if (!PyArg_ParseTuple(_args, "O&h",
1158 PyMac_GetOSType, &theType,
1159 &theID))
1160 return NULL;
1161 _rv = RGetResource(theType,
1162 theID);
1163 {
1164 OSErr _err = ResError();
1165 if (_err != noErr) return PyMac_Error(_err);
1166 }
1167 _res = Py_BuildValue("O&",
1168 ResObj_New, _rv);
1169 return _res;
1170}
1171
1172static PyObject *Res_HOpenResFile(_self, _args)
1173 PyObject *_self;
1174 PyObject *_args;
1175{
1176 PyObject *_res = NULL;
1177 short _rv;
1178 short vRefNum;
1179 long dirID;
1180 Str255 fileName;
Jack Jansenb81cf9d1995-06-06 13:08:40 +00001181 SignedByte permission;
1182 if (!PyArg_ParseTuple(_args, "hlO&b",
Guido van Rossum17448e21995-01-30 11:53:55 +00001183 &vRefNum,
1184 &dirID,
1185 PyMac_GetStr255, fileName,
1186 &permission))
1187 return NULL;
1188 _rv = HOpenResFile(vRefNum,
1189 dirID,
1190 fileName,
1191 permission);
1192 {
1193 OSErr _err = ResError();
1194 if (_err != noErr) return PyMac_Error(_err);
1195 }
1196 _res = Py_BuildValue("h",
1197 _rv);
1198 return _res;
1199}
1200
1201static PyObject *Res_HCreateResFile(_self, _args)
1202 PyObject *_self;
1203 PyObject *_args;
1204{
1205 PyObject *_res = NULL;
1206 short vRefNum;
1207 long dirID;
1208 Str255 fileName;
1209 if (!PyArg_ParseTuple(_args, "hlO&",
1210 &vRefNum,
1211 &dirID,
1212 PyMac_GetStr255, fileName))
1213 return NULL;
1214 HCreateResFile(vRefNum,
1215 dirID,
1216 fileName);
1217 {
1218 OSErr _err = ResError();
1219 if (_err != noErr) return PyMac_Error(_err);
1220 }
1221 Py_INCREF(Py_None);
1222 _res = Py_None;
1223 return _res;
1224}
1225
1226static PyObject *Res_FSpOpenResFile(_self, _args)
1227 PyObject *_self;
1228 PyObject *_args;
1229{
1230 PyObject *_res = NULL;
1231 short _rv;
1232 FSSpec spec;
1233 SignedByte permission;
1234 if (!PyArg_ParseTuple(_args, "O&b",
1235 PyMac_GetFSSpec, &spec,
1236 &permission))
1237 return NULL;
1238 _rv = FSpOpenResFile(&spec,
1239 permission);
1240 {
1241 OSErr _err = ResError();
1242 if (_err != noErr) return PyMac_Error(_err);
1243 }
1244 _res = Py_BuildValue("h",
1245 _rv);
1246 return _res;
1247}
1248
1249static PyObject *Res_FSpCreateResFile(_self, _args)
1250 PyObject *_self;
1251 PyObject *_args;
1252{
1253 PyObject *_res = NULL;
1254 FSSpec spec;
1255 OSType creator;
1256 OSType fileType;
1257 ScriptCode scriptTag;
1258 if (!PyArg_ParseTuple(_args, "O&O&O&h",
1259 PyMac_GetFSSpec, &spec,
1260 PyMac_GetOSType, &creator,
1261 PyMac_GetOSType, &fileType,
1262 &scriptTag))
1263 return NULL;
1264 FSpCreateResFile(&spec,
1265 creator,
1266 fileType,
1267 scriptTag);
1268 {
1269 OSErr _err = ResError();
1270 if (_err != noErr) return PyMac_Error(_err);
1271 }
1272 Py_INCREF(Py_None);
1273 _res = Py_None;
1274 return _res;
1275}
1276
Guido van Rossum9bcb6411995-02-05 16:54:27 +00001277static PyObject *Res_Resource(_self, _args)
1278 PyObject *_self;
1279 PyObject *_args;
1280{
1281 PyObject *_res = NULL;
1282
1283 char *buf;
1284 int len;
1285 Handle h;
1286
1287 if (!PyArg_ParseTuple(_args, "s#", &buf, &len))
1288 return NULL;
1289 h = NewHandle(len);
1290 if ( h == NULL ) {
1291 PyErr_NoMemory();
1292 return NULL;
1293 }
1294 HLock(h);
1295 memcpy(*h, buf, len);
1296 HUnlock(h);
1297 return (PyObject *)ResObj_New(h);
1298
1299}
1300
Guido van Rossum17448e21995-01-30 11:53:55 +00001301static PyMethodDef Res_methods[] = {
1302 {"InitResources", (PyCFunction)Res_InitResources, 1,
1303 "() -> (short _rv)"},
1304 {"RsrcZoneInit", (PyCFunction)Res_RsrcZoneInit, 1,
1305 "() -> None"},
1306 {"CloseResFile", (PyCFunction)Res_CloseResFile, 1,
1307 "(short refNum) -> None"},
1308 {"ResError", (PyCFunction)Res_ResError, 1,
Jack Jansen21f96871998-02-20 16:02:09 +00001309 "() -> (OSErr _rv)"},
Guido van Rossum17448e21995-01-30 11:53:55 +00001310 {"CurResFile", (PyCFunction)Res_CurResFile, 1,
1311 "() -> (short _rv)"},
1312 {"CreateResFile", (PyCFunction)Res_CreateResFile, 1,
1313 "(Str255 fileName) -> None"},
1314 {"OpenResFile", (PyCFunction)Res_OpenResFile, 1,
1315 "(Str255 fileName) -> (short _rv)"},
1316 {"UseResFile", (PyCFunction)Res_UseResFile, 1,
1317 "(short refNum) -> None"},
1318 {"CountTypes", (PyCFunction)Res_CountTypes, 1,
1319 "() -> (short _rv)"},
1320 {"Count1Types", (PyCFunction)Res_Count1Types, 1,
1321 "() -> (short _rv)"},
1322 {"GetIndType", (PyCFunction)Res_GetIndType, 1,
1323 "(short index) -> (ResType theType)"},
1324 {"Get1IndType", (PyCFunction)Res_Get1IndType, 1,
1325 "(short index) -> (ResType theType)"},
1326 {"SetResLoad", (PyCFunction)Res_SetResLoad, 1,
1327 "(Boolean load) -> None"},
1328 {"CountResources", (PyCFunction)Res_CountResources, 1,
1329 "(ResType theType) -> (short _rv)"},
1330 {"Count1Resources", (PyCFunction)Res_Count1Resources, 1,
1331 "(ResType theType) -> (short _rv)"},
1332 {"GetIndResource", (PyCFunction)Res_GetIndResource, 1,
1333 "(ResType theType, short index) -> (Handle _rv)"},
1334 {"Get1IndResource", (PyCFunction)Res_Get1IndResource, 1,
1335 "(ResType theType, short index) -> (Handle _rv)"},
1336 {"GetResource", (PyCFunction)Res_GetResource, 1,
1337 "(ResType theType, short theID) -> (Handle _rv)"},
1338 {"Get1Resource", (PyCFunction)Res_Get1Resource, 1,
1339 "(ResType theType, short theID) -> (Handle _rv)"},
1340 {"GetNamedResource", (PyCFunction)Res_GetNamedResource, 1,
1341 "(ResType theType, Str255 name) -> (Handle _rv)"},
1342 {"Get1NamedResource", (PyCFunction)Res_Get1NamedResource, 1,
1343 "(ResType theType, Str255 name) -> (Handle _rv)"},
1344 {"UniqueID", (PyCFunction)Res_UniqueID, 1,
1345 "(ResType theType) -> (short _rv)"},
1346 {"Unique1ID", (PyCFunction)Res_Unique1ID, 1,
1347 "(ResType theType) -> (short _rv)"},
1348 {"UpdateResFile", (PyCFunction)Res_UpdateResFile, 1,
1349 "(short refNum) -> None"},
1350 {"SetResPurge", (PyCFunction)Res_SetResPurge, 1,
1351 "(Boolean install) -> None"},
1352 {"GetResFileAttrs", (PyCFunction)Res_GetResFileAttrs, 1,
1353 "(short refNum) -> (short _rv)"},
1354 {"SetResFileAttrs", (PyCFunction)Res_SetResFileAttrs, 1,
1355 "(short refNum, short attrs) -> None"},
1356 {"OpenRFPerm", (PyCFunction)Res_OpenRFPerm, 1,
Jack Jansenb81cf9d1995-06-06 13:08:40 +00001357 "(Str255 fileName, short vRefNum, SignedByte permission) -> (short _rv)"},
Guido van Rossum17448e21995-01-30 11:53:55 +00001358 {"RGetResource", (PyCFunction)Res_RGetResource, 1,
1359 "(ResType theType, short theID) -> (Handle _rv)"},
1360 {"HOpenResFile", (PyCFunction)Res_HOpenResFile, 1,
Jack Jansenb81cf9d1995-06-06 13:08:40 +00001361 "(short vRefNum, long dirID, Str255 fileName, SignedByte permission) -> (short _rv)"},
Guido van Rossum17448e21995-01-30 11:53:55 +00001362 {"HCreateResFile", (PyCFunction)Res_HCreateResFile, 1,
1363 "(short vRefNum, long dirID, Str255 fileName) -> None"},
1364 {"FSpOpenResFile", (PyCFunction)Res_FSpOpenResFile, 1,
1365 "(FSSpec spec, SignedByte permission) -> (short _rv)"},
1366 {"FSpCreateResFile", (PyCFunction)Res_FSpCreateResFile, 1,
1367 "(FSSpec spec, OSType creator, OSType fileType, ScriptCode scriptTag) -> None"},
Guido van Rossum9bcb6411995-02-05 16:54:27 +00001368 {"Resource", (PyCFunction)Res_Resource, 1,
1369 "Convert a string to a resource object.\n\nThe created resource object is actually just a handle.\nApply AddResource() to write it to a resource file.\n"},
Guido van Rossum17448e21995-01-30 11:53:55 +00001370 {NULL, NULL, 0}
1371};
1372
1373
1374
1375
Jack Jansend4c26461995-08-17 14:35:56 +00001376/* Alternative version of ResObj_New, which returns None for null argument */
Jack Jansen425e9eb1995-12-12 15:02:03 +00001377PyObject *OptResObj_New(itself)
Jack Jansend4c26461995-08-17 14:35:56 +00001378 Handle itself;
1379{
Jack Jansend4c26461995-08-17 14:35:56 +00001380 if (itself == NULL) {
1381 Py_INCREF(Py_None);
1382 return Py_None;
1383 }
1384 return ResObj_New(itself);
1385}
1386
Jack Jansen425e9eb1995-12-12 15:02:03 +00001387OptResObj_Convert(v, p_itself)
1388 PyObject *v;
1389 Handle *p_itself;
1390{
1391 if ( v == Py_None ) {
1392 *p_itself = NULL;
1393 return 1;
1394 }
1395 if (!ResObj_Check(v))
1396 {
1397 PyErr_SetString(PyExc_TypeError, "Resource required");
1398 return 0;
1399 }
1400 *p_itself = ((ResourceObject *)v)->ob_itself;
1401 return 1;
1402}
1403
Jack Jansend4c26461995-08-17 14:35:56 +00001404
Guido van Rossum17448e21995-01-30 11:53:55 +00001405
1406void initRes()
1407{
1408 PyObject *m;
1409 PyObject *d;
1410
1411
1412
1413
1414
1415 m = Py_InitModule("Res", Res_methods);
1416 d = PyModule_GetDict(m);
1417 Res_Error = PyMac_GetOSErrException();
1418 if (Res_Error == NULL ||
1419 PyDict_SetItemString(d, "Error", Res_Error) != 0)
1420 Py_FatalError("can't initialize Res.Error");
Jack Jansena755e681997-09-20 17:40:22 +00001421 Resource_Type.ob_type = &PyType_Type;
1422 Py_INCREF(&Resource_Type);
1423 if (PyDict_SetItemString(d, "ResourceType", (PyObject *)&Resource_Type) != 0)
1424 Py_FatalError("can't initialize ResourceType");
Guido van Rossum17448e21995-01-30 11:53:55 +00001425}
1426
1427/* ========================= End module Res ========================= */
1428