ยปCore Development>Code coverage>Mac/Modules/ae/_AEmodule.c

Python code coverage for Mac/Modules/ae/_AEmodule.c

#countcontent
1n/a
2n/a/* =========================== Module _AE =========================== */
3n/a
4n/a#include "Python.h"
5n/a
6n/a
7n/a
8n/a#include "pymactoolbox.h"
9n/a
10n/a#ifndef HAVE_OSX105_SDK
11n/atypedef SInt32 SRefCon;
12n/a#endif
13n/a
14n/a/* Macro to test whether a weak-loaded CFM function exists */
15n/a#define PyMac_PRECHECK(rtn) do { if ( &rtn == NULL ) {\
16n/a PyErr_SetString(PyExc_NotImplementedError, \
17n/a "Not available in this shared library/OS version"); \
18n/a return NULL; \
19n/a }} while(0)
20n/a
21n/a
22n/a#include <Carbon/Carbon.h>
23n/a
24n/a#ifdef USE_TOOLBOX_OBJECT_GLUE
25n/aextern PyObject *_AEDesc_New(AEDesc *);
26n/aextern int _AEDesc_Convert(PyObject *, AEDesc *);
27n/a
28n/a#define AEDesc_New _AEDesc_New
29n/a#define AEDesc_NewBorrowed _AEDesc_NewBorrowed
30n/a#define AEDesc_Convert _AEDesc_Convert
31n/a#endif
32n/a
33n/atypedef long refcontype;
34n/a
35n/astatic pascal OSErr GenericEventHandler(const AppleEvent *request, AppleEvent *reply, refcontype refcon); /* Forward */
36n/a
37n/aAEEventHandlerUPP upp_GenericEventHandler;
38n/a
39n/astatic pascal Boolean AEIdleProc(EventRecord *theEvent, long *sleepTime, RgnHandle *mouseRgn)
40n/a{
41n/a if ( PyOS_InterruptOccurred() )
42n/a return 1;
43n/a return 0;
44n/a}
45n/a
46n/aAEIdleUPP upp_AEIdleProc;
47n/a
48n/astatic PyObject *AE_Error;
49n/a
50n/a/* ----------------------- Object type AEDesc ----------------------- */
51n/a
52n/aPyTypeObject AEDesc_Type;
53n/a
54n/a#define AEDesc_Check(x) ((x)->ob_type == &AEDesc_Type || PyObject_TypeCheck((x), &AEDesc_Type))
55n/a
56n/atypedef struct AEDescObject {
57n/a PyObject_HEAD
58n/a AEDesc ob_itself;
59n/a int ob_owned;
60n/a} AEDescObject;
61n/a
62n/aPyObject *AEDesc_New(AEDesc *itself)
63n/a{
64n/a AEDescObject *it;
65n/a it = PyObject_NEW(AEDescObject, &AEDesc_Type);
66n/a if (it == NULL) return NULL;
67n/a it->ob_itself = *itself;
68n/a it->ob_owned = 1;
69n/a return (PyObject *)it;
70n/a}
71n/a
72n/aint AEDesc_Convert(PyObject *v, AEDesc *p_itself)
73n/a{
74n/a if (!AEDesc_Check(v))
75n/a {
76n/a PyErr_SetString(PyExc_TypeError, "AEDesc required");
77n/a return 0;
78n/a }
79n/a *p_itself = ((AEDescObject *)v)->ob_itself;
80n/a return 1;
81n/a}
82n/a
83n/astatic void AEDesc_dealloc(AEDescObject *self)
84n/a{
85n/a if (self->ob_owned) AEDisposeDesc(&self->ob_itself);
86n/a self->ob_type->tp_free((PyObject *)self);
87n/a}
88n/a
89n/astatic PyObject *AEDesc_AECoerceDesc(AEDescObject *_self, PyObject *_args)
90n/a{
91n/a PyObject *_res = NULL;
92n/a OSErr _err;
93n/a DescType toType;
94n/a AEDesc result;
95n/a#ifndef AECoerceDesc
96n/a PyMac_PRECHECK(AECoerceDesc);
97n/a#endif
98n/a if (!PyArg_ParseTuple(_args, "O&",
99n/a PyMac_GetOSType, &toType))
100n/a return NULL;
101n/a _err = AECoerceDesc(&_self->ob_itself,
102n/a toType,
103n/a &result);
104n/a if (_err != noErr) return PyMac_Error(_err);
105n/a _res = Py_BuildValue("O&",
106n/a AEDesc_New, &result);
107n/a return _res;
108n/a}
109n/a
110n/astatic PyObject *AEDesc_AEDuplicateDesc(AEDescObject *_self, PyObject *_args)
111n/a{
112n/a PyObject *_res = NULL;
113n/a OSErr _err;
114n/a AEDesc result;
115n/a#ifndef AEDuplicateDesc
116n/a PyMac_PRECHECK(AEDuplicateDesc);
117n/a#endif
118n/a if (!PyArg_ParseTuple(_args, ""))
119n/a return NULL;
120n/a _err = AEDuplicateDesc(&_self->ob_itself,
121n/a &result);
122n/a if (_err != noErr) return PyMac_Error(_err);
123n/a _res = Py_BuildValue("O&",
124n/a AEDesc_New, &result);
125n/a return _res;
126n/a}
127n/a
128n/astatic PyObject *AEDesc_AECountItems(AEDescObject *_self, PyObject *_args)
129n/a{
130n/a PyObject *_res = NULL;
131n/a OSErr _err;
132n/a long theCount;
133n/a#ifndef AECountItems
134n/a PyMac_PRECHECK(AECountItems);
135n/a#endif
136n/a if (!PyArg_ParseTuple(_args, ""))
137n/a return NULL;
138n/a _err = AECountItems(&_self->ob_itself,
139n/a &theCount);
140n/a if (_err != noErr) return PyMac_Error(_err);
141n/a _res = Py_BuildValue("l",
142n/a theCount);
143n/a return _res;
144n/a}
145n/a
146n/astatic PyObject *AEDesc_AEPutPtr(AEDescObject *_self, PyObject *_args)
147n/a{
148n/a PyObject *_res = NULL;
149n/a OSErr _err;
150n/a long index;
151n/a DescType typeCode;
152n/a char *dataPtr__in__;
153n/a long dataPtr__len__;
154n/a int dataPtr__in_len__;
155n/a#ifndef AEPutPtr
156n/a PyMac_PRECHECK(AEPutPtr);
157n/a#endif
158n/a if (!PyArg_ParseTuple(_args, "lO&s#",
159n/a &index,
160n/a PyMac_GetOSType, &typeCode,
161n/a &dataPtr__in__, &dataPtr__in_len__))
162n/a return NULL;
163n/a dataPtr__len__ = dataPtr__in_len__;
164n/a _err = AEPutPtr(&_self->ob_itself,
165n/a index,
166n/a typeCode,
167n/a dataPtr__in__, dataPtr__len__);
168n/a if (_err != noErr) return PyMac_Error(_err);
169n/a Py_INCREF(Py_None);
170n/a _res = Py_None;
171n/a return _res;
172n/a}
173n/a
174n/astatic PyObject *AEDesc_AEPutDesc(AEDescObject *_self, PyObject *_args)
175n/a{
176n/a PyObject *_res = NULL;
177n/a OSErr _err;
178n/a long index;
179n/a AEDesc theAEDesc;
180n/a#ifndef AEPutDesc
181n/a PyMac_PRECHECK(AEPutDesc);
182n/a#endif
183n/a if (!PyArg_ParseTuple(_args, "lO&",
184n/a &index,
185n/a AEDesc_Convert, &theAEDesc))
186n/a return NULL;
187n/a _err = AEPutDesc(&_self->ob_itself,
188n/a index,
189n/a &theAEDesc);
190n/a if (_err != noErr) return PyMac_Error(_err);
191n/a Py_INCREF(Py_None);
192n/a _res = Py_None;
193n/a return _res;
194n/a}
195n/a
196n/astatic PyObject *AEDesc_AEGetNthPtr(AEDescObject *_self, PyObject *_args)
197n/a{
198n/a PyObject *_res = NULL;
199n/a OSErr _err;
200n/a long index;
201n/a DescType desiredType;
202n/a AEKeyword theAEKeyword;
203n/a DescType typeCode;
204n/a char *dataPtr__out__;
205n/a long dataPtr__len__;
206n/a int dataPtr__in_len__;
207n/a#ifndef AEGetNthPtr
208n/a PyMac_PRECHECK(AEGetNthPtr);
209n/a#endif
210n/a if (!PyArg_ParseTuple(_args, "lO&i",
211n/a &index,
212n/a PyMac_GetOSType, &desiredType,
213n/a &dataPtr__in_len__))
214n/a return NULL;
215n/a if ((dataPtr__out__ = malloc(dataPtr__in_len__)) == NULL)
216n/a {
217n/a PyErr_NoMemory();
218n/a goto dataPtr__error__;
219n/a }
220n/a dataPtr__len__ = dataPtr__in_len__;
221n/a _err = AEGetNthPtr(&_self->ob_itself,
222n/a index,
223n/a desiredType,
224n/a &theAEKeyword,
225n/a &typeCode,
226n/a dataPtr__out__, dataPtr__len__, &dataPtr__len__);
227n/a if (_err != noErr) return PyMac_Error(_err);
228n/a _res = Py_BuildValue("O&O&s#",
229n/a PyMac_BuildOSType, theAEKeyword,
230n/a PyMac_BuildOSType, typeCode,
231n/a dataPtr__out__, (int)dataPtr__len__);
232n/a free(dataPtr__out__);
233n/a dataPtr__error__: ;
234n/a return _res;
235n/a}
236n/a
237n/astatic PyObject *AEDesc_AEGetNthDesc(AEDescObject *_self, PyObject *_args)
238n/a{
239n/a PyObject *_res = NULL;
240n/a OSErr _err;
241n/a long index;
242n/a DescType desiredType;
243n/a AEKeyword theAEKeyword;
244n/a AEDesc result;
245n/a#ifndef AEGetNthDesc
246n/a PyMac_PRECHECK(AEGetNthDesc);
247n/a#endif
248n/a if (!PyArg_ParseTuple(_args, "lO&",
249n/a &index,
250n/a PyMac_GetOSType, &desiredType))
251n/a return NULL;
252n/a _err = AEGetNthDesc(&_self->ob_itself,
253n/a index,
254n/a desiredType,
255n/a &theAEKeyword,
256n/a &result);
257n/a if (_err != noErr) return PyMac_Error(_err);
258n/a _res = Py_BuildValue("O&O&",
259n/a PyMac_BuildOSType, theAEKeyword,
260n/a AEDesc_New, &result);
261n/a return _res;
262n/a}
263n/a
264n/astatic PyObject *AEDesc_AESizeOfNthItem(AEDescObject *_self, PyObject *_args)
265n/a{
266n/a PyObject *_res = NULL;
267n/a OSErr _err;
268n/a long index;
269n/a DescType typeCode;
270n/a Size dataSize;
271n/a#ifndef AESizeOfNthItem
272n/a PyMac_PRECHECK(AESizeOfNthItem);
273n/a#endif
274n/a if (!PyArg_ParseTuple(_args, "l",
275n/a &index))
276n/a return NULL;
277n/a _err = AESizeOfNthItem(&_self->ob_itself,
278n/a index,
279n/a &typeCode,
280n/a &dataSize);
281n/a if (_err != noErr) return PyMac_Error(_err);
282n/a _res = Py_BuildValue("O&l",
283n/a PyMac_BuildOSType, typeCode,
284n/a dataSize);
285n/a return _res;
286n/a}
287n/a
288n/astatic PyObject *AEDesc_AEDeleteItem(AEDescObject *_self, PyObject *_args)
289n/a{
290n/a PyObject *_res = NULL;
291n/a OSErr _err;
292n/a long index;
293n/a#ifndef AEDeleteItem
294n/a PyMac_PRECHECK(AEDeleteItem);
295n/a#endif
296n/a if (!PyArg_ParseTuple(_args, "l",
297n/a &index))
298n/a return NULL;
299n/a _err = AEDeleteItem(&_self->ob_itself,
300n/a index);
301n/a if (_err != noErr) return PyMac_Error(_err);
302n/a Py_INCREF(Py_None);
303n/a _res = Py_None;
304n/a return _res;
305n/a}
306n/a
307n/astatic PyObject *AEDesc_AEPutParamPtr(AEDescObject *_self, PyObject *_args)
308n/a{
309n/a PyObject *_res = NULL;
310n/a OSErr _err;
311n/a AEKeyword theAEKeyword;
312n/a DescType typeCode;
313n/a char *dataPtr__in__;
314n/a long dataPtr__len__;
315n/a int dataPtr__in_len__;
316n/a#ifndef AEPutParamPtr
317n/a PyMac_PRECHECK(AEPutParamPtr);
318n/a#endif
319n/a if (!PyArg_ParseTuple(_args, "O&O&s#",
320n/a PyMac_GetOSType, &theAEKeyword,
321n/a PyMac_GetOSType, &typeCode,
322n/a &dataPtr__in__, &dataPtr__in_len__))
323n/a return NULL;
324n/a dataPtr__len__ = dataPtr__in_len__;
325n/a _err = AEPutParamPtr(&_self->ob_itself,
326n/a theAEKeyword,
327n/a typeCode,
328n/a dataPtr__in__, dataPtr__len__);
329n/a if (_err != noErr) return PyMac_Error(_err);
330n/a Py_INCREF(Py_None);
331n/a _res = Py_None;
332n/a return _res;
333n/a}
334n/a
335n/astatic PyObject *AEDesc_AEPutParamDesc(AEDescObject *_self, PyObject *_args)
336n/a{
337n/a PyObject *_res = NULL;
338n/a OSErr _err;
339n/a AEKeyword theAEKeyword;
340n/a AEDesc theAEDesc;
341n/a#ifndef AEPutParamDesc
342n/a PyMac_PRECHECK(AEPutParamDesc);
343n/a#endif
344n/a if (!PyArg_ParseTuple(_args, "O&O&",
345n/a PyMac_GetOSType, &theAEKeyword,
346n/a AEDesc_Convert, &theAEDesc))
347n/a return NULL;
348n/a _err = AEPutParamDesc(&_self->ob_itself,
349n/a theAEKeyword,
350n/a &theAEDesc);
351n/a if (_err != noErr) return PyMac_Error(_err);
352n/a Py_INCREF(Py_None);
353n/a _res = Py_None;
354n/a return _res;
355n/a}
356n/a
357n/astatic PyObject *AEDesc_AEGetParamPtr(AEDescObject *_self, PyObject *_args)
358n/a{
359n/a PyObject *_res = NULL;
360n/a OSErr _err;
361n/a AEKeyword theAEKeyword;
362n/a DescType desiredType;
363n/a DescType typeCode;
364n/a char *dataPtr__out__;
365n/a long dataPtr__len__;
366n/a int dataPtr__in_len__;
367n/a#ifndef AEGetParamPtr
368n/a PyMac_PRECHECK(AEGetParamPtr);
369n/a#endif
370n/a if (!PyArg_ParseTuple(_args, "O&O&i",
371n/a PyMac_GetOSType, &theAEKeyword,
372n/a PyMac_GetOSType, &desiredType,
373n/a &dataPtr__in_len__))
374n/a return NULL;
375n/a if ((dataPtr__out__ = malloc(dataPtr__in_len__)) == NULL)
376n/a {
377n/a PyErr_NoMemory();
378n/a goto dataPtr__error__;
379n/a }
380n/a dataPtr__len__ = dataPtr__in_len__;
381n/a _err = AEGetParamPtr(&_self->ob_itself,
382n/a theAEKeyword,
383n/a desiredType,
384n/a &typeCode,
385n/a dataPtr__out__, dataPtr__len__, &dataPtr__len__);
386n/a if (_err != noErr) return PyMac_Error(_err);
387n/a _res = Py_BuildValue("O&s#",
388n/a PyMac_BuildOSType, typeCode,
389n/a dataPtr__out__, (int)dataPtr__len__);
390n/a free(dataPtr__out__);
391n/a dataPtr__error__: ;
392n/a return _res;
393n/a}
394n/a
395n/astatic PyObject *AEDesc_AEGetParamDesc(AEDescObject *_self, PyObject *_args)
396n/a{
397n/a PyObject *_res = NULL;
398n/a OSErr _err;
399n/a AEKeyword theAEKeyword;
400n/a DescType desiredType;
401n/a AEDesc result;
402n/a#ifndef AEGetParamDesc
403n/a PyMac_PRECHECK(AEGetParamDesc);
404n/a#endif
405n/a if (!PyArg_ParseTuple(_args, "O&O&",
406n/a PyMac_GetOSType, &theAEKeyword,
407n/a PyMac_GetOSType, &desiredType))
408n/a return NULL;
409n/a _err = AEGetParamDesc(&_self->ob_itself,
410n/a theAEKeyword,
411n/a desiredType,
412n/a &result);
413n/a if (_err != noErr) return PyMac_Error(_err);
414n/a _res = Py_BuildValue("O&",
415n/a AEDesc_New, &result);
416n/a return _res;
417n/a}
418n/a
419n/astatic PyObject *AEDesc_AESizeOfParam(AEDescObject *_self, PyObject *_args)
420n/a{
421n/a PyObject *_res = NULL;
422n/a OSErr _err;
423n/a AEKeyword theAEKeyword;
424n/a DescType typeCode;
425n/a Size dataSize;
426n/a#ifndef AESizeOfParam
427n/a PyMac_PRECHECK(AESizeOfParam);
428n/a#endif
429n/a if (!PyArg_ParseTuple(_args, "O&",
430n/a PyMac_GetOSType, &theAEKeyword))
431n/a return NULL;
432n/a _err = AESizeOfParam(&_self->ob_itself,
433n/a theAEKeyword,
434n/a &typeCode,
435n/a &dataSize);
436n/a if (_err != noErr) return PyMac_Error(_err);
437n/a _res = Py_BuildValue("O&l",
438n/a PyMac_BuildOSType, typeCode,
439n/a dataSize);
440n/a return _res;
441n/a}
442n/a
443n/astatic PyObject *AEDesc_AEDeleteParam(AEDescObject *_self, PyObject *_args)
444n/a{
445n/a PyObject *_res = NULL;
446n/a OSErr _err;
447n/a AEKeyword theAEKeyword;
448n/a#ifndef AEDeleteParam
449n/a PyMac_PRECHECK(AEDeleteParam);
450n/a#endif
451n/a if (!PyArg_ParseTuple(_args, "O&",
452n/a PyMac_GetOSType, &theAEKeyword))
453n/a return NULL;
454n/a _err = AEDeleteParam(&_self->ob_itself,
455n/a theAEKeyword);
456n/a if (_err != noErr) return PyMac_Error(_err);
457n/a Py_INCREF(Py_None);
458n/a _res = Py_None;
459n/a return _res;
460n/a}
461n/a
462n/astatic PyObject *AEDesc_AEGetAttributePtr(AEDescObject *_self, PyObject *_args)
463n/a{
464n/a PyObject *_res = NULL;
465n/a OSErr _err;
466n/a AEKeyword theAEKeyword;
467n/a DescType desiredType;
468n/a DescType typeCode;
469n/a char *dataPtr__out__;
470n/a long dataPtr__len__;
471n/a int dataPtr__in_len__;
472n/a#ifndef AEGetAttributePtr
473n/a PyMac_PRECHECK(AEGetAttributePtr);
474n/a#endif
475n/a if (!PyArg_ParseTuple(_args, "O&O&i",
476n/a PyMac_GetOSType, &theAEKeyword,
477n/a PyMac_GetOSType, &desiredType,
478n/a &dataPtr__in_len__))
479n/a return NULL;
480n/a if ((dataPtr__out__ = malloc(dataPtr__in_len__)) == NULL)
481n/a {
482n/a PyErr_NoMemory();
483n/a goto dataPtr__error__;
484n/a }
485n/a dataPtr__len__ = dataPtr__in_len__;
486n/a _err = AEGetAttributePtr(&_self->ob_itself,
487n/a theAEKeyword,
488n/a desiredType,
489n/a &typeCode,
490n/a dataPtr__out__, dataPtr__len__, &dataPtr__len__);
491n/a if (_err != noErr) return PyMac_Error(_err);
492n/a _res = Py_BuildValue("O&s#",
493n/a PyMac_BuildOSType, typeCode,
494n/a dataPtr__out__, (int)dataPtr__len__);
495n/a free(dataPtr__out__);
496n/a dataPtr__error__: ;
497n/a return _res;
498n/a}
499n/a
500n/astatic PyObject *AEDesc_AEGetAttributeDesc(AEDescObject *_self, PyObject *_args)
501n/a{
502n/a PyObject *_res = NULL;
503n/a OSErr _err;
504n/a AEKeyword theAEKeyword;
505n/a DescType desiredType;
506n/a AEDesc result;
507n/a#ifndef AEGetAttributeDesc
508n/a PyMac_PRECHECK(AEGetAttributeDesc);
509n/a#endif
510n/a if (!PyArg_ParseTuple(_args, "O&O&",
511n/a PyMac_GetOSType, &theAEKeyword,
512n/a PyMac_GetOSType, &desiredType))
513n/a return NULL;
514n/a _err = AEGetAttributeDesc(&_self->ob_itself,
515n/a theAEKeyword,
516n/a desiredType,
517n/a &result);
518n/a if (_err != noErr) return PyMac_Error(_err);
519n/a _res = Py_BuildValue("O&",
520n/a AEDesc_New, &result);
521n/a return _res;
522n/a}
523n/a
524n/astatic PyObject *AEDesc_AESizeOfAttribute(AEDescObject *_self, PyObject *_args)
525n/a{
526n/a PyObject *_res = NULL;
527n/a OSErr _err;
528n/a AEKeyword theAEKeyword;
529n/a DescType typeCode;
530n/a Size dataSize;
531n/a#ifndef AESizeOfAttribute
532n/a PyMac_PRECHECK(AESizeOfAttribute);
533n/a#endif
534n/a if (!PyArg_ParseTuple(_args, "O&",
535n/a PyMac_GetOSType, &theAEKeyword))
536n/a return NULL;
537n/a _err = AESizeOfAttribute(&_self->ob_itself,
538n/a theAEKeyword,
539n/a &typeCode,
540n/a &dataSize);
541n/a if (_err != noErr) return PyMac_Error(_err);
542n/a _res = Py_BuildValue("O&l",
543n/a PyMac_BuildOSType, typeCode,
544n/a dataSize);
545n/a return _res;
546n/a}
547n/a
548n/astatic PyObject *AEDesc_AEPutAttributePtr(AEDescObject *_self, PyObject *_args)
549n/a{
550n/a PyObject *_res = NULL;
551n/a OSErr _err;
552n/a AEKeyword theAEKeyword;
553n/a DescType typeCode;
554n/a char *dataPtr__in__;
555n/a long dataPtr__len__;
556n/a int dataPtr__in_len__;
557n/a#ifndef AEPutAttributePtr
558n/a PyMac_PRECHECK(AEPutAttributePtr);
559n/a#endif
560n/a if (!PyArg_ParseTuple(_args, "O&O&s#",
561n/a PyMac_GetOSType, &theAEKeyword,
562n/a PyMac_GetOSType, &typeCode,
563n/a &dataPtr__in__, &dataPtr__in_len__))
564n/a return NULL;
565n/a dataPtr__len__ = dataPtr__in_len__;
566n/a _err = AEPutAttributePtr(&_self->ob_itself,
567n/a theAEKeyword,
568n/a typeCode,
569n/a dataPtr__in__, dataPtr__len__);
570n/a if (_err != noErr) return PyMac_Error(_err);
571n/a Py_INCREF(Py_None);
572n/a _res = Py_None;
573n/a return _res;
574n/a}
575n/a
576n/astatic PyObject *AEDesc_AEPutAttributeDesc(AEDescObject *_self, PyObject *_args)
577n/a{
578n/a PyObject *_res = NULL;
579n/a OSErr _err;
580n/a AEKeyword theAEKeyword;
581n/a AEDesc theAEDesc;
582n/a#ifndef AEPutAttributeDesc
583n/a PyMac_PRECHECK(AEPutAttributeDesc);
584n/a#endif
585n/a if (!PyArg_ParseTuple(_args, "O&O&",
586n/a PyMac_GetOSType, &theAEKeyword,
587n/a AEDesc_Convert, &theAEDesc))
588n/a return NULL;
589n/a _err = AEPutAttributeDesc(&_self->ob_itself,
590n/a theAEKeyword,
591n/a &theAEDesc);
592n/a if (_err != noErr) return PyMac_Error(_err);
593n/a Py_INCREF(Py_None);
594n/a _res = Py_None;
595n/a return _res;
596n/a}
597n/a
598n/astatic PyObject *AEDesc_AEGetDescDataSize(AEDescObject *_self, PyObject *_args)
599n/a{
600n/a PyObject *_res = NULL;
601n/a Size _rv;
602n/a#ifndef AEGetDescDataSize
603n/a PyMac_PRECHECK(AEGetDescDataSize);
604n/a#endif
605n/a if (!PyArg_ParseTuple(_args, ""))
606n/a return NULL;
607n/a _rv = AEGetDescDataSize(&_self->ob_itself);
608n/a _res = Py_BuildValue("l",
609n/a _rv);
610n/a return _res;
611n/a}
612n/a
613n/astatic PyObject *AEDesc_AESend(AEDescObject *_self, PyObject *_args)
614n/a{
615n/a PyObject *_res = NULL;
616n/a OSErr _err;
617n/a AppleEvent reply;
618n/a AESendMode sendMode;
619n/a AESendPriority sendPriority;
620n/a long timeOutInTicks;
621n/a#ifndef AESend
622n/a PyMac_PRECHECK(AESend);
623n/a#endif
624n/a if (!PyArg_ParseTuple(_args, "lhl",
625n/a &sendMode,
626n/a &sendPriority,
627n/a &timeOutInTicks))
628n/a return NULL;
629n/a _err = AESend(&_self->ob_itself,
630n/a &reply,
631n/a sendMode,
632n/a sendPriority,
633n/a timeOutInTicks,
634n/a upp_AEIdleProc,
635n/a (AEFilterUPP)0);
636n/a if (_err != noErr) return PyMac_Error(_err);
637n/a _res = Py_BuildValue("O&",
638n/a AEDesc_New, &reply);
639n/a return _res;
640n/a}
641n/a
642n/astatic PyObject *AEDesc_AEResetTimer(AEDescObject *_self, PyObject *_args)
643n/a{
644n/a PyObject *_res = NULL;
645n/a OSErr _err;
646n/a#ifndef AEResetTimer
647n/a PyMac_PRECHECK(AEResetTimer);
648n/a#endif
649n/a if (!PyArg_ParseTuple(_args, ""))
650n/a return NULL;
651n/a _err = AEResetTimer(&_self->ob_itself);
652n/a if (_err != noErr) return PyMac_Error(_err);
653n/a Py_INCREF(Py_None);
654n/a _res = Py_None;
655n/a return _res;
656n/a}
657n/a
658n/astatic PyObject *AEDesc_AESuspendTheCurrentEvent(AEDescObject *_self, PyObject *_args)
659n/a{
660n/a PyObject *_res = NULL;
661n/a OSErr _err;
662n/a#ifndef AESuspendTheCurrentEvent
663n/a PyMac_PRECHECK(AESuspendTheCurrentEvent);
664n/a#endif
665n/a if (!PyArg_ParseTuple(_args, ""))
666n/a return NULL;
667n/a _err = AESuspendTheCurrentEvent(&_self->ob_itself);
668n/a if (_err != noErr) return PyMac_Error(_err);
669n/a Py_INCREF(Py_None);
670n/a _res = Py_None;
671n/a return _res;
672n/a}
673n/a
674n/astatic PyObject *AEDesc_AEResumeTheCurrentEvent(AEDescObject *_self, PyObject *_args)
675n/a{
676n/a PyObject *_res = NULL;
677n/a OSErr _err;
678n/a AppleEvent reply;
679n/a AEEventHandlerUPP dispatcher__proc__ = upp_GenericEventHandler;
680n/a PyObject *dispatcher;
681n/a#ifndef AEResumeTheCurrentEvent
682n/a PyMac_PRECHECK(AEResumeTheCurrentEvent);
683n/a#endif
684n/a if (!PyArg_ParseTuple(_args, "O&O",
685n/a AEDesc_Convert, &reply,
686n/a &dispatcher))
687n/a return NULL;
688n/a _err = AEResumeTheCurrentEvent(&_self->ob_itself,
689n/a &reply,
690n/a dispatcher__proc__,
691n/a (SRefCon)dispatcher);
692n/a if (_err != noErr) return PyMac_Error(_err);
693n/a Py_INCREF(Py_None);
694n/a _res = Py_None;
695n/a Py_INCREF(dispatcher); /* XXX leak, but needed */
696n/a return _res;
697n/a}
698n/a
699n/astatic PyObject *AEDesc_AEGetTheCurrentEvent(AEDescObject *_self, PyObject *_args)
700n/a{
701n/a PyObject *_res = NULL;
702n/a OSErr _err;
703n/a#ifndef AEGetTheCurrentEvent
704n/a PyMac_PRECHECK(AEGetTheCurrentEvent);
705n/a#endif
706n/a if (!PyArg_ParseTuple(_args, ""))
707n/a return NULL;
708n/a _err = AEGetTheCurrentEvent(&_self->ob_itself);
709n/a if (_err != noErr) return PyMac_Error(_err);
710n/a Py_INCREF(Py_None);
711n/a _res = Py_None;
712n/a return _res;
713n/a}
714n/a
715n/astatic PyObject *AEDesc_AESetTheCurrentEvent(AEDescObject *_self, PyObject *_args)
716n/a{
717n/a PyObject *_res = NULL;
718n/a OSErr _err;
719n/a#ifndef AESetTheCurrentEvent
720n/a PyMac_PRECHECK(AESetTheCurrentEvent);
721n/a#endif
722n/a if (!PyArg_ParseTuple(_args, ""))
723n/a return NULL;
724n/a _err = AESetTheCurrentEvent(&_self->ob_itself);
725n/a if (_err != noErr) return PyMac_Error(_err);
726n/a Py_INCREF(Py_None);
727n/a _res = Py_None;
728n/a return _res;
729n/a}
730n/a
731n/astatic PyObject *AEDesc_AEResolve(AEDescObject *_self, PyObject *_args)
732n/a{
733n/a PyObject *_res = NULL;
734n/a OSErr _err;
735n/a short callbackFlags;
736n/a AEDesc theToken;
737n/a#ifndef AEResolve
738n/a PyMac_PRECHECK(AEResolve);
739n/a#endif
740n/a if (!PyArg_ParseTuple(_args, "h",
741n/a &callbackFlags))
742n/a return NULL;
743n/a _err = AEResolve(&_self->ob_itself,
744n/a callbackFlags,
745n/a &theToken);
746n/a if (_err != noErr) return PyMac_Error(_err);
747n/a _res = Py_BuildValue("O&",
748n/a AEDesc_New, &theToken);
749n/a return _res;
750n/a}
751n/a
752n/astatic PyObject *AEDesc_AutoDispose(AEDescObject *_self, PyObject *_args)
753n/a{
754n/a PyObject *_res = NULL;
755n/a
756n/a int onoff, old;
757n/a if (!PyArg_ParseTuple(_args, "i", &onoff))
758n/a return NULL;
759n/a old = _self->ob_owned;
760n/a _self->ob_owned = onoff;
761n/a _res = Py_BuildValue("i", old);
762n/a return _res;
763n/a
764n/a}
765n/a
766n/astatic PyMethodDef AEDesc_methods[] = {
767n/a {"AECoerceDesc", (PyCFunction)AEDesc_AECoerceDesc, 1,
768n/a PyDoc_STR("(DescType toType) -> (AEDesc result)")},
769n/a {"AEDuplicateDesc", (PyCFunction)AEDesc_AEDuplicateDesc, 1,
770n/a PyDoc_STR("() -> (AEDesc result)")},
771n/a {"AECountItems", (PyCFunction)AEDesc_AECountItems, 1,
772n/a PyDoc_STR("() -> (long theCount)")},
773n/a {"AEPutPtr", (PyCFunction)AEDesc_AEPutPtr, 1,
774n/a PyDoc_STR("(long index, DescType typeCode, Buffer dataPtr) -> None")},
775n/a {"AEPutDesc", (PyCFunction)AEDesc_AEPutDesc, 1,
776n/a PyDoc_STR("(long index, AEDesc theAEDesc) -> None")},
777n/a {"AEGetNthPtr", (PyCFunction)AEDesc_AEGetNthPtr, 1,
778n/a PyDoc_STR("(long index, DescType desiredType, Buffer dataPtr) -> (AEKeyword theAEKeyword, DescType typeCode, Buffer dataPtr)")},
779n/a {"AEGetNthDesc", (PyCFunction)AEDesc_AEGetNthDesc, 1,
780n/a PyDoc_STR("(long index, DescType desiredType) -> (AEKeyword theAEKeyword, AEDesc result)")},
781n/a {"AESizeOfNthItem", (PyCFunction)AEDesc_AESizeOfNthItem, 1,
782n/a PyDoc_STR("(long index) -> (DescType typeCode, Size dataSize)")},
783n/a {"AEDeleteItem", (PyCFunction)AEDesc_AEDeleteItem, 1,
784n/a PyDoc_STR("(long index) -> None")},
785n/a {"AEPutParamPtr", (PyCFunction)AEDesc_AEPutParamPtr, 1,
786n/a PyDoc_STR("(AEKeyword theAEKeyword, DescType typeCode, Buffer dataPtr) -> None")},
787n/a {"AEPutParamDesc", (PyCFunction)AEDesc_AEPutParamDesc, 1,
788n/a PyDoc_STR("(AEKeyword theAEKeyword, AEDesc theAEDesc) -> None")},
789n/a {"AEGetParamPtr", (PyCFunction)AEDesc_AEGetParamPtr, 1,
790n/a PyDoc_STR("(AEKeyword theAEKeyword, DescType desiredType, Buffer dataPtr) -> (DescType typeCode, Buffer dataPtr)")},
791n/a {"AEGetParamDesc", (PyCFunction)AEDesc_AEGetParamDesc, 1,
792n/a PyDoc_STR("(AEKeyword theAEKeyword, DescType desiredType) -> (AEDesc result)")},
793n/a {"AESizeOfParam", (PyCFunction)AEDesc_AESizeOfParam, 1,
794n/a PyDoc_STR("(AEKeyword theAEKeyword) -> (DescType typeCode, Size dataSize)")},
795n/a {"AEDeleteParam", (PyCFunction)AEDesc_AEDeleteParam, 1,
796n/a PyDoc_STR("(AEKeyword theAEKeyword) -> None")},
797n/a {"AEGetAttributePtr", (PyCFunction)AEDesc_AEGetAttributePtr, 1,
798n/a PyDoc_STR("(AEKeyword theAEKeyword, DescType desiredType, Buffer dataPtr) -> (DescType typeCode, Buffer dataPtr)")},
799n/a {"AEGetAttributeDesc", (PyCFunction)AEDesc_AEGetAttributeDesc, 1,
800n/a PyDoc_STR("(AEKeyword theAEKeyword, DescType desiredType) -> (AEDesc result)")},
801n/a {"AESizeOfAttribute", (PyCFunction)AEDesc_AESizeOfAttribute, 1,
802n/a PyDoc_STR("(AEKeyword theAEKeyword) -> (DescType typeCode, Size dataSize)")},
803n/a {"AEPutAttributePtr", (PyCFunction)AEDesc_AEPutAttributePtr, 1,
804n/a PyDoc_STR("(AEKeyword theAEKeyword, DescType typeCode, Buffer dataPtr) -> None")},
805n/a {"AEPutAttributeDesc", (PyCFunction)AEDesc_AEPutAttributeDesc, 1,
806n/a PyDoc_STR("(AEKeyword theAEKeyword, AEDesc theAEDesc) -> None")},
807n/a {"AEGetDescDataSize", (PyCFunction)AEDesc_AEGetDescDataSize, 1,
808n/a PyDoc_STR("() -> (Size _rv)")},
809n/a {"AESend", (PyCFunction)AEDesc_AESend, 1,
810n/a PyDoc_STR("(AESendMode sendMode, AESendPriority sendPriority, long timeOutInTicks) -> (AppleEvent reply)")},
811n/a {"AEResetTimer", (PyCFunction)AEDesc_AEResetTimer, 1,
812n/a PyDoc_STR("() -> None")},
813n/a {"AESuspendTheCurrentEvent", (PyCFunction)AEDesc_AESuspendTheCurrentEvent, 1,
814n/a PyDoc_STR("() -> None")},
815n/a {"AEResumeTheCurrentEvent", (PyCFunction)AEDesc_AEResumeTheCurrentEvent, 1,
816n/a PyDoc_STR("(AppleEvent reply, EventHandler dispatcher) -> None")},
817n/a {"AEGetTheCurrentEvent", (PyCFunction)AEDesc_AEGetTheCurrentEvent, 1,
818n/a PyDoc_STR("() -> None")},
819n/a {"AESetTheCurrentEvent", (PyCFunction)AEDesc_AESetTheCurrentEvent, 1,
820n/a PyDoc_STR("() -> None")},
821n/a {"AEResolve", (PyCFunction)AEDesc_AEResolve, 1,
822n/a PyDoc_STR("(short callbackFlags) -> (AEDesc theToken)")},
823n/a {"AutoDispose", (PyCFunction)AEDesc_AutoDispose, 1,
824n/a PyDoc_STR("(int)->int. Automatically AEDisposeDesc the object on Python object cleanup")},
825n/a {NULL, NULL, 0}
826n/a};
827n/a
828n/astatic PyObject *AEDesc_get_type(AEDescObject *self, void *closure)
829n/a{
830n/a return PyMac_BuildOSType(self->ob_itself.descriptorType);
831n/a}
832n/a
833n/a#define AEDesc_set_type NULL
834n/a
835n/astatic PyObject *AEDesc_get_data(AEDescObject *self, void *closure)
836n/a{
837n/a PyObject *res;
838n/a Size size;
839n/a char *ptr;
840n/a OSErr err;
841n/a
842n/a size = AEGetDescDataSize(&self->ob_itself);
843n/a if ( (res = PyString_FromStringAndSize(NULL, size)) == NULL )
844n/a return NULL;
845n/a if ( (ptr = PyString_AsString(res)) == NULL )
846n/a return NULL;
847n/a if ( (err=AEGetDescData(&self->ob_itself, ptr, size)) < 0 )
848n/a return PyMac_Error(err);
849n/a return res;
850n/a}
851n/a
852n/a#define AEDesc_set_data NULL
853n/a
854n/astatic PyGetSetDef AEDesc_getsetlist[] = {
855n/a {"type", (getter)AEDesc_get_type, (setter)AEDesc_set_type, "Type of this AEDesc"},
856n/a {"data", (getter)AEDesc_get_data, (setter)AEDesc_set_data, "The raw data in this AEDesc"},
857n/a {NULL, NULL, NULL, NULL},
858n/a};
859n/a
860n/a
861n/a#define AEDesc_compare NULL
862n/a
863n/a#define AEDesc_repr NULL
864n/a
865n/a#define AEDesc_hash NULL
866n/a#define AEDesc_tp_init 0
867n/a
868n/a#define AEDesc_tp_alloc PyType_GenericAlloc
869n/a
870n/astatic PyObject *AEDesc_tp_new(PyTypeObject *type, PyObject *_args, PyObject *_kwds)
871n/a{
872n/a PyObject *_self;
873n/a AEDesc itself;
874n/a char *kw[] = {"itself", 0};
875n/a
876n/a if (!PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, AEDesc_Convert, &itself)) return NULL;
877n/a if ((_self = type->tp_alloc(type, 0)) == NULL) return NULL;
878n/a ((AEDescObject *)_self)->ob_itself = itself;
879n/a return _self;
880n/a}
881n/a
882n/a#define AEDesc_tp_free PyObject_Del
883n/a
884n/a
885n/aPyTypeObject AEDesc_Type = {
886n/a PyObject_HEAD_INIT(NULL)
887n/a 0, /*ob_size*/
888n/a "_AE.AEDesc", /*tp_name*/
889n/a sizeof(AEDescObject), /*tp_basicsize*/
890n/a 0, /*tp_itemsize*/
891n/a /* methods */
892n/a (destructor) AEDesc_dealloc, /*tp_dealloc*/
893n/a 0, /*tp_print*/
894n/a (getattrfunc)0, /*tp_getattr*/
895n/a (setattrfunc)0, /*tp_setattr*/
896n/a (cmpfunc) AEDesc_compare, /*tp_compare*/
897n/a (reprfunc) AEDesc_repr, /*tp_repr*/
898n/a (PyNumberMethods *)0, /* tp_as_number */
899n/a (PySequenceMethods *)0, /* tp_as_sequence */
900n/a (PyMappingMethods *)0, /* tp_as_mapping */
901n/a (hashfunc) AEDesc_hash, /*tp_hash*/
902n/a 0, /*tp_call*/
903n/a 0, /*tp_str*/
904n/a PyObject_GenericGetAttr, /*tp_getattro*/
905n/a PyObject_GenericSetAttr, /*tp_setattro */
906n/a 0, /*tp_as_buffer*/
907n/a Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /* tp_flags */
908n/a 0, /*tp_doc*/
909n/a 0, /*tp_traverse*/
910n/a 0, /*tp_clear*/
911n/a 0, /*tp_richcompare*/
912n/a 0, /*tp_weaklistoffset*/
913n/a 0, /*tp_iter*/
914n/a 0, /*tp_iternext*/
915n/a AEDesc_methods, /* tp_methods */
916n/a 0, /*tp_members*/
917n/a AEDesc_getsetlist, /*tp_getset*/
918n/a 0, /*tp_base*/
919n/a 0, /*tp_dict*/
920n/a 0, /*tp_descr_get*/
921n/a 0, /*tp_descr_set*/
922n/a 0, /*tp_dictoffset*/
923n/a AEDesc_tp_init, /* tp_init */
924n/a AEDesc_tp_alloc, /* tp_alloc */
925n/a AEDesc_tp_new, /* tp_new */
926n/a AEDesc_tp_free, /* tp_free */
927n/a};
928n/a
929n/a/* --------------------- End object type AEDesc --------------------- */
930n/a
931n/a
932n/astatic PyObject *AE_AECoercePtr(PyObject *_self, PyObject *_args)
933n/a{
934n/a PyObject *_res = NULL;
935n/a OSErr _err;
936n/a DescType typeCode;
937n/a char *dataPtr__in__;
938n/a long dataPtr__len__;
939n/a int dataPtr__in_len__;
940n/a DescType toType;
941n/a AEDesc result;
942n/a#ifndef AECoercePtr
943n/a PyMac_PRECHECK(AECoercePtr);
944n/a#endif
945n/a if (!PyArg_ParseTuple(_args, "O&s#O&",
946n/a PyMac_GetOSType, &typeCode,
947n/a &dataPtr__in__, &dataPtr__in_len__,
948n/a PyMac_GetOSType, &toType))
949n/a return NULL;
950n/a dataPtr__len__ = dataPtr__in_len__;
951n/a _err = AECoercePtr(typeCode,
952n/a dataPtr__in__, dataPtr__len__,
953n/a toType,
954n/a &result);
955n/a if (_err != noErr) return PyMac_Error(_err);
956n/a _res = Py_BuildValue("O&",
957n/a AEDesc_New, &result);
958n/a return _res;
959n/a}
960n/a
961n/astatic PyObject *AE_AECreateDesc(PyObject *_self, PyObject *_args)
962n/a{
963n/a PyObject *_res = NULL;
964n/a OSErr _err;
965n/a DescType typeCode;
966n/a char *dataPtr__in__;
967n/a long dataPtr__len__;
968n/a int dataPtr__in_len__;
969n/a AEDesc result;
970n/a#ifndef AECreateDesc
971n/a PyMac_PRECHECK(AECreateDesc);
972n/a#endif
973n/a if (!PyArg_ParseTuple(_args, "O&s#",
974n/a PyMac_GetOSType, &typeCode,
975n/a &dataPtr__in__, &dataPtr__in_len__))
976n/a return NULL;
977n/a dataPtr__len__ = dataPtr__in_len__;
978n/a _err = AECreateDesc(typeCode,
979n/a dataPtr__in__, dataPtr__len__,
980n/a &result);
981n/a if (_err != noErr) return PyMac_Error(_err);
982n/a _res = Py_BuildValue("O&",
983n/a AEDesc_New, &result);
984n/a return _res;
985n/a}
986n/a
987n/astatic PyObject *AE_AECreateList(PyObject *_self, PyObject *_args)
988n/a{
989n/a PyObject *_res = NULL;
990n/a OSErr _err;
991n/a char *factoringPtr__in__;
992n/a long factoringPtr__len__;
993n/a int factoringPtr__in_len__;
994n/a Boolean isRecord;
995n/a AEDescList resultList;
996n/a#ifndef AECreateList
997n/a PyMac_PRECHECK(AECreateList);
998n/a#endif
999n/a if (!PyArg_ParseTuple(_args, "s#b",
1000n/a &factoringPtr__in__, &factoringPtr__in_len__,
1001n/a &isRecord))
1002n/a return NULL;
1003n/a factoringPtr__len__ = factoringPtr__in_len__;
1004n/a _err = AECreateList(factoringPtr__in__, factoringPtr__len__,
1005n/a isRecord,
1006n/a &resultList);
1007n/a if (_err != noErr) return PyMac_Error(_err);
1008n/a _res = Py_BuildValue("O&",
1009n/a AEDesc_New, &resultList);
1010n/a return _res;
1011n/a}
1012n/a
1013n/astatic PyObject *AE_AECreateAppleEvent(PyObject *_self, PyObject *_args)
1014n/a{
1015n/a PyObject *_res = NULL;
1016n/a OSErr _err;
1017n/a AEEventClass theAEEventClass;
1018n/a AEEventID theAEEventID;
1019n/a AEAddressDesc target;
1020n/a AEReturnID returnID;
1021n/a AETransactionID transactionID;
1022n/a AppleEvent result;
1023n/a#ifndef AECreateAppleEvent
1024n/a PyMac_PRECHECK(AECreateAppleEvent);
1025n/a#endif
1026n/a if (!PyArg_ParseTuple(_args, "O&O&O&hl",
1027n/a PyMac_GetOSType, &theAEEventClass,
1028n/a PyMac_GetOSType, &theAEEventID,
1029n/a AEDesc_Convert, &target,
1030n/a &returnID,
1031n/a &transactionID))
1032n/a return NULL;
1033n/a _err = AECreateAppleEvent(theAEEventClass,
1034n/a theAEEventID,
1035n/a &target,
1036n/a returnID,
1037n/a transactionID,
1038n/a &result);
1039n/a if (_err != noErr) return PyMac_Error(_err);
1040n/a _res = Py_BuildValue("O&",
1041n/a AEDesc_New, &result);
1042n/a return _res;
1043n/a}
1044n/a
1045n/astatic PyObject *AE_AEReplaceDescData(PyObject *_self, PyObject *_args)
1046n/a{
1047n/a PyObject *_res = NULL;
1048n/a OSErr _err;
1049n/a DescType typeCode;
1050n/a char *dataPtr__in__;
1051n/a long dataPtr__len__;
1052n/a int dataPtr__in_len__;
1053n/a AEDesc theAEDesc;
1054n/a#ifndef AEReplaceDescData
1055n/a PyMac_PRECHECK(AEReplaceDescData);
1056n/a#endif
1057n/a if (!PyArg_ParseTuple(_args, "O&s#",
1058n/a PyMac_GetOSType, &typeCode,
1059n/a &dataPtr__in__, &dataPtr__in_len__))
1060n/a return NULL;
1061n/a dataPtr__len__ = dataPtr__in_len__;
1062n/a _err = AEReplaceDescData(typeCode,
1063n/a dataPtr__in__, dataPtr__len__,
1064n/a &theAEDesc);
1065n/a if (_err != noErr) return PyMac_Error(_err);
1066n/a _res = Py_BuildValue("O&",
1067n/a AEDesc_New, &theAEDesc);
1068n/a return _res;
1069n/a}
1070n/a
1071n/astatic PyObject *AE_AEProcessAppleEvent(PyObject *_self, PyObject *_args)
1072n/a{
1073n/a PyObject *_res = NULL;
1074n/a OSErr _err;
1075n/a EventRecord theEventRecord;
1076n/a#ifndef AEProcessAppleEvent
1077n/a PyMac_PRECHECK(AEProcessAppleEvent);
1078n/a#endif
1079n/a if (!PyArg_ParseTuple(_args, "O&",
1080n/a PyMac_GetEventRecord, &theEventRecord))
1081n/a return NULL;
1082n/a _err = AEProcessAppleEvent(&theEventRecord);
1083n/a if (_err != noErr) return PyMac_Error(_err);
1084n/a Py_INCREF(Py_None);
1085n/a _res = Py_None;
1086n/a return _res;
1087n/a}
1088n/a
1089n/astatic PyObject *AE_AEGetInteractionAllowed(PyObject *_self, PyObject *_args)
1090n/a{
1091n/a PyObject *_res = NULL;
1092n/a OSErr _err;
1093n/a AEInteractAllowed level;
1094n/a#ifndef AEGetInteractionAllowed
1095n/a PyMac_PRECHECK(AEGetInteractionAllowed);
1096n/a#endif
1097n/a if (!PyArg_ParseTuple(_args, ""))
1098n/a return NULL;
1099n/a _err = AEGetInteractionAllowed(&level);
1100n/a if (_err != noErr) return PyMac_Error(_err);
1101n/a _res = Py_BuildValue("b",
1102n/a level);
1103n/a return _res;
1104n/a}
1105n/a
1106n/astatic PyObject *AE_AESetInteractionAllowed(PyObject *_self, PyObject *_args)
1107n/a{
1108n/a PyObject *_res = NULL;
1109n/a OSErr _err;
1110n/a AEInteractAllowed level;
1111n/a#ifndef AESetInteractionAllowed
1112n/a PyMac_PRECHECK(AESetInteractionAllowed);
1113n/a#endif
1114n/a if (!PyArg_ParseTuple(_args, "b",
1115n/a &level))
1116n/a return NULL;
1117n/a _err = AESetInteractionAllowed(level);
1118n/a if (_err != noErr) return PyMac_Error(_err);
1119n/a Py_INCREF(Py_None);
1120n/a _res = Py_None;
1121n/a return _res;
1122n/a}
1123n/a
1124n/astatic PyObject *AE_AEInteractWithUser(PyObject *_self, PyObject *_args)
1125n/a{
1126n/a PyObject *_res = NULL;
1127n/a OSErr _err;
1128n/a long timeOutInTicks;
1129n/a#ifndef AEInteractWithUser
1130n/a PyMac_PRECHECK(AEInteractWithUser);
1131n/a#endif
1132n/a if (!PyArg_ParseTuple(_args, "l",
1133n/a &timeOutInTicks))
1134n/a return NULL;
1135n/a _err = AEInteractWithUser(timeOutInTicks,
1136n/a (NMRecPtr)0,
1137n/a upp_AEIdleProc);
1138n/a if (_err != noErr) return PyMac_Error(_err);
1139n/a Py_INCREF(Py_None);
1140n/a _res = Py_None;
1141n/a return _res;
1142n/a}
1143n/a
1144n/astatic PyObject *AE_AEInstallEventHandler(PyObject *_self, PyObject *_args)
1145n/a{
1146n/a PyObject *_res = NULL;
1147n/a OSErr _err;
1148n/a AEEventClass theAEEventClass;
1149n/a AEEventID theAEEventID;
1150n/a AEEventHandlerUPP handler__proc__ = upp_GenericEventHandler;
1151n/a PyObject *handler;
1152n/a#ifndef AEInstallEventHandler
1153n/a PyMac_PRECHECK(AEInstallEventHandler);
1154n/a#endif
1155n/a if (!PyArg_ParseTuple(_args, "O&O&O",
1156n/a PyMac_GetOSType, &theAEEventClass,
1157n/a PyMac_GetOSType, &theAEEventID,
1158n/a &handler))
1159n/a return NULL;
1160n/a _err = AEInstallEventHandler(theAEEventClass,
1161n/a theAEEventID,
1162n/a handler__proc__, (SRefCon)handler,
1163n/a 0);
1164n/a if (_err != noErr) return PyMac_Error(_err);
1165n/a Py_INCREF(Py_None);
1166n/a _res = Py_None;
1167n/a Py_INCREF(handler); /* XXX leak, but needed */
1168n/a return _res;
1169n/a}
1170n/a
1171n/astatic PyObject *AE_AERemoveEventHandler(PyObject *_self, PyObject *_args)
1172n/a{
1173n/a PyObject *_res = NULL;
1174n/a OSErr _err;
1175n/a AEEventClass theAEEventClass;
1176n/a AEEventID theAEEventID;
1177n/a#ifndef AERemoveEventHandler
1178n/a PyMac_PRECHECK(AERemoveEventHandler);
1179n/a#endif
1180n/a if (!PyArg_ParseTuple(_args, "O&O&",
1181n/a PyMac_GetOSType, &theAEEventClass,
1182n/a PyMac_GetOSType, &theAEEventID))
1183n/a return NULL;
1184n/a _err = AERemoveEventHandler(theAEEventClass,
1185n/a theAEEventID,
1186n/a upp_GenericEventHandler,
1187n/a 0);
1188n/a if (_err != noErr) return PyMac_Error(_err);
1189n/a Py_INCREF(Py_None);
1190n/a _res = Py_None;
1191n/a return _res;
1192n/a}
1193n/a
1194n/astatic PyObject *AE_AEGetEventHandler(PyObject *_self, PyObject *_args)
1195n/a{
1196n/a PyObject *_res = NULL;
1197n/a OSErr _err;
1198n/a AEEventClass theAEEventClass;
1199n/a AEEventID theAEEventID;
1200n/a AEEventHandlerUPP handler__proc__ = upp_GenericEventHandler;
1201n/a PyObject *handler;
1202n/a#ifndef AEGetEventHandler
1203n/a PyMac_PRECHECK(AEGetEventHandler);
1204n/a#endif
1205n/a if (!PyArg_ParseTuple(_args, "O&O&",
1206n/a PyMac_GetOSType, &theAEEventClass,
1207n/a PyMac_GetOSType, &theAEEventID))
1208n/a return NULL;
1209n/a _err = AEGetEventHandler(theAEEventClass,
1210n/a theAEEventID,
1211n/a &handler__proc__, (SRefCon *)&handler,
1212n/a 0);
1213n/a if (_err != noErr) return PyMac_Error(_err);
1214n/a _res = Py_BuildValue("O",
1215n/a handler);
1216n/a Py_INCREF(handler); /* XXX leak, but needed */
1217n/a return _res;
1218n/a}
1219n/a
1220n/astatic PyObject *AE_AEInstallSpecialHandler(PyObject *_self, PyObject *_args)
1221n/a{
1222n/a PyObject *_res = NULL;
1223n/a OSErr _err;
1224n/a AEKeyword functionClass;
1225n/a#ifndef AEInstallSpecialHandler
1226n/a PyMac_PRECHECK(AEInstallSpecialHandler);
1227n/a#endif
1228n/a if (!PyArg_ParseTuple(_args, "O&",
1229n/a PyMac_GetOSType, &functionClass))
1230n/a return NULL;
1231n/a _err = AEInstallSpecialHandler(functionClass,
1232n/a upp_GenericEventHandler,
1233n/a 0);
1234n/a if (_err != noErr) return PyMac_Error(_err);
1235n/a Py_INCREF(Py_None);
1236n/a _res = Py_None;
1237n/a return _res;
1238n/a}
1239n/a
1240n/astatic PyObject *AE_AERemoveSpecialHandler(PyObject *_self, PyObject *_args)
1241n/a{
1242n/a PyObject *_res = NULL;
1243n/a OSErr _err;
1244n/a AEKeyword functionClass;
1245n/a#ifndef AERemoveSpecialHandler
1246n/a PyMac_PRECHECK(AERemoveSpecialHandler);
1247n/a#endif
1248n/a if (!PyArg_ParseTuple(_args, "O&",
1249n/a PyMac_GetOSType, &functionClass))
1250n/a return NULL;
1251n/a _err = AERemoveSpecialHandler(functionClass,
1252n/a upp_GenericEventHandler,
1253n/a 0);
1254n/a if (_err != noErr) return PyMac_Error(_err);
1255n/a Py_INCREF(Py_None);
1256n/a _res = Py_None;
1257n/a return _res;
1258n/a}
1259n/a
1260n/astatic PyObject *AE_AEManagerInfo(PyObject *_self, PyObject *_args)
1261n/a{
1262n/a PyObject *_res = NULL;
1263n/a OSErr _err;
1264n/a AEKeyword keyWord;
1265n/a long result;
1266n/a#ifndef AEManagerInfo
1267n/a PyMac_PRECHECK(AEManagerInfo);
1268n/a#endif
1269n/a if (!PyArg_ParseTuple(_args, "O&",
1270n/a PyMac_GetOSType, &keyWord))
1271n/a return NULL;
1272n/a _err = AEManagerInfo(keyWord,
1273n/a &result);
1274n/a if (_err != noErr) return PyMac_Error(_err);
1275n/a _res = Py_BuildValue("l",
1276n/a result);
1277n/a return _res;
1278n/a}
1279n/a
1280n/astatic PyObject *AE_AEObjectInit(PyObject *_self, PyObject *_args)
1281n/a{
1282n/a PyObject *_res = NULL;
1283n/a OSErr _err;
1284n/a#ifndef AEObjectInit
1285n/a PyMac_PRECHECK(AEObjectInit);
1286n/a#endif
1287n/a if (!PyArg_ParseTuple(_args, ""))
1288n/a return NULL;
1289n/a _err = AEObjectInit();
1290n/a if (_err != noErr) return PyMac_Error(_err);
1291n/a Py_INCREF(Py_None);
1292n/a _res = Py_None;
1293n/a return _res;
1294n/a}
1295n/a
1296n/astatic PyObject *AE_AEDisposeToken(PyObject *_self, PyObject *_args)
1297n/a{
1298n/a PyObject *_res = NULL;
1299n/a OSErr _err;
1300n/a AEDesc theToken;
1301n/a#ifndef AEDisposeToken
1302n/a PyMac_PRECHECK(AEDisposeToken);
1303n/a#endif
1304n/a if (!PyArg_ParseTuple(_args, ""))
1305n/a return NULL;
1306n/a _err = AEDisposeToken(&theToken);
1307n/a if (_err != noErr) return PyMac_Error(_err);
1308n/a _res = Py_BuildValue("O&",
1309n/a AEDesc_New, &theToken);
1310n/a return _res;
1311n/a}
1312n/a
1313n/astatic PyObject *AE_AECallObjectAccessor(PyObject *_self, PyObject *_args)
1314n/a{
1315n/a PyObject *_res = NULL;
1316n/a OSErr _err;
1317n/a DescType desiredClass;
1318n/a AEDesc containerToken;
1319n/a DescType containerClass;
1320n/a DescType keyForm;
1321n/a AEDesc keyData;
1322n/a AEDesc token;
1323n/a#ifndef AECallObjectAccessor
1324n/a PyMac_PRECHECK(AECallObjectAccessor);
1325n/a#endif
1326n/a if (!PyArg_ParseTuple(_args, "O&O&O&O&O&",
1327n/a PyMac_GetOSType, &desiredClass,
1328n/a AEDesc_Convert, &containerToken,
1329n/a PyMac_GetOSType, &containerClass,
1330n/a PyMac_GetOSType, &keyForm,
1331n/a AEDesc_Convert, &keyData))
1332n/a return NULL;
1333n/a _err = AECallObjectAccessor(desiredClass,
1334n/a &containerToken,
1335n/a containerClass,
1336n/a keyForm,
1337n/a &keyData,
1338n/a &token);
1339n/a if (_err != noErr) return PyMac_Error(_err);
1340n/a _res = Py_BuildValue("O&",
1341n/a AEDesc_New, &token);
1342n/a return _res;
1343n/a}
1344n/a
1345n/astatic PyMethodDef AE_methods[] = {
1346n/a {"AECoercePtr", (PyCFunction)AE_AECoercePtr, 1,
1347n/a PyDoc_STR("(DescType typeCode, Buffer dataPtr, DescType toType) -> (AEDesc result)")},
1348n/a {"AECreateDesc", (PyCFunction)AE_AECreateDesc, 1,
1349n/a PyDoc_STR("(DescType typeCode, Buffer dataPtr) -> (AEDesc result)")},
1350n/a {"AECreateList", (PyCFunction)AE_AECreateList, 1,
1351n/a PyDoc_STR("(Buffer factoringPtr, Boolean isRecord) -> (AEDescList resultList)")},
1352n/a {"AECreateAppleEvent", (PyCFunction)AE_AECreateAppleEvent, 1,
1353n/a PyDoc_STR("(AEEventClass theAEEventClass, AEEventID theAEEventID, AEAddressDesc target, AEReturnID returnID, AETransactionID transactionID) -> (AppleEvent result)")},
1354n/a {"AEReplaceDescData", (PyCFunction)AE_AEReplaceDescData, 1,
1355n/a PyDoc_STR("(DescType typeCode, Buffer dataPtr) -> (AEDesc theAEDesc)")},
1356n/a {"AEProcessAppleEvent", (PyCFunction)AE_AEProcessAppleEvent, 1,
1357n/a PyDoc_STR("(EventRecord theEventRecord) -> None")},
1358n/a {"AEGetInteractionAllowed", (PyCFunction)AE_AEGetInteractionAllowed, 1,
1359n/a PyDoc_STR("() -> (AEInteractAllowed level)")},
1360n/a {"AESetInteractionAllowed", (PyCFunction)AE_AESetInteractionAllowed, 1,
1361n/a PyDoc_STR("(AEInteractAllowed level) -> None")},
1362n/a {"AEInteractWithUser", (PyCFunction)AE_AEInteractWithUser, 1,
1363n/a PyDoc_STR("(long timeOutInTicks) -> None")},
1364n/a {"AEInstallEventHandler", (PyCFunction)AE_AEInstallEventHandler, 1,
1365n/a PyDoc_STR("(AEEventClass theAEEventClass, AEEventID theAEEventID, EventHandler handler) -> None")},
1366n/a {"AERemoveEventHandler", (PyCFunction)AE_AERemoveEventHandler, 1,
1367n/a PyDoc_STR("(AEEventClass theAEEventClass, AEEventID theAEEventID) -> None")},
1368n/a {"AEGetEventHandler", (PyCFunction)AE_AEGetEventHandler, 1,
1369n/a PyDoc_STR("(AEEventClass theAEEventClass, AEEventID theAEEventID) -> (EventHandler handler)")},
1370n/a {"AEInstallSpecialHandler", (PyCFunction)AE_AEInstallSpecialHandler, 1,
1371n/a PyDoc_STR("(AEKeyword functionClass) -> None")},
1372n/a {"AERemoveSpecialHandler", (PyCFunction)AE_AERemoveSpecialHandler, 1,
1373n/a PyDoc_STR("(AEKeyword functionClass) -> None")},
1374n/a {"AEManagerInfo", (PyCFunction)AE_AEManagerInfo, 1,
1375n/a PyDoc_STR("(AEKeyword keyWord) -> (long result)")},
1376n/a {"AEObjectInit", (PyCFunction)AE_AEObjectInit, 1,
1377n/a PyDoc_STR("() -> None")},
1378n/a {"AEDisposeToken", (PyCFunction)AE_AEDisposeToken, 1,
1379n/a PyDoc_STR("() -> (AEDesc theToken)")},
1380n/a {"AECallObjectAccessor", (PyCFunction)AE_AECallObjectAccessor, 1,
1381n/a PyDoc_STR("(DescType desiredClass, AEDesc containerToken, DescType containerClass, DescType keyForm, AEDesc keyData) -> (AEDesc token)")},
1382n/a {NULL, NULL, 0}
1383n/a};
1384n/a
1385n/a
1386n/a
1387n/astatic pascal OSErr
1388n/aGenericEventHandler(const AppleEvent *request, AppleEvent *reply, refcontype refcon)
1389n/a{
1390n/a PyObject *handler = (PyObject *)refcon;
1391n/a AEDescObject *requestObject, *replyObject;
1392n/a PyObject *args, *res;
1393n/a if ((requestObject = (AEDescObject *)AEDesc_New((AppleEvent *)request)) == NULL) {
1394n/a return -1;
1395n/a }
1396n/a if ((replyObject = (AEDescObject *)AEDesc_New(reply)) == NULL) {
1397n/a Py_DECREF(requestObject);
1398n/a return -1;
1399n/a }
1400n/a if ((args = Py_BuildValue("OO", requestObject, replyObject)) == NULL) {
1401n/a Py_DECREF(requestObject);
1402n/a Py_DECREF(replyObject);
1403n/a return -1;
1404n/a }
1405n/a res = PyEval_CallObject(handler, args);
1406n/a requestObject->ob_itself.descriptorType = 'null';
1407n/a requestObject->ob_itself.dataHandle = NULL;
1408n/a replyObject->ob_itself.descriptorType = 'null';
1409n/a replyObject->ob_itself.dataHandle = NULL;
1410n/a Py_DECREF(args);
1411n/a if (res == NULL) {
1412n/a PySys_WriteStderr("Exception in AE event handler function\n");
1413n/a PyErr_Print();
1414n/a return -1;
1415n/a }
1416n/a Py_DECREF(res);
1417n/a return noErr;
1418n/a}
1419n/a
1420n/aPyObject *AEDesc_NewBorrowed(AEDesc *itself)
1421n/a{
1422n/a PyObject *it;
1423n/a
1424n/a it = AEDesc_New(itself);
1425n/a if (it)
1426n/a ((AEDescObject *)it)->ob_owned = 0;
1427n/a return (PyObject *)it;
1428n/a}
1429n/a
1430n/a
1431n/a
1432n/avoid init_AE(void)
1433n/a{
1434n/a PyObject *m;
1435n/a PyObject *d;
1436n/a
1437n/a upp_AEIdleProc = NewAEIdleUPP(AEIdleProc);
1438n/a upp_GenericEventHandler = NewAEEventHandlerUPP(GenericEventHandler);
1439n/a PyMac_INIT_TOOLBOX_OBJECT_NEW(AEDesc *, AEDesc_New);
1440n/a PyMac_INIT_TOOLBOX_OBJECT_NEW(AEDesc *, AEDesc_NewBorrowed);
1441n/a PyMac_INIT_TOOLBOX_OBJECT_CONVERT(AEDesc, AEDesc_Convert);
1442n/a
1443n/a m = Py_InitModule("_AE", AE_methods);
1444n/a d = PyModule_GetDict(m);
1445n/a AE_Error = PyMac_GetOSErrException();
1446n/a if (AE_Error == NULL ||
1447n/a PyDict_SetItemString(d, "Error", AE_Error) != 0)
1448n/a return;
1449n/a AEDesc_Type.ob_type = &PyType_Type;
1450n/a if (PyType_Ready(&AEDesc_Type) < 0) return;
1451n/a Py_INCREF(&AEDesc_Type);
1452n/a PyModule_AddObject(m, "AEDesc", (PyObject *)&AEDesc_Type);
1453n/a /* Backward-compatible name */
1454n/a Py_INCREF(&AEDesc_Type);
1455n/a PyModule_AddObject(m, "AEDescType", (PyObject *)&AEDesc_Type);
1456n/a}
1457n/a
1458n/a/* ========================= End module _AE ========================= */
1459n/a