ยปCore Development>Code coverage>Mac/Modules/folder/_Foldermodule.c

Python code coverage for Mac/Modules/folder/_Foldermodule.c

#countcontent
1n/a
2n/a/* ========================= Module _Folder ========================= */
3n/a
4n/a#include "Python.h"
5n/a
6n/a
7n/a
8n/a#include "pymactoolbox.h"
9n/a
10n/a/* Macro to test whether a weak-loaded CFM function exists */
11n/a#define PyMac_PRECHECK(rtn) do { if ( &rtn == NULL ) {\
12n/a PyErr_SetString(PyExc_NotImplementedError, \
13n/a "Not available in this shared library/OS version"); \
14n/a return NULL; \
15n/a }} while(0)
16n/a
17n/a
18n/a#include <Carbon/Carbon.h>
19n/a
20n/a
21n/astatic PyObject *Folder_Error;
22n/a
23n/astatic PyObject *Folder_FindFolder(PyObject *_self, PyObject *_args)
24n/a{
25n/a PyObject *_res = NULL;
26n/a OSErr _err;
27n/a short vRefNum;
28n/a OSType folderType;
29n/a Boolean createFolder;
30n/a FSVolumeRefNum foundVRefNum;
31n/a SInt32 foundDirID;
32n/a if (!PyArg_ParseTuple(_args, "hO&b",
33n/a &vRefNum,
34n/a PyMac_GetOSType, &folderType,
35n/a &createFolder))
36n/a return NULL;
37n/a _err = FindFolder(vRefNum,
38n/a folderType,
39n/a createFolder,
40n/a &foundVRefNum,
41n/a &foundDirID);
42n/a if (_err != noErr) return PyMac_Error(_err);
43n/a _res = Py_BuildValue("hl",
44n/a foundVRefNum,
45n/a foundDirID);
46n/a return _res;
47n/a}
48n/a
49n/astatic PyObject *Folder_ReleaseFolder(PyObject *_self, PyObject *_args)
50n/a{
51n/a PyObject *_res = NULL;
52n/a OSErr _err;
53n/a short vRefNum;
54n/a OSType folderType;
55n/a if (!PyArg_ParseTuple(_args, "hO&",
56n/a &vRefNum,
57n/a PyMac_GetOSType, &folderType))
58n/a return NULL;
59n/a _err = ReleaseFolder(vRefNum,
60n/a folderType);
61n/a if (_err != noErr) return PyMac_Error(_err);
62n/a Py_INCREF(Py_None);
63n/a _res = Py_None;
64n/a return _res;
65n/a}
66n/a
67n/astatic PyObject *Folder_FSFindFolder(PyObject *_self, PyObject *_args)
68n/a{
69n/a PyObject *_res = NULL;
70n/a OSErr _err;
71n/a short vRefNum;
72n/a OSType folderType;
73n/a Boolean createFolder;
74n/a FSRef foundRef;
75n/a if (!PyArg_ParseTuple(_args, "hO&b",
76n/a &vRefNum,
77n/a PyMac_GetOSType, &folderType,
78n/a &createFolder))
79n/a return NULL;
80n/a _err = FSFindFolder(vRefNum,
81n/a folderType,
82n/a createFolder,
83n/a &foundRef);
84n/a if (_err != noErr) return PyMac_Error(_err);
85n/a _res = Py_BuildValue("O&",
86n/a PyMac_BuildFSRef, &foundRef);
87n/a return _res;
88n/a}
89n/a
90n/astatic PyObject *Folder_AddFolderDescriptor(PyObject *_self, PyObject *_args)
91n/a{
92n/a PyObject *_res = NULL;
93n/a OSErr _err;
94n/a FolderType foldType;
95n/a FolderDescFlags flags;
96n/a FolderClass foldClass;
97n/a FolderLocation foldLocation;
98n/a OSType badgeSignature;
99n/a OSType badgeType;
100n/a Str255 name;
101n/a Boolean replaceFlag;
102n/a if (!PyArg_ParseTuple(_args, "O&lO&O&O&O&O&b",
103n/a PyMac_GetOSType, &foldType,
104n/a &flags,
105n/a PyMac_GetOSType, &foldClass,
106n/a PyMac_GetOSType, &foldLocation,
107n/a PyMac_GetOSType, &badgeSignature,
108n/a PyMac_GetOSType, &badgeType,
109n/a PyMac_GetStr255, name,
110n/a &replaceFlag))
111n/a return NULL;
112n/a _err = AddFolderDescriptor(foldType,
113n/a flags,
114n/a foldClass,
115n/a foldLocation,
116n/a badgeSignature,
117n/a badgeType,
118n/a name,
119n/a replaceFlag);
120n/a if (_err != noErr) return PyMac_Error(_err);
121n/a Py_INCREF(Py_None);
122n/a _res = Py_None;
123n/a return _res;
124n/a}
125n/a
126n/astatic PyObject *Folder_GetFolderTypes(PyObject *_self, PyObject *_args)
127n/a{
128n/a PyObject *_res = NULL;
129n/a OSErr _err;
130n/a UInt32 requestedTypeCount;
131n/a UInt32 totalTypeCount;
132n/a FolderType theTypes;
133n/a if (!PyArg_ParseTuple(_args, "l",
134n/a &requestedTypeCount))
135n/a return NULL;
136n/a _err = GetFolderTypes(requestedTypeCount,
137n/a &totalTypeCount,
138n/a &theTypes);
139n/a if (_err != noErr) return PyMac_Error(_err);
140n/a _res = Py_BuildValue("lO&",
141n/a totalTypeCount,
142n/a PyMac_BuildOSType, theTypes);
143n/a return _res;
144n/a}
145n/a
146n/astatic PyObject *Folder_RemoveFolderDescriptor(PyObject *_self, PyObject *_args)
147n/a{
148n/a PyObject *_res = NULL;
149n/a OSErr _err;
150n/a FolderType foldType;
151n/a if (!PyArg_ParseTuple(_args, "O&",
152n/a PyMac_GetOSType, &foldType))
153n/a return NULL;
154n/a _err = RemoveFolderDescriptor(foldType);
155n/a if (_err != noErr) return PyMac_Error(_err);
156n/a Py_INCREF(Py_None);
157n/a _res = Py_None;
158n/a return _res;
159n/a}
160n/a
161n/a#ifndef __LP64__
162n/astatic PyObject *Folder_GetFolderName(PyObject *_self, PyObject *_args)
163n/a{
164n/a PyObject *_res = NULL;
165n/a OSErr _err;
166n/a short vRefNum;
167n/a OSType foldType;
168n/a short foundVRefNum;
169n/a Str255 name;
170n/a if (!PyArg_ParseTuple(_args, "hO&O&",
171n/a &vRefNum,
172n/a PyMac_GetOSType, &foldType,
173n/a PyMac_GetStr255, name))
174n/a return NULL;
175n/a _err = GetFolderName(vRefNum,
176n/a foldType,
177n/a &foundVRefNum,
178n/a name);
179n/a if (_err != noErr) return PyMac_Error(_err);
180n/a _res = Py_BuildValue("h",
181n/a foundVRefNum);
182n/a return _res;
183n/a}
184n/a
185n/astatic PyObject *Folder_AddFolderRouting(PyObject *_self, PyObject *_args)
186n/a{
187n/a PyObject *_res = NULL;
188n/a OSErr _err;
189n/a OSType fileType;
190n/a FolderType routeFromFolder;
191n/a FolderType routeToFolder;
192n/a RoutingFlags flags;
193n/a Boolean replaceFlag;
194n/a if (!PyArg_ParseTuple(_args, "O&O&O&lb",
195n/a PyMac_GetOSType, &fileType,
196n/a PyMac_GetOSType, &routeFromFolder,
197n/a PyMac_GetOSType, &routeToFolder,
198n/a &flags,
199n/a &replaceFlag))
200n/a return NULL;
201n/a _err = AddFolderRouting(fileType,
202n/a routeFromFolder,
203n/a routeToFolder,
204n/a flags,
205n/a replaceFlag);
206n/a if (_err != noErr) return PyMac_Error(_err);
207n/a Py_INCREF(Py_None);
208n/a _res = Py_None;
209n/a return _res;
210n/a}
211n/a
212n/astatic PyObject *Folder_RemoveFolderRouting(PyObject *_self, PyObject *_args)
213n/a{
214n/a PyObject *_res = NULL;
215n/a OSErr _err;
216n/a OSType fileType;
217n/a FolderType routeFromFolder;
218n/a if (!PyArg_ParseTuple(_args, "O&O&",
219n/a PyMac_GetOSType, &fileType,
220n/a PyMac_GetOSType, &routeFromFolder))
221n/a return NULL;
222n/a _err = RemoveFolderRouting(fileType,
223n/a routeFromFolder);
224n/a if (_err != noErr) return PyMac_Error(_err);
225n/a Py_INCREF(Py_None);
226n/a _res = Py_None;
227n/a return _res;
228n/a}
229n/a
230n/astatic PyObject *Folder_FindFolderRouting(PyObject *_self, PyObject *_args)
231n/a{
232n/a PyObject *_res = NULL;
233n/a OSErr _err;
234n/a OSType fileType;
235n/a FolderType routeFromFolder;
236n/a FolderType routeToFolder;
237n/a RoutingFlags flags;
238n/a if (!PyArg_ParseTuple(_args, "O&O&",
239n/a PyMac_GetOSType, &fileType,
240n/a PyMac_GetOSType, &routeFromFolder))
241n/a return NULL;
242n/a _err = FindFolderRouting(fileType,
243n/a routeFromFolder,
244n/a &routeToFolder,
245n/a &flags);
246n/a if (_err != noErr) return PyMac_Error(_err);
247n/a _res = Py_BuildValue("O&l",
248n/a PyMac_BuildOSType, routeToFolder,
249n/a flags);
250n/a return _res;
251n/a}
252n/a#endif /* !__LP64__ */
253n/a
254n/astatic PyObject *Folder_InvalidateFolderDescriptorCache(PyObject *_self, PyObject *_args)
255n/a{
256n/a PyObject *_res = NULL;
257n/a OSErr _err;
258n/a short vRefNum;
259n/a long dirID;
260n/a if (!PyArg_ParseTuple(_args, "hl",
261n/a &vRefNum,
262n/a &dirID))
263n/a return NULL;
264n/a _err = InvalidateFolderDescriptorCache(vRefNum,
265n/a dirID);
266n/a if (_err != noErr) return PyMac_Error(_err);
267n/a Py_INCREF(Py_None);
268n/a _res = Py_None;
269n/a return _res;
270n/a}
271n/a
272n/astatic PyObject *Folder_IdentifyFolder(PyObject *_self, PyObject *_args)
273n/a{
274n/a PyObject *_res = NULL;
275n/a OSErr _err;
276n/a short vRefNum;
277n/a long dirID;
278n/a FolderType foldType;
279n/a if (!PyArg_ParseTuple(_args, "hl",
280n/a &vRefNum,
281n/a &dirID))
282n/a return NULL;
283n/a _err = IdentifyFolder(vRefNum,
284n/a dirID,
285n/a &foldType);
286n/a if (_err != noErr) return PyMac_Error(_err);
287n/a _res = Py_BuildValue("O&",
288n/a PyMac_BuildOSType, foldType);
289n/a return _res;
290n/a}
291n/a
292n/astatic PyMethodDef Folder_methods[] = {
293n/a {"FindFolder", (PyCFunction)Folder_FindFolder, 1,
294n/a PyDoc_STR("(short vRefNum, OSType folderType, Boolean createFolder) -> (short foundVRefNum, long foundDirID)")},
295n/a {"ReleaseFolder", (PyCFunction)Folder_ReleaseFolder, 1,
296n/a PyDoc_STR("(short vRefNum, OSType folderType) -> None")},
297n/a {"FSFindFolder", (PyCFunction)Folder_FSFindFolder, 1,
298n/a PyDoc_STR("(short vRefNum, OSType folderType, Boolean createFolder) -> (FSRef foundRef)")},
299n/a {"AddFolderDescriptor", (PyCFunction)Folder_AddFolderDescriptor, 1,
300n/a PyDoc_STR("(FolderType foldType, FolderDescFlags flags, FolderClass foldClass, FolderLocation foldLocation, OSType badgeSignature, OSType badgeType, Str255 name, Boolean replaceFlag) -> None")},
301n/a {"GetFolderTypes", (PyCFunction)Folder_GetFolderTypes, 1,
302n/a PyDoc_STR("(UInt32 requestedTypeCount) -> (UInt32 totalTypeCount, FolderType theTypes)")},
303n/a {"RemoveFolderDescriptor", (PyCFunction)Folder_RemoveFolderDescriptor, 1,
304n/a PyDoc_STR("(FolderType foldType) -> None")},
305n/a#ifndef __LP64__
306n/a {"GetFolderName", (PyCFunction)Folder_GetFolderName, 1,
307n/a PyDoc_STR("(short vRefNum, OSType foldType, Str255 name) -> (short foundVRefNum)")},
308n/a {"AddFolderRouting", (PyCFunction)Folder_AddFolderRouting, 1,
309n/a PyDoc_STR("(OSType fileType, FolderType routeFromFolder, FolderType routeToFolder, RoutingFlags flags, Boolean replaceFlag) -> None")},
310n/a {"RemoveFolderRouting", (PyCFunction)Folder_RemoveFolderRouting, 1,
311n/a PyDoc_STR("(OSType fileType, FolderType routeFromFolder) -> None")},
312n/a {"FindFolderRouting", (PyCFunction)Folder_FindFolderRouting, 1,
313n/a PyDoc_STR("(OSType fileType, FolderType routeFromFolder) -> (FolderType routeToFolder, RoutingFlags flags)")},
314n/a#endif /* !__LP64__ */
315n/a {"InvalidateFolderDescriptorCache", (PyCFunction)Folder_InvalidateFolderDescriptorCache, 1,
316n/a PyDoc_STR("(short vRefNum, long dirID) -> None")},
317n/a {"IdentifyFolder", (PyCFunction)Folder_IdentifyFolder, 1,
318n/a PyDoc_STR("(short vRefNum, long dirID) -> (FolderType foldType)")},
319n/a {NULL, NULL, 0}
320n/a};
321n/a
322n/a
323n/a
324n/a
325n/avoid init_Folder(void)
326n/a{
327n/a PyObject *m;
328n/a PyObject *d;
329n/a
330n/a
331n/a
332n/a
333n/a m = Py_InitModule("_Folder", Folder_methods);
334n/a d = PyModule_GetDict(m);
335n/a Folder_Error = PyMac_GetOSErrException();
336n/a if (Folder_Error == NULL ||
337n/a PyDict_SetItemString(d, "Error", Folder_Error) != 0)
338n/a return;
339n/a}
340n/a
341n/a/* ======================= End module _Folder ======================= */
342n/a