2001-08-23 11:02:09 -03:00
/* ========================== Module _Res =========================== */
# include "Python.h"
# include "macglue.h"
# include "pymactoolbox.h"
/* Macro to test whether a weak-loaded CFM function exists */
# define PyMac_PRECHECK(rtn) do { if ( &rtn == NULL ) {\
PyErr_SetString ( PyExc_NotImplementedError , \
" Not available in this shared library/OS version " ) ; \
return NULL ; \
} } while ( 0 )
# ifdef WITHOUT_FRAMEWORKS
# include <Resources.h>
# include <string.h>
# else
# include <Carbon/Carbon.h>
# endif
# ifdef USE_TOOLBOX_OBJECT_GLUE
extern PyObject * _ResObj_New ( Handle ) ;
extern int _ResObj_Convert ( PyObject * , Handle * ) ;
extern PyObject * _OptResObj_New ( Handle ) ;
extern int _OptResObj_Convert ( PyObject * , Handle * ) ;
# define ResObj_New _ResObj_New
# define ResObj_Convert _ResObj_Convert
# define OptResObj_New _OptResObj_New
# define OptResObj_Convert _OptResObj_Convert
# endif
/* Function to dispose a resource, with a "normal" calling sequence */
static void
PyMac_AutoDisposeHandle ( Handle h )
{
DisposeHandle ( h ) ;
}
static PyObject * Res_Error ;
/* ---------------------- Object type Resource ---------------------- */
PyTypeObject Resource_Type ;
# define ResObj_Check(x) ((x)->ob_type == &Resource_Type)
typedef struct ResourceObject {
PyObject_HEAD
Handle ob_itself ;
void ( * ob_freeit ) ( Handle ptr ) ;
} ResourceObject ;
PyObject * ResObj_New ( Handle itself )
{
ResourceObject * it ;
if ( itself = = NULL ) return PyMac_Error ( resNotFound ) ;
it = PyObject_NEW ( ResourceObject , & Resource_Type ) ;
if ( it = = NULL ) return NULL ;
it - > ob_itself = itself ;
it - > ob_freeit = NULL ;
return ( PyObject * ) it ;
}
2001-09-04 19:19:18 -03:00
int ResObj_Convert ( PyObject * v , Handle * p_itself )
2001-08-23 11:02:09 -03:00
{
if ( ! ResObj_Check ( v ) )
{
PyObject * tmp ;
if ( ( tmp = PyObject_CallMethod ( v , " as_Resource " , " " ) ) )
{
* p_itself = ( ( ResourceObject * ) tmp ) - > ob_itself ;
Py_DECREF ( tmp ) ;
return 1 ;
}
PyErr_Clear ( ) ;
}
if ( ! ResObj_Check ( v ) )
{
PyErr_SetString ( PyExc_TypeError , " Resource required " ) ;
return 0 ;
}
* p_itself = ( ( ResourceObject * ) v ) - > ob_itself ;
return 1 ;
}
static void ResObj_dealloc ( ResourceObject * self )
{
if ( self - > ob_freeit & & self - > ob_itself )
{
self - > ob_freeit ( self - > ob_itself ) ;
}
self - > ob_itself = NULL ;
PyMem_DEL ( self ) ;
}
static PyObject * ResObj_HomeResFile ( ResourceObject * _self , PyObject * _args )
{
PyObject * _res = NULL ;
short _rv ;
if ( ! PyArg_ParseTuple ( _args , " " ) )
return NULL ;
_rv = HomeResFile ( _self - > ob_itself ) ;
{
OSErr _err = ResError ( ) ;
if ( _err ! = noErr ) return PyMac_Error ( _err ) ;
}
_res = Py_BuildValue ( " h " ,
_rv ) ;
return _res ;
}
static PyObject * ResObj_MacLoadResource ( ResourceObject * _self , PyObject * _args )
{
PyObject * _res = NULL ;
if ( ! PyArg_ParseTuple ( _args , " " ) )
return NULL ;
MacLoadResource ( _self - > ob_itself ) ;
{
OSErr _err = ResError ( ) ;
if ( _err ! = noErr ) return PyMac_Error ( _err ) ;
}
Py_INCREF ( Py_None ) ;
_res = Py_None ;
return _res ;
}
static PyObject * ResObj_ReleaseResource ( ResourceObject * _self , PyObject * _args )
{
PyObject * _res = NULL ;
if ( ! PyArg_ParseTuple ( _args , " " ) )
return NULL ;
ReleaseResource ( _self - > ob_itself ) ;
{
OSErr _err = ResError ( ) ;
if ( _err ! = noErr ) return PyMac_Error ( _err ) ;
}
Py_INCREF ( Py_None ) ;
_res = Py_None ;
return _res ;
}
static PyObject * ResObj_DetachResource ( ResourceObject * _self , PyObject * _args )
{
PyObject * _res = NULL ;
if ( ! PyArg_ParseTuple ( _args , " " ) )
return NULL ;
DetachResource ( _self - > ob_itself ) ;
{
OSErr _err = ResError ( ) ;
if ( _err ! = noErr ) return PyMac_Error ( _err ) ;
}
Py_INCREF ( Py_None ) ;
_res = Py_None ;
return _res ;
}
static PyObject * ResObj_GetResAttrs ( ResourceObject * _self , PyObject * _args )
{
PyObject * _res = NULL ;
short _rv ;
if ( ! PyArg_ParseTuple ( _args , " " ) )
return NULL ;
_rv = GetResAttrs ( _self - > ob_itself ) ;
{
OSErr _err = ResError ( ) ;
if ( _err ! = noErr ) return PyMac_Error ( _err ) ;
}
_res = Py_BuildValue ( " h " ,
_rv ) ;
return _res ;
}
static PyObject * ResObj_GetResInfo ( ResourceObject * _self , PyObject * _args )
{
PyObject * _res = NULL ;
short theID ;
ResType theType ;
Str255 name ;
if ( ! PyArg_ParseTuple ( _args , " " ) )
return NULL ;
GetResInfo ( _self - > ob_itself ,
& theID ,
& theType ,
name ) ;
{
OSErr _err = ResError ( ) ;
if ( _err ! = noErr ) return PyMac_Error ( _err ) ;
}
_res = Py_BuildValue ( " hO&O& " ,
theID ,
PyMac_BuildOSType , theType ,
PyMac_BuildStr255 , name ) ;
return _res ;
}
static PyObject * ResObj_SetResInfo ( ResourceObject * _self , PyObject * _args )
{
PyObject * _res = NULL ;
short theID ;
Str255 name ;
if ( ! PyArg_ParseTuple ( _args , " hO& " ,
& theID ,
PyMac_GetStr255 , name ) )
return NULL ;
SetResInfo ( _self - > ob_itself ,
theID ,
name ) ;
{
OSErr _err = ResError ( ) ;
if ( _err ! = noErr ) return PyMac_Error ( _err ) ;
}
Py_INCREF ( Py_None ) ;
_res = Py_None ;
return _res ;
}
static PyObject * ResObj_AddResource ( ResourceObject * _self , PyObject * _args )
{
PyObject * _res = NULL ;
ResType theType ;
short theID ;
Str255 name ;
if ( ! PyArg_ParseTuple ( _args , " O&hO& " ,
PyMac_GetOSType , & theType ,
& theID ,
PyMac_GetStr255 , name ) )
return NULL ;
AddResource ( _self - > ob_itself ,
theType ,
theID ,
name ) ;
{
OSErr _err = ResError ( ) ;
if ( _err ! = noErr ) return PyMac_Error ( _err ) ;
}
Py_INCREF ( Py_None ) ;
_res = Py_None ;
return _res ;
}
static PyObject * ResObj_GetResourceSizeOnDisk ( ResourceObject * _self , PyObject * _args )
{
PyObject * _res = NULL ;
long _rv ;
if ( ! PyArg_ParseTuple ( _args , " " ) )
return NULL ;
_rv = GetResourceSizeOnDisk ( _self - > ob_itself ) ;
{
OSErr _err = ResError ( ) ;
if ( _err ! = noErr ) return PyMac_Error ( _err ) ;
}
_res = Py_BuildValue ( " l " ,
_rv ) ;
return _res ;
}
static PyObject * ResObj_GetMaxResourceSize ( ResourceObject * _self , PyObject * _args )
{
PyObject * _res = NULL ;
long _rv ;
if ( ! PyArg_ParseTuple ( _args , " " ) )
return NULL ;
_rv = GetMaxResourceSize ( _self - > ob_itself ) ;
{
OSErr _err = ResError ( ) ;
if ( _err ! = noErr ) return PyMac_Error ( _err ) ;
}
_res = Py_BuildValue ( " l " ,
_rv ) ;
return _res ;
}
# if TARGET_API_MAC_OS8
static PyObject * ResObj_RsrcMapEntry ( ResourceObject * _self , PyObject * _args )
{
PyObject * _res = NULL ;
long _rv ;
if ( ! PyArg_ParseTuple ( _args , " " ) )
return NULL ;
_rv = RsrcMapEntry ( _self - > ob_itself ) ;
{
OSErr _err = ResError ( ) ;
if ( _err ! = noErr ) return PyMac_Error ( _err ) ;
}
_res = Py_BuildValue ( " l " ,
_rv ) ;
return _res ;
}
# endif
static PyObject * ResObj_SetResAttrs ( ResourceObject * _self , PyObject * _args )
{
PyObject * _res = NULL ;
short attrs ;
if ( ! PyArg_ParseTuple ( _args , " h " ,
& attrs ) )
return NULL ;
SetResAttrs ( _self - > ob_itself ,
attrs ) ;
{
OSErr _err = ResError ( ) ;
if ( _err ! = noErr ) return PyMac_Error ( _err ) ;
}
Py_INCREF ( Py_None ) ;
_res = Py_None ;
return _res ;
}
static PyObject * ResObj_ChangedResource ( ResourceObject * _self , PyObject * _args )
{
PyObject * _res = NULL ;
if ( ! PyArg_ParseTuple ( _args , " " ) )
return NULL ;
ChangedResource ( _self - > ob_itself ) ;
{
OSErr _err = ResError ( ) ;
if ( _err ! = noErr ) return PyMac_Error ( _err ) ;
}
Py_INCREF ( Py_None ) ;
_res = Py_None ;
return _res ;
}
static PyObject * ResObj_RemoveResource ( ResourceObject * _self , PyObject * _args )
{
PyObject * _res = NULL ;
if ( ! PyArg_ParseTuple ( _args , " " ) )
return NULL ;
RemoveResource ( _self - > ob_itself ) ;
{
OSErr _err = ResError ( ) ;
if ( _err ! = noErr ) return PyMac_Error ( _err ) ;
}
Py_INCREF ( Py_None ) ;
_res = Py_None ;
return _res ;
}
static PyObject * ResObj_WriteResource ( ResourceObject * _self , PyObject * _args )
{
PyObject * _res = NULL ;
if ( ! PyArg_ParseTuple ( _args , " " ) )
return NULL ;
WriteResource ( _self - > ob_itself ) ;
{
OSErr _err = ResError ( ) ;
if ( _err ! = noErr ) return PyMac_Error ( _err ) ;
}
Py_INCREF ( Py_None ) ;
_res = Py_None ;
return _res ;
}
static PyObject * ResObj_SetResourceSize ( ResourceObject * _self , PyObject * _args )
{
PyObject * _res = NULL ;
long newSize ;
if ( ! PyArg_ParseTuple ( _args , " l " ,
& newSize ) )
return NULL ;
SetResourceSize ( _self - > ob_itself ,
newSize ) ;
{
OSErr _err = ResError ( ) ;
if ( _err ! = noErr ) return PyMac_Error ( _err ) ;
}
Py_INCREF ( Py_None ) ;
_res = Py_None ;
return _res ;
}
static PyObject * ResObj_GetNextFOND ( ResourceObject * _self , PyObject * _args )
{
PyObject * _res = NULL ;
Handle _rv ;
if ( ! PyArg_ParseTuple ( _args , " " ) )
return NULL ;
_rv = GetNextFOND ( _self - > ob_itself ) ;
{
OSErr _err = ResError ( ) ;
if ( _err ! = noErr ) return PyMac_Error ( _err ) ;
}
_res = Py_BuildValue ( " O& " ,
ResObj_New , _rv ) ;
return _res ;
}
static PyObject * ResObj_as_Control ( ResourceObject * _self , PyObject * _args )
{
PyObject * _res = NULL ;
2001-09-05 07:31:52 -03:00
_res = CtlObj_New ( ( ControlHandle ) _self - > ob_itself ) ;
return _res ;
2001-08-23 11:02:09 -03:00
}
static PyObject * ResObj_as_Menu ( ResourceObject * _self , PyObject * _args )
{
PyObject * _res = NULL ;
2001-09-05 07:31:52 -03:00
_res = MenuObj_New ( ( MenuHandle ) _self - > ob_itself ) ;
return _res ;
2001-08-23 11:02:09 -03:00
}
static PyObject * ResObj_LoadResource ( ResourceObject * _self , PyObject * _args )
{
PyObject * _res = NULL ;
if ( ! PyArg_ParseTuple ( _args , " " ) )
return NULL ;
LoadResource ( _self - > ob_itself ) ;
{
OSErr _err = ResError ( ) ;
if ( _err ! = noErr ) return PyMac_Error ( _err ) ;
}
Py_INCREF ( Py_None ) ;
_res = Py_None ;
return _res ;
}
static PyObject * ResObj_AutoDispose ( ResourceObject * _self , PyObject * _args )
{
PyObject * _res = NULL ;
int onoff , old = 0 ;
if ( ! PyArg_ParseTuple ( _args , " i " , & onoff ) )
return NULL ;
if ( _self - > ob_freeit )
old = 1 ;
if ( onoff )
_self - > ob_freeit = PyMac_AutoDisposeHandle ;
else
_self - > ob_freeit = NULL ;
2001-09-05 12:44:37 -03:00
_res = Py_BuildValue ( " i " , old ) ;
return _res ;
2001-08-23 11:02:09 -03:00
}
static PyMethodDef ResObj_methods [ ] = {
{ " HomeResFile " , ( PyCFunction ) ResObj_HomeResFile , 1 ,
" () -> (short _rv) " } ,
{ " MacLoadResource " , ( PyCFunction ) ResObj_MacLoadResource , 1 ,
" () -> None " } ,
{ " ReleaseResource " , ( PyCFunction ) ResObj_ReleaseResource , 1 ,
" () -> None " } ,
{ " DetachResource " , ( PyCFunction ) ResObj_DetachResource , 1 ,
" () -> None " } ,
{ " GetResAttrs " , ( PyCFunction ) ResObj_GetResAttrs , 1 ,
" () -> (short _rv) " } ,
{ " GetResInfo " , ( PyCFunction ) ResObj_GetResInfo , 1 ,
" () -> (short theID, ResType theType, Str255 name) " } ,
{ " SetResInfo " , ( PyCFunction ) ResObj_SetResInfo , 1 ,
" (short theID, Str255 name) -> None " } ,
{ " AddResource " , ( PyCFunction ) ResObj_AddResource , 1 ,
" (ResType theType, short theID, Str255 name) -> None " } ,
{ " GetResourceSizeOnDisk " , ( PyCFunction ) ResObj_GetResourceSizeOnDisk , 1 ,
" () -> (long _rv) " } ,
{ " GetMaxResourceSize " , ( PyCFunction ) ResObj_GetMaxResourceSize , 1 ,
" () -> (long _rv) " } ,
# if TARGET_API_MAC_OS8
{ " RsrcMapEntry " , ( PyCFunction ) ResObj_RsrcMapEntry , 1 ,
" () -> (long _rv) " } ,
# endif
{ " SetResAttrs " , ( PyCFunction ) ResObj_SetResAttrs , 1 ,
" (short attrs) -> None " } ,
{ " ChangedResource " , ( PyCFunction ) ResObj_ChangedResource , 1 ,
" () -> None " } ,
{ " RemoveResource " , ( PyCFunction ) ResObj_RemoveResource , 1 ,
" () -> None " } ,
{ " WriteResource " , ( PyCFunction ) ResObj_WriteResource , 1 ,
" () -> None " } ,
{ " SetResourceSize " , ( PyCFunction ) ResObj_SetResourceSize , 1 ,
" (long newSize) -> None " } ,
{ " GetNextFOND " , ( PyCFunction ) ResObj_GetNextFOND , 1 ,
" () -> (Handle _rv) " } ,
{ " as_Control " , ( PyCFunction ) ResObj_as_Control , 1 ,
" Return this resource/handle as a Control " } ,
{ " as_Menu " , ( PyCFunction ) ResObj_as_Menu , 1 ,
" Return this resource/handle as a Menu " } ,
{ " LoadResource " , ( PyCFunction ) ResObj_LoadResource , 1 ,
" () -> None " } ,
{ " AutoDispose " , ( PyCFunction ) ResObj_AutoDispose , 1 ,
" (int)->int. Automatically DisposeHandle the object on Python object cleanup " } ,
{ NULL , NULL , 0 }
} ;
PyMethodChain ResObj_chain = { ResObj_methods , NULL } ;
static PyObject * ResObj_getattr ( ResourceObject * self , char * name )
{
if ( strcmp ( name , " size " ) = = 0 )
return PyInt_FromLong ( GetHandleSize ( self - > ob_itself ) ) ;
if ( strcmp ( name , " data " ) = = 0 ) {
PyObject * res ;
char state ;
state = HGetState ( self - > ob_itself ) ;
HLock ( self - > ob_itself ) ;
res = PyString_FromStringAndSize (
* self - > ob_itself ,
GetHandleSize ( self - > ob_itself ) ) ;
HUnlock ( self - > ob_itself ) ;
HSetState ( self - > ob_itself , state ) ;
return res ;
}
if ( strcmp ( name , " __members__ " ) = = 0 )
return Py_BuildValue ( " [ss] " , " data " , " size " ) ;
return Py_FindMethodInChain ( & ResObj_chain , ( PyObject * ) self , name ) ;
}
static int
ResObj_setattr ( ResourceObject * self , char * name , PyObject * value )
{
char * data ;
long size ;
if ( strcmp ( name , " data " ) ! = 0 | | value = = NULL )
return - 1 ;
if ( ! PyString_Check ( value ) )
return - 1 ;
size = PyString_Size ( value ) ;
data = PyString_AsString ( value ) ;
/* XXXX Do I need the GetState/SetState calls? */
SetHandleSize ( self - > ob_itself , size ) ;
if ( MemError ( ) )
return - 1 ;
HLock ( self - > ob_itself ) ;
memcpy ( ( char * ) * self - > ob_itself , data , size ) ;
HUnlock ( self - > ob_itself ) ;
/* XXXX Should I do the Changed call immedeately? */
return 0 ;
}
# define ResObj_compare NULL
# define ResObj_repr NULL
# define ResObj_hash NULL
PyTypeObject Resource_Type = {
2001-11-30 10:16:36 -04:00
PyObject_HEAD_INIT ( NULL )
2001-08-23 11:02:09 -03:00
0 , /*ob_size*/
" Resource " , /*tp_name*/
sizeof ( ResourceObject ) , /*tp_basicsize*/
0 , /*tp_itemsize*/
/* methods */
( destructor ) ResObj_dealloc , /*tp_dealloc*/
0 , /*tp_print*/
( getattrfunc ) ResObj_getattr , /*tp_getattr*/
( setattrfunc ) ResObj_setattr , /*tp_setattr*/
( cmpfunc ) ResObj_compare , /*tp_compare*/
( reprfunc ) ResObj_repr , /*tp_repr*/
( PyNumberMethods * ) 0 , /* tp_as_number */
( PySequenceMethods * ) 0 , /* tp_as_sequence */
( PyMappingMethods * ) 0 , /* tp_as_mapping */
( hashfunc ) ResObj_hash , /*tp_hash*/
} ;
/* -------------------- End object type Resource -------------------- */
# if TARGET_API_MAC_OS8
static PyObject * Res_InitResources ( PyObject * _self , PyObject * _args )
{
PyObject * _res = NULL ;
short _rv ;
if ( ! PyArg_ParseTuple ( _args , " " ) )
return NULL ;
_rv = InitResources ( ) ;
{
OSErr _err = ResError ( ) ;
if ( _err ! = noErr ) return PyMac_Error ( _err ) ;
}
_res = Py_BuildValue ( " h " ,
_rv ) ;
return _res ;
}
# endif
# if TARGET_API_MAC_OS8
static PyObject * Res_RsrcZoneInit ( PyObject * _self , PyObject * _args )
{
PyObject * _res = NULL ;
if ( ! PyArg_ParseTuple ( _args , " " ) )
return NULL ;
RsrcZoneInit ( ) ;
{
OSErr _err = ResError ( ) ;
if ( _err ! = noErr ) return PyMac_Error ( _err ) ;
}
Py_INCREF ( Py_None ) ;
_res = Py_None ;
return _res ;
}
# endif
static PyObject * Res_CloseResFile ( PyObject * _self , PyObject * _args )
{
PyObject * _res = NULL ;
short refNum ;
if ( ! PyArg_ParseTuple ( _args , " h " ,
& refNum ) )
return NULL ;
CloseResFile ( refNum ) ;
{
OSErr _err = ResError ( ) ;
if ( _err ! = noErr ) return PyMac_Error ( _err ) ;
}
Py_INCREF ( Py_None ) ;
_res = Py_None ;
return _res ;
}
static PyObject * Res_ResError ( PyObject * _self , PyObject * _args )
{
PyObject * _res = NULL ;
OSErr _rv ;
if ( ! PyArg_ParseTuple ( _args , " " ) )
return NULL ;
_rv = ResError ( ) ;
{
OSErr _err = ResError ( ) ;
if ( _err ! = noErr ) return PyMac_Error ( _err ) ;
}
_res = Py_BuildValue ( " h " ,
_rv ) ;
return _res ;
}
static PyObject * Res_CurResFile ( PyObject * _self , PyObject * _args )
{
PyObject * _res = NULL ;
short _rv ;
if ( ! PyArg_ParseTuple ( _args , " " ) )
return NULL ;
_rv = CurResFile ( ) ;
{
OSErr _err = ResError ( ) ;
if ( _err ! = noErr ) return PyMac_Error ( _err ) ;
}
_res = Py_BuildValue ( " h " ,
_rv ) ;
return _res ;
}
# if TARGET_API_MAC_OS8
static PyObject * Res_CreateResFile ( PyObject * _self , PyObject * _args )
{
PyObject * _res = NULL ;
Str255 fileName ;
if ( ! PyArg_ParseTuple ( _args , " O& " ,
PyMac_GetStr255 , fileName ) )
return NULL ;
CreateResFile ( fileName ) ;
{
OSErr _err = ResError ( ) ;
if ( _err ! = noErr ) return PyMac_Error ( _err ) ;
}
Py_INCREF ( Py_None ) ;
_res = Py_None ;
return _res ;
}
# endif
# if TARGET_API_MAC_OS8
static PyObject * Res_OpenResFile ( PyObject * _self , PyObject * _args )
{
PyObject * _res = NULL ;
short _rv ;
Str255 fileName ;
if ( ! PyArg_ParseTuple ( _args , " O& " ,
PyMac_GetStr255 , fileName ) )
return NULL ;
_rv = OpenResFile ( fileName ) ;
{
OSErr _err = ResError ( ) ;
if ( _err ! = noErr ) return PyMac_Error ( _err ) ;
}
_res = Py_BuildValue ( " h " ,
_rv ) ;
return _res ;
}
# endif
static PyObject * Res_UseResFile ( PyObject * _self , PyObject * _args )
{
PyObject * _res = NULL ;
short refNum ;
if ( ! PyArg_ParseTuple ( _args , " h " ,
& refNum ) )
return NULL ;
UseResFile ( refNum ) ;
{
OSErr _err = ResError ( ) ;
if ( _err ! = noErr ) return PyMac_Error ( _err ) ;
}
Py_INCREF ( Py_None ) ;
_res = Py_None ;
return _res ;
}
static PyObject * Res_CountTypes ( PyObject * _self , PyObject * _args )
{
PyObject * _res = NULL ;
short _rv ;
if ( ! PyArg_ParseTuple ( _args , " " ) )
return NULL ;
_rv = CountTypes ( ) ;
{
OSErr _err = ResError ( ) ;
if ( _err ! = noErr ) return PyMac_Error ( _err ) ;
}
_res = Py_BuildValue ( " h " ,
_rv ) ;
return _res ;
}
static PyObject * Res_Count1Types ( PyObject * _self , PyObject * _args )
{
PyObject * _res = NULL ;
short _rv ;
if ( ! PyArg_ParseTuple ( _args , " " ) )
return NULL ;
_rv = Count1Types ( ) ;
{
OSErr _err = ResError ( ) ;
if ( _err ! = noErr ) return PyMac_Error ( _err ) ;
}
_res = Py_BuildValue ( " h " ,
_rv ) ;
return _res ;
}
static PyObject * Res_GetIndType ( PyObject * _self , PyObject * _args )
{
PyObject * _res = NULL ;
ResType theType ;
short index ;
if ( ! PyArg_ParseTuple ( _args , " h " ,
& index ) )
return NULL ;
GetIndType ( & theType ,
index ) ;
{
OSErr _err = ResError ( ) ;
if ( _err ! = noErr ) return PyMac_Error ( _err ) ;
}
_res = Py_BuildValue ( " O& " ,
PyMac_BuildOSType , theType ) ;
return _res ;
}
static PyObject * Res_Get1IndType ( PyObject * _self , PyObject * _args )
{
PyObject * _res = NULL ;
ResType theType ;
short index ;
if ( ! PyArg_ParseTuple ( _args , " h " ,
& index ) )
return NULL ;
Get1IndType ( & theType ,
index ) ;
{
OSErr _err = ResError ( ) ;
if ( _err ! = noErr ) return PyMac_Error ( _err ) ;
}
_res = Py_BuildValue ( " O& " ,
PyMac_BuildOSType , theType ) ;
return _res ;
}
static PyObject * Res_SetResLoad ( PyObject * _self , PyObject * _args )
{
PyObject * _res = NULL ;
Boolean load ;
if ( ! PyArg_ParseTuple ( _args , " b " ,
& load ) )
return NULL ;
SetResLoad ( load ) ;
{
OSErr _err = ResError ( ) ;
if ( _err ! = noErr ) return PyMac_Error ( _err ) ;
}
Py_INCREF ( Py_None ) ;
_res = Py_None ;
return _res ;
}
static PyObject * Res_CountResources ( PyObject * _self , PyObject * _args )
{
PyObject * _res = NULL ;
short _rv ;
ResType theType ;
if ( ! PyArg_ParseTuple ( _args , " O& " ,
PyMac_GetOSType , & theType ) )
return NULL ;
_rv = CountResources ( theType ) ;
{
OSErr _err = ResError ( ) ;
if ( _err ! = noErr ) return PyMac_Error ( _err ) ;
}
_res = Py_BuildValue ( " h " ,
_rv ) ;
return _res ;
}
static PyObject * Res_Count1Resources ( PyObject * _self , PyObject * _args )
{
PyObject * _res = NULL ;
short _rv ;
ResType theType ;
if ( ! PyArg_ParseTuple ( _args , " O& " ,
PyMac_GetOSType , & theType ) )
return NULL ;
_rv = Count1Resources ( theType ) ;
{
OSErr _err = ResError ( ) ;
if ( _err ! = noErr ) return PyMac_Error ( _err ) ;
}
_res = Py_BuildValue ( " h " ,
_rv ) ;
return _res ;
}
static PyObject * Res_GetIndResource ( PyObject * _self , PyObject * _args )
{
PyObject * _res = NULL ;
Handle _rv ;
ResType theType ;
short index ;
if ( ! PyArg_ParseTuple ( _args , " O&h " ,
PyMac_GetOSType , & theType ,
& index ) )
return NULL ;
_rv = GetIndResource ( theType ,
index ) ;
{
OSErr _err = ResError ( ) ;
if ( _err ! = noErr ) return PyMac_Error ( _err ) ;
}
_res = Py_BuildValue ( " O& " ,
ResObj_New , _rv ) ;
return _res ;
}
static PyObject * Res_Get1IndResource ( PyObject * _self , PyObject * _args )
{
PyObject * _res = NULL ;
Handle _rv ;
ResType theType ;
short index ;
if ( ! PyArg_ParseTuple ( _args , " O&h " ,
PyMac_GetOSType , & theType ,
& index ) )
return NULL ;
_rv = Get1IndResource ( theType ,
index ) ;
{
OSErr _err = ResError ( ) ;
if ( _err ! = noErr ) return PyMac_Error ( _err ) ;
}
_res = Py_BuildValue ( " O& " ,
ResObj_New , _rv ) ;
return _res ;
}
static PyObject * Res_GetResource ( PyObject * _self , PyObject * _args )
{
PyObject * _res = NULL ;
Handle _rv ;
ResType theType ;
short theID ;
if ( ! PyArg_ParseTuple ( _args , " O&h " ,
PyMac_GetOSType , & theType ,
& theID ) )
return NULL ;
_rv = GetResource ( theType ,
theID ) ;
{
OSErr _err = ResError ( ) ;
if ( _err ! = noErr ) return PyMac_Error ( _err ) ;
}
_res = Py_BuildValue ( " O& " ,
ResObj_New , _rv ) ;
return _res ;
}
static PyObject * Res_Get1Resource ( PyObject * _self , PyObject * _args )
{
PyObject * _res = NULL ;
Handle _rv ;
ResType theType ;
short theID ;
if ( ! PyArg_ParseTuple ( _args , " O&h " ,
PyMac_GetOSType , & theType ,
& theID ) )
return NULL ;
_rv = Get1Resource ( theType ,
theID ) ;
{
OSErr _err = ResError ( ) ;
if ( _err ! = noErr ) return PyMac_Error ( _err ) ;
}
_res = Py_BuildValue ( " O& " ,
ResObj_New , _rv ) ;
return _res ;
}
static PyObject * Res_GetNamedResource ( PyObject * _self , PyObject * _args )
{
PyObject * _res = NULL ;
Handle _rv ;
ResType theType ;
Str255 name ;
if ( ! PyArg_ParseTuple ( _args , " O&O& " ,
PyMac_GetOSType , & theType ,
PyMac_GetStr255 , name ) )
return NULL ;
_rv = GetNamedResource ( theType ,
name ) ;
{
OSErr _err = ResError ( ) ;
if ( _err ! = noErr ) return PyMac_Error ( _err ) ;
}
_res = Py_BuildValue ( " O& " ,
ResObj_New , _rv ) ;
return _res ;
}
static PyObject * Res_Get1NamedResource ( PyObject * _self , PyObject * _args )
{
PyObject * _res = NULL ;
Handle _rv ;
ResType theType ;
Str255 name ;
if ( ! PyArg_ParseTuple ( _args , " O&O& " ,
PyMac_GetOSType , & theType ,
PyMac_GetStr255 , name ) )
return NULL ;
_rv = Get1NamedResource ( theType ,
name ) ;
{
OSErr _err = ResError ( ) ;
if ( _err ! = noErr ) return PyMac_Error ( _err ) ;
}
_res = Py_BuildValue ( " O& " ,
ResObj_New , _rv ) ;
return _res ;
}
static PyObject * Res_UniqueID ( PyObject * _self , PyObject * _args )
{
PyObject * _res = NULL ;
short _rv ;
ResType theType ;
if ( ! PyArg_ParseTuple ( _args , " O& " ,
PyMac_GetOSType , & theType ) )
return NULL ;
_rv = UniqueID ( theType ) ;
{
OSErr _err = ResError ( ) ;
if ( _err ! = noErr ) return PyMac_Error ( _err ) ;
}
_res = Py_BuildValue ( " h " ,
_rv ) ;
return _res ;
}
static PyObject * Res_Unique1ID ( PyObject * _self , PyObject * _args )
{
PyObject * _res = NULL ;
short _rv ;
ResType theType ;
if ( ! PyArg_ParseTuple ( _args , " O& " ,
PyMac_GetOSType , & theType ) )
return NULL ;
_rv = Unique1ID ( theType ) ;
{
OSErr _err = ResError ( ) ;
if ( _err ! = noErr ) return PyMac_Error ( _err ) ;
}
_res = Py_BuildValue ( " h " ,
_rv ) ;
return _res ;
}
static PyObject * Res_UpdateResFile ( PyObject * _self , PyObject * _args )
{
PyObject * _res = NULL ;
short refNum ;
if ( ! PyArg_ParseTuple ( _args , " h " ,
& refNum ) )
return NULL ;
UpdateResFile ( refNum ) ;
{
OSErr _err = ResError ( ) ;
if ( _err ! = noErr ) return PyMac_Error ( _err ) ;
}
Py_INCREF ( Py_None ) ;
_res = Py_None ;
return _res ;
}
static PyObject * Res_SetResPurge ( PyObject * _self , PyObject * _args )
{
PyObject * _res = NULL ;
Boolean install ;
if ( ! PyArg_ParseTuple ( _args , " b " ,
& install ) )
return NULL ;
SetResPurge ( install ) ;
{
OSErr _err = ResError ( ) ;
if ( _err ! = noErr ) return PyMac_Error ( _err ) ;
}
Py_INCREF ( Py_None ) ;
_res = Py_None ;
return _res ;
}
static PyObject * Res_GetResFileAttrs ( PyObject * _self , PyObject * _args )
{
PyObject * _res = NULL ;
short _rv ;
short refNum ;
if ( ! PyArg_ParseTuple ( _args , " h " ,
& refNum ) )
return NULL ;
_rv = GetResFileAttrs ( refNum ) ;
{
OSErr _err = ResError ( ) ;
if ( _err ! = noErr ) return PyMac_Error ( _err ) ;
}
_res = Py_BuildValue ( " h " ,
_rv ) ;
return _res ;
}
static PyObject * Res_SetResFileAttrs ( PyObject * _self , PyObject * _args )
{
PyObject * _res = NULL ;
short refNum ;
short attrs ;
if ( ! PyArg_ParseTuple ( _args , " hh " ,
& refNum ,
& attrs ) )
return NULL ;
SetResFileAttrs ( refNum ,
attrs ) ;
{
OSErr _err = ResError ( ) ;
if ( _err ! = noErr ) return PyMac_Error ( _err ) ;
}
Py_INCREF ( Py_None ) ;
_res = Py_None ;
return _res ;
}
static PyObject * Res_OpenRFPerm ( PyObject * _self , PyObject * _args )
{
PyObject * _res = NULL ;
short _rv ;
Str255 fileName ;
short vRefNum ;
SignedByte permission ;
if ( ! PyArg_ParseTuple ( _args , " O&hb " ,
PyMac_GetStr255 , fileName ,
& vRefNum ,
& permission ) )
return NULL ;
_rv = OpenRFPerm ( fileName ,
vRefNum ,
permission ) ;
{
OSErr _err = ResError ( ) ;
if ( _err ! = noErr ) return PyMac_Error ( _err ) ;
}
_res = Py_BuildValue ( " h " ,
_rv ) ;
return _res ;
}
# if TARGET_API_MAC_OS8
static PyObject * Res_RGetResource ( PyObject * _self , PyObject * _args )
{
PyObject * _res = NULL ;
Handle _rv ;
ResType theType ;
short theID ;
if ( ! PyArg_ParseTuple ( _args , " O&h " ,
PyMac_GetOSType , & theType ,
& theID ) )
return NULL ;
_rv = RGetResource ( theType ,
theID ) ;
{
OSErr _err = ResError ( ) ;
if ( _err ! = noErr ) return PyMac_Error ( _err ) ;
}
_res = Py_BuildValue ( " O& " ,
ResObj_New , _rv ) ;
return _res ;
}
# endif
static PyObject * Res_HOpenResFile ( PyObject * _self , PyObject * _args )
{
PyObject * _res = NULL ;
short _rv ;
short vRefNum ;
long dirID ;
Str255 fileName ;
SignedByte permission ;
if ( ! PyArg_ParseTuple ( _args , " hlO&b " ,
& vRefNum ,
& dirID ,
PyMac_GetStr255 , fileName ,
& permission ) )
return NULL ;
_rv = HOpenResFile ( vRefNum ,
dirID ,
fileName ,
permission ) ;
{
OSErr _err = ResError ( ) ;
if ( _err ! = noErr ) return PyMac_Error ( _err ) ;
}
_res = Py_BuildValue ( " h " ,
_rv ) ;
return _res ;
}
static PyObject * Res_HCreateResFile ( PyObject * _self , PyObject * _args )
{
PyObject * _res = NULL ;
short vRefNum ;
long dirID ;
Str255 fileName ;
if ( ! PyArg_ParseTuple ( _args , " hlO& " ,
& vRefNum ,
& dirID ,
PyMac_GetStr255 , fileName ) )
return NULL ;
HCreateResFile ( vRefNum ,
dirID ,
fileName ) ;
{
OSErr _err = ResError ( ) ;
if ( _err ! = noErr ) return PyMac_Error ( _err ) ;
}
Py_INCREF ( Py_None ) ;
_res = Py_None ;
return _res ;
}
static PyObject * Res_FSpOpenResFile ( PyObject * _self , PyObject * _args )
{
PyObject * _res = NULL ;
short _rv ;
FSSpec spec ;
SignedByte permission ;
if ( ! PyArg_ParseTuple ( _args , " O&b " ,
PyMac_GetFSSpec , & spec ,
& permission ) )
return NULL ;
_rv = FSpOpenResFile ( & spec ,
permission ) ;
{
OSErr _err = ResError ( ) ;
if ( _err ! = noErr ) return PyMac_Error ( _err ) ;
}
_res = Py_BuildValue ( " h " ,
_rv ) ;
return _res ;
}
static PyObject * Res_FSpCreateResFile ( PyObject * _self , PyObject * _args )
{
PyObject * _res = NULL ;
FSSpec spec ;
OSType creator ;
OSType fileType ;
ScriptCode scriptTag ;
if ( ! PyArg_ParseTuple ( _args , " O&O&O&h " ,
PyMac_GetFSSpec , & spec ,
PyMac_GetOSType , & creator ,
PyMac_GetOSType , & fileType ,
& scriptTag ) )
return NULL ;
FSpCreateResFile ( & spec ,
creator ,
fileType ,
scriptTag ) ;
{
OSErr _err = ResError ( ) ;
if ( _err ! = noErr ) return PyMac_Error ( _err ) ;
}
Py_INCREF ( Py_None ) ;
_res = Py_None ;
return _res ;
}
# if TARGET_API_MAC_CARBON
static PyObject * Res_InsertResourceFile ( PyObject * _self , PyObject * _args )
{
PyObject * _res = NULL ;
OSErr _rv ;
SInt16 refNum ;
RsrcChainLocation where ;
if ( ! PyArg_ParseTuple ( _args , " hh " ,
& refNum ,
& where ) )
return NULL ;
_rv = InsertResourceFile ( refNum ,
where ) ;
{
OSErr _err = ResError ( ) ;
if ( _err ! = noErr ) return PyMac_Error ( _err ) ;
}
_res = Py_BuildValue ( " h " ,
_rv ) ;
return _res ;
}
# endif
# if TARGET_API_MAC_CARBON
static PyObject * Res_DetachResourceFile ( PyObject * _self , PyObject * _args )
{
PyObject * _res = NULL ;
OSErr _rv ;
SInt16 refNum ;
if ( ! PyArg_ParseTuple ( _args , " h " ,
& refNum ) )
return NULL ;
_rv = DetachResourceFile ( refNum ) ;
{
OSErr _err = ResError ( ) ;
if ( _err ! = noErr ) return PyMac_Error ( _err ) ;
}
_res = Py_BuildValue ( " h " ,
_rv ) ;
return _res ;
}
# endif
# if TARGET_API_MAC_CARBON
static PyObject * Res_FSpResourceFileAlreadyOpen ( PyObject * _self , PyObject * _args )
{
PyObject * _res = NULL ;
Boolean _rv ;
FSSpec resourceFile ;
Boolean inChain ;
SInt16 refNum ;
if ( ! PyArg_ParseTuple ( _args , " O& " ,
PyMac_GetFSSpec , & resourceFile ) )
return NULL ;
_rv = FSpResourceFileAlreadyOpen ( & resourceFile ,
& inChain ,
& refNum ) ;
{
OSErr _err = ResError ( ) ;
if ( _err ! = noErr ) return PyMac_Error ( _err ) ;
}
_res = Py_BuildValue ( " bbh " ,
_rv ,
inChain ,
refNum ) ;
return _res ;
}
# endif
# if TARGET_API_MAC_CARBON
static PyObject * Res_FSpOpenOrphanResFile ( PyObject * _self , PyObject * _args )
{
PyObject * _res = NULL ;
OSErr _rv ;
FSSpec spec ;
SignedByte permission ;
SInt16 refNum ;
if ( ! PyArg_ParseTuple ( _args , " O&b " ,
PyMac_GetFSSpec , & spec ,
& permission ) )
return NULL ;
_rv = FSpOpenOrphanResFile ( & spec ,
permission ,
& refNum ) ;
{
OSErr _err = ResError ( ) ;
if ( _err ! = noErr ) return PyMac_Error ( _err ) ;
}
_res = Py_BuildValue ( " hh " ,
_rv ,
refNum ) ;
return _res ;
}
# endif
# if TARGET_API_MAC_CARBON
static PyObject * Res_GetTopResourceFile ( PyObject * _self , PyObject * _args )
{
PyObject * _res = NULL ;
OSErr _rv ;
SInt16 refNum ;
if ( ! PyArg_ParseTuple ( _args , " " ) )
return NULL ;
_rv = GetTopResourceFile ( & refNum ) ;
{
OSErr _err = ResError ( ) ;
if ( _err ! = noErr ) return PyMac_Error ( _err ) ;
}
_res = Py_BuildValue ( " hh " ,
_rv ,
refNum ) ;
return _res ;
}
# endif
# if TARGET_API_MAC_CARBON
static PyObject * Res_GetNextResourceFile ( PyObject * _self , PyObject * _args )
{
PyObject * _res = NULL ;
OSErr _rv ;
SInt16 curRefNum ;
SInt16 nextRefNum ;
if ( ! PyArg_ParseTuple ( _args , " h " ,
& curRefNum ) )
return NULL ;
_rv = GetNextResourceFile ( curRefNum ,
& nextRefNum ) ;
{
OSErr _err = ResError ( ) ;
if ( _err ! = noErr ) return PyMac_Error ( _err ) ;
}
_res = Py_BuildValue ( " hh " ,
_rv ,
nextRefNum ) ;
return _res ;
}
# endif
static PyObject * Res_Resource ( PyObject * _self , PyObject * _args )
{
PyObject * _res = NULL ;
char * buf ;
int len ;
Handle h ;
if ( ! PyArg_ParseTuple ( _args , " s# " , & buf , & len ) )
return NULL ;
h = NewHandle ( len ) ;
if ( h = = NULL ) {
PyErr_NoMemory ( ) ;
return NULL ;
}
HLock ( h ) ;
memcpy ( * h , buf , len ) ;
HUnlock ( h ) ;
2001-09-05 12:44:37 -03:00
_res = ResObj_New ( h ) ;
return _res ;
2001-08-23 11:02:09 -03:00
}
static PyObject * Res_Handle ( PyObject * _self , PyObject * _args )
{
PyObject * _res = NULL ;
char * buf ;
int len ;
Handle h ;
ResourceObject * rv ;
if ( ! PyArg_ParseTuple ( _args , " s# " , & buf , & len ) )
return NULL ;
h = NewHandle ( len ) ;
if ( h = = NULL ) {
PyErr_NoMemory ( ) ;
return NULL ;
}
HLock ( h ) ;
memcpy ( * h , buf , len ) ;
HUnlock ( h ) ;
rv = ( ResourceObject * ) ResObj_New ( h ) ;
rv - > ob_freeit = PyMac_AutoDisposeHandle ;
2001-09-05 12:44:37 -03:00
_res = ( PyObject * ) rv ;
return _res ;
2001-08-23 11:02:09 -03:00
}
static PyMethodDef Res_methods [ ] = {
# if TARGET_API_MAC_OS8
{ " InitResources " , ( PyCFunction ) Res_InitResources , 1 ,
" () -> (short _rv) " } ,
# endif
# if TARGET_API_MAC_OS8
{ " RsrcZoneInit " , ( PyCFunction ) Res_RsrcZoneInit , 1 ,
" () -> None " } ,
# endif
{ " CloseResFile " , ( PyCFunction ) Res_CloseResFile , 1 ,
" (short refNum) -> None " } ,
{ " ResError " , ( PyCFunction ) Res_ResError , 1 ,
" () -> (OSErr _rv) " } ,
{ " CurResFile " , ( PyCFunction ) Res_CurResFile , 1 ,
" () -> (short _rv) " } ,
# if TARGET_API_MAC_OS8
{ " CreateResFile " , ( PyCFunction ) Res_CreateResFile , 1 ,
" (Str255 fileName) -> None " } ,
# endif
# if TARGET_API_MAC_OS8
{ " OpenResFile " , ( PyCFunction ) Res_OpenResFile , 1 ,
" (Str255 fileName) -> (short _rv) " } ,
# endif
{ " UseResFile " , ( PyCFunction ) Res_UseResFile , 1 ,
" (short refNum) -> None " } ,
{ " CountTypes " , ( PyCFunction ) Res_CountTypes , 1 ,
" () -> (short _rv) " } ,
{ " Count1Types " , ( PyCFunction ) Res_Count1Types , 1 ,
" () -> (short _rv) " } ,
{ " GetIndType " , ( PyCFunction ) Res_GetIndType , 1 ,
" (short index) -> (ResType theType) " } ,
{ " Get1IndType " , ( PyCFunction ) Res_Get1IndType , 1 ,
" (short index) -> (ResType theType) " } ,
{ " SetResLoad " , ( PyCFunction ) Res_SetResLoad , 1 ,
" (Boolean load) -> None " } ,
{ " CountResources " , ( PyCFunction ) Res_CountResources , 1 ,
" (ResType theType) -> (short _rv) " } ,
{ " Count1Resources " , ( PyCFunction ) Res_Count1Resources , 1 ,
" (ResType theType) -> (short _rv) " } ,
{ " GetIndResource " , ( PyCFunction ) Res_GetIndResource , 1 ,
" (ResType theType, short index) -> (Handle _rv) " } ,
{ " Get1IndResource " , ( PyCFunction ) Res_Get1IndResource , 1 ,
" (ResType theType, short index) -> (Handle _rv) " } ,
{ " GetResource " , ( PyCFunction ) Res_GetResource , 1 ,
" (ResType theType, short theID) -> (Handle _rv) " } ,
{ " Get1Resource " , ( PyCFunction ) Res_Get1Resource , 1 ,
" (ResType theType, short theID) -> (Handle _rv) " } ,
{ " GetNamedResource " , ( PyCFunction ) Res_GetNamedResource , 1 ,
" (ResType theType, Str255 name) -> (Handle _rv) " } ,
{ " Get1NamedResource " , ( PyCFunction ) Res_Get1NamedResource , 1 ,
" (ResType theType, Str255 name) -> (Handle _rv) " } ,
{ " UniqueID " , ( PyCFunction ) Res_UniqueID , 1 ,
" (ResType theType) -> (short _rv) " } ,
{ " Unique1ID " , ( PyCFunction ) Res_Unique1ID , 1 ,
" (ResType theType) -> (short _rv) " } ,
{ " UpdateResFile " , ( PyCFunction ) Res_UpdateResFile , 1 ,
" (short refNum) -> None " } ,
{ " SetResPurge " , ( PyCFunction ) Res_SetResPurge , 1 ,
" (Boolean install) -> None " } ,
{ " GetResFileAttrs " , ( PyCFunction ) Res_GetResFileAttrs , 1 ,
" (short refNum) -> (short _rv) " } ,
{ " SetResFileAttrs " , ( PyCFunction ) Res_SetResFileAttrs , 1 ,
" (short refNum, short attrs) -> None " } ,
{ " OpenRFPerm " , ( PyCFunction ) Res_OpenRFPerm , 1 ,
" (Str255 fileName, short vRefNum, SignedByte permission) -> (short _rv) " } ,
# if TARGET_API_MAC_OS8
{ " RGetResource " , ( PyCFunction ) Res_RGetResource , 1 ,
" (ResType theType, short theID) -> (Handle _rv) " } ,
# endif
{ " HOpenResFile " , ( PyCFunction ) Res_HOpenResFile , 1 ,
" (short vRefNum, long dirID, Str255 fileName, SignedByte permission) -> (short _rv) " } ,
{ " HCreateResFile " , ( PyCFunction ) Res_HCreateResFile , 1 ,
" (short vRefNum, long dirID, Str255 fileName) -> None " } ,
{ " FSpOpenResFile " , ( PyCFunction ) Res_FSpOpenResFile , 1 ,
" (FSSpec spec, SignedByte permission) -> (short _rv) " } ,
{ " FSpCreateResFile " , ( PyCFunction ) Res_FSpCreateResFile , 1 ,
" (FSSpec spec, OSType creator, OSType fileType, ScriptCode scriptTag) -> None " } ,
# if TARGET_API_MAC_CARBON
{ " InsertResourceFile " , ( PyCFunction ) Res_InsertResourceFile , 1 ,
" (SInt16 refNum, RsrcChainLocation where) -> (OSErr _rv) " } ,
# endif
# if TARGET_API_MAC_CARBON
{ " DetachResourceFile " , ( PyCFunction ) Res_DetachResourceFile , 1 ,
" (SInt16 refNum) -> (OSErr _rv) " } ,
# endif
# if TARGET_API_MAC_CARBON
{ " FSpResourceFileAlreadyOpen " , ( PyCFunction ) Res_FSpResourceFileAlreadyOpen , 1 ,
" (FSSpec resourceFile) -> (Boolean _rv, Boolean inChain, SInt16 refNum) " } ,
# endif
# if TARGET_API_MAC_CARBON
{ " FSpOpenOrphanResFile " , ( PyCFunction ) Res_FSpOpenOrphanResFile , 1 ,
" (FSSpec spec, SignedByte permission) -> (OSErr _rv, SInt16 refNum) " } ,
# endif
# if TARGET_API_MAC_CARBON
{ " GetTopResourceFile " , ( PyCFunction ) Res_GetTopResourceFile , 1 ,
" () -> (OSErr _rv, SInt16 refNum) " } ,
# endif
# if TARGET_API_MAC_CARBON
{ " GetNextResourceFile " , ( PyCFunction ) Res_GetNextResourceFile , 1 ,
" (SInt16 curRefNum) -> (OSErr _rv, SInt16 nextRefNum) " } ,
# endif
{ " Resource " , ( PyCFunction ) Res_Resource , 1 ,
" Convert a string to a resource object. \n \n The created resource object is actually just a handle, \n apply AddResource() to write it to a resource file. \n See also the Handle() docstring. \n " } ,
{ " Handle " , ( PyCFunction ) Res_Handle , 1 ,
" Convert a string to a Handle object. \n \n Resource() and Handle() are very similar, but objects created with Handle() are \n by default automatically DisposeHandle()d upon object cleanup. Use AutoDispose() \n to change this. \n " } ,
{ NULL , NULL , 0 }
} ;
/* Alternative version of ResObj_New, which returns None for null argument */
PyObject * OptResObj_New ( Handle itself )
{
if ( itself = = NULL ) {
Py_INCREF ( Py_None ) ;
return Py_None ;
}
return ResObj_New ( itself ) ;
}
2001-09-05 07:31:52 -03:00
int OptResObj_Convert ( PyObject * v , Handle * p_itself )
2001-08-23 11:02:09 -03:00
{
PyObject * tmp ;
if ( v = = Py_None ) {
* p_itself = NULL ;
return 1 ;
}
if ( ResObj_Check ( v ) )
{
* p_itself = ( ( ResourceObject * ) v ) - > ob_itself ;
return 1 ;
}
/* If it isn't a resource yet see whether it is convertible */
if ( ( tmp = PyObject_CallMethod ( v , " as_Resource " , " " ) ) ) {
* p_itself = ( ( ResourceObject * ) tmp ) - > ob_itself ;
Py_DECREF ( tmp ) ;
return 1 ;
}
PyErr_Clear ( ) ;
PyErr_SetString ( PyExc_TypeError , " Resource required " ) ;
return 0 ;
}
void init_Res ( void )
{
PyObject * m ;
PyObject * d ;
PyMac_INIT_TOOLBOX_OBJECT_NEW ( Handle , ResObj_New ) ;
PyMac_INIT_TOOLBOX_OBJECT_CONVERT ( Handle , ResObj_Convert ) ;
PyMac_INIT_TOOLBOX_OBJECT_NEW ( Handle , OptResObj_New ) ;
PyMac_INIT_TOOLBOX_OBJECT_CONVERT ( Handle , OptResObj_Convert ) ;
m = Py_InitModule ( " _Res " , Res_methods ) ;
d = PyModule_GetDict ( m ) ;
Res_Error = PyMac_GetOSErrException ( ) ;
if ( Res_Error = = NULL | |
PyDict_SetItemString ( d , " Error " , Res_Error ) ! = 0 )
return ;
Resource_Type . ob_type = & PyType_Type ;
Py_INCREF ( & Resource_Type ) ;
if ( PyDict_SetItemString ( d , " ResourceType " , ( PyObject * ) & Resource_Type ) ! = 0 )
Py_FatalError ( " can't initialize ResourceType " ) ;
}
/* ======================== End module _Res ========================= */