blob: 58b4d136b94932dc9eb979dc3fb3136845c3370a [file] [log] [blame]
Guido van Rossum17448e21995-01-30 11:53:55 +00001
2/* =========================== Module AE ============================ */
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 *);
18
19extern PyObject *WinObj_New(WindowPtr);
20extern int WinObj_Convert(PyObject *, WindowPtr *);
21
22extern PyObject *DlgObj_New(DialogPtr);
23extern int DlgObj_Convert(PyObject *, DialogPtr *);
24extern PyTypeObject Dialog_Type;
25#define DlgObj_Check(x) ((x)->ob_type == &Dialog_Type)
26
27extern PyObject *MenuObj_New(MenuHandle);
28extern int MenuObj_Convert(PyObject *, MenuHandle *);
29
30extern PyObject *CtlObj_New(ControlHandle);
31extern int CtlObj_Convert(PyObject *, ControlHandle *);
32
Guido van Rossumb19a6451995-02-05 16:58:33 +000033extern PyObject *WinObj_WhichWindow(WindowPtr);
34
Guido van Rossum17448e21995-01-30 11:53:55 +000035#include <AppleEvents.h>
36
Guido van Rossum3075b321995-02-14 09:48:02 +000037#ifndef HAVE_UNIVERSAL_HEADERS
Guido van Rossumb19a6451995-02-05 16:58:33 +000038#define AEIdleProcPtr IdleProcPtr
Guido van Rossum17448e21995-01-30 11:53:55 +000039#define AEFilterProcPtr EventFilterProcPtr
40#define AEEventHandlerProcPtr EventHandlerProcPtr
41#endif
42
Guido van Rossum3075b321995-02-14 09:48:02 +000043#ifndef HAVE_UNIVERSAL_HEADERS
44/* I'm trying to setup the code here so that is easily automated,
Guido van Rossumb19a6451995-02-05 16:58:33 +000045** as follows:
46** - Use the UPP in the source
47** - for pre-universal headers, #define each UPP as the corresponding ProcPtr
48** - for each routine we pass we declare a upp_xxx that
49** we initialize to the correct value in the init routine.
50*/
51#define AEIdleUPP AEIdleProcPtr
52#define AEFilterUPP AEFilterProcPtr
53#define AEEventHandlerUPP AEEventHandlerProcPtr
54#define NewAEIdleProc(x) (x)
55#define NewAEFilterProc(x) (x)
56#define NewAEEventHandlerProc(x) (x)
57#endif
58
Guido van Rossum17448e21995-01-30 11:53:55 +000059static pascal OSErr GenericEventHandler(); /* Forward */
60
Guido van Rossumb19a6451995-02-05 16:58:33 +000061AEEventHandlerUPP upp_GenericEventHandler;
62
Guido van Rossum17448e21995-01-30 11:53:55 +000063static pascal Boolean AEIdleProc(EventRecord *theEvent, long *sleepTime, RgnHandle *mouseRgn)
64{
65 (void) PyMac_Idle();
66 return 0;
67}
68
Guido van Rossumb19a6451995-02-05 16:58:33 +000069AEIdleUPP upp_AEIdleProc;
70
Guido van Rossum17448e21995-01-30 11:53:55 +000071static PyObject *AE_Error;
72
73/* ----------------------- Object type AEDesc ----------------------- */
74
75staticforward PyTypeObject AEDesc_Type;
76
77#define AEDesc_Check(x) ((x)->ob_type == &AEDesc_Type)
78
79typedef struct AEDescObject {
80 PyObject_HEAD
81 AEDesc ob_itself;
82} AEDescObject;
83
84static PyObject *AEDesc_New(itself)
85 const AEDesc *itself;
86{
87 AEDescObject *it;
88 it = PyObject_NEW(AEDescObject, &AEDesc_Type);
89 if (it == NULL) return NULL;
90 it->ob_itself = *itself;
91 return (PyObject *)it;
92}
93static AEDesc_Convert(v, p_itself)
94 PyObject *v;
95 AEDesc *p_itself;
96{
97 if (!AEDesc_Check(v))
98 {
99 PyErr_SetString(PyExc_TypeError, "AEDesc required");
100 return 0;
101 }
102 *p_itself = ((AEDescObject *)v)->ob_itself;
103 return 1;
104}
105
106static void AEDesc_dealloc(self)
107 AEDescObject *self;
108{
109 AEDisposeDesc(&self->ob_itself);
110 PyMem_DEL(self);
111}
112
113static PyObject *AEDesc_AECoerceDesc(_self, _args)
114 AEDescObject *_self;
115 PyObject *_args;
116{
117 PyObject *_res = NULL;
118 OSErr _err;
119 DescType toType;
120 AEDesc result;
121 if (!PyArg_ParseTuple(_args, "O&",
122 PyMac_GetOSType, &toType))
123 return NULL;
124 _err = AECoerceDesc(&_self->ob_itself,
125 toType,
126 &result);
127 if (_err != noErr) return PyMac_Error(_err);
128 _res = Py_BuildValue("O&",
129 AEDesc_New, &result);
130 return _res;
131}
132
133static PyObject *AEDesc_AEDuplicateDesc(_self, _args)
134 AEDescObject *_self;
135 PyObject *_args;
136{
137 PyObject *_res = NULL;
138 OSErr _err;
139 AEDesc result;
140 if (!PyArg_ParseTuple(_args, ""))
141 return NULL;
142 _err = AEDuplicateDesc(&_self->ob_itself,
143 &result);
144 if (_err != noErr) return PyMac_Error(_err);
145 _res = Py_BuildValue("O&",
146 AEDesc_New, &result);
147 return _res;
148}
149
150static PyObject *AEDesc_AECountItems(_self, _args)
151 AEDescObject *_self;
152 PyObject *_args;
153{
154 PyObject *_res = NULL;
155 OSErr _err;
156 long theCount;
157 if (!PyArg_ParseTuple(_args, ""))
158 return NULL;
159 _err = AECountItems(&_self->ob_itself,
160 &theCount);
161 if (_err != noErr) return PyMac_Error(_err);
162 _res = Py_BuildValue("l",
163 theCount);
164 return _res;
165}
166
167static PyObject *AEDesc_AEPutPtr(_self, _args)
168 AEDescObject *_self;
169 PyObject *_args;
170{
171 PyObject *_res = NULL;
172 OSErr _err;
173 long index;
174 DescType typeCode;
175 char *dataPtr__in__;
176 long dataPtr__len__;
177 if (!PyArg_ParseTuple(_args, "lO&s#",
178 &index,
179 PyMac_GetOSType, &typeCode,
180 &dataPtr__in__, &dataPtr__len__))
181 return NULL;
182 _err = AEPutPtr(&_self->ob_itself,
183 index,
184 typeCode,
185 dataPtr__in__, dataPtr__len__);
186 if (_err != noErr) return PyMac_Error(_err);
187 Py_INCREF(Py_None);
188 _res = Py_None;
189 dataPtr__error__: ;
190 return _res;
191}
192
193static PyObject *AEDesc_AEPutDesc(_self, _args)
194 AEDescObject *_self;
195 PyObject *_args;
196{
197 PyObject *_res = NULL;
198 OSErr _err;
199 long index;
200 AEDesc theAEDesc;
201 if (!PyArg_ParseTuple(_args, "lO&",
202 &index,
203 AEDesc_Convert, &theAEDesc))
204 return NULL;
205 _err = AEPutDesc(&_self->ob_itself,
206 index,
207 &theAEDesc);
208 if (_err != noErr) return PyMac_Error(_err);
209 Py_INCREF(Py_None);
210 _res = Py_None;
211 return _res;
212}
213
214static PyObject *AEDesc_AEGetNthPtr(_self, _args)
215 AEDescObject *_self;
216 PyObject *_args;
217{
218 PyObject *_res = NULL;
219 OSErr _err;
220 long index;
221 DescType desiredType;
222 AEKeyword theAEKeyword;
223 DescType typeCode;
224 char *dataPtr__out__;
225 long dataPtr__len__;
226 if (!PyArg_ParseTuple(_args, "lO&l",
227 &index,
228 PyMac_GetOSType, &desiredType,
229 &dataPtr__len__))
230 return NULL;
231 if ((dataPtr__out__ = malloc(dataPtr__len__)) == NULL)
232 {
233 PyErr_NoMemory();
234 goto dataPtr__error__;
235 }
236 _err = AEGetNthPtr(&_self->ob_itself,
237 index,
238 desiredType,
239 &theAEKeyword,
240 &typeCode,
241 dataPtr__out__, dataPtr__len__, &dataPtr__len__);
242 if (_err != noErr) return PyMac_Error(_err);
243 _res = Py_BuildValue("O&O&s#",
244 PyMac_BuildOSType, theAEKeyword,
245 PyMac_BuildOSType, typeCode,
246 dataPtr__out__, dataPtr__len__);
247 free(dataPtr__out__);
248 dataPtr__error__: ;
249 return _res;
250}
251
252static PyObject *AEDesc_AEGetNthDesc(_self, _args)
253 AEDescObject *_self;
254 PyObject *_args;
255{
256 PyObject *_res = NULL;
257 OSErr _err;
258 long index;
259 DescType desiredType;
260 AEKeyword theAEKeyword;
261 AEDesc result;
262 if (!PyArg_ParseTuple(_args, "lO&",
263 &index,
264 PyMac_GetOSType, &desiredType))
265 return NULL;
266 _err = AEGetNthDesc(&_self->ob_itself,
267 index,
268 desiredType,
269 &theAEKeyword,
270 &result);
271 if (_err != noErr) return PyMac_Error(_err);
272 _res = Py_BuildValue("O&O&",
273 PyMac_BuildOSType, theAEKeyword,
274 AEDesc_New, &result);
275 return _res;
276}
277
278static PyObject *AEDesc_AESizeOfNthItem(_self, _args)
279 AEDescObject *_self;
280 PyObject *_args;
281{
282 PyObject *_res = NULL;
283 OSErr _err;
284 long index;
285 DescType typeCode;
286 Size dataSize;
287 if (!PyArg_ParseTuple(_args, "l",
288 &index))
289 return NULL;
290 _err = AESizeOfNthItem(&_self->ob_itself,
291 index,
292 &typeCode,
293 &dataSize);
294 if (_err != noErr) return PyMac_Error(_err);
295 _res = Py_BuildValue("O&l",
296 PyMac_BuildOSType, typeCode,
297 dataSize);
298 return _res;
299}
300
301static PyObject *AEDesc_AEDeleteItem(_self, _args)
302 AEDescObject *_self;
303 PyObject *_args;
304{
305 PyObject *_res = NULL;
306 OSErr _err;
307 long index;
308 if (!PyArg_ParseTuple(_args, "l",
309 &index))
310 return NULL;
311 _err = AEDeleteItem(&_self->ob_itself,
312 index);
313 if (_err != noErr) return PyMac_Error(_err);
314 Py_INCREF(Py_None);
315 _res = Py_None;
316 return _res;
317}
318
319static PyObject *AEDesc_AEPutKeyPtr(_self, _args)
320 AEDescObject *_self;
321 PyObject *_args;
322{
323 PyObject *_res = NULL;
324 OSErr _err;
325 AEKeyword theAEKeyword;
326 DescType typeCode;
327 char *dataPtr__in__;
328 long dataPtr__len__;
329 if (!PyArg_ParseTuple(_args, "O&O&s#",
330 PyMac_GetOSType, &theAEKeyword,
331 PyMac_GetOSType, &typeCode,
332 &dataPtr__in__, &dataPtr__len__))
333 return NULL;
334 _err = AEPutKeyPtr(&_self->ob_itself,
335 theAEKeyword,
336 typeCode,
337 dataPtr__in__, dataPtr__len__);
338 if (_err != noErr) return PyMac_Error(_err);
339 Py_INCREF(Py_None);
340 _res = Py_None;
341 dataPtr__error__: ;
342 return _res;
343}
344
345static PyObject *AEDesc_AEPutKeyDesc(_self, _args)
346 AEDescObject *_self;
347 PyObject *_args;
348{
349 PyObject *_res = NULL;
350 OSErr _err;
351 AEKeyword theAEKeyword;
352 AEDesc theAEDesc;
353 if (!PyArg_ParseTuple(_args, "O&O&",
354 PyMac_GetOSType, &theAEKeyword,
355 AEDesc_Convert, &theAEDesc))
356 return NULL;
357 _err = AEPutKeyDesc(&_self->ob_itself,
358 theAEKeyword,
359 &theAEDesc);
360 if (_err != noErr) return PyMac_Error(_err);
361 Py_INCREF(Py_None);
362 _res = Py_None;
363 return _res;
364}
365
366static PyObject *AEDesc_AEGetKeyPtr(_self, _args)
367 AEDescObject *_self;
368 PyObject *_args;
369{
370 PyObject *_res = NULL;
371 OSErr _err;
372 AEKeyword theAEKeyword;
373 DescType desiredType;
374 DescType typeCode;
375 char *dataPtr__out__;
376 long dataPtr__len__;
377 if (!PyArg_ParseTuple(_args, "O&O&l",
378 PyMac_GetOSType, &theAEKeyword,
379 PyMac_GetOSType, &desiredType,
380 &dataPtr__len__))
381 return NULL;
382 if ((dataPtr__out__ = malloc(dataPtr__len__)) == NULL)
383 {
384 PyErr_NoMemory();
385 goto dataPtr__error__;
386 }
387 _err = AEGetKeyPtr(&_self->ob_itself,
388 theAEKeyword,
389 desiredType,
390 &typeCode,
391 dataPtr__out__, dataPtr__len__, &dataPtr__len__);
392 if (_err != noErr) return PyMac_Error(_err);
393 _res = Py_BuildValue("O&s#",
394 PyMac_BuildOSType, typeCode,
395 dataPtr__out__, dataPtr__len__);
396 free(dataPtr__out__);
397 dataPtr__error__: ;
398 return _res;
399}
400
401static PyObject *AEDesc_AEGetKeyDesc(_self, _args)
402 AEDescObject *_self;
403 PyObject *_args;
404{
405 PyObject *_res = NULL;
406 OSErr _err;
407 AEKeyword theAEKeyword;
408 DescType desiredType;
409 AEDesc result;
410 if (!PyArg_ParseTuple(_args, "O&O&",
411 PyMac_GetOSType, &theAEKeyword,
412 PyMac_GetOSType, &desiredType))
413 return NULL;
414 _err = AEGetKeyDesc(&_self->ob_itself,
415 theAEKeyword,
416 desiredType,
417 &result);
418 if (_err != noErr) return PyMac_Error(_err);
419 _res = Py_BuildValue("O&",
420 AEDesc_New, &result);
421 return _res;
422}
423
424static PyObject *AEDesc_AESizeOfKeyDesc(_self, _args)
425 AEDescObject *_self;
426 PyObject *_args;
427{
428 PyObject *_res = NULL;
429 OSErr _err;
430 AEKeyword theAEKeyword;
431 DescType typeCode;
432 Size dataSize;
433 if (!PyArg_ParseTuple(_args, "O&",
434 PyMac_GetOSType, &theAEKeyword))
435 return NULL;
436 _err = AESizeOfKeyDesc(&_self->ob_itself,
437 theAEKeyword,
438 &typeCode,
439 &dataSize);
440 if (_err != noErr) return PyMac_Error(_err);
441 _res = Py_BuildValue("O&l",
442 PyMac_BuildOSType, typeCode,
443 dataSize);
444 return _res;
445}
446
447static PyObject *AEDesc_AEDeleteKeyDesc(_self, _args)
448 AEDescObject *_self;
449 PyObject *_args;
450{
451 PyObject *_res = NULL;
452 OSErr _err;
453 AEKeyword theAEKeyword;
454 if (!PyArg_ParseTuple(_args, "O&",
455 PyMac_GetOSType, &theAEKeyword))
456 return NULL;
457 _err = AEDeleteKeyDesc(&_self->ob_itself,
458 theAEKeyword);
459 if (_err != noErr) return PyMac_Error(_err);
460 Py_INCREF(Py_None);
461 _res = Py_None;
462 return _res;
463}
464
465static PyObject *AEDesc_AEPutParamPtr(_self, _args)
466 AEDescObject *_self;
467 PyObject *_args;
468{
469 PyObject *_res = NULL;
470 OSErr _err;
471 AEKeyword theAEKeyword;
472 DescType typeCode;
473 char *dataPtr__in__;
474 long dataPtr__len__;
475 if (!PyArg_ParseTuple(_args, "O&O&s#",
476 PyMac_GetOSType, &theAEKeyword,
477 PyMac_GetOSType, &typeCode,
478 &dataPtr__in__, &dataPtr__len__))
479 return NULL;
480 _err = AEPutParamPtr(&_self->ob_itself,
481 theAEKeyword,
482 typeCode,
483 dataPtr__in__, dataPtr__len__);
484 if (_err != noErr) return PyMac_Error(_err);
485 Py_INCREF(Py_None);
486 _res = Py_None;
487 dataPtr__error__: ;
488 return _res;
489}
490
491static PyObject *AEDesc_AEPutParamDesc(_self, _args)
492 AEDescObject *_self;
493 PyObject *_args;
494{
495 PyObject *_res = NULL;
496 OSErr _err;
497 AEKeyword theAEKeyword;
498 AEDesc theAEDesc;
499 if (!PyArg_ParseTuple(_args, "O&O&",
500 PyMac_GetOSType, &theAEKeyword,
501 AEDesc_Convert, &theAEDesc))
502 return NULL;
503 _err = AEPutParamDesc(&_self->ob_itself,
504 theAEKeyword,
505 &theAEDesc);
506 if (_err != noErr) return PyMac_Error(_err);
507 Py_INCREF(Py_None);
508 _res = Py_None;
509 return _res;
510}
511
512static PyObject *AEDesc_AEGetParamPtr(_self, _args)
513 AEDescObject *_self;
514 PyObject *_args;
515{
516 PyObject *_res = NULL;
517 OSErr _err;
518 AEKeyword theAEKeyword;
519 DescType desiredType;
520 DescType typeCode;
521 char *dataPtr__out__;
522 long dataPtr__len__;
523 if (!PyArg_ParseTuple(_args, "O&O&l",
524 PyMac_GetOSType, &theAEKeyword,
525 PyMac_GetOSType, &desiredType,
526 &dataPtr__len__))
527 return NULL;
528 if ((dataPtr__out__ = malloc(dataPtr__len__)) == NULL)
529 {
530 PyErr_NoMemory();
531 goto dataPtr__error__;
532 }
533 _err = AEGetParamPtr(&_self->ob_itself,
534 theAEKeyword,
535 desiredType,
536 &typeCode,
537 dataPtr__out__, dataPtr__len__, &dataPtr__len__);
538 if (_err != noErr) return PyMac_Error(_err);
539 _res = Py_BuildValue("O&s#",
540 PyMac_BuildOSType, typeCode,
541 dataPtr__out__, dataPtr__len__);
542 free(dataPtr__out__);
543 dataPtr__error__: ;
544 return _res;
545}
546
547static PyObject *AEDesc_AEGetParamDesc(_self, _args)
548 AEDescObject *_self;
549 PyObject *_args;
550{
551 PyObject *_res = NULL;
552 OSErr _err;
553 AEKeyword theAEKeyword;
554 DescType desiredType;
555 AEDesc result;
556 if (!PyArg_ParseTuple(_args, "O&O&",
557 PyMac_GetOSType, &theAEKeyword,
558 PyMac_GetOSType, &desiredType))
559 return NULL;
560 _err = AEGetParamDesc(&_self->ob_itself,
561 theAEKeyword,
562 desiredType,
563 &result);
564 if (_err != noErr) return PyMac_Error(_err);
565 _res = Py_BuildValue("O&",
566 AEDesc_New, &result);
567 return _res;
568}
569
570static PyObject *AEDesc_AESizeOfParam(_self, _args)
571 AEDescObject *_self;
572 PyObject *_args;
573{
574 PyObject *_res = NULL;
575 OSErr _err;
576 AEKeyword theAEKeyword;
577 DescType typeCode;
578 Size dataSize;
579 if (!PyArg_ParseTuple(_args, "O&",
580 PyMac_GetOSType, &theAEKeyword))
581 return NULL;
582 _err = AESizeOfParam(&_self->ob_itself,
583 theAEKeyword,
584 &typeCode,
585 &dataSize);
586 if (_err != noErr) return PyMac_Error(_err);
587 _res = Py_BuildValue("O&l",
588 PyMac_BuildOSType, typeCode,
589 dataSize);
590 return _res;
591}
592
593static PyObject *AEDesc_AEDeleteParam(_self, _args)
594 AEDescObject *_self;
595 PyObject *_args;
596{
597 PyObject *_res = NULL;
598 OSErr _err;
599 AEKeyword theAEKeyword;
600 if (!PyArg_ParseTuple(_args, "O&",
601 PyMac_GetOSType, &theAEKeyword))
602 return NULL;
603 _err = AEDeleteParam(&_self->ob_itself,
604 theAEKeyword);
605 if (_err != noErr) return PyMac_Error(_err);
606 Py_INCREF(Py_None);
607 _res = Py_None;
608 return _res;
609}
610
611static PyObject *AEDesc_AEGetAttributePtr(_self, _args)
612 AEDescObject *_self;
613 PyObject *_args;
614{
615 PyObject *_res = NULL;
616 OSErr _err;
617 AEKeyword theAEKeyword;
618 DescType desiredType;
619 DescType typeCode;
620 char *dataPtr__out__;
621 long dataPtr__len__;
622 if (!PyArg_ParseTuple(_args, "O&O&l",
623 PyMac_GetOSType, &theAEKeyword,
624 PyMac_GetOSType, &desiredType,
625 &dataPtr__len__))
626 return NULL;
627 if ((dataPtr__out__ = malloc(dataPtr__len__)) == NULL)
628 {
629 PyErr_NoMemory();
630 goto dataPtr__error__;
631 }
632 _err = AEGetAttributePtr(&_self->ob_itself,
633 theAEKeyword,
634 desiredType,
635 &typeCode,
636 dataPtr__out__, dataPtr__len__, &dataPtr__len__);
637 if (_err != noErr) return PyMac_Error(_err);
638 _res = Py_BuildValue("O&s#",
639 PyMac_BuildOSType, typeCode,
640 dataPtr__out__, dataPtr__len__);
641 free(dataPtr__out__);
642 dataPtr__error__: ;
643 return _res;
644}
645
646static PyObject *AEDesc_AEGetAttributeDesc(_self, _args)
647 AEDescObject *_self;
648 PyObject *_args;
649{
650 PyObject *_res = NULL;
651 OSErr _err;
652 AEKeyword theAEKeyword;
653 DescType desiredType;
654 AEDesc result;
655 if (!PyArg_ParseTuple(_args, "O&O&",
656 PyMac_GetOSType, &theAEKeyword,
657 PyMac_GetOSType, &desiredType))
658 return NULL;
659 _err = AEGetAttributeDesc(&_self->ob_itself,
660 theAEKeyword,
661 desiredType,
662 &result);
663 if (_err != noErr) return PyMac_Error(_err);
664 _res = Py_BuildValue("O&",
665 AEDesc_New, &result);
666 return _res;
667}
668
669static PyObject *AEDesc_AESizeOfAttribute(_self, _args)
670 AEDescObject *_self;
671 PyObject *_args;
672{
673 PyObject *_res = NULL;
674 OSErr _err;
675 AEKeyword theAEKeyword;
676 DescType typeCode;
677 Size dataSize;
678 if (!PyArg_ParseTuple(_args, "O&",
679 PyMac_GetOSType, &theAEKeyword))
680 return NULL;
681 _err = AESizeOfAttribute(&_self->ob_itself,
682 theAEKeyword,
683 &typeCode,
684 &dataSize);
685 if (_err != noErr) return PyMac_Error(_err);
686 _res = Py_BuildValue("O&l",
687 PyMac_BuildOSType, typeCode,
688 dataSize);
689 return _res;
690}
691
692static PyObject *AEDesc_AEPutAttributePtr(_self, _args)
693 AEDescObject *_self;
694 PyObject *_args;
695{
696 PyObject *_res = NULL;
697 OSErr _err;
698 AEKeyword theAEKeyword;
699 DescType typeCode;
700 char *dataPtr__in__;
701 long dataPtr__len__;
702 if (!PyArg_ParseTuple(_args, "O&O&s#",
703 PyMac_GetOSType, &theAEKeyword,
704 PyMac_GetOSType, &typeCode,
705 &dataPtr__in__, &dataPtr__len__))
706 return NULL;
707 _err = AEPutAttributePtr(&_self->ob_itself,
708 theAEKeyword,
709 typeCode,
710 dataPtr__in__, dataPtr__len__);
711 if (_err != noErr) return PyMac_Error(_err);
712 Py_INCREF(Py_None);
713 _res = Py_None;
714 dataPtr__error__: ;
715 return _res;
716}
717
718static PyObject *AEDesc_AEPutAttributeDesc(_self, _args)
719 AEDescObject *_self;
720 PyObject *_args;
721{
722 PyObject *_res = NULL;
723 OSErr _err;
724 AEKeyword theAEKeyword;
725 AEDesc theAEDesc;
726 if (!PyArg_ParseTuple(_args, "O&O&",
727 PyMac_GetOSType, &theAEKeyword,
728 AEDesc_Convert, &theAEDesc))
729 return NULL;
730 _err = AEPutAttributeDesc(&_self->ob_itself,
731 theAEKeyword,
732 &theAEDesc);
733 if (_err != noErr) return PyMac_Error(_err);
734 Py_INCREF(Py_None);
735 _res = Py_None;
736 return _res;
737}
738
739static PyObject *AEDesc_AESend(_self, _args)
740 AEDescObject *_self;
741 PyObject *_args;
742{
743 PyObject *_res = NULL;
744 OSErr _err;
745 AppleEvent reply;
746 AESendMode sendMode;
747 AESendPriority sendPriority;
748 long timeOutInTicks;
749 if (!PyArg_ParseTuple(_args, "lhl",
750 &sendMode,
751 &sendPriority,
752 &timeOutInTicks))
753 return NULL;
754 _err = AESend(&_self->ob_itself,
755 &reply,
756 sendMode,
757 sendPriority,
758 timeOutInTicks,
Guido van Rossumb19a6451995-02-05 16:58:33 +0000759 upp_AEIdleProc,
760 (AEFilterUPP)0);
Guido van Rossum17448e21995-01-30 11:53:55 +0000761 if (_err != noErr) return PyMac_Error(_err);
762 _res = Py_BuildValue("O&",
763 AEDesc_New, &reply);
764 return _res;
765}
766
767static PyObject *AEDesc_AEResetTimer(_self, _args)
768 AEDescObject *_self;
769 PyObject *_args;
770{
771 PyObject *_res = NULL;
772 OSErr _err;
773 if (!PyArg_ParseTuple(_args, ""))
774 return NULL;
775 _err = AEResetTimer(&_self->ob_itself);
776 if (_err != noErr) return PyMac_Error(_err);
777 Py_INCREF(Py_None);
778 _res = Py_None;
779 return _res;
780}
781
782static PyObject *AEDesc_AESuspendTheCurrentEvent(_self, _args)
783 AEDescObject *_self;
784 PyObject *_args;
785{
786 PyObject *_res = NULL;
787 OSErr _err;
788 if (!PyArg_ParseTuple(_args, ""))
789 return NULL;
790 _err = AESuspendTheCurrentEvent(&_self->ob_itself);
791 if (_err != noErr) return PyMac_Error(_err);
792 Py_INCREF(Py_None);
793 _res = Py_None;
794 return _res;
795}
796
797static PyObject *AEDesc_AEResumeTheCurrentEvent(_self, _args)
798 AEDescObject *_self;
799 PyObject *_args;
800{
801 PyObject *_res = NULL;
802 OSErr _err;
803 AppleEvent reply;
Guido van Rossumb19a6451995-02-05 16:58:33 +0000804 AEEventHandlerUPP dispatcher__proc__ = upp_GenericEventHandler;
Guido van Rossum17448e21995-01-30 11:53:55 +0000805 PyObject *dispatcher;
806 if (!PyArg_ParseTuple(_args, "O&O",
807 AEDesc_Convert, &reply,
808 &dispatcher))
809 return NULL;
810 _err = AEResumeTheCurrentEvent(&_self->ob_itself,
811 &reply,
812 dispatcher__proc__, (long)dispatcher);
813 if (_err != noErr) return PyMac_Error(_err);
814 Py_INCREF(Py_None);
815 _res = Py_None;
Guido van Rossumb19a6451995-02-05 16:58:33 +0000816 Py_INCREF(dispatcher); /* XXX leak, but needed */
Guido van Rossum17448e21995-01-30 11:53:55 +0000817 return _res;
818}
819
820static PyObject *AEDesc_AESetTheCurrentEvent(_self, _args)
821 AEDescObject *_self;
822 PyObject *_args;
823{
824 PyObject *_res = NULL;
825 OSErr _err;
826 if (!PyArg_ParseTuple(_args, ""))
827 return NULL;
828 _err = AESetTheCurrentEvent(&_self->ob_itself);
829 if (_err != noErr) return PyMac_Error(_err);
830 Py_INCREF(Py_None);
831 _res = Py_None;
832 return _res;
833}
834
835static PyMethodDef AEDesc_methods[] = {
836 {"AECoerceDesc", (PyCFunction)AEDesc_AECoerceDesc, 1,
837 "(DescType toType) -> (AEDesc result)"},
838 {"AEDuplicateDesc", (PyCFunction)AEDesc_AEDuplicateDesc, 1,
839 "() -> (AEDesc result)"},
840 {"AECountItems", (PyCFunction)AEDesc_AECountItems, 1,
841 "() -> (long theCount)"},
842 {"AEPutPtr", (PyCFunction)AEDesc_AEPutPtr, 1,
843 "(long index, DescType typeCode, Buffer dataPtr) -> None"},
844 {"AEPutDesc", (PyCFunction)AEDesc_AEPutDesc, 1,
845 "(long index, AEDesc theAEDesc) -> None"},
846 {"AEGetNthPtr", (PyCFunction)AEDesc_AEGetNthPtr, 1,
847 "(long index, DescType desiredType, Buffer dataPtr) -> (AEKeyword theAEKeyword, DescType typeCode, Buffer dataPtr)"},
848 {"AEGetNthDesc", (PyCFunction)AEDesc_AEGetNthDesc, 1,
849 "(long index, DescType desiredType) -> (AEKeyword theAEKeyword, AEDesc result)"},
850 {"AESizeOfNthItem", (PyCFunction)AEDesc_AESizeOfNthItem, 1,
851 "(long index) -> (DescType typeCode, Size dataSize)"},
852 {"AEDeleteItem", (PyCFunction)AEDesc_AEDeleteItem, 1,
853 "(long index) -> None"},
854 {"AEPutKeyPtr", (PyCFunction)AEDesc_AEPutKeyPtr, 1,
855 "(AEKeyword theAEKeyword, DescType typeCode, Buffer dataPtr) -> None"},
856 {"AEPutKeyDesc", (PyCFunction)AEDesc_AEPutKeyDesc, 1,
857 "(AEKeyword theAEKeyword, AEDesc theAEDesc) -> None"},
858 {"AEGetKeyPtr", (PyCFunction)AEDesc_AEGetKeyPtr, 1,
859 "(AEKeyword theAEKeyword, DescType desiredType, Buffer dataPtr) -> (DescType typeCode, Buffer dataPtr)"},
860 {"AEGetKeyDesc", (PyCFunction)AEDesc_AEGetKeyDesc, 1,
861 "(AEKeyword theAEKeyword, DescType desiredType) -> (AEDesc result)"},
862 {"AESizeOfKeyDesc", (PyCFunction)AEDesc_AESizeOfKeyDesc, 1,
863 "(AEKeyword theAEKeyword) -> (DescType typeCode, Size dataSize)"},
864 {"AEDeleteKeyDesc", (PyCFunction)AEDesc_AEDeleteKeyDesc, 1,
865 "(AEKeyword theAEKeyword) -> None"},
866 {"AEPutParamPtr", (PyCFunction)AEDesc_AEPutParamPtr, 1,
867 "(AEKeyword theAEKeyword, DescType typeCode, Buffer dataPtr) -> None"},
868 {"AEPutParamDesc", (PyCFunction)AEDesc_AEPutParamDesc, 1,
869 "(AEKeyword theAEKeyword, AEDesc theAEDesc) -> None"},
870 {"AEGetParamPtr", (PyCFunction)AEDesc_AEGetParamPtr, 1,
871 "(AEKeyword theAEKeyword, DescType desiredType, Buffer dataPtr) -> (DescType typeCode, Buffer dataPtr)"},
872 {"AEGetParamDesc", (PyCFunction)AEDesc_AEGetParamDesc, 1,
873 "(AEKeyword theAEKeyword, DescType desiredType) -> (AEDesc result)"},
874 {"AESizeOfParam", (PyCFunction)AEDesc_AESizeOfParam, 1,
875 "(AEKeyword theAEKeyword) -> (DescType typeCode, Size dataSize)"},
876 {"AEDeleteParam", (PyCFunction)AEDesc_AEDeleteParam, 1,
877 "(AEKeyword theAEKeyword) -> None"},
878 {"AEGetAttributePtr", (PyCFunction)AEDesc_AEGetAttributePtr, 1,
879 "(AEKeyword theAEKeyword, DescType desiredType, Buffer dataPtr) -> (DescType typeCode, Buffer dataPtr)"},
880 {"AEGetAttributeDesc", (PyCFunction)AEDesc_AEGetAttributeDesc, 1,
881 "(AEKeyword theAEKeyword, DescType desiredType) -> (AEDesc result)"},
882 {"AESizeOfAttribute", (PyCFunction)AEDesc_AESizeOfAttribute, 1,
883 "(AEKeyword theAEKeyword) -> (DescType typeCode, Size dataSize)"},
884 {"AEPutAttributePtr", (PyCFunction)AEDesc_AEPutAttributePtr, 1,
885 "(AEKeyword theAEKeyword, DescType typeCode, Buffer dataPtr) -> None"},
886 {"AEPutAttributeDesc", (PyCFunction)AEDesc_AEPutAttributeDesc, 1,
887 "(AEKeyword theAEKeyword, AEDesc theAEDesc) -> None"},
888 {"AESend", (PyCFunction)AEDesc_AESend, 1,
889 "(AESendMode sendMode, AESendPriority sendPriority, long timeOutInTicks) -> (AppleEvent reply)"},
890 {"AEResetTimer", (PyCFunction)AEDesc_AEResetTimer, 1,
891 "() -> None"},
892 {"AESuspendTheCurrentEvent", (PyCFunction)AEDesc_AESuspendTheCurrentEvent, 1,
893 "() -> None"},
894 {"AEResumeTheCurrentEvent", (PyCFunction)AEDesc_AEResumeTheCurrentEvent, 1,
895 "(AppleEvent reply, EventHandler dispatcher) -> None"},
896 {"AESetTheCurrentEvent", (PyCFunction)AEDesc_AESetTheCurrentEvent, 1,
897 "() -> None"},
898 {NULL, NULL, 0}
899};
900
901static PyMethodChain AEDesc_chain = { AEDesc_methods, NULL };
902
903static PyObject *AEDesc_getattr(self, name)
904 AEDescObject *self;
905 char *name;
906{
907
908 if (strcmp(name, "type") == 0)
909 return PyMac_BuildOSType(self->ob_itself.descriptorType);
910 if (strcmp(name, "data") == 0) {
911 PyObject *res;
912 char state;
913 state = HGetState(self->ob_itself.dataHandle);
914 HLock(self->ob_itself.dataHandle);
915 res = PyString_FromStringAndSize(
916 *self->ob_itself.dataHandle,
917 GetHandleSize(self->ob_itself.dataHandle));
918 HUnlock(self->ob_itself.dataHandle);
919 HSetState(self->ob_itself.dataHandle, state);
920 return res;
921 }
922 if (strcmp(name, "__members__") == 0)
923 return Py_BuildValue("[ss]", "data", "type");
924
925 return Py_FindMethodInChain(&AEDesc_chain, (PyObject *)self, name);
926}
927
928#define AEDesc_setattr NULL
929
930static PyTypeObject AEDesc_Type = {
931 PyObject_HEAD_INIT(&PyType_Type)
932 0, /*ob_size*/
933 "AEDesc", /*tp_name*/
934 sizeof(AEDescObject), /*tp_basicsize*/
935 0, /*tp_itemsize*/
936 /* methods */
937 (destructor) AEDesc_dealloc, /*tp_dealloc*/
938 0, /*tp_print*/
939 (getattrfunc) AEDesc_getattr, /*tp_getattr*/
940 (setattrfunc) AEDesc_setattr, /*tp_setattr*/
941};
942
943/* --------------------- End object type AEDesc --------------------- */
944
945
946static PyObject *AE_AECreateDesc(_self, _args)
947 PyObject *_self;
948 PyObject *_args;
949{
950 PyObject *_res = NULL;
951 OSErr _err;
952 DescType typeCode;
953 char *dataPtr__in__;
954 long dataPtr__len__;
955 AEDesc result;
956 if (!PyArg_ParseTuple(_args, "O&s#",
957 PyMac_GetOSType, &typeCode,
958 &dataPtr__in__, &dataPtr__len__))
959 return NULL;
960 _err = AECreateDesc(typeCode,
961 dataPtr__in__, dataPtr__len__,
962 &result);
963 if (_err != noErr) return PyMac_Error(_err);
964 _res = Py_BuildValue("O&",
965 AEDesc_New, &result);
966 dataPtr__error__: ;
967 return _res;
968}
969
970static PyObject *AE_AECoercePtr(_self, _args)
971 PyObject *_self;
972 PyObject *_args;
973{
974 PyObject *_res = NULL;
975 OSErr _err;
976 DescType typeCode;
977 char *dataPtr__in__;
978 long dataPtr__len__;
979 DescType toType;
980 AEDesc result;
981 if (!PyArg_ParseTuple(_args, "O&s#O&",
982 PyMac_GetOSType, &typeCode,
983 &dataPtr__in__, &dataPtr__len__,
984 PyMac_GetOSType, &toType))
985 return NULL;
986 _err = AECoercePtr(typeCode,
987 dataPtr__in__, dataPtr__len__,
988 toType,
989 &result);
990 if (_err != noErr) return PyMac_Error(_err);
991 _res = Py_BuildValue("O&",
992 AEDesc_New, &result);
993 dataPtr__error__: ;
994 return _res;
995}
996
997static PyObject *AE_AECreateList(_self, _args)
998 PyObject *_self;
999 PyObject *_args;
1000{
1001 PyObject *_res = NULL;
1002 OSErr _err;
1003 char *factoringPtr__in__;
1004 long factoringPtr__len__;
1005 Boolean isRecord;
1006 AEDescList resultList;
1007 if (!PyArg_ParseTuple(_args, "s#b",
1008 &factoringPtr__in__, &factoringPtr__len__,
1009 &isRecord))
1010 return NULL;
1011 _err = AECreateList(factoringPtr__in__, factoringPtr__len__,
1012 isRecord,
1013 &resultList);
1014 if (_err != noErr) return PyMac_Error(_err);
1015 _res = Py_BuildValue("O&",
1016 AEDesc_New, &resultList);
1017 factoringPtr__error__: ;
1018 return _res;
1019}
1020
1021static PyObject *AE_AECreateAppleEvent(_self, _args)
1022 PyObject *_self;
1023 PyObject *_args;
1024{
1025 PyObject *_res = NULL;
1026 OSErr _err;
1027 AEEventClass theAEEventClass;
1028 AEEventID theAEEventID;
1029 AEAddressDesc target;
1030 short returnID;
1031 long transactionID;
1032 AppleEvent result;
1033 if (!PyArg_ParseTuple(_args, "O&O&O&hl",
1034 PyMac_GetOSType, &theAEEventClass,
1035 PyMac_GetOSType, &theAEEventID,
1036 AEDesc_Convert, &target,
1037 &returnID,
1038 &transactionID))
1039 return NULL;
1040 _err = AECreateAppleEvent(theAEEventClass,
1041 theAEEventID,
1042 &target,
1043 returnID,
1044 transactionID,
1045 &result);
1046 if (_err != noErr) return PyMac_Error(_err);
1047 _res = Py_BuildValue("O&",
1048 AEDesc_New, &result);
1049 return _res;
1050}
1051
1052static PyObject *AE_AEProcessAppleEvent(_self, _args)
1053 PyObject *_self;
1054 PyObject *_args;
1055{
1056 PyObject *_res = NULL;
1057 OSErr _err;
1058 EventRecord theEventRecord;
1059 if (!PyArg_ParseTuple(_args, "O&",
1060 PyMac_GetEventRecord, &theEventRecord))
1061 return NULL;
1062 _err = AEProcessAppleEvent(&theEventRecord);
1063 if (_err != noErr) return PyMac_Error(_err);
1064 Py_INCREF(Py_None);
1065 _res = Py_None;
1066 return _res;
1067}
1068
1069static PyObject *AE_AEGetTheCurrentEvent(_self, _args)
1070 PyObject *_self;
1071 PyObject *_args;
1072{
1073 PyObject *_res = NULL;
1074 OSErr _err;
1075 AppleEvent theAppleEvent;
1076 if (!PyArg_ParseTuple(_args, ""))
1077 return NULL;
1078 _err = AEGetTheCurrentEvent(&theAppleEvent);
1079 if (_err != noErr) return PyMac_Error(_err);
1080 _res = Py_BuildValue("O&",
1081 AEDesc_New, &theAppleEvent);
1082 return _res;
1083}
1084
1085static PyObject *AE_AEGetInteractionAllowed(_self, _args)
1086 PyObject *_self;
1087 PyObject *_args;
1088{
1089 PyObject *_res = NULL;
1090 OSErr _err;
1091 AEInteractAllowed level;
1092 if (!PyArg_ParseTuple(_args, ""))
1093 return NULL;
1094 _err = AEGetInteractionAllowed(&level);
1095 if (_err != noErr) return PyMac_Error(_err);
1096 _res = Py_BuildValue("b",
1097 level);
1098 return _res;
1099}
1100
1101static PyObject *AE_AESetInteractionAllowed(_self, _args)
1102 PyObject *_self;
1103 PyObject *_args;
1104{
1105 PyObject *_res = NULL;
1106 OSErr _err;
1107 AEInteractAllowed level;
1108 if (!PyArg_ParseTuple(_args, "b",
1109 &level))
1110 return NULL;
1111 _err = AESetInteractionAllowed(level);
1112 if (_err != noErr) return PyMac_Error(_err);
1113 Py_INCREF(Py_None);
1114 _res = Py_None;
1115 return _res;
1116}
1117
1118static PyObject *AE_AEInteractWithUser(_self, _args)
1119 PyObject *_self;
1120 PyObject *_args;
1121{
1122 PyObject *_res = NULL;
1123 OSErr _err;
1124 long timeOutInTicks;
1125 if (!PyArg_ParseTuple(_args, "l",
1126 &timeOutInTicks))
1127 return NULL;
1128 _err = AEInteractWithUser(timeOutInTicks,
1129 (NMRecPtr)0,
Guido van Rossumb19a6451995-02-05 16:58:33 +00001130 upp_AEIdleProc);
Guido van Rossum17448e21995-01-30 11:53:55 +00001131 if (_err != noErr) return PyMac_Error(_err);
1132 Py_INCREF(Py_None);
1133 _res = Py_None;
1134 return _res;
1135}
1136
1137static PyObject *AE_AEInstallEventHandler(_self, _args)
1138 PyObject *_self;
1139 PyObject *_args;
1140{
1141 PyObject *_res = NULL;
1142 OSErr _err;
1143 AEEventClass theAEEventClass;
1144 AEEventID theAEEventID;
Guido van Rossumb19a6451995-02-05 16:58:33 +00001145 AEEventHandlerUPP handler__proc__ = upp_GenericEventHandler;
Guido van Rossum17448e21995-01-30 11:53:55 +00001146 PyObject *handler;
1147 if (!PyArg_ParseTuple(_args, "O&O&O",
1148 PyMac_GetOSType, &theAEEventClass,
1149 PyMac_GetOSType, &theAEEventID,
1150 &handler))
1151 return NULL;
1152 _err = AEInstallEventHandler(theAEEventClass,
1153 theAEEventID,
1154 handler__proc__, (long)handler,
1155 0);
1156 if (_err != noErr) return PyMac_Error(_err);
1157 Py_INCREF(Py_None);
1158 _res = Py_None;
Guido van Rossumb19a6451995-02-05 16:58:33 +00001159 Py_INCREF(handler); /* XXX leak, but needed */
Guido van Rossum17448e21995-01-30 11:53:55 +00001160 return _res;
1161}
1162
1163static PyObject *AE_AERemoveEventHandler(_self, _args)
1164 PyObject *_self;
1165 PyObject *_args;
1166{
1167 PyObject *_res = NULL;
1168 OSErr _err;
1169 AEEventClass theAEEventClass;
1170 AEEventID theAEEventID;
1171 if (!PyArg_ParseTuple(_args, "O&O&",
1172 PyMac_GetOSType, &theAEEventClass,
1173 PyMac_GetOSType, &theAEEventID))
1174 return NULL;
1175 _err = AERemoveEventHandler(theAEEventClass,
1176 theAEEventID,
Guido van Rossumb19a6451995-02-05 16:58:33 +00001177 upp_GenericEventHandler,
Guido van Rossum17448e21995-01-30 11:53:55 +00001178 0);
1179 if (_err != noErr) return PyMac_Error(_err);
1180 Py_INCREF(Py_None);
1181 _res = Py_None;
1182 return _res;
1183}
1184
1185static PyObject *AE_AEManagerInfo(_self, _args)
1186 PyObject *_self;
1187 PyObject *_args;
1188{
1189 PyObject *_res = NULL;
1190 OSErr _err;
1191 AEKeyword keyWord;
1192 long result;
1193 if (!PyArg_ParseTuple(_args, "O&",
1194 PyMac_GetOSType, &keyWord))
1195 return NULL;
1196 _err = AEManagerInfo(keyWord,
1197 &result);
1198 if (_err != noErr) return PyMac_Error(_err);
1199 _res = Py_BuildValue("l",
1200 result);
1201 return _res;
1202}
1203
1204static PyMethodDef AE_methods[] = {
1205 {"AECreateDesc", (PyCFunction)AE_AECreateDesc, 1,
1206 "(DescType typeCode, Buffer dataPtr) -> (AEDesc result)"},
1207 {"AECoercePtr", (PyCFunction)AE_AECoercePtr, 1,
1208 "(DescType typeCode, Buffer dataPtr, DescType toType) -> (AEDesc result)"},
1209 {"AECreateList", (PyCFunction)AE_AECreateList, 1,
1210 "(Buffer factoringPtr, Boolean isRecord) -> (AEDescList resultList)"},
1211 {"AECreateAppleEvent", (PyCFunction)AE_AECreateAppleEvent, 1,
1212 "(AEEventClass theAEEventClass, AEEventID theAEEventID, AEAddressDesc target, short returnID, long transactionID) -> (AppleEvent result)"},
1213 {"AEProcessAppleEvent", (PyCFunction)AE_AEProcessAppleEvent, 1,
1214 "(EventRecord theEventRecord) -> None"},
1215 {"AEGetTheCurrentEvent", (PyCFunction)AE_AEGetTheCurrentEvent, 1,
1216 "() -> (AppleEvent theAppleEvent)"},
1217 {"AEGetInteractionAllowed", (PyCFunction)AE_AEGetInteractionAllowed, 1,
1218 "() -> (AEInteractAllowed level)"},
1219 {"AESetInteractionAllowed", (PyCFunction)AE_AESetInteractionAllowed, 1,
1220 "(AEInteractAllowed level) -> None"},
1221 {"AEInteractWithUser", (PyCFunction)AE_AEInteractWithUser, 1,
1222 "(long timeOutInTicks) -> None"},
1223 {"AEInstallEventHandler", (PyCFunction)AE_AEInstallEventHandler, 1,
1224 "(AEEventClass theAEEventClass, AEEventID theAEEventID, EventHandler handler) -> None"},
1225 {"AERemoveEventHandler", (PyCFunction)AE_AERemoveEventHandler, 1,
1226 "(AEEventClass theAEEventClass, AEEventID theAEEventID) -> None"},
1227 {"AEManagerInfo", (PyCFunction)AE_AEManagerInfo, 1,
1228 "(AEKeyword keyWord) -> (long result)"},
1229 {NULL, NULL, 0}
1230};
1231
1232
1233
1234static pascal OSErr
1235GenericEventHandler(const AppleEvent *request, AppleEvent *reply, long refcon)
1236{
1237 PyObject *handler = (PyObject *)refcon;
1238 AEDescObject *requestObject, *replyObject;
1239 PyObject *args, *res;
1240 if ((requestObject = (AEDescObject *)AEDesc_New(request)) == NULL) {
1241 return -1;
1242 }
1243 if ((replyObject = (AEDescObject *)AEDesc_New(reply)) == NULL) {
1244 Py_DECREF(requestObject);
1245 return -1;
1246 }
1247 if ((args = Py_BuildValue("OO", requestObject, replyObject)) == NULL) {
1248 Py_DECREF(requestObject);
1249 Py_DECREF(replyObject);
1250 return -1;
1251 }
1252 res = PyEval_CallObject(handler, args);
1253 requestObject->ob_itself.descriptorType = 'null';
1254 requestObject->ob_itself.dataHandle = NULL;
1255 replyObject->ob_itself.descriptorType = 'null';
1256 replyObject->ob_itself.dataHandle = NULL;
1257 Py_DECREF(args);
1258 if (res == NULL)
1259 return -1;
1260 Py_DECREF(res);
1261 return noErr;
1262}
1263
1264
1265void initAE()
1266{
1267 PyObject *m;
1268 PyObject *d;
1269
1270
1271
Guido van Rossumb19a6451995-02-05 16:58:33 +00001272 upp_AEIdleProc = NewAEIdleProc(AEIdleProc);
1273 upp_GenericEventHandler = NewAEEventHandlerProc(GenericEventHandler);
1274
Guido van Rossum17448e21995-01-30 11:53:55 +00001275
1276 m = Py_InitModule("AE", AE_methods);
1277 d = PyModule_GetDict(m);
1278 AE_Error = PyMac_GetOSErrException();
1279 if (AE_Error == NULL ||
1280 PyDict_SetItemString(d, "Error", AE_Error) != 0)
1281 Py_FatalError("can't initialize AE.Error");
1282}
1283
1284/* ========================= End module AE ========================== */
1285