summaryrefslogtreecommitdiffstats
path: root/Mac/Modules/ae/aesupport.py
diff options
context:
space:
mode:
Diffstat (limited to 'Mac/Modules/ae/aesupport.py')
-rw-r--r--Mac/Modules/ae/aesupport.py237
1 files changed, 0 insertions, 237 deletions
diff --git a/Mac/Modules/ae/aesupport.py b/Mac/Modules/ae/aesupport.py
deleted file mode 100644
index d3e1dfd..0000000
--- a/Mac/Modules/ae/aesupport.py
+++ /dev/null
@@ -1,237 +0,0 @@
-# This script will generate the AppleEvents interface for Python.
-# It uses the "bgen" package to generate C code.
-# It execs the file aegen.py which contain the function definitions
-# (aegen.py was generated by aescan.py, scanning the <AppleEvents.h> header file).
-
-
-from macsupport import *
-
-
-AEArrayType = Type("AEArrayType", "c")
-AESendMode = Type("AESendMode", "l")
-AESendPriority = Type("AESendPriority", "h")
-AEInteractAllowed = Type("AEInteractAllowed", "b")
-AEReturnID = Type("AEReturnID", "h")
-AETransactionID = Type("AETransactionID", "l")
-
-
-
-AEEventClass = OSTypeType('AEEventClass')
-AEEventID = OSTypeType('AEEventID')
-AEKeyword = OSTypeType('AEKeyword')
-DescType = OSTypeType('DescType')
-
-
-AEDesc = OpaqueType('AEDesc')
-AEDesc_ptr = OpaqueType('AEDesc')
-
-AEAddressDesc = OpaqueType('AEAddressDesc', 'AEDesc')
-AEAddressDesc_ptr = OpaqueType('AEAddressDesc', 'AEDesc')
-
-AEDescList = OpaqueType('AEDescList', 'AEDesc')
-AEDescList_ptr = OpaqueType('AEDescList', 'AEDesc')
-
-AERecord = OpaqueType('AERecord', 'AEDesc')
-AERecord_ptr = OpaqueType('AERecord', 'AEDesc')
-
-AppleEvent = OpaqueType('AppleEvent', 'AEDesc')
-AppleEvent_ptr = OpaqueType('AppleEvent', 'AEDesc')
-
-
-class EHType(Type):
- def __init__(self, name = 'EventHandler', format = ''):
- Type.__init__(self, name, format)
- def declare(self, name):
- Output("AEEventHandlerUPP %s__proc__ = upp_GenericEventHandler;", name)
- Output("PyObject *%s;", name)
- def getargsFormat(self):
- return "O"
- def getargsArgs(self, name):
- return "&%s" % name
- def passInput(self, name):
- return "%s__proc__, (long)%s" % (name, name)
- def passOutput(self, name):
- return "&%s__proc__, (long *)&%s" % (name, name)
- def mkvalueFormat(self):
- return "O"
- def mkvalueArgs(self, name):
- return name
- def cleanup(self, name):
- Output("Py_INCREF(%s); /* XXX leak, but needed */", name)
-
-class EHNoRefConType(EHType):
- def passInput(self, name):
- return "upp_GenericEventHandler"
-
-EventHandler = EHType()
-EventHandlerNoRefCon = EHNoRefConType()
-
-
-IdleProcPtr = FakeType("upp_AEIdleProc")
-AEIdleUPP = IdleProcPtr
-EventFilterProcPtr = FakeType("(AEFilterUPP)0")
-AEFilterUPP = EventFilterProcPtr
-NMRecPtr = FakeType("(NMRecPtr)0")
-EventHandlerProcPtr = FakeType("upp_GenericEventHandler")
-AEEventHandlerUPP = EventHandlerProcPtr
-AlwaysFalse = FakeType("0")
-
-
-AEFunction = OSErrWeakLinkFunctionGenerator
-AEMethod = OSErrWeakLinkMethodGenerator
-
-
-includestuff = includestuff + """
-#include <Carbon/Carbon.h>
-
-#ifdef USE_TOOLBOX_OBJECT_GLUE
-extern PyObject *_AEDesc_New(AEDesc *);
-extern int _AEDesc_Convert(PyObject *, AEDesc *);
-
-#define AEDesc_New _AEDesc_New
-#define AEDesc_NewBorrowed _AEDesc_NewBorrowed
-#define AEDesc_Convert _AEDesc_Convert
-#endif
-
-typedef long refcontype;
-
-static pascal OSErr GenericEventHandler(const AppleEvent *request, AppleEvent *reply, refcontype refcon); /* Forward */
-
-AEEventHandlerUPP upp_GenericEventHandler;
-
-static pascal Boolean AEIdleProc(EventRecord *theEvent, long *sleepTime, RgnHandle *mouseRgn)
-{
- if ( PyOS_InterruptOccurred() )
- return 1;
- return 0;
-}
-
-AEIdleUPP upp_AEIdleProc;
-"""
-
-finalstuff = finalstuff + """
-static pascal OSErr
-GenericEventHandler(const AppleEvent *request, AppleEvent *reply, refcontype refcon)
-{
- PyObject *handler = (PyObject *)refcon;
- AEDescObject *requestObject, *replyObject;
- PyObject *args, *res;
- if ((requestObject = (AEDescObject *)AEDesc_New((AppleEvent *)request)) == NULL) {
- return -1;
- }
- if ((replyObject = (AEDescObject *)AEDesc_New(reply)) == NULL) {
- Py_DECREF(requestObject);
- return -1;
- }
- if ((args = Py_BuildValue("OO", requestObject, replyObject)) == NULL) {
- Py_DECREF(requestObject);
- Py_DECREF(replyObject);
- return -1;
- }
- res = PyEval_CallObject(handler, args);
- requestObject->ob_itself.descriptorType = 'null';
- requestObject->ob_itself.dataHandle = NULL;
- replyObject->ob_itself.descriptorType = 'null';
- replyObject->ob_itself.dataHandle = NULL;
- Py_DECREF(args);
- if (res == NULL) {
- PySys_WriteStderr("Exception in AE event handler function\\n");
- PyErr_Print();
- return -1;
- }
- Py_DECREF(res);
- return noErr;
-}
-
-PyObject *AEDesc_NewBorrowed(AEDesc *itself)
-{
- PyObject *it;
-
- it = AEDesc_New(itself);
- if (it)
- ((AEDescObject *)it)->ob_owned = 0;
- return (PyObject *)it;
-}
-
-"""
-
-initstuff = initstuff + """
- upp_AEIdleProc = NewAEIdleUPP(AEIdleProc);
- upp_GenericEventHandler = NewAEEventHandlerUPP(GenericEventHandler);
- PyMac_INIT_TOOLBOX_OBJECT_NEW(AEDesc *, AEDesc_New);
- PyMac_INIT_TOOLBOX_OBJECT_NEW(AEDesc *, AEDesc_NewBorrowed);
- PyMac_INIT_TOOLBOX_OBJECT_CONVERT(AEDesc, AEDesc_Convert);
-"""
-
-module = MacModule('_AE', 'AE', includestuff, finalstuff, initstuff)
-
-class AEDescDefinition(PEP253Mixin, GlobalObjectDefinition):
- getsetlist = [(
- 'type',
- 'return PyMac_BuildOSType(self->ob_itself.descriptorType);',
- None,
- 'Type of this AEDesc'
- ), (
- 'data',
- """
- PyObject *res;
- Size size;
- char *ptr;
- OSErr err;
-
- size = AEGetDescDataSize(&self->ob_itself);
- if ( (res = PyString_FromStringAndSize(NULL, size)) == NULL )
- return NULL;
- if ( (ptr = PyString_AsString(res)) == NULL )
- return NULL;
- if ( (err=AEGetDescData(&self->ob_itself, ptr, size)) < 0 )
- return PyMac_Error(err);
- return res;
- """,
- None,
- 'The raw data in this AEDesc'
- )]
-
- def __init__(self, name, prefix = None, itselftype = None):
- GlobalObjectDefinition.__init__(self, name, prefix or name, itselftype or name)
- self.argref = "*"
-
- def outputStructMembers(self):
- GlobalObjectDefinition.outputStructMembers(self)
- Output("int ob_owned;")
-
- def outputInitStructMembers(self):
- GlobalObjectDefinition.outputInitStructMembers(self)
- Output("it->ob_owned = 1;")
-
- def outputCleanupStructMembers(self):
- Output("if (self->ob_owned) AEDisposeDesc(&self->ob_itself);")
-
-aedescobject = AEDescDefinition('AEDesc')
-module.addobject(aedescobject)
-
-functions = []
-aedescmethods = []
-
-exec(open('aegen.py').read())
-##exec(open('aedatamodelgen.py').read())
-
-# Manual generator
-AutoDispose_body = """
-int onoff, old;
-if (!PyArg_ParseTuple(_args, "i", &onoff))
- return NULL;
-old = _self->ob_owned;
-_self->ob_owned = onoff;
-_res = Py_BuildValue("i", old);
-return _res;
-"""
-f = ManualGenerator("AutoDispose", AutoDispose_body)
-f.docstring = lambda: "(int)->int. Automatically AEDisposeDesc the object on Python object cleanup"
-aedescmethods.append(f)
-
-for f in functions: module.add(f)
-for f in aedescmethods: aedescobject.add(f)
-
-SetOutputFileName('_AEmodule.c')
-module.generate()