Maintain backwards compatibility with python < 2.3 by dynamically
[python/dscho.git] / Include / pymactoolbox.h
blob916dac71486622e38be72c6e7c8ce21b06aa91ac
1 /*
2 ** pymactoolbox.h - globals defined in mactoolboxglue.c
3 */
4 #ifndef Py_PYMACTOOLBOX_H
5 #define Py_PYMACTOOLBOX_H
6 #ifdef __cplusplus
7 extern "C" {
8 #endif
10 #ifdef WITHOUT_FRAMEWORKS
11 #include <Memory.h>
12 #include <Dialogs.h>
13 #include <Menus.h>
14 #include <Controls.h>
15 #include <Components.h>
16 #include <Lists.h>
17 #include <Movies.h>
18 #include <Errors.h>
19 #include <CFBase.h>
20 #include <CFArray.h>
21 #include <CFData.h>
22 #include <CFDictionary.h>
23 #include <CFString.h>
24 #include <CFURL.h>
25 #else
26 #include <Carbon/Carbon.h>
27 #include <QuickTime/QuickTime.h>
28 #endif
31 ** Helper routines for error codes and such.
33 char *PyMac_getscript(void); /* Get the default encoding for our 8bit character set */
34 char *PyMac_StrError(int); /* strerror with mac errors */
35 PyObject *PyErr_Mac(PyObject *, int); /* Exception with a mac error */
36 PyObject *PyMac_Error(OSErr); /* Uses PyMac_GetOSErrException */
37 extern OSErr PyMac_GetFullPathname(FSSpec *, char *, int); /* convert fsspec->path */
38 #ifdef WITH_NEXT_FRAMEWORK
39 extern char *PyMac_GetAppletScriptFile(void); /* Return applet script file or NULL */
40 #endif
42 ** These conversion routines are defined in mactoolboxglue.c itself.
44 int PyMac_GetOSType(PyObject *, OSType *); /* argument parser for OSType */
45 PyObject *PyMac_BuildOSType(OSType); /* Convert OSType to PyObject */
47 PyObject *PyMac_BuildNumVersion(NumVersion);/* Convert NumVersion to PyObject */
49 int PyMac_GetStr255(PyObject *, Str255); /* argument parser for Str255 */
50 PyObject *PyMac_BuildStr255(Str255); /* Convert Str255 to PyObject */
51 PyObject *PyMac_BuildOptStr255(Str255); /* Convert Str255 to PyObject, NULL to None */
53 int PyMac_GetRect(PyObject *, Rect *); /* argument parser for Rect */
54 PyObject *PyMac_BuildRect(Rect *); /* Convert Rect to PyObject */
56 int PyMac_GetPoint(PyObject *, Point *); /* argument parser for Point */
57 PyObject *PyMac_BuildPoint(Point); /* Convert Point to PyObject */
59 int PyMac_GetEventRecord(PyObject *, EventRecord *); /* argument parser for EventRecord */
60 PyObject *PyMac_BuildEventRecord(EventRecord *); /* Convert EventRecord to PyObject */
62 int PyMac_GetFixed(PyObject *, Fixed *); /* argument parser for Fixed */
63 PyObject *PyMac_BuildFixed(Fixed); /* Convert Fixed to PyObject */
64 int PyMac_Getwide(PyObject *, wide *); /* argument parser for wide */
65 PyObject *PyMac_Buildwide(wide *); /* Convert wide to PyObject */
68 ** The rest of the routines are implemented by extension modules. If they are
69 ** dynamically loaded mactoolboxglue will contain a stub implementation of the
70 ** routine, which imports the module, whereupon the module's init routine will
71 ** communicate the routine pointer back to the stub.
72 ** If USE_TOOLBOX_OBJECT_GLUE is not defined there is no glue code, and the
73 ** extension modules simply declare the routine. This is the case for static
74 ** builds (and could be the case for MacPython CFM builds, because CFM extension
75 ** modules can reference each other without problems).
78 #ifdef USE_TOOLBOX_OBJECT_GLUE
80 ** These macros are used in the module init code. If we use toolbox object glue
81 ** it sets the function pointer to point to the real function.
83 #define PyMac_INIT_TOOLBOX_OBJECT_NEW(object, rtn) { \
84 extern PyObject *(*PyMacGluePtr_##rtn)(object); \
85 PyMacGluePtr_##rtn = _##rtn; \
87 #define PyMac_INIT_TOOLBOX_OBJECT_CONVERT(object, rtn) { \
88 extern int (*PyMacGluePtr_##rtn)(PyObject *, object *); \
89 PyMacGluePtr_##rtn = _##rtn; \
91 #else
93 ** If we don't use toolbox object glue the init macros are empty. Moreover, we define
94 ** _xxx_New to be the same as xxx_New, and the code in mactoolboxglue isn't included.
96 #define PyMac_INIT_TOOLBOX_OBJECT_NEW(object, rtn)
97 #define PyMac_INIT_TOOLBOX_OBJECT_CONVERT(object, rtn)
98 #endif /* USE_TOOLBOX_OBJECT_GLUE */
100 /* macfs exports */
101 int PyMac_GetFSSpec(PyObject *, FSSpec *); /* argument parser for FSSpec */
102 PyObject *PyMac_BuildFSSpec(FSSpec *); /* Convert FSSpec to PyObject */
104 int PyMac_GetFSRef(PyObject *, FSRef *); /* argument parser for FSRef */
105 PyObject *PyMac_BuildFSRef(FSRef *); /* Convert FSRef to PyObject */
107 /* AE exports */
108 extern PyObject *AEDesc_New(AppleEvent *); /* XXXX Why passed by address?? */
109 extern PyObject *AEDesc_NewBorrowed(AppleEvent *);
110 extern int AEDesc_Convert(PyObject *, AppleEvent *);
112 /* Cm exports */
113 extern PyObject *CmpObj_New(Component);
114 extern int CmpObj_Convert(PyObject *, Component *);
115 extern PyObject *CmpInstObj_New(ComponentInstance);
116 extern int CmpInstObj_Convert(PyObject *, ComponentInstance *);
118 /* Ctl exports */
119 extern PyObject *CtlObj_New(ControlHandle);
120 extern int CtlObj_Convert(PyObject *, ControlHandle *);
122 /* Dlg exports */
123 extern PyObject *DlgObj_New(DialogPtr);
124 extern int DlgObj_Convert(PyObject *, DialogPtr *);
125 extern PyObject *DlgObj_WhichDialog(DialogPtr);
127 /* Drag exports */
128 extern PyObject *DragObj_New(DragReference);
129 extern int DragObj_Convert(PyObject *, DragReference *);
131 /* List exports */
132 extern PyObject *ListObj_New(ListHandle);
133 extern int ListObj_Convert(PyObject *, ListHandle *);
135 /* Menu exports */
136 extern PyObject *MenuObj_New(MenuHandle);
137 extern int MenuObj_Convert(PyObject *, MenuHandle *);
139 /* Qd exports */
140 extern PyObject *GrafObj_New(GrafPtr);
141 extern int GrafObj_Convert(PyObject *, GrafPtr *);
142 extern PyObject *BMObj_New(BitMapPtr);
143 extern int BMObj_Convert(PyObject *, BitMapPtr *);
144 extern PyObject *QdRGB_New(RGBColor *);
145 extern int QdRGB_Convert(PyObject *, RGBColor *);
147 /* Qdoffs exports */
148 extern PyObject *GWorldObj_New(GWorldPtr);
149 extern int GWorldObj_Convert(PyObject *, GWorldPtr *);
151 /* Qt exports */
152 extern PyObject *TrackObj_New(Track);
153 extern int TrackObj_Convert(PyObject *, Track *);
154 extern PyObject *MovieObj_New(Movie);
155 extern int MovieObj_Convert(PyObject *, Movie *);
156 extern PyObject *MovieCtlObj_New(MovieController);
157 extern int MovieCtlObj_Convert(PyObject *, MovieController *);
158 extern PyObject *TimeBaseObj_New(TimeBase);
159 extern int TimeBaseObj_Convert(PyObject *, TimeBase *);
160 extern PyObject *UserDataObj_New(UserData);
161 extern int UserDataObj_Convert(PyObject *, UserData *);
162 extern PyObject *MediaObj_New(Media);
163 extern int MediaObj_Convert(PyObject *, Media *);
165 /* Res exports */
166 extern PyObject *ResObj_New(Handle);
167 extern int ResObj_Convert(PyObject *, Handle *);
168 extern PyObject *OptResObj_New(Handle);
169 extern int OptResObj_Convert(PyObject *, Handle *);
171 /* TE exports */
172 extern PyObject *TEObj_New(TEHandle);
173 extern int TEObj_Convert(PyObject *, TEHandle *);
175 /* Win exports */
176 extern PyObject *WinObj_New(WindowPtr);
177 extern int WinObj_Convert(PyObject *, WindowPtr *);
178 extern PyObject *WinObj_WhichWindow(WindowPtr);
180 /* CF exports */
181 extern PyObject *CFObj_New(CFTypeRef);
182 extern int CFObj_Convert(PyObject *, CFTypeRef *);
183 extern PyObject *CFTypeRefObj_New(CFTypeRef);
184 extern int CFTypeRefObj_Convert(PyObject *, CFTypeRef *);
185 extern PyObject *CFStringRefObj_New(CFStringRef);
186 extern int CFStringRefObj_Convert(PyObject *, CFStringRef *);
187 extern PyObject *CFMutableStringRefObj_New(CFMutableStringRef);
188 extern int CFMutableStringRefObj_Convert(PyObject *, CFMutableStringRef *);
189 extern PyObject *CFArrayRefObj_New(CFArrayRef);
190 extern int CFArrayRefObj_Convert(PyObject *, CFArrayRef *);
191 extern PyObject *CFMutableArrayRefObj_New(CFMutableArrayRef);
192 extern int CFMutableArrayRefObj_Convert(PyObject *, CFMutableArrayRef *);
193 extern PyObject *CFDictionaryRefObj_New(CFDictionaryRef);
194 extern int CFDictionaryRefObj_Convert(PyObject *, CFDictionaryRef *);
195 extern PyObject *CFMutableDictionaryRefObj_New(CFMutableDictionaryRef);
196 extern int CFMutableDictionaryRefObj_Convert(PyObject *, CFMutableDictionaryRef *);
197 extern PyObject *CFURLRefObj_New(CFURLRef);
198 extern int CFURLRefObj_Convert(PyObject *, CFURLRef *);
199 extern int OptionalCFURLRefObj_Convert(PyObject *, CFURLRef *);
201 #ifdef __cplusplus
203 #endif
204 #endif