[Python-checkins] python/dist/src/Mac/Modules/ae _AEmodule.c,1.12,1.13 aesupport.py,1.26,1.27
jackjansen@users.sourceforge.net
jackjansen@users.sourceforge.net
Fri, 29 Nov 2002 15:41:13 -0800
Update of /cvsroot/python/python/dist/src/Mac/Modules/ae
In directory sc8-pr-cvs1:/tmp/cvs-serv8673/ae
Modified Files:
_AEmodule.c aesupport.py
Log Message:
Converted the Carbon modules to use PEP252-style objects, with
descriptors in stead of manual getattr hooks to get at attributes
of the objects.
For Qd I have in stead gotten rid of most of the attribute access
in favor of the carbon-style accessor methods (with the exception
of visRgn, to be done later), and of the Carbon.Qd.qd global object,
for which accessor functions are also available.
For List I have fixed the fact that various methods were incorrectly
generated as functions.
CF is untouched: PEP252 doesn't allow "poor-mans-inheritance" with
basechain, so it will have to wait for PEP253 support.
Index: _AEmodule.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/Mac/Modules/ae/_AEmodule.c,v
retrieving revision 1.12
retrieving revision 1.13
diff -C2 -d -r1.12 -r1.13
*** _AEmodule.c 16 Aug 2002 09:09:13 -0000 1.12
--- _AEmodule.c 29 Nov 2002 23:40:41 -0000 1.13
***************
*** 21,24 ****
--- 21,27 ----
+ #ifndef PyDoc_STR
+ #define PyDoc_STR(x) (x)
+ #endif
#ifdef WITHOUT_FRAMEWORKS
#include <AppleEvents.h>
***************
*** 36,40 ****
#endif
! static pascal OSErr GenericEventHandler(); /* Forward */
AEEventHandlerUPP upp_GenericEventHandler;
--- 39,49 ----
#endif
! #if UNIVERSAL_INTERFACES_VERSION >= 0x0340
! typedef long refcontype;
! #else
! typedef unsigned long refcontype;
! #endif
!
! static pascal OSErr GenericEventHandler(const AppleEvent *request, AppleEvent *reply, refcontype refcon); /* Forward */
AEEventHandlerUPP upp_GenericEventHandler;
***************
*** 821,864 ****
};
! PyMethodChain AEDesc_chain = { AEDesc_methods, NULL };
!
! static PyObject *AEDesc_getattr(AEDescObject *self, char *name)
{
! if (strcmp(name, "type") == 0)
! return PyMac_BuildOSType(self->ob_itself.descriptorType);
! if (strcmp(name, "data") == 0) {
! PyObject *res;
! #if !TARGET_API_MAC_CARBON
! char state;
! state = HGetState(self->ob_itself.dataHandle);
! HLock(self->ob_itself.dataHandle);
! res = PyString_FromStringAndSize(
! *self->ob_itself.dataHandle,
! GetHandleSize(self->ob_itself.dataHandle));
! HUnlock(self->ob_itself.dataHandle);
! HSetState(self->ob_itself.dataHandle, state);
! #else
! 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);
! #endif
! return res;
! }
! if (strcmp(name, "__members__") == 0)
! return Py_BuildValue("[ss]", "data", "type");
! return Py_FindMethodInChain(&AEDesc_chain, (PyObject *)self, name);
}
! #define AEDesc_setattr NULL
#define AEDesc_compare NULL
--- 830,867 ----
};
! static PyObject *AEDesc_get_type(AEDescObject *self, void *closure)
{
+ return PyMac_BuildOSType(self->ob_itself.descriptorType);
+ }
! #define AEDesc_set_type NULL
! static PyObject *AEDesc_get_data(AEDescObject *self, void *closure)
! {
!
! 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;
!
}
! #define AEDesc_set_data NULL
!
! static PyGetSetDef AEDesc_getsetlist[] = {
! {"type", (getter)AEDesc_get_type, (setter)AEDesc_set_type, "Type of this AEDesc"},
! {"data", (getter)AEDesc_get_data, (setter)AEDesc_set_data, "The raw data in this AEDesc"},
! {NULL, NULL, NULL, NULL},
! };
!
#define AEDesc_compare NULL
***************
*** 877,882 ****
(destructor) AEDesc_dealloc, /*tp_dealloc*/
0, /*tp_print*/
! (getattrfunc) AEDesc_getattr, /*tp_getattr*/
! (setattrfunc) AEDesc_setattr, /*tp_setattr*/
(cmpfunc) AEDesc_compare, /*tp_compare*/
(reprfunc) AEDesc_repr, /*tp_repr*/
--- 880,885 ----
(destructor) AEDesc_dealloc, /*tp_dealloc*/
0, /*tp_print*/
! (getattrfunc)0, /*tp_getattr*/
! (setattrfunc)0, /*tp_setattr*/
(cmpfunc) AEDesc_compare, /*tp_compare*/
(reprfunc) AEDesc_repr, /*tp_repr*/
***************
*** 885,888 ****
--- 888,908 ----
(PyMappingMethods *)0, /* tp_as_mapping */
(hashfunc) AEDesc_hash, /*tp_hash*/
+ 0, /*tp_call*/
+ 0, /*tp_str*/
+ PyObject_GenericGetAttr, /*tp_getattro*/
+ PyObject_GenericSetAttr, /*tp_setattro */
+ 0, /*outputHook_tp_as_buffer*/
+ 0, /*outputHook_tp_flags*/
+ 0, /*outputHook_tp_doc*/
+ 0, /*outputHook_tp_traverse*/
+ 0, /*outputHook_tp_clear*/
+ 0, /*outputHook_tp_richcompare*/
+ 0, /*outputHook_tp_weaklistoffset*/
+ 0, /*outputHook_tp_iter*/
+ 0, /*outputHook_tp_iternext*/
+ AEDesc_methods, /* tp_methods */
+ 0, /*outputHook_tp_members*/
+ AEDesc_getsetlist, /*tp_getset*/
+ 0, /*outputHook_tp_base*/
};
***************
*** 1350,1359 ****
-
- #if UNIVERSAL_INTERFACES_VERSION >= 0x0340
- typedef long refcontype;
- #else
- typedef unsigned long refcontype;
- #endif
static pascal OSErr
--- 1370,1373 ----
Index: aesupport.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Mac/Modules/ae/aesupport.py,v
retrieving revision 1.26
retrieving revision 1.27
diff -C2 -d -r1.26 -r1.27
*** aesupport.py 25 Mar 2002 00:32:17 -0000 1.26
--- aesupport.py 29 Nov 2002 23:40:41 -0000 1.27
***************
*** 83,86 ****
--- 83,89 ----
includestuff = includestuff + """
+ #ifndef PyDoc_STR
+ #define PyDoc_STR(x) (x)
+ #endif
#ifdef WITHOUT_FRAMEWORKS
#include <AppleEvents.h>
***************
*** 98,102 ****
#endif
! static pascal OSErr GenericEventHandler(); /* Forward */
AEEventHandlerUPP upp_GenericEventHandler;
--- 101,111 ----
#endif
! #if UNIVERSAL_INTERFACES_VERSION >= 0x0340
! typedef long refcontype;
! #else
! typedef unsigned long refcontype;
! #endif
!
! static pascal OSErr GenericEventHandler(const AppleEvent *request, AppleEvent *reply, refcontype refcon); /* Forward */
AEEventHandlerUPP upp_GenericEventHandler;
***************
*** 119,128 ****
finalstuff = finalstuff + """
- #if UNIVERSAL_INTERFACES_VERSION >= 0x0340
- typedef long refcontype;
- #else
- typedef unsigned long refcontype;
- #endif
-
static pascal OSErr
GenericEventHandler(const AppleEvent *request, AppleEvent *reply, refcontype refcon)
--- 128,131 ----
***************
*** 172,176 ****
module = MacModule('_AE', 'AE', includestuff, finalstuff, initstuff)
! class AEDescDefinition(GlobalObjectDefinition):
def __init__(self, name, prefix = None, itselftype = None):
--- 175,204 ----
module = MacModule('_AE', 'AE', includestuff, finalstuff, initstuff)
! class AEDescDefinition(PEP252Mixin, 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):
***************
*** 180,218 ****
def outputFreeIt(self, name):
Output("AEDisposeDesc(&%s);", name)
-
- def outputGetattrHook(self):
- Output("""
- if (strcmp(name, "type") == 0)
- return PyMac_BuildOSType(self->ob_itself.descriptorType);
- if (strcmp(name, "data") == 0) {
- PyObject *res;
- #if !TARGET_API_MAC_CARBON
- char state;
- state = HGetState(self->ob_itself.dataHandle);
- HLock(self->ob_itself.dataHandle);
- res = PyString_FromStringAndSize(
- *self->ob_itself.dataHandle,
- GetHandleSize(self->ob_itself.dataHandle));
- HUnlock(self->ob_itself.dataHandle);
- HSetState(self->ob_itself.dataHandle, state);
- #else
- 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);
- #endif
- return res;
- }
- if (strcmp(name, "__members__") == 0)
- return Py_BuildValue("[ss]", "data", "type");
- """)
-
aedescobject = AEDescDefinition('AEDesc')
--- 208,211 ----