diff -r ffa851df0825 -r 2fb8b9db1c86 symbian-qemu-0.9.1-12/python-2.6.1/Mac/Modules/folder/_Foldermodule.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/symbian-qemu-0.9.1-12/python-2.6.1/Mac/Modules/folder/_Foldermodule.c Fri Jul 31 15:01:17 2009 +0100 @@ -0,0 +1,342 @@ + +/* ========================= Module _Folder ========================= */ + +#include "Python.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) + + +#include + + +static PyObject *Folder_Error; + +static PyObject *Folder_FindFolder(PyObject *_self, PyObject *_args) +{ + PyObject *_res = NULL; + OSErr _err; + short vRefNum; + OSType folderType; + Boolean createFolder; + FSVolumeRefNum foundVRefNum; + SInt32 foundDirID; + if (!PyArg_ParseTuple(_args, "hO&b", + &vRefNum, + PyMac_GetOSType, &folderType, + &createFolder)) + return NULL; + _err = FindFolder(vRefNum, + folderType, + createFolder, + &foundVRefNum, + &foundDirID); + if (_err != noErr) return PyMac_Error(_err); + _res = Py_BuildValue("hl", + foundVRefNum, + foundDirID); + return _res; +} + +static PyObject *Folder_ReleaseFolder(PyObject *_self, PyObject *_args) +{ + PyObject *_res = NULL; + OSErr _err; + short vRefNum; + OSType folderType; + if (!PyArg_ParseTuple(_args, "hO&", + &vRefNum, + PyMac_GetOSType, &folderType)) + return NULL; + _err = ReleaseFolder(vRefNum, + folderType); + if (_err != noErr) return PyMac_Error(_err); + Py_INCREF(Py_None); + _res = Py_None; + return _res; +} + +static PyObject *Folder_FSFindFolder(PyObject *_self, PyObject *_args) +{ + PyObject *_res = NULL; + OSErr _err; + short vRefNum; + OSType folderType; + Boolean createFolder; + FSRef foundRef; + if (!PyArg_ParseTuple(_args, "hO&b", + &vRefNum, + PyMac_GetOSType, &folderType, + &createFolder)) + return NULL; + _err = FSFindFolder(vRefNum, + folderType, + createFolder, + &foundRef); + if (_err != noErr) return PyMac_Error(_err); + _res = Py_BuildValue("O&", + PyMac_BuildFSRef, &foundRef); + return _res; +} + +static PyObject *Folder_AddFolderDescriptor(PyObject *_self, PyObject *_args) +{ + PyObject *_res = NULL; + OSErr _err; + FolderType foldType; + FolderDescFlags flags; + FolderClass foldClass; + FolderLocation foldLocation; + OSType badgeSignature; + OSType badgeType; + Str255 name; + Boolean replaceFlag; + if (!PyArg_ParseTuple(_args, "O&lO&O&O&O&O&b", + PyMac_GetOSType, &foldType, + &flags, + PyMac_GetOSType, &foldClass, + PyMac_GetOSType, &foldLocation, + PyMac_GetOSType, &badgeSignature, + PyMac_GetOSType, &badgeType, + PyMac_GetStr255, name, + &replaceFlag)) + return NULL; + _err = AddFolderDescriptor(foldType, + flags, + foldClass, + foldLocation, + badgeSignature, + badgeType, + name, + replaceFlag); + if (_err != noErr) return PyMac_Error(_err); + Py_INCREF(Py_None); + _res = Py_None; + return _res; +} + +static PyObject *Folder_GetFolderTypes(PyObject *_self, PyObject *_args) +{ + PyObject *_res = NULL; + OSErr _err; + UInt32 requestedTypeCount; + UInt32 totalTypeCount; + FolderType theTypes; + if (!PyArg_ParseTuple(_args, "l", + &requestedTypeCount)) + return NULL; + _err = GetFolderTypes(requestedTypeCount, + &totalTypeCount, + &theTypes); + if (_err != noErr) return PyMac_Error(_err); + _res = Py_BuildValue("lO&", + totalTypeCount, + PyMac_BuildOSType, theTypes); + return _res; +} + +static PyObject *Folder_RemoveFolderDescriptor(PyObject *_self, PyObject *_args) +{ + PyObject *_res = NULL; + OSErr _err; + FolderType foldType; + if (!PyArg_ParseTuple(_args, "O&", + PyMac_GetOSType, &foldType)) + return NULL; + _err = RemoveFolderDescriptor(foldType); + if (_err != noErr) return PyMac_Error(_err); + Py_INCREF(Py_None); + _res = Py_None; + return _res; +} + +#ifndef __LP64__ +static PyObject *Folder_GetFolderName(PyObject *_self, PyObject *_args) +{ + PyObject *_res = NULL; + OSErr _err; + short vRefNum; + OSType foldType; + short foundVRefNum; + Str255 name; + if (!PyArg_ParseTuple(_args, "hO&O&", + &vRefNum, + PyMac_GetOSType, &foldType, + PyMac_GetStr255, name)) + return NULL; + _err = GetFolderName(vRefNum, + foldType, + &foundVRefNum, + name); + if (_err != noErr) return PyMac_Error(_err); + _res = Py_BuildValue("h", + foundVRefNum); + return _res; +} + +static PyObject *Folder_AddFolderRouting(PyObject *_self, PyObject *_args) +{ + PyObject *_res = NULL; + OSErr _err; + OSType fileType; + FolderType routeFromFolder; + FolderType routeToFolder; + RoutingFlags flags; + Boolean replaceFlag; + if (!PyArg_ParseTuple(_args, "O&O&O&lb", + PyMac_GetOSType, &fileType, + PyMac_GetOSType, &routeFromFolder, + PyMac_GetOSType, &routeToFolder, + &flags, + &replaceFlag)) + return NULL; + _err = AddFolderRouting(fileType, + routeFromFolder, + routeToFolder, + flags, + replaceFlag); + if (_err != noErr) return PyMac_Error(_err); + Py_INCREF(Py_None); + _res = Py_None; + return _res; +} + +static PyObject *Folder_RemoveFolderRouting(PyObject *_self, PyObject *_args) +{ + PyObject *_res = NULL; + OSErr _err; + OSType fileType; + FolderType routeFromFolder; + if (!PyArg_ParseTuple(_args, "O&O&", + PyMac_GetOSType, &fileType, + PyMac_GetOSType, &routeFromFolder)) + return NULL; + _err = RemoveFolderRouting(fileType, + routeFromFolder); + if (_err != noErr) return PyMac_Error(_err); + Py_INCREF(Py_None); + _res = Py_None; + return _res; +} + +static PyObject *Folder_FindFolderRouting(PyObject *_self, PyObject *_args) +{ + PyObject *_res = NULL; + OSErr _err; + OSType fileType; + FolderType routeFromFolder; + FolderType routeToFolder; + RoutingFlags flags; + if (!PyArg_ParseTuple(_args, "O&O&", + PyMac_GetOSType, &fileType, + PyMac_GetOSType, &routeFromFolder)) + return NULL; + _err = FindFolderRouting(fileType, + routeFromFolder, + &routeToFolder, + &flags); + if (_err != noErr) return PyMac_Error(_err); + _res = Py_BuildValue("O&l", + PyMac_BuildOSType, routeToFolder, + flags); + return _res; +} +#endif /* !__LP64__ */ + +static PyObject *Folder_InvalidateFolderDescriptorCache(PyObject *_self, PyObject *_args) +{ + PyObject *_res = NULL; + OSErr _err; + short vRefNum; + long dirID; + if (!PyArg_ParseTuple(_args, "hl", + &vRefNum, + &dirID)) + return NULL; + _err = InvalidateFolderDescriptorCache(vRefNum, + dirID); + if (_err != noErr) return PyMac_Error(_err); + Py_INCREF(Py_None); + _res = Py_None; + return _res; +} + +static PyObject *Folder_IdentifyFolder(PyObject *_self, PyObject *_args) +{ + PyObject *_res = NULL; + OSErr _err; + short vRefNum; + long dirID; + FolderType foldType; + if (!PyArg_ParseTuple(_args, "hl", + &vRefNum, + &dirID)) + return NULL; + _err = IdentifyFolder(vRefNum, + dirID, + &foldType); + if (_err != noErr) return PyMac_Error(_err); + _res = Py_BuildValue("O&", + PyMac_BuildOSType, foldType); + return _res; +} + +static PyMethodDef Folder_methods[] = { + {"FindFolder", (PyCFunction)Folder_FindFolder, 1, + PyDoc_STR("(short vRefNum, OSType folderType, Boolean createFolder) -> (short foundVRefNum, long foundDirID)")}, + {"ReleaseFolder", (PyCFunction)Folder_ReleaseFolder, 1, + PyDoc_STR("(short vRefNum, OSType folderType) -> None")}, + {"FSFindFolder", (PyCFunction)Folder_FSFindFolder, 1, + PyDoc_STR("(short vRefNum, OSType folderType, Boolean createFolder) -> (FSRef foundRef)")}, + {"AddFolderDescriptor", (PyCFunction)Folder_AddFolderDescriptor, 1, + PyDoc_STR("(FolderType foldType, FolderDescFlags flags, FolderClass foldClass, FolderLocation foldLocation, OSType badgeSignature, OSType badgeType, Str255 name, Boolean replaceFlag) -> None")}, + {"GetFolderTypes", (PyCFunction)Folder_GetFolderTypes, 1, + PyDoc_STR("(UInt32 requestedTypeCount) -> (UInt32 totalTypeCount, FolderType theTypes)")}, + {"RemoveFolderDescriptor", (PyCFunction)Folder_RemoveFolderDescriptor, 1, + PyDoc_STR("(FolderType foldType) -> None")}, +#ifndef __LP64__ + {"GetFolderName", (PyCFunction)Folder_GetFolderName, 1, + PyDoc_STR("(short vRefNum, OSType foldType, Str255 name) -> (short foundVRefNum)")}, + {"AddFolderRouting", (PyCFunction)Folder_AddFolderRouting, 1, + PyDoc_STR("(OSType fileType, FolderType routeFromFolder, FolderType routeToFolder, RoutingFlags flags, Boolean replaceFlag) -> None")}, + {"RemoveFolderRouting", (PyCFunction)Folder_RemoveFolderRouting, 1, + PyDoc_STR("(OSType fileType, FolderType routeFromFolder) -> None")}, + {"FindFolderRouting", (PyCFunction)Folder_FindFolderRouting, 1, + PyDoc_STR("(OSType fileType, FolderType routeFromFolder) -> (FolderType routeToFolder, RoutingFlags flags)")}, +#endif /* !__LP64__ */ + {"InvalidateFolderDescriptorCache", (PyCFunction)Folder_InvalidateFolderDescriptorCache, 1, + PyDoc_STR("(short vRefNum, long dirID) -> None")}, + {"IdentifyFolder", (PyCFunction)Folder_IdentifyFolder, 1, + PyDoc_STR("(short vRefNum, long dirID) -> (FolderType foldType)")}, + {NULL, NULL, 0} +}; + + + + +void init_Folder(void) +{ + PyObject *m; + PyObject *d; + + + + + m = Py_InitModule("_Folder", Folder_methods); + d = PyModule_GetDict(m); + Folder_Error = PyMac_GetOSErrException(); + if (Folder_Error == NULL || + PyDict_SetItemString(d, "Error", Folder_Error) != 0) + return; +} + +/* ======================= End module _Folder ======================= */ +