Home | History | Annotate | Download | only in osa
      1 
      2 /* ========================== Module _OSA =========================== */
      3 
      4 #include "Python.h"
      5 
      6 
      7 
      8 #include "pymactoolbox.h"
      9 
     10 /* Macro to test whether a weak-loaded CFM function exists */
     11 #define PyMac_PRECHECK(rtn) do { if ( &rtn == NULL )  {\
     12         PyErr_SetString(PyExc_NotImplementedError, \
     13             "Not available in this shared library/OS version"); \
     14         return NULL; \
     15     }} while(0)
     16 
     17 
     18 #if PY_VERSION_HEX < 0x02040000
     19 PyObject *PyMac_GetOSErrException(void);
     20 #endif
     21 #include <Carbon/Carbon.h>
     22 
     23 #ifdef USE_TOOLBOX_OBJECT_GLUE
     24 extern PyObject *_OSAObj_New(ComponentInstance);
     25 extern int _OSAObj_Convert(PyObject *, ComponentInstance *);
     26 
     27 #define OSAObj_New _OSAObj_New
     28 #define OSAObj_Convert _OSAObj_Convert
     29 #endif
     30 
     31 static PyObject *OSA_Error;
     32 
     33 /* ---------------- Object type OSAComponentInstance ---------------- */
     34 
     35 PyTypeObject OSAComponentInstance_Type;
     36 
     37 #define OSAObj_Check(x) ((x)->ob_type == &OSAComponentInstance_Type || PyObject_TypeCheck((x), &OSAComponentInstance_Type))
     38 
     39 typedef struct OSAComponentInstanceObject {
     40     PyObject_HEAD
     41     ComponentInstance ob_itself;
     42 } OSAComponentInstanceObject;
     43 
     44 PyObject *OSAObj_New(ComponentInstance itself)
     45 {
     46     OSAComponentInstanceObject *it;
     47     if (itself == NULL) {
     48                                     PyErr_SetString(OSA_Error,"NULL ComponentInstance");
     49                                     return NULL;
     50                             }
     51     it = PyObject_NEW(OSAComponentInstanceObject, &OSAComponentInstance_Type);
     52     if (it == NULL) return NULL;
     53     it->ob_itself = itself;
     54     return (PyObject *)it;
     55 }
     56 
     57 int OSAObj_Convert(PyObject *v, ComponentInstance *p_itself)
     58 {
     59 
     60                         if (CmpInstObj_Convert(v, p_itself))
     61                                 return 1;
     62                         PyErr_Clear();
     63 
     64     if (!OSAObj_Check(v))
     65     {
     66         PyErr_SetString(PyExc_TypeError, "OSAComponentInstance required");
     67         return 0;
     68     }
     69     *p_itself = ((OSAComponentInstanceObject *)v)->ob_itself;
     70     return 1;
     71 }
     72 
     73 static void OSAObj_dealloc(OSAComponentInstanceObject *self)
     74 {
     75     /* Cleanup of self->ob_itself goes here */
     76     self->ob_type->tp_free((PyObject *)self);
     77 }
     78 
     79 static PyObject *OSAObj_OSALoad(OSAComponentInstanceObject *_self, PyObject *_args)
     80 {
     81     PyObject *_res = NULL;
     82     OSAError _err;
     83     AEDesc scriptData;
     84     long modeFlags;
     85     OSAID resultingScriptID;
     86 #ifndef OSALoad
     87     PyMac_PRECHECK(OSALoad);
     88 #endif
     89     if (!PyArg_ParseTuple(_args, "O&l",
     90                           AEDesc_Convert, &scriptData,
     91                           &modeFlags))
     92         return NULL;
     93     _err = OSALoad(_self->ob_itself,
     94                    &scriptData,
     95                    modeFlags,
     96                    &resultingScriptID);
     97     if (_err != noErr) return PyMac_Error(_err);
     98     _res = Py_BuildValue("l",
     99                          resultingScriptID);
    100     return _res;
    101 }
    102 
    103 static PyObject *OSAObj_OSAStore(OSAComponentInstanceObject *_self, PyObject *_args)
    104 {
    105     PyObject *_res = NULL;
    106     OSAError _err;
    107     OSAID scriptID;
    108     DescType desiredType;
    109     long modeFlags;
    110     AEDesc resultingScriptData;
    111 #ifndef OSAStore
    112     PyMac_PRECHECK(OSAStore);
    113 #endif
    114     if (!PyArg_ParseTuple(_args, "lO&l",
    115                           &scriptID,
    116                           PyMac_GetOSType, &desiredType,
    117                           &modeFlags))
    118         return NULL;
    119     _err = OSAStore(_self->ob_itself,
    120                     scriptID,
    121                     desiredType,
    122                     modeFlags,
    123                     &resultingScriptData);
    124     if (_err != noErr) return PyMac_Error(_err);
    125     _res = Py_BuildValue("O&",
    126                          AEDesc_New, &resultingScriptData);
    127     return _res;
    128 }
    129 
    130 static PyObject *OSAObj_OSAExecute(OSAComponentInstanceObject *_self, PyObject *_args)
    131 {
    132     PyObject *_res = NULL;
    133     OSAError _err;
    134     OSAID compiledScriptID;
    135     OSAID contextID;
    136     long modeFlags;
    137     OSAID resultingScriptValueID;
    138 #ifndef OSAExecute
    139     PyMac_PRECHECK(OSAExecute);
    140 #endif
    141     if (!PyArg_ParseTuple(_args, "lll",
    142                           &compiledScriptID,
    143                           &contextID,
    144                           &modeFlags))
    145         return NULL;
    146     _err = OSAExecute(_self->ob_itself,
    147                       compiledScriptID,
    148                       contextID,
    149                       modeFlags,
    150                       &resultingScriptValueID);
    151     if (_err != noErr) return PyMac_Error(_err);
    152     _res = Py_BuildValue("l",
    153                          resultingScriptValueID);
    154     return _res;
    155 }
    156 
    157 static PyObject *OSAObj_OSADisplay(OSAComponentInstanceObject *_self, PyObject *_args)
    158 {
    159     PyObject *_res = NULL;
    160     OSAError _err;
    161     OSAID scriptValueID;
    162     DescType desiredType;
    163     long modeFlags;
    164     AEDesc resultingText;
    165 #ifndef OSADisplay
    166     PyMac_PRECHECK(OSADisplay);
    167 #endif
    168     if (!PyArg_ParseTuple(_args, "lO&l",
    169                           &scriptValueID,
    170                           PyMac_GetOSType, &desiredType,
    171                           &modeFlags))
    172         return NULL;
    173     _err = OSADisplay(_self->ob_itself,
    174                       scriptValueID,
    175                       desiredType,
    176                       modeFlags,
    177                       &resultingText);
    178     if (_err != noErr) return PyMac_Error(_err);
    179     _res = Py_BuildValue("O&",
    180                          AEDesc_New, &resultingText);
    181     return _res;
    182 }
    183 
    184 static PyObject *OSAObj_OSAScriptError(OSAComponentInstanceObject *_self, PyObject *_args)
    185 {
    186     PyObject *_res = NULL;
    187     OSAError _err;
    188     OSType selector;
    189     DescType desiredType;
    190     AEDesc resultingErrorDescription;
    191 #ifndef OSAScriptError
    192     PyMac_PRECHECK(OSAScriptError);
    193 #endif
    194     if (!PyArg_ParseTuple(_args, "O&O&",
    195                           PyMac_GetOSType, &selector,
    196                           PyMac_GetOSType, &desiredType))
    197         return NULL;
    198     _err = OSAScriptError(_self->ob_itself,
    199                           selector,
    200                           desiredType,
    201                           &resultingErrorDescription);
    202     if (_err != noErr) return PyMac_Error(_err);
    203     _res = Py_BuildValue("O&",
    204                          AEDesc_New, &resultingErrorDescription);
    205     return _res;
    206 }
    207 
    208 static PyObject *OSAObj_OSADispose(OSAComponentInstanceObject *_self, PyObject *_args)
    209 {
    210     PyObject *_res = NULL;
    211     OSAError _err;
    212     OSAID scriptID;
    213 #ifndef OSADispose
    214     PyMac_PRECHECK(OSADispose);
    215 #endif
    216     if (!PyArg_ParseTuple(_args, "l",
    217                           &scriptID))
    218         return NULL;
    219     _err = OSADispose(_self->ob_itself,
    220                       scriptID);
    221     if (_err != noErr) return PyMac_Error(_err);
    222     Py_INCREF(Py_None);
    223     _res = Py_None;
    224     return _res;
    225 }
    226 
    227 static PyObject *OSAObj_OSASetScriptInfo(OSAComponentInstanceObject *_self, PyObject *_args)
    228 {
    229     PyObject *_res = NULL;
    230     OSAError _err;
    231     OSAID scriptID;
    232     OSType selector;
    233     long value;
    234 #ifndef OSASetScriptInfo
    235     PyMac_PRECHECK(OSASetScriptInfo);
    236 #endif
    237     if (!PyArg_ParseTuple(_args, "lO&l",
    238                           &scriptID,
    239                           PyMac_GetOSType, &selector,
    240                           &value))
    241         return NULL;
    242     _err = OSASetScriptInfo(_self->ob_itself,
    243                             scriptID,
    244                             selector,
    245                             value);
    246     if (_err != noErr) return PyMac_Error(_err);
    247     Py_INCREF(Py_None);
    248     _res = Py_None;
    249     return _res;
    250 }
    251 
    252 static PyObject *OSAObj_OSAGetScriptInfo(OSAComponentInstanceObject *_self, PyObject *_args)
    253 {
    254     PyObject *_res = NULL;
    255     OSAError _err;
    256     OSAID scriptID;
    257     OSType selector;
    258     long result;
    259 #ifndef OSAGetScriptInfo
    260     PyMac_PRECHECK(OSAGetScriptInfo);
    261 #endif
    262     if (!PyArg_ParseTuple(_args, "lO&",
    263                           &scriptID,
    264                           PyMac_GetOSType, &selector))
    265         return NULL;
    266     _err = OSAGetScriptInfo(_self->ob_itself,
    267                             scriptID,
    268                             selector,
    269                             &result);
    270     if (_err != noErr) return PyMac_Error(_err);
    271     _res = Py_BuildValue("l",
    272                          result);
    273     return _res;
    274 }
    275 
    276 static PyObject *OSAObj_OSAScriptingComponentName(OSAComponentInstanceObject *_self, PyObject *_args)
    277 {
    278     PyObject *_res = NULL;
    279     OSAError _err;
    280     AEDesc resultingScriptingComponentName;
    281 #ifndef OSAScriptingComponentName
    282     PyMac_PRECHECK(OSAScriptingComponentName);
    283 #endif
    284     if (!PyArg_ParseTuple(_args, ""))
    285         return NULL;
    286     _err = OSAScriptingComponentName(_self->ob_itself,
    287                                      &resultingScriptingComponentName);
    288     if (_err != noErr) return PyMac_Error(_err);
    289     _res = Py_BuildValue("O&",
    290                          AEDesc_New, &resultingScriptingComponentName);
    291     return _res;
    292 }
    293 
    294 static PyObject *OSAObj_OSACompile(OSAComponentInstanceObject *_self, PyObject *_args)
    295 {
    296     PyObject *_res = NULL;
    297     OSAError _err;
    298     AEDesc sourceData;
    299     long modeFlags;
    300     OSAID previousAndResultingScriptID;
    301 #ifndef OSACompile
    302     PyMac_PRECHECK(OSACompile);
    303 #endif
    304     if (!PyArg_ParseTuple(_args, "O&l",
    305                           AEDesc_Convert, &sourceData,
    306                           &modeFlags))
    307         return NULL;
    308     _err = OSACompile(_self->ob_itself,
    309                       &sourceData,
    310                       modeFlags,
    311                       &previousAndResultingScriptID);
    312     if (_err != noErr) return PyMac_Error(_err);
    313     _res = Py_BuildValue("l",
    314                          previousAndResultingScriptID);
    315     return _res;
    316 }
    317 
    318 static PyObject *OSAObj_OSACopyID(OSAComponentInstanceObject *_self, PyObject *_args)
    319 {
    320     PyObject *_res = NULL;
    321     OSAError _err;
    322     OSAID fromID;
    323     OSAID toID;
    324 #ifndef OSACopyID
    325     PyMac_PRECHECK(OSACopyID);
    326 #endif
    327     if (!PyArg_ParseTuple(_args, "l",
    328                           &fromID))
    329         return NULL;
    330     _err = OSACopyID(_self->ob_itself,
    331                      fromID,
    332                      &toID);
    333     if (_err != noErr) return PyMac_Error(_err);
    334     _res = Py_BuildValue("l",
    335                          toID);
    336     return _res;
    337 }
    338 
    339 static PyObject *OSAObj_OSAGetSource(OSAComponentInstanceObject *_self, PyObject *_args)
    340 {
    341     PyObject *_res = NULL;
    342     OSAError _err;
    343     OSAID scriptID;
    344     DescType desiredType;
    345     AEDesc resultingSourceData;
    346 #ifndef OSAGetSource
    347     PyMac_PRECHECK(OSAGetSource);
    348 #endif
    349     if (!PyArg_ParseTuple(_args, "lO&",
    350                           &scriptID,
    351                           PyMac_GetOSType, &desiredType))
    352         return NULL;
    353     _err = OSAGetSource(_self->ob_itself,
    354                         scriptID,
    355                         desiredType,
    356                         &resultingSourceData);
    357     if (_err != noErr) return PyMac_Error(_err);
    358     _res = Py_BuildValue("O&",
    359                          AEDesc_New, &resultingSourceData);
    360     return _res;
    361 }
    362 
    363 static PyObject *OSAObj_OSACoerceFromDesc(OSAComponentInstanceObject *_self, PyObject *_args)
    364 {
    365     PyObject *_res = NULL;
    366     OSAError _err;
    367     AEDesc scriptData;
    368     long modeFlags;
    369     OSAID resultingScriptID;
    370 #ifndef OSACoerceFromDesc
    371     PyMac_PRECHECK(OSACoerceFromDesc);
    372 #endif
    373     if (!PyArg_ParseTuple(_args, "O&l",
    374                           AEDesc_Convert, &scriptData,
    375                           &modeFlags))
    376         return NULL;
    377     _err = OSACoerceFromDesc(_self->ob_itself,
    378                              &scriptData,
    379                              modeFlags,
    380                              &resultingScriptID);
    381     if (_err != noErr) return PyMac_Error(_err);
    382     _res = Py_BuildValue("l",
    383                          resultingScriptID);
    384     return _res;
    385 }
    386 
    387 static PyObject *OSAObj_OSACoerceToDesc(OSAComponentInstanceObject *_self, PyObject *_args)
    388 {
    389     PyObject *_res = NULL;
    390     OSAError _err;
    391     OSAID scriptID;
    392     DescType desiredType;
    393     long modeFlags;
    394     AEDesc result;
    395 #ifndef OSACoerceToDesc
    396     PyMac_PRECHECK(OSACoerceToDesc);
    397 #endif
    398     if (!PyArg_ParseTuple(_args, "lO&l",
    399                           &scriptID,
    400                           PyMac_GetOSType, &desiredType,
    401                           &modeFlags))
    402         return NULL;
    403     _err = OSACoerceToDesc(_self->ob_itself,
    404                            scriptID,
    405                            desiredType,
    406                            modeFlags,
    407                            &result);
    408     if (_err != noErr) return PyMac_Error(_err);
    409     _res = Py_BuildValue("O&",
    410                          AEDesc_New, &result);
    411     return _res;
    412 }
    413 
    414 static PyObject *OSAObj_OSASetDefaultTarget(OSAComponentInstanceObject *_self, PyObject *_args)
    415 {
    416     PyObject *_res = NULL;
    417     OSAError _err;
    418     AEAddressDesc target;
    419 #ifndef OSASetDefaultTarget
    420     PyMac_PRECHECK(OSASetDefaultTarget);
    421 #endif
    422     if (!PyArg_ParseTuple(_args, "O&",
    423                           AEDesc_Convert, &target))
    424         return NULL;
    425     _err = OSASetDefaultTarget(_self->ob_itself,
    426                                &target);
    427     if (_err != noErr) return PyMac_Error(_err);
    428     Py_INCREF(Py_None);
    429     _res = Py_None;
    430     return _res;
    431 }
    432 
    433 static PyObject *OSAObj_OSAStartRecording(OSAComponentInstanceObject *_self, PyObject *_args)
    434 {
    435     PyObject *_res = NULL;
    436     OSAError _err;
    437     OSAID compiledScriptToModifyID;
    438 #ifndef OSAStartRecording
    439     PyMac_PRECHECK(OSAStartRecording);
    440 #endif
    441     if (!PyArg_ParseTuple(_args, ""))
    442         return NULL;
    443     _err = OSAStartRecording(_self->ob_itself,
    444                              &compiledScriptToModifyID);
    445     if (_err != noErr) return PyMac_Error(_err);
    446     _res = Py_BuildValue("l",
    447                          compiledScriptToModifyID);
    448     return _res;
    449 }
    450 
    451 static PyObject *OSAObj_OSAStopRecording(OSAComponentInstanceObject *_self, PyObject *_args)
    452 {
    453     PyObject *_res = NULL;
    454     OSAError _err;
    455     OSAID compiledScriptID;
    456 #ifndef OSAStopRecording
    457     PyMac_PRECHECK(OSAStopRecording);
    458 #endif
    459     if (!PyArg_ParseTuple(_args, "l",
    460                           &compiledScriptID))
    461         return NULL;
    462     _err = OSAStopRecording(_self->ob_itself,
    463                             compiledScriptID);
    464     if (_err != noErr) return PyMac_Error(_err);
    465     Py_INCREF(Py_None);
    466     _res = Py_None;
    467     return _res;
    468 }
    469 
    470 static PyObject *OSAObj_OSALoadExecute(OSAComponentInstanceObject *_self, PyObject *_args)
    471 {
    472     PyObject *_res = NULL;
    473     OSAError _err;
    474     AEDesc scriptData;
    475     OSAID contextID;
    476     long modeFlags;
    477     OSAID resultingScriptValueID;
    478 #ifndef OSALoadExecute
    479     PyMac_PRECHECK(OSALoadExecute);
    480 #endif
    481     if (!PyArg_ParseTuple(_args, "O&ll",
    482                           AEDesc_Convert, &scriptData,
    483                           &contextID,
    484                           &modeFlags))
    485         return NULL;
    486     _err = OSALoadExecute(_self->ob_itself,
    487                           &scriptData,
    488                           contextID,
    489                           modeFlags,
    490                           &resultingScriptValueID);
    491     if (_err != noErr) return PyMac_Error(_err);
    492     _res = Py_BuildValue("l",
    493                          resultingScriptValueID);
    494     return _res;
    495 }
    496 
    497 static PyObject *OSAObj_OSACompileExecute(OSAComponentInstanceObject *_self, PyObject *_args)
    498 {
    499     PyObject *_res = NULL;
    500     OSAError _err;
    501     AEDesc sourceData;
    502     OSAID contextID;
    503     long modeFlags;
    504     OSAID resultingScriptValueID;
    505 #ifndef OSACompileExecute
    506     PyMac_PRECHECK(OSACompileExecute);
    507 #endif
    508     if (!PyArg_ParseTuple(_args, "O&ll",
    509                           AEDesc_Convert, &sourceData,
    510                           &contextID,
    511                           &modeFlags))
    512         return NULL;
    513     _err = OSACompileExecute(_self->ob_itself,
    514                              &sourceData,
    515                              contextID,
    516                              modeFlags,
    517                              &resultingScriptValueID);
    518     if (_err != noErr) return PyMac_Error(_err);
    519     _res = Py_BuildValue("l",
    520                          resultingScriptValueID);
    521     return _res;
    522 }
    523 
    524 static PyObject *OSAObj_OSADoScript(OSAComponentInstanceObject *_self, PyObject *_args)
    525 {
    526     PyObject *_res = NULL;
    527     OSAError _err;
    528     AEDesc sourceData;
    529     OSAID contextID;
    530     DescType desiredType;
    531     long modeFlags;
    532     AEDesc resultingText;
    533 #ifndef OSADoScript
    534     PyMac_PRECHECK(OSADoScript);
    535 #endif
    536     if (!PyArg_ParseTuple(_args, "O&lO&l",
    537                           AEDesc_Convert, &sourceData,
    538                           &contextID,
    539                           PyMac_GetOSType, &desiredType,
    540                           &modeFlags))
    541         return NULL;
    542     _err = OSADoScript(_self->ob_itself,
    543                        &sourceData,
    544                        contextID,
    545                        desiredType,
    546                        modeFlags,
    547                        &resultingText);
    548     if (_err != noErr) return PyMac_Error(_err);
    549     _res = Py_BuildValue("O&",
    550                          AEDesc_New, &resultingText);
    551     return _res;
    552 }
    553 
    554 static PyObject *OSAObj_OSASetCurrentDialect(OSAComponentInstanceObject *_self, PyObject *_args)
    555 {
    556     PyObject *_res = NULL;
    557     OSAError _err;
    558     short dialectCode;
    559 #ifndef OSASetCurrentDialect
    560     PyMac_PRECHECK(OSASetCurrentDialect);
    561 #endif
    562     if (!PyArg_ParseTuple(_args, "h",
    563                           &dialectCode))
    564         return NULL;
    565     _err = OSASetCurrentDialect(_self->ob_itself,
    566                                 dialectCode);
    567     if (_err != noErr) return PyMac_Error(_err);
    568     Py_INCREF(Py_None);
    569     _res = Py_None;
    570     return _res;
    571 }
    572 
    573 static PyObject *OSAObj_OSAGetCurrentDialect(OSAComponentInstanceObject *_self, PyObject *_args)
    574 {
    575     PyObject *_res = NULL;
    576     OSAError _err;
    577     short resultingDialectCode;
    578 #ifndef OSAGetCurrentDialect
    579     PyMac_PRECHECK(OSAGetCurrentDialect);
    580 #endif
    581     if (!PyArg_ParseTuple(_args, ""))
    582         return NULL;
    583     _err = OSAGetCurrentDialect(_self->ob_itself,
    584                                 &resultingDialectCode);
    585     if (_err != noErr) return PyMac_Error(_err);
    586     _res = Py_BuildValue("h",
    587                          resultingDialectCode);
    588     return _res;
    589 }
    590 
    591 static PyObject *OSAObj_OSAAvailableDialects(OSAComponentInstanceObject *_self, PyObject *_args)
    592 {
    593     PyObject *_res = NULL;
    594     OSAError _err;
    595     AEDesc resultingDialectInfoList;
    596 #ifndef OSAAvailableDialects
    597     PyMac_PRECHECK(OSAAvailableDialects);
    598 #endif
    599     if (!PyArg_ParseTuple(_args, ""))
    600         return NULL;
    601     _err = OSAAvailableDialects(_self->ob_itself,
    602                                 &resultingDialectInfoList);
    603     if (_err != noErr) return PyMac_Error(_err);
    604     _res = Py_BuildValue("O&",
    605                          AEDesc_New, &resultingDialectInfoList);
    606     return _res;
    607 }
    608 
    609 static PyObject *OSAObj_OSAGetDialectInfo(OSAComponentInstanceObject *_self, PyObject *_args)
    610 {
    611     PyObject *_res = NULL;
    612     OSAError _err;
    613     short dialectCode;
    614     OSType selector;
    615     AEDesc resultingDialectInfo;
    616 #ifndef OSAGetDialectInfo
    617     PyMac_PRECHECK(OSAGetDialectInfo);
    618 #endif
    619     if (!PyArg_ParseTuple(_args, "hO&",
    620                           &dialectCode,
    621                           PyMac_GetOSType, &selector))
    622         return NULL;
    623     _err = OSAGetDialectInfo(_self->ob_itself,
    624                              dialectCode,
    625                              selector,
    626                              &resultingDialectInfo);
    627     if (_err != noErr) return PyMac_Error(_err);
    628     _res = Py_BuildValue("O&",
    629                          AEDesc_New, &resultingDialectInfo);
    630     return _res;
    631 }
    632 
    633 static PyObject *OSAObj_OSAAvailableDialectCodeList(OSAComponentInstanceObject *_self, PyObject *_args)
    634 {
    635     PyObject *_res = NULL;
    636     OSAError _err;
    637     AEDesc resultingDialectCodeList;
    638 #ifndef OSAAvailableDialectCodeList
    639     PyMac_PRECHECK(OSAAvailableDialectCodeList);
    640 #endif
    641     if (!PyArg_ParseTuple(_args, ""))
    642         return NULL;
    643     _err = OSAAvailableDialectCodeList(_self->ob_itself,
    644                                        &resultingDialectCodeList);
    645     if (_err != noErr) return PyMac_Error(_err);
    646     _res = Py_BuildValue("O&",
    647                          AEDesc_New, &resultingDialectCodeList);
    648     return _res;
    649 }
    650 
    651 static PyObject *OSAObj_OSAExecuteEvent(OSAComponentInstanceObject *_self, PyObject *_args)
    652 {
    653     PyObject *_res = NULL;
    654     OSAError _err;
    655     AppleEvent theAppleEvent;
    656     OSAID contextID;
    657     long modeFlags;
    658     OSAID resultingScriptValueID;
    659 #ifndef OSAExecuteEvent
    660     PyMac_PRECHECK(OSAExecuteEvent);
    661 #endif
    662     if (!PyArg_ParseTuple(_args, "O&ll",
    663                           AEDesc_Convert, &theAppleEvent,
    664                           &contextID,
    665                           &modeFlags))
    666         return NULL;
    667     _err = OSAExecuteEvent(_self->ob_itself,
    668                            &theAppleEvent,
    669                            contextID,
    670                            modeFlags,
    671                            &resultingScriptValueID);
    672     if (_err != noErr) return PyMac_Error(_err);
    673     _res = Py_BuildValue("l",
    674                          resultingScriptValueID);
    675     return _res;
    676 }
    677 
    678 static PyObject *OSAObj_OSADoEvent(OSAComponentInstanceObject *_self, PyObject *_args)
    679 {
    680     PyObject *_res = NULL;
    681     OSAError _err;
    682     AppleEvent theAppleEvent;
    683     OSAID contextID;
    684     long modeFlags;
    685     AppleEvent reply;
    686 #ifndef OSADoEvent
    687     PyMac_PRECHECK(OSADoEvent);
    688 #endif
    689     if (!PyArg_ParseTuple(_args, "O&ll",
    690                           AEDesc_Convert, &theAppleEvent,
    691                           &contextID,
    692                           &modeFlags))
    693         return NULL;
    694     _err = OSADoEvent(_self->ob_itself,
    695                       &theAppleEvent,
    696                       contextID,
    697                       modeFlags,
    698                       &reply);
    699     if (_err != noErr) return PyMac_Error(_err);
    700     _res = Py_BuildValue("O&",
    701                          AEDesc_New, &reply);
    702     return _res;
    703 }
    704 
    705 static PyObject *OSAObj_OSAMakeContext(OSAComponentInstanceObject *_self, PyObject *_args)
    706 {
    707     PyObject *_res = NULL;
    708     OSAError _err;
    709     AEDesc contextName;
    710     OSAID parentContext;
    711     OSAID resultingContextID;
    712 #ifndef OSAMakeContext
    713     PyMac_PRECHECK(OSAMakeContext);
    714 #endif
    715     if (!PyArg_ParseTuple(_args, "O&l",
    716                           AEDesc_Convert, &contextName,
    717                           &parentContext))
    718         return NULL;
    719     _err = OSAMakeContext(_self->ob_itself,
    720                           &contextName,
    721                           parentContext,
    722                           &resultingContextID);
    723     if (_err != noErr) return PyMac_Error(_err);
    724     _res = Py_BuildValue("l",
    725                          resultingContextID);
    726     return _res;
    727 }
    728 
    729 static PyMethodDef OSAObj_methods[] = {
    730     {"OSALoad", (PyCFunction)OSAObj_OSALoad, 1,
    731      PyDoc_STR("(AEDesc scriptData, long modeFlags) -> (OSAID resultingScriptID)")},
    732     {"OSAStore", (PyCFunction)OSAObj_OSAStore, 1,
    733      PyDoc_STR("(OSAID scriptID, DescType desiredType, long modeFlags) -> (AEDesc resultingScriptData)")},
    734     {"OSAExecute", (PyCFunction)OSAObj_OSAExecute, 1,
    735      PyDoc_STR("(OSAID compiledScriptID, OSAID contextID, long modeFlags) -> (OSAID resultingScriptValueID)")},
    736     {"OSADisplay", (PyCFunction)OSAObj_OSADisplay, 1,
    737      PyDoc_STR("(OSAID scriptValueID, DescType desiredType, long modeFlags) -> (AEDesc resultingText)")},
    738     {"OSAScriptError", (PyCFunction)OSAObj_OSAScriptError, 1,
    739      PyDoc_STR("(OSType selector, DescType desiredType) -> (AEDesc resultingErrorDescription)")},
    740     {"OSADispose", (PyCFunction)OSAObj_OSADispose, 1,
    741      PyDoc_STR("(OSAID scriptID) -> None")},
    742     {"OSASetScriptInfo", (PyCFunction)OSAObj_OSASetScriptInfo, 1,
    743      PyDoc_STR("(OSAID scriptID, OSType selector, long value) -> None")},
    744     {"OSAGetScriptInfo", (PyCFunction)OSAObj_OSAGetScriptInfo, 1,
    745      PyDoc_STR("(OSAID scriptID, OSType selector) -> (long result)")},
    746     {"OSAScriptingComponentName", (PyCFunction)OSAObj_OSAScriptingComponentName, 1,
    747      PyDoc_STR("() -> (AEDesc resultingScriptingComponentName)")},
    748     {"OSACompile", (PyCFunction)OSAObj_OSACompile, 1,
    749      PyDoc_STR("(AEDesc sourceData, long modeFlags) -> (OSAID previousAndResultingScriptID)")},
    750     {"OSACopyID", (PyCFunction)OSAObj_OSACopyID, 1,
    751      PyDoc_STR("(OSAID fromID) -> (OSAID toID)")},
    752     {"OSAGetSource", (PyCFunction)OSAObj_OSAGetSource, 1,
    753      PyDoc_STR("(OSAID scriptID, DescType desiredType) -> (AEDesc resultingSourceData)")},
    754     {"OSACoerceFromDesc", (PyCFunction)OSAObj_OSACoerceFromDesc, 1,
    755      PyDoc_STR("(AEDesc scriptData, long modeFlags) -> (OSAID resultingScriptID)")},
    756     {"OSACoerceToDesc", (PyCFunction)OSAObj_OSACoerceToDesc, 1,
    757      PyDoc_STR("(OSAID scriptID, DescType desiredType, long modeFlags) -> (AEDesc result)")},
    758     {"OSASetDefaultTarget", (PyCFunction)OSAObj_OSASetDefaultTarget, 1,
    759      PyDoc_STR("(AEAddressDesc target) -> None")},
    760     {"OSAStartRecording", (PyCFunction)OSAObj_OSAStartRecording, 1,
    761      PyDoc_STR("() -> (OSAID compiledScriptToModifyID)")},
    762     {"OSAStopRecording", (PyCFunction)OSAObj_OSAStopRecording, 1,
    763      PyDoc_STR("(OSAID compiledScriptID) -> None")},
    764     {"OSALoadExecute", (PyCFunction)OSAObj_OSALoadExecute, 1,
    765      PyDoc_STR("(AEDesc scriptData, OSAID contextID, long modeFlags) -> (OSAID resultingScriptValueID)")},
    766     {"OSACompileExecute", (PyCFunction)OSAObj_OSACompileExecute, 1,
    767      PyDoc_STR("(AEDesc sourceData, OSAID contextID, long modeFlags) -> (OSAID resultingScriptValueID)")},
    768     {"OSADoScript", (PyCFunction)OSAObj_OSADoScript, 1,
    769      PyDoc_STR("(AEDesc sourceData, OSAID contextID, DescType desiredType, long modeFlags) -> (AEDesc resultingText)")},
    770     {"OSASetCurrentDialect", (PyCFunction)OSAObj_OSASetCurrentDialect, 1,
    771      PyDoc_STR("(short dialectCode) -> None")},
    772     {"OSAGetCurrentDialect", (PyCFunction)OSAObj_OSAGetCurrentDialect, 1,
    773      PyDoc_STR("() -> (short resultingDialectCode)")},
    774     {"OSAAvailableDialects", (PyCFunction)OSAObj_OSAAvailableDialects, 1,
    775      PyDoc_STR("() -> (AEDesc resultingDialectInfoList)")},
    776     {"OSAGetDialectInfo", (PyCFunction)OSAObj_OSAGetDialectInfo, 1,
    777      PyDoc_STR("(short dialectCode, OSType selector) -> (AEDesc resultingDialectInfo)")},
    778     {"OSAAvailableDialectCodeList", (PyCFunction)OSAObj_OSAAvailableDialectCodeList, 1,
    779      PyDoc_STR("() -> (AEDesc resultingDialectCodeList)")},
    780     {"OSAExecuteEvent", (PyCFunction)OSAObj_OSAExecuteEvent, 1,
    781      PyDoc_STR("(AppleEvent theAppleEvent, OSAID contextID, long modeFlags) -> (OSAID resultingScriptValueID)")},
    782     {"OSADoEvent", (PyCFunction)OSAObj_OSADoEvent, 1,
    783      PyDoc_STR("(AppleEvent theAppleEvent, OSAID contextID, long modeFlags) -> (AppleEvent reply)")},
    784     {"OSAMakeContext", (PyCFunction)OSAObj_OSAMakeContext, 1,
    785      PyDoc_STR("(AEDesc contextName, OSAID parentContext) -> (OSAID resultingContextID)")},
    786     {NULL, NULL, 0}
    787 };
    788 
    789 #define OSAObj_getsetlist NULL
    790 
    791 
    792 #define OSAObj_compare NULL
    793 
    794 #define OSAObj_repr NULL
    795 
    796 #define OSAObj_hash NULL
    797 #define OSAObj_tp_init 0
    798 
    799 #define OSAObj_tp_alloc PyType_GenericAlloc
    800 
    801 static PyObject *OSAObj_tp_new(PyTypeObject *type, PyObject *_args, PyObject *_kwds)
    802 {
    803     PyObject *_self;
    804     ComponentInstance itself;
    805     char *kw[] = {"itself", 0};
    806 
    807     if (!PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, OSAObj_Convert, &itself)) return NULL;
    808     if ((_self = type->tp_alloc(type, 0)) == NULL) return NULL;
    809     ((OSAComponentInstanceObject *)_self)->ob_itself = itself;
    810     return _self;
    811 }
    812 
    813 #define OSAObj_tp_free PyObject_Del
    814 
    815 
    816 PyTypeObject OSAComponentInstance_Type = {
    817     PyObject_HEAD_INIT(NULL)
    818     0, /*ob_size*/
    819     "_OSA.OSAComponentInstance", /*tp_name*/
    820     sizeof(OSAComponentInstanceObject), /*tp_basicsize*/
    821     0, /*tp_itemsize*/
    822     /* methods */
    823     (destructor) OSAObj_dealloc, /*tp_dealloc*/
    824     0, /*tp_print*/
    825     (getattrfunc)0, /*tp_getattr*/
    826     (setattrfunc)0, /*tp_setattr*/
    827     (cmpfunc) OSAObj_compare, /*tp_compare*/
    828     (reprfunc) OSAObj_repr, /*tp_repr*/
    829     (PyNumberMethods *)0, /* tp_as_number */
    830     (PySequenceMethods *)0, /* tp_as_sequence */
    831     (PyMappingMethods *)0, /* tp_as_mapping */
    832     (hashfunc) OSAObj_hash, /*tp_hash*/
    833     0, /*tp_call*/
    834     0, /*tp_str*/
    835     PyObject_GenericGetAttr, /*tp_getattro*/
    836     PyObject_GenericSetAttr, /*tp_setattro */
    837     0, /*tp_as_buffer*/
    838     Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /* tp_flags */
    839     0, /*tp_doc*/
    840     0, /*tp_traverse*/
    841     0, /*tp_clear*/
    842     0, /*tp_richcompare*/
    843     0, /*tp_weaklistoffset*/
    844     0, /*tp_iter*/
    845     0, /*tp_iternext*/
    846     OSAObj_methods, /* tp_methods */
    847     0, /*tp_members*/
    848     OSAObj_getsetlist, /*tp_getset*/
    849     0, /*tp_base*/
    850     0, /*tp_dict*/
    851     0, /*tp_descr_get*/
    852     0, /*tp_descr_set*/
    853     0, /*tp_dictoffset*/
    854     OSAObj_tp_init, /* tp_init */
    855     OSAObj_tp_alloc, /* tp_alloc */
    856     OSAObj_tp_new, /* tp_new */
    857     OSAObj_tp_free, /* tp_free */
    858 };
    859 
    860 /* -------------- End object type OSAComponentInstance -------------- */
    861 
    862 
    863 static PyMethodDef OSA_methods[] = {
    864     {NULL, NULL, 0}
    865 };
    866 
    867 
    868 
    869 
    870 void init_OSA(void)
    871 {
    872     PyObject *m;
    873     PyObject *d;
    874 
    875 
    876 
    877     /*
    878         PyMac_INIT_TOOLBOX_OBJECT_NEW(ComponentInstance, OSAObj_New);
    879         PyMac_INIT_TOOLBOX_OBJECT_CONVERT(ComponentInstance, OSAObj_Convert);
    880     */
    881 
    882 
    883     m = Py_InitModule("_OSA", OSA_methods);
    884     d = PyModule_GetDict(m);
    885     OSA_Error = PyMac_GetOSErrException();
    886     if (OSA_Error == NULL ||
    887         PyDict_SetItemString(d, "Error", OSA_Error) != 0)
    888         return;
    889     OSAComponentInstance_Type.ob_type = &PyType_Type;
    890     if (PyType_Ready(&OSAComponentInstance_Type) < 0) return;
    891     Py_INCREF(&OSAComponentInstance_Type);
    892     PyModule_AddObject(m, "OSAComponentInstance", (PyObject *)&OSAComponentInstance_Type);
    893     /* Backward-compatible name */
    894     Py_INCREF(&OSAComponentInstance_Type);
    895     PyModule_AddObject(m, "OSAComponentInstanceType", (PyObject *)&OSAComponentInstance_Type);
    896 }
    897 
    898 /* ======================== End module _OSA ========================= */
    899 
    900