| Jack Jansen | 9d8b96c | 2000-07-14 22:16:45 +0000 | [diff] [blame] | 1 | /* | 
| Jack Jansen | 94bebc0 | 2001-08-08 13:17:31 +0000 | [diff] [blame] | 2 | ** pymactoolbox.h - globals defined in mactoolboxglue.c | 
| Jack Jansen | 9d8b96c | 2000-07-14 22:16:45 +0000 | [diff] [blame] | 3 | */ | 
| Jack Jansen | 47ec141 | 2002-09-10 12:32:47 +0000 | [diff] [blame] | 4 | #ifndef Py_PYMACTOOLBOX_H | 
 | 5 | #define Py_PYMACTOOLBOX_H | 
| Jack Jansen | 9d8b96c | 2000-07-14 22:16:45 +0000 | [diff] [blame] | 6 | #ifdef __cplusplus | 
 | 7 | 	extern "C" { | 
 | 8 | #endif | 
 | 9 |  | 
| Jack Jansen | 9f66b4a | 2001-05-19 12:32:39 +0000 | [diff] [blame] | 10 | #include <Carbon/Carbon.h> | 
| Ronald Oussoren | 5640ce2 | 2008-06-05 12:58:24 +0000 | [diff] [blame] | 11 |  | 
 | 12 | #ifndef __LP64__ | 
| Jack Jansen | 9f66b4a | 2001-05-19 12:32:39 +0000 | [diff] [blame] | 13 | #include <QuickTime/QuickTime.h> | 
| Ronald Oussoren | 5640ce2 | 2008-06-05 12:58:24 +0000 | [diff] [blame] | 14 | #endif /* !__LP64__ */ | 
| Jack Jansen | 9d8b96c | 2000-07-14 22:16:45 +0000 | [diff] [blame] | 15 |  | 
| Jack Jansen | 94bebc0 | 2001-08-08 13:17:31 +0000 | [diff] [blame] | 16 | /* | 
 | 17 | ** Helper routines for error codes and such. | 
 | 18 | */ | 
| Raymond Hettinger | ec6eb36 | 2004-11-05 07:02:59 +0000 | [diff] [blame] | 19 | char *PyMac_StrError(int);			/* strerror with mac errors */ | 
| Jack Jansen | 3305d24 | 2003-11-20 13:28:19 +0000 | [diff] [blame] | 20 | extern PyObject *PyMac_OSErrException;		/* Exception for OSErr */ | 
 | 21 | PyObject *PyMac_GetOSErrException(void);	/* Initialize & return it */ | 
| Jack Jansen | 94bebc0 | 2001-08-08 13:17:31 +0000 | [diff] [blame] | 22 | PyObject *PyErr_Mac(PyObject *, int);		/* Exception with a mac error */ | 
| Raymond Hettinger | ec6eb36 | 2004-11-05 07:02:59 +0000 | [diff] [blame] | 23 | PyObject *PyMac_Error(OSErr);			/* Uses PyMac_GetOSErrException */ | 
| Ronald Oussoren | 5640ce2 | 2008-06-05 12:58:24 +0000 | [diff] [blame] | 24 | #ifndef __LP64__  | 
| Raymond Hettinger | ec6eb36 | 2004-11-05 07:02:59 +0000 | [diff] [blame] | 25 | extern OSErr PyMac_GetFullPathname(FSSpec *, char *, int); /* convert | 
 | 26 | 							      fsspec->path */ | 
| Ronald Oussoren | 5640ce2 | 2008-06-05 12:58:24 +0000 | [diff] [blame] | 27 | #endif /* __LP64__ */ | 
 | 28 |  | 
| Jack Jansen | 94bebc0 | 2001-08-08 13:17:31 +0000 | [diff] [blame] | 29 | /* | 
 | 30 | ** These conversion routines are defined in mactoolboxglue.c itself. | 
 | 31 | */ | 
 | 32 | int PyMac_GetOSType(PyObject *, OSType *);	/* argument parser for OSType */ | 
 | 33 | PyObject *PyMac_BuildOSType(OSType);		/* Convert OSType to PyObject */ | 
 | 34 |  | 
 | 35 | PyObject *PyMac_BuildNumVersion(NumVersion);/* Convert NumVersion to PyObject */ | 
 | 36 |  | 
 | 37 | int PyMac_GetStr255(PyObject *, Str255);	/* argument parser for Str255 */ | 
 | 38 | PyObject *PyMac_BuildStr255(Str255);		/* Convert Str255 to PyObject */ | 
| Raymond Hettinger | ec6eb36 | 2004-11-05 07:02:59 +0000 | [diff] [blame] | 39 | PyObject *PyMac_BuildOptStr255(Str255);		/* Convert Str255 to PyObject, | 
 | 40 | 						   NULL to None */ | 
| Jack Jansen | 94bebc0 | 2001-08-08 13:17:31 +0000 | [diff] [blame] | 41 |  | 
 | 42 | int PyMac_GetRect(PyObject *, Rect *);		/* argument parser for Rect */ | 
| Raymond Hettinger | ec6eb36 | 2004-11-05 07:02:59 +0000 | [diff] [blame] | 43 | PyObject *PyMac_BuildRect(Rect *);		/* Convert Rect to PyObject */ | 
| Jack Jansen | 94bebc0 | 2001-08-08 13:17:31 +0000 | [diff] [blame] | 44 |  | 
 | 45 | int PyMac_GetPoint(PyObject *, Point *);	/* argument parser for Point */ | 
| Raymond Hettinger | ec6eb36 | 2004-11-05 07:02:59 +0000 | [diff] [blame] | 46 | PyObject *PyMac_BuildPoint(Point);		/* Convert Point to PyObject */ | 
| Jack Jansen | 94bebc0 | 2001-08-08 13:17:31 +0000 | [diff] [blame] | 47 |  | 
| Raymond Hettinger | ec6eb36 | 2004-11-05 07:02:59 +0000 | [diff] [blame] | 48 | int PyMac_GetEventRecord(PyObject *, EventRecord *); /* argument parser for | 
 | 49 | 							EventRecord */ | 
 | 50 | PyObject *PyMac_BuildEventRecord(EventRecord *); /* Convert EventRecord to | 
 | 51 | 						    PyObject */ | 
| Jack Jansen | 94bebc0 | 2001-08-08 13:17:31 +0000 | [diff] [blame] | 52 |  | 
 | 53 | int PyMac_GetFixed(PyObject *, Fixed *);	/* argument parser for Fixed */ | 
| Raymond Hettinger | ec6eb36 | 2004-11-05 07:02:59 +0000 | [diff] [blame] | 54 | PyObject *PyMac_BuildFixed(Fixed);		/* Convert Fixed to PyObject */ | 
| Jack Jansen | 94bebc0 | 2001-08-08 13:17:31 +0000 | [diff] [blame] | 55 | int PyMac_Getwide(PyObject *, wide *);		/* argument parser for wide */ | 
| Raymond Hettinger | ec6eb36 | 2004-11-05 07:02:59 +0000 | [diff] [blame] | 56 | PyObject *PyMac_Buildwide(wide *);		/* Convert wide to PyObject */ | 
| Jack Jansen | 94bebc0 | 2001-08-08 13:17:31 +0000 | [diff] [blame] | 57 |  | 
 | 58 | /* | 
 | 59 | ** The rest of the routines are implemented by extension modules. If they are | 
 | 60 | ** dynamically loaded mactoolboxglue will contain a stub implementation of the | 
 | 61 | ** routine, which imports the module, whereupon the module's init routine will | 
 | 62 | ** communicate the routine pointer back to the stub. | 
 | 63 | ** If USE_TOOLBOX_OBJECT_GLUE is not defined there is no glue code, and the | 
 | 64 | ** extension modules simply declare the routine. This is the case for static | 
 | 65 | ** builds (and could be the case for MacPython CFM builds, because CFM extension | 
 | 66 | ** modules can reference each other without problems). | 
 | 67 | */ | 
 | 68 |  | 
| Jack Jansen | f57a4a2 | 2001-05-17 22:11:44 +0000 | [diff] [blame] | 69 | #ifdef USE_TOOLBOX_OBJECT_GLUE | 
 | 70 | /* | 
 | 71 | ** These macros are used in the module init code. If we use toolbox object glue | 
 | 72 | ** it sets the function pointer to point to the real function. | 
 | 73 | */ | 
| Jack Jansen | 0268ac8 | 2001-05-22 22:34:56 +0000 | [diff] [blame] | 74 | #define PyMac_INIT_TOOLBOX_OBJECT_NEW(object, rtn) { \ | 
| Jack Jansen | f57a4a2 | 2001-05-17 22:11:44 +0000 | [diff] [blame] | 75 | 	extern PyObject *(*PyMacGluePtr_##rtn)(object); \ | 
 | 76 | 	PyMacGluePtr_##rtn = _##rtn; \ | 
 | 77 | } | 
| Jack Jansen | 0268ac8 | 2001-05-22 22:34:56 +0000 | [diff] [blame] | 78 | #define PyMac_INIT_TOOLBOX_OBJECT_CONVERT(object, rtn) { \ | 
 | 79 | 	extern int (*PyMacGluePtr_##rtn)(PyObject *, object *); \ | 
| Jack Jansen | f57a4a2 | 2001-05-17 22:11:44 +0000 | [diff] [blame] | 80 | 	PyMacGluePtr_##rtn = _##rtn; \ | 
 | 81 | } | 
 | 82 | #else | 
 | 83 | /* | 
 | 84 | ** If we don't use toolbox object glue the init macros are empty. Moreover, we define | 
 | 85 | ** _xxx_New to be the same as xxx_New, and the code in mactoolboxglue isn't included. | 
 | 86 | */ | 
| Jack Jansen | 0268ac8 | 2001-05-22 22:34:56 +0000 | [diff] [blame] | 87 | #define PyMac_INIT_TOOLBOX_OBJECT_NEW(object, rtn) | 
 | 88 | #define PyMac_INIT_TOOLBOX_OBJECT_CONVERT(object, rtn) | 
| Jack Jansen | f57a4a2 | 2001-05-17 22:11:44 +0000 | [diff] [blame] | 89 | #endif /* USE_TOOLBOX_OBJECT_GLUE */ | 
 | 90 |  | 
| Jack Jansen | a5bca57 | 2001-08-03 15:39:27 +0000 | [diff] [blame] | 91 | /* macfs exports */ | 
| Ronald Oussoren | 5640ce2 | 2008-06-05 12:58:24 +0000 | [diff] [blame] | 92 | #ifndef __LP64__ | 
| Jack Jansen | fabd00f | 2001-09-01 23:39:58 +0000 | [diff] [blame] | 93 | int PyMac_GetFSSpec(PyObject *, FSSpec *);	/* argument parser for FSSpec */ | 
 | 94 | PyObject *PyMac_BuildFSSpec(FSSpec *);		/* Convert FSSpec to PyObject */ | 
| Ronald Oussoren | 5640ce2 | 2008-06-05 12:58:24 +0000 | [diff] [blame] | 95 | #endif /* !__LP64__ */ | 
| Jack Jansen | fabd00f | 2001-09-01 23:39:58 +0000 | [diff] [blame] | 96 |  | 
 | 97 | int PyMac_GetFSRef(PyObject *, FSRef *);	/* argument parser for FSRef */ | 
 | 98 | PyObject *PyMac_BuildFSRef(FSRef *);		/* Convert FSRef to PyObject */ | 
| Jack Jansen | a5bca57 | 2001-08-03 15:39:27 +0000 | [diff] [blame] | 99 |  | 
| Jack Jansen | 9d8b96c | 2000-07-14 22:16:45 +0000 | [diff] [blame] | 100 | /* AE exports */ | 
 | 101 | extern PyObject *AEDesc_New(AppleEvent *); /* XXXX Why passed by address?? */ | 
| Jack Jansen | b2a5772 | 2003-01-17 23:11:17 +0000 | [diff] [blame] | 102 | extern PyObject *AEDesc_NewBorrowed(AppleEvent *); | 
| Jack Jansen | 9d8b96c | 2000-07-14 22:16:45 +0000 | [diff] [blame] | 103 | extern int AEDesc_Convert(PyObject *, AppleEvent *); | 
 | 104 |  | 
 | 105 | /* Cm exports */ | 
 | 106 | extern PyObject *CmpObj_New(Component); | 
 | 107 | extern int CmpObj_Convert(PyObject *, Component *); | 
 | 108 | extern PyObject *CmpInstObj_New(ComponentInstance); | 
 | 109 | extern int CmpInstObj_Convert(PyObject *, ComponentInstance *); | 
 | 110 |  | 
 | 111 | /* Ctl exports */ | 
| Ronald Oussoren | 5640ce2 | 2008-06-05 12:58:24 +0000 | [diff] [blame] | 112 | #ifndef __LP64__ | 
| Jack Jansen | 9d8b96c | 2000-07-14 22:16:45 +0000 | [diff] [blame] | 113 | extern PyObject *CtlObj_New(ControlHandle); | 
 | 114 | extern int CtlObj_Convert(PyObject *, ControlHandle *); | 
| Ronald Oussoren | 5640ce2 | 2008-06-05 12:58:24 +0000 | [diff] [blame] | 115 | #endif /* !__LP64__ */ | 
| Jack Jansen | 9d8b96c | 2000-07-14 22:16:45 +0000 | [diff] [blame] | 116 |  | 
 | 117 | /* Dlg exports */ | 
| Ronald Oussoren | 5640ce2 | 2008-06-05 12:58:24 +0000 | [diff] [blame] | 118 | #ifndef __LP64__ | 
| Jack Jansen | 9d8b96c | 2000-07-14 22:16:45 +0000 | [diff] [blame] | 119 | extern PyObject *DlgObj_New(DialogPtr); | 
 | 120 | extern int DlgObj_Convert(PyObject *, DialogPtr *); | 
| Jack Jansen | add58f9 | 2001-02-09 15:59:18 +0000 | [diff] [blame] | 121 | extern PyObject *DlgObj_WhichDialog(DialogPtr); | 
| Ronald Oussoren | 5640ce2 | 2008-06-05 12:58:24 +0000 | [diff] [blame] | 122 | #endif /* !__LP64__ */ | 
| Jack Jansen | 9d8b96c | 2000-07-14 22:16:45 +0000 | [diff] [blame] | 123 |  | 
 | 124 | /* Drag exports */ | 
| Ronald Oussoren | 5640ce2 | 2008-06-05 12:58:24 +0000 | [diff] [blame] | 125 | #ifndef __LP64__ | 
| Jack Jansen | 9d8b96c | 2000-07-14 22:16:45 +0000 | [diff] [blame] | 126 | extern PyObject *DragObj_New(DragReference); | 
 | 127 | extern int DragObj_Convert(PyObject *, DragReference *); | 
| Ronald Oussoren | 5640ce2 | 2008-06-05 12:58:24 +0000 | [diff] [blame] | 128 | #endif /* !__LP64__ */ | 
| Jack Jansen | 9d8b96c | 2000-07-14 22:16:45 +0000 | [diff] [blame] | 129 |  | 
 | 130 | /* List exports */ | 
| Ronald Oussoren | 5640ce2 | 2008-06-05 12:58:24 +0000 | [diff] [blame] | 131 | #ifndef __LP64__ | 
| Jack Jansen | 9d8b96c | 2000-07-14 22:16:45 +0000 | [diff] [blame] | 132 | extern PyObject *ListObj_New(ListHandle); | 
 | 133 | extern int ListObj_Convert(PyObject *, ListHandle *); | 
| Ronald Oussoren | 5640ce2 | 2008-06-05 12:58:24 +0000 | [diff] [blame] | 134 | #endif /* !__LP64__ */ | 
| Jack Jansen | 9d8b96c | 2000-07-14 22:16:45 +0000 | [diff] [blame] | 135 |  | 
 | 136 | /* Menu exports */ | 
| Ronald Oussoren | 5640ce2 | 2008-06-05 12:58:24 +0000 | [diff] [blame] | 137 | #ifndef __LP64__ | 
| Jack Jansen | 9d8b96c | 2000-07-14 22:16:45 +0000 | [diff] [blame] | 138 | extern PyObject *MenuObj_New(MenuHandle); | 
 | 139 | extern int MenuObj_Convert(PyObject *, MenuHandle *); | 
| Ronald Oussoren | 5640ce2 | 2008-06-05 12:58:24 +0000 | [diff] [blame] | 140 | #endif /* !__LP64__ */ | 
| Jack Jansen | 9d8b96c | 2000-07-14 22:16:45 +0000 | [diff] [blame] | 141 |  | 
 | 142 | /* Qd exports */ | 
| Ronald Oussoren | 5640ce2 | 2008-06-05 12:58:24 +0000 | [diff] [blame] | 143 | #ifndef __LP64__ | 
| Jack Jansen | 9d8b96c | 2000-07-14 22:16:45 +0000 | [diff] [blame] | 144 | extern PyObject *GrafObj_New(GrafPtr); | 
 | 145 | extern int GrafObj_Convert(PyObject *, GrafPtr *); | 
 | 146 | extern PyObject *BMObj_New(BitMapPtr); | 
 | 147 | extern int BMObj_Convert(PyObject *, BitMapPtr *); | 
 | 148 | extern PyObject *QdRGB_New(RGBColor *); | 
 | 149 | extern int QdRGB_Convert(PyObject *, RGBColor *); | 
| Ronald Oussoren | 5640ce2 | 2008-06-05 12:58:24 +0000 | [diff] [blame] | 150 | #endif /* !__LP64__ */ | 
| Jack Jansen | 9d8b96c | 2000-07-14 22:16:45 +0000 | [diff] [blame] | 151 |  | 
| Jack Jansen | 50bf148 | 2000-12-12 22:13:03 +0000 | [diff] [blame] | 152 | /* Qdoffs exports */ | 
| Ronald Oussoren | 5640ce2 | 2008-06-05 12:58:24 +0000 | [diff] [blame] | 153 | #ifndef __LP64__ | 
| Jack Jansen | 50bf148 | 2000-12-12 22:13:03 +0000 | [diff] [blame] | 154 | extern PyObject *GWorldObj_New(GWorldPtr); | 
 | 155 | extern int GWorldObj_Convert(PyObject *, GWorldPtr *); | 
| Ronald Oussoren | 5640ce2 | 2008-06-05 12:58:24 +0000 | [diff] [blame] | 156 | #endif /* !__LP64__ */ | 
| Jack Jansen | 50bf148 | 2000-12-12 22:13:03 +0000 | [diff] [blame] | 157 |  | 
| Jack Jansen | 9d8b96c | 2000-07-14 22:16:45 +0000 | [diff] [blame] | 158 | /* Qt exports */ | 
| Ronald Oussoren | 5640ce2 | 2008-06-05 12:58:24 +0000 | [diff] [blame] | 159 | #ifndef __LP64__ | 
| Jack Jansen | 9d8b96c | 2000-07-14 22:16:45 +0000 | [diff] [blame] | 160 | extern PyObject *TrackObj_New(Track); | 
 | 161 | extern int TrackObj_Convert(PyObject *, Track *); | 
 | 162 | extern PyObject *MovieObj_New(Movie); | 
 | 163 | extern int MovieObj_Convert(PyObject *, Movie *); | 
 | 164 | extern PyObject *MovieCtlObj_New(MovieController); | 
| Jack Jansen | f57a4a2 | 2001-05-17 22:11:44 +0000 | [diff] [blame] | 165 | extern int MovieCtlObj_Convert(PyObject *, MovieController *); | 
| Jack Jansen | 9d8b96c | 2000-07-14 22:16:45 +0000 | [diff] [blame] | 166 | extern PyObject *TimeBaseObj_New(TimeBase); | 
 | 167 | extern int TimeBaseObj_Convert(PyObject *, TimeBase *); | 
 | 168 | extern PyObject *UserDataObj_New(UserData); | 
 | 169 | extern int UserDataObj_Convert(PyObject *, UserData *); | 
 | 170 | extern PyObject *MediaObj_New(Media); | 
 | 171 | extern int MediaObj_Convert(PyObject *, Media *); | 
| Ronald Oussoren | 5640ce2 | 2008-06-05 12:58:24 +0000 | [diff] [blame] | 172 | #endif /* !__LP64__ */ | 
| Jack Jansen | 9d8b96c | 2000-07-14 22:16:45 +0000 | [diff] [blame] | 173 |  | 
 | 174 | /* Res exports */ | 
 | 175 | extern PyObject *ResObj_New(Handle); | 
 | 176 | extern int ResObj_Convert(PyObject *, Handle *); | 
 | 177 | extern PyObject *OptResObj_New(Handle); | 
 | 178 | extern int OptResObj_Convert(PyObject *, Handle *); | 
 | 179 |  | 
 | 180 | /* TE exports */ | 
| Ronald Oussoren | 5640ce2 | 2008-06-05 12:58:24 +0000 | [diff] [blame] | 181 | #ifndef __LP64__ | 
| Jack Jansen | 9d8b96c | 2000-07-14 22:16:45 +0000 | [diff] [blame] | 182 | extern PyObject *TEObj_New(TEHandle); | 
 | 183 | extern int TEObj_Convert(PyObject *, TEHandle *); | 
| Ronald Oussoren | 5640ce2 | 2008-06-05 12:58:24 +0000 | [diff] [blame] | 184 | #endif /* !__LP64__ */ | 
| Jack Jansen | 9d8b96c | 2000-07-14 22:16:45 +0000 | [diff] [blame] | 185 |  | 
 | 186 | /* Win exports */ | 
| Ronald Oussoren | 5640ce2 | 2008-06-05 12:58:24 +0000 | [diff] [blame] | 187 | #ifndef __LP64__ | 
| Jack Jansen | 9d8b96c | 2000-07-14 22:16:45 +0000 | [diff] [blame] | 188 | extern PyObject *WinObj_New(WindowPtr); | 
 | 189 | extern int WinObj_Convert(PyObject *, WindowPtr *); | 
 | 190 | extern PyObject *WinObj_WhichWindow(WindowPtr); | 
| Ronald Oussoren | 5640ce2 | 2008-06-05 12:58:24 +0000 | [diff] [blame] | 191 | #endif /* !__LP64__ */ | 
| Jack Jansen | 9d8b96c | 2000-07-14 22:16:45 +0000 | [diff] [blame] | 192 |  | 
| Jack Jansen | 537a69f | 2001-11-05 14:39:22 +0000 | [diff] [blame] | 193 | /* CF exports */ | 
| Jack Jansen | 4eb45e7 | 2003-05-27 21:39:58 +0000 | [diff] [blame] | 194 | extern PyObject *CFObj_New(CFTypeRef); | 
 | 195 | extern int CFObj_Convert(PyObject *, CFTypeRef *); | 
| Jack Jansen | 537a69f | 2001-11-05 14:39:22 +0000 | [diff] [blame] | 196 | extern PyObject *CFTypeRefObj_New(CFTypeRef); | 
 | 197 | extern int CFTypeRefObj_Convert(PyObject *, CFTypeRef *); | 
 | 198 | extern PyObject *CFStringRefObj_New(CFStringRef); | 
 | 199 | extern int CFStringRefObj_Convert(PyObject *, CFStringRef *); | 
 | 200 | extern PyObject *CFMutableStringRefObj_New(CFMutableStringRef); | 
 | 201 | extern int CFMutableStringRefObj_Convert(PyObject *, CFMutableStringRef *); | 
 | 202 | extern PyObject *CFArrayRefObj_New(CFArrayRef); | 
 | 203 | extern int CFArrayRefObj_Convert(PyObject *, CFArrayRef *); | 
 | 204 | extern PyObject *CFMutableArrayRefObj_New(CFMutableArrayRef); | 
 | 205 | extern int CFMutableArrayRefObj_Convert(PyObject *, CFMutableArrayRef *); | 
 | 206 | extern PyObject *CFDictionaryRefObj_New(CFDictionaryRef); | 
 | 207 | extern int CFDictionaryRefObj_Convert(PyObject *, CFDictionaryRef *); | 
 | 208 | extern PyObject *CFMutableDictionaryRefObj_New(CFMutableDictionaryRef); | 
 | 209 | extern int CFMutableDictionaryRefObj_Convert(PyObject *, CFMutableDictionaryRef *); | 
 | 210 | extern PyObject *CFURLRefObj_New(CFURLRef); | 
 | 211 | extern int CFURLRefObj_Convert(PyObject *, CFURLRef *); | 
 | 212 | extern int OptionalCFURLRefObj_Convert(PyObject *, CFURLRef *); | 
| Jack Jansen | 9d8b96c | 2000-07-14 22:16:45 +0000 | [diff] [blame] | 213 |  | 
 | 214 | #ifdef __cplusplus | 
 | 215 | 	} | 
 | 216 | #endif | 
| Jack Jansen | 47ec141 | 2002-09-10 12:32:47 +0000 | [diff] [blame] | 217 | #endif |