symbian-qemu-0.9.1-12/python-2.6.1/Mac/Modules/folder/_Foldermodule.c
changeset 1 2fb8b9db1c86
--- /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 <Carbon/Carbon.h>
+
+
+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 ======================= */
+