2 ** pymactoolbox.h - globals defined in mactoolboxglue.c
4 #ifndef Py_PYMACTOOLBOX_H
5 #define Py_PYMACTOOLBOX_H
10 #ifdef WITHOUT_FRAMEWORKS
15 #include <Components.h>
22 #include <CFDictionary.h>
26 #include <Carbon/Carbon.h>
27 #include <QuickTime/QuickTime.h>
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 */
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; \
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 */
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 */
108 extern PyObject
*AEDesc_New(AppleEvent
*); /* XXXX Why passed by address?? */
109 extern PyObject
*AEDesc_NewBorrowed(AppleEvent
*);
110 extern int AEDesc_Convert(PyObject
*, AppleEvent
*);
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
*);
119 extern PyObject
*CtlObj_New(ControlHandle
);
120 extern int CtlObj_Convert(PyObject
*, ControlHandle
*);
123 extern PyObject
*DlgObj_New(DialogPtr
);
124 extern int DlgObj_Convert(PyObject
*, DialogPtr
*);
125 extern PyObject
*DlgObj_WhichDialog(DialogPtr
);
128 extern PyObject
*DragObj_New(DragReference
);
129 extern int DragObj_Convert(PyObject
*, DragReference
*);
132 extern PyObject
*ListObj_New(ListHandle
);
133 extern int ListObj_Convert(PyObject
*, ListHandle
*);
136 extern PyObject
*MenuObj_New(MenuHandle
);
137 extern int MenuObj_Convert(PyObject
*, MenuHandle
*);
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
*);
148 extern PyObject
*GWorldObj_New(GWorldPtr
);
149 extern int GWorldObj_Convert(PyObject
*, GWorldPtr
*);
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
*);
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
*);
172 extern PyObject
*TEObj_New(TEHandle
);
173 extern int TEObj_Convert(PyObject
*, TEHandle
*);
176 extern PyObject
*WinObj_New(WindowPtr
);
177 extern int WinObj_Convert(PyObject
*, WindowPtr
*);
178 extern PyObject
*WinObj_WhichWindow(WindowPtr
);
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
*);