| 
									
										
										
										
											1995-01-22 18:36:13 +00:00
										 |  |  | /***********************************************************
 | 
					
						
							| 
									
										
										
										
											1997-01-31 16:15:11 +00:00
										 |  |  | Copyright 1991-1997 by Stichting Mathematisch Centrum, Amsterdam, | 
					
						
							| 
									
										
										
										
											1995-01-22 18:36:13 +00:00
										 |  |  | The Netherlands. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |                         All Rights Reserved | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Permission to use, copy, modify, and distribute this software and its  | 
					
						
							|  |  |  | documentation for any purpose and without fee is hereby granted,  | 
					
						
							|  |  |  | provided that the above copyright notice appear in all copies and that | 
					
						
							|  |  |  | both that copyright notice and this permission notice appear in  | 
					
						
							|  |  |  | supporting documentation, and that the names of Stichting Mathematisch | 
					
						
							|  |  |  | Centrum or CWI not be used in advertising or publicity pertaining to | 
					
						
							|  |  |  | distribution of the software without specific, written prior permission. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | STICHTING MATHEMATISCH CENTRUM DISCLAIMS ALL WARRANTIES WITH REGARD TO | 
					
						
							|  |  |  | THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND | 
					
						
							|  |  |  | FITNESS, IN NO EVENT SHALL STICHTING MATHEMATISCH CENTRUM BE LIABLE | 
					
						
							|  |  |  | FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES | 
					
						
							|  |  |  | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN | 
					
						
							|  |  |  | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT | 
					
						
							|  |  |  | OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ******************************************************************/ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1995-02-14 01:27:24 +00:00
										 |  |  | #ifndef SystemSevenOrLater
 | 
					
						
							|  |  |  | #define SystemSevenOrLater 1
 | 
					
						
							|  |  |  | #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1995-01-18 13:53:49 +00:00
										 |  |  | #include <Types.h>
 | 
					
						
							| 
									
										
										
										
											1995-01-22 18:36:13 +00:00
										 |  |  | #include <Files.h>
 | 
					
						
							| 
									
										
										
										
											1995-01-25 23:06:44 +00:00
										 |  |  | #include <Events.h>
 | 
					
						
							| 
									
										
										
										
											1995-08-14 12:36:37 +00:00
										 |  |  | #include <StandardFile.h>
 | 
					
						
							| 
									
										
										
										
											1995-01-18 13:53:49 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1999-09-30 11:14:49 +00:00
										 |  |  | #ifdef __cplusplus
 | 
					
						
							|  |  |  | 	extern "C" { | 
					
						
							|  |  |  | #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1997-06-03 15:27:31 +00:00
										 |  |  | /* Scheduler parameters */ | 
					
						
							|  |  |  | typedef struct { | 
					
						
							|  |  |  | 	int		check_interrupt;	/* if true check for command-dot */ | 
					
						
							|  |  |  | 	int		process_events;		/* if nonzero enable evt processing, this mask */ | 
					
						
							|  |  |  | 	int		besocial;		/* Be social, give up CPU now and again */ | 
					
						
							|  |  |  | 	double		check_interval;		/* how often to check */ | 
					
						
							|  |  |  | 	double		bg_yield;		/* yield at most so long when in background */ | 
					
						
							|  |  |  | } PyMacSchedParams; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1997-05-23 15:33:20 +00:00
										 |  |  | #ifdef GENERATINGCFM				/* Defined to 0 or 1 in Universal headers */
 | 
					
						
							| 
									
										
										
										
											1995-02-14 01:27:24 +00:00
										 |  |  | #define HAVE_UNIVERSAL_HEADERS
 | 
					
						
							|  |  |  | #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1995-06-27 13:18:14 +00:00
										 |  |  | #ifdef SYMANTEC__CFM68K__
 | 
					
						
							| 
									
										
										
										
											1995-02-18 14:59:48 +00:00
										 |  |  | #pragma lib_export on
 | 
					
						
							|  |  |  | #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2000-04-07 09:10:49 +00:00
										 |  |  | #ifdef USE_GUSI1
 | 
					
						
							| 
									
										
										
										
											1997-05-23 15:33:20 +00:00
										 |  |  | void PyMac_FixGUSIcd Py_PROTO((void));		/* Workaround for GUSI chdir() call */ | 
					
						
							| 
									
										
										
										
											2000-04-07 09:10:49 +00:00
										 |  |  | extern void PyMac_SetGUSISpin(void);		/* Install our private GUSI spin routine */ | 
					
						
							| 
									
										
										
										
											1996-03-06 16:21:34 +00:00
										 |  |  | #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1995-02-18 14:59:48 +00:00
										 |  |  | char *PyMac_StrError(int);			/* strerror with mac errors */ | 
					
						
							| 
									
										
										
										
											1998-07-13 13:39:34 +00:00
										 |  |  | unsigned char *Pstring(char *str);		/* Convert c-string to pascal-string in static buffer */ | 
					
						
							| 
									
										
										
										
											1995-01-22 18:36:13 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1996-09-04 15:24:59 +00:00
										 |  |  | #ifdef USE_GUSI
 | 
					
						
							|  |  |  | extern int PyMac_ConsoleIsDead;			/* True when exiting */ | 
					
						
							| 
									
										
										
										
											1997-05-23 15:33:20 +00:00
										 |  |  | extern void PyMac_StopGUSISpin(void);		/* Stop eventprocessing during exit() */ | 
					
						
							| 
									
										
										
										
											1996-09-04 15:24:59 +00:00
										 |  |  | #endif
 | 
					
						
							| 
									
										
										
										
											1995-01-27 14:43:25 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1996-09-06 22:18:40 +00:00
										 |  |  | extern short PyMac_AppRefNum;			/* RefNum of application rsrcfork (from macmain.c) */ | 
					
						
							| 
									
										
										
										
											1997-05-23 15:33:20 +00:00
										 |  |  | extern FSSpec PyMac_ApplicationFSSpec;		/* Application location (from macargv.c) */ | 
					
						
							|  |  |  | extern char PyMac_ApplicationPath[];		/* Application location (from macargv.c) */ | 
					
						
							| 
									
										
										
										
											1996-11-09 18:48:06 +00:00
										 |  |  | extern OSErr PyMac_init_application_location Py_PROTO((void));	/* Init the above */ | 
					
						
							|  |  |  | extern OSErr PyMac_GetFullPath Py_PROTO((FSSpec *, char *)); /* convert fsspec->path (macargv.c) */ | 
					
						
							|  |  |  | extern int PyMac_GetArgv Py_PROTO((char ***, int));	/* Get argc, argv (from macargv.c) */ | 
					
						
							| 
									
										
										
										
											1999-12-07 23:08:10 +00:00
										 |  |  | extern int PyMac_AppearanceCompliant;	/* True if in appearance support mode */ | 
					
						
							| 
									
										
										
										
											1996-09-06 22:18:40 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1995-01-25 23:06:44 +00:00
										 |  |  | extern PyObject *PyMac_OSErrException;		/* Exception for OSErr */ | 
					
						
							|  |  |  | PyObject *PyMac_GetOSErrException(void);	/* Initialize & return it */ | 
					
						
							| 
									
										
										
										
											1995-01-22 18:36:13 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1997-06-03 15:27:31 +00:00
										 |  |  | void PyMac_GetSchedParams Py_PROTO((PyMacSchedParams *));	/* Get schedulers params */ | 
					
						
							|  |  |  | void PyMac_SetSchedParams Py_PROTO((PyMacSchedParams *));	/* Set schedulers params */ | 
					
						
							| 
									
										
										
										
											1995-01-25 23:06:44 +00:00
										 |  |  | PyObject *PyErr_Mac(PyObject *, int);		/* Exception with a mac error */ | 
					
						
							| 
									
										
										
										
											1995-02-02 14:25:56 +00:00
										 |  |  | PyObject *PyMac_Error(OSErr);			/* Uses PyMac_GetOSErrException */ | 
					
						
							| 
									
										
										
										
											2000-04-07 09:10:49 +00:00
										 |  |  | int PyMac_DoYield Py_PROTO((int, int));	/* Yield cpu. First arg is maxtime, second ok to call python */ | 
					
						
							| 
									
										
										
										
											1997-06-20 16:25:00 +00:00
										 |  |  | int PyMac_HandleEvent Py_PROTO((EventRecord *));	/* Handle one event, possibly in Python */ | 
					
						
							|  |  |  | void PyMac_HandleEventIntern Py_PROTO((EventRecord *)); /* Handle one event internal only */ | 
					
						
							|  |  |  | int PyMac_SetEventHandler Py_PROTO((PyObject *));	/* set python-coded event handler */ | 
					
						
							| 
									
										
										
										
											1995-01-22 18:36:13 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1996-09-06 00:30:45 +00:00
										 |  |  | void PyMac_InitMenuBar(void);			/* Setup menu bar as we want it */ | 
					
						
							| 
									
										
										
										
											1997-06-12 10:51:39 +00:00
										 |  |  | void PyMac_RestoreMenuBar(void);		/* Restore menu bar for ease of exiting */ | 
					
						
							| 
									
										
										
										
											1996-09-06 00:30:45 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1997-06-12 15:29:46 +00:00
										 |  |  | int PyMac_FindResourceModule(PyStringObject *, char *, char *); /* Test for 'PYC ' resource in a file */ | 
					
						
							| 
									
										
										
										
											1995-02-15 22:58:33 +00:00
										 |  |  | PyObject * PyMac_LoadResourceModule(char *, char *); /* Load 'PYC ' resource from file */ | 
					
						
							| 
									
										
										
										
											1998-07-13 13:39:34 +00:00
										 |  |  | int PyMac_FindCodeResourceModule(PyStringObject *, char *, char *); /* Test for 'PYD ' resource in a file */ | 
					
						
							|  |  |  | PyObject * PyMac_LoadCodeResourceModule(char *, char *); /* Load 'PYD ' resource from file */ | 
					
						
							| 
									
										
										
										
											1997-06-12 15:29:46 +00:00
										 |  |  | struct filedescr *PyMac_FindModuleExtension(char *, int *, char *); /* Look for module in single folder */ | 
					
						
							| 
									
										
										
										
											1995-02-15 22:58:33 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1995-08-14 12:36:37 +00:00
										 |  |  | int PyMac_GetDirectory(FSSpec *dirfss, char *prompt);		/* Ask user for a directory */ | 
					
						
							|  |  |  | void PyMac_PromptGetFile(short numTypes, ConstSFTypeListPtr typeList,  | 
					
						
							|  |  |  | 	StandardFileReply *reply, char *prompt);	/* Ask user for file, with prompt */ | 
					
						
							| 
									
										
										
										
											1995-02-20 15:56:10 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1995-01-25 23:06:44 +00:00
										 |  |  | int PyMac_GetOSType(PyObject *, OSType *);	/* argument parser for OSType */ | 
					
						
							|  |  |  | PyObject *PyMac_BuildOSType(OSType);		/* Convert OSType to PyObject */ | 
					
						
							| 
									
										
										
										
											1995-01-22 18:36:13 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1996-08-02 11:21:03 +00:00
										 |  |  | PyObject *PyMac_BuildNumVersion(NumVersion);	/* Convert NumVersion to PyObject */ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1995-01-25 23:06:44 +00:00
										 |  |  | int PyMac_GetStr255(PyObject *, Str255);	/* argument parser for Str255 */ | 
					
						
							|  |  |  | PyObject *PyMac_BuildStr255(Str255);		/* Convert Str255 to PyObject */ | 
					
						
							| 
									
										
										
										
											1999-12-17 17:15:50 +00:00
										 |  |  | PyObject *PyMac_BuildOptStr255(Str255);		/* Convert Str255 to PyObject, NULL to None */ | 
					
						
							| 
									
										
										
										
											1995-01-25 23:06:44 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | int PyMac_GetFSSpec(PyObject *, FSSpec *);	/* argument parser for FSSpec */ | 
					
						
							|  |  |  | PyObject *PyMac_BuildFSSpec(FSSpec *);		/* Convert FSSpec to PyObject */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | int PyMac_GetRect(PyObject *, Rect *);		/* argument parser for Rect */ | 
					
						
							|  |  |  | PyObject *PyMac_BuildRect(Rect *);		/* Convert Rect to PyObject */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | int PyMac_GetPoint(PyObject *, Point *);	/* argument parser for Point */ | 
					
						
							|  |  |  | PyObject *PyMac_BuildPoint(Point);		/* Convert Point to PyObject */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | int PyMac_GetEventRecord(PyObject *, EventRecord *); /* argument parser for EventRecord */ | 
					
						
							|  |  |  | PyObject *PyMac_BuildEventRecord(EventRecord *); /* Convert EventRecord to PyObject */ | 
					
						
							| 
									
										
										
										
											1995-02-18 14:59:48 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1995-11-15 15:19:29 +00:00
										 |  |  | int PyMac_GetFixed(PyObject *, Fixed *);	/* argument parser for Fixed */ | 
					
						
							|  |  |  | PyObject *PyMac_BuildFixed(Fixed);			/* Convert Fixed to PyObject */ | 
					
						
							| 
									
										
										
										
											1998-04-21 15:20:50 +00:00
										 |  |  | int PyMac_Getwide(PyObject *, wide *);	/* argument parser for wide */ | 
					
						
							| 
									
										
										
										
											1998-04-23 13:20:17 +00:00
										 |  |  | PyObject *PyMac_Buildwide(wide *);			/* Convert wide to PyObject */ | 
					
						
							| 
									
										
										
										
											1995-02-18 14:59:48 +00:00
										 |  |  | void PyMac_InitApplet(void);			/* Initialize and run an Applet */ | 
					
						
							| 
									
										
										
										
											1997-01-15 15:49:08 +00:00
										 |  |  | void PyMac_Initialize(void);			/* Initialize function for embedding Python */ | 
					
						
							| 
									
										
										
										
											1998-04-15 14:12:45 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2000-04-21 23:53:37 +00:00
										 |  |  | #ifdef USE_GUSI2
 | 
					
						
							|  |  |  | short PyMac_OpenPrefFile(void);			/* From macgetpath.c, open and return preference file */ | 
					
						
							|  |  |  | #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-04-15 14:12:45 +00:00
										 |  |  | /* From macfiletype.c: */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | long getfiletype(char *);			/* Get file type */ | 
					
						
							|  |  |  | int setfiletype(char *, long, long);		/* Set file creator and type */ | 
					
						
							| 
									
										
										
										
											1999-09-30 11:14:49 +00:00
										 |  |  | #ifdef __cplusplus
 | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | #endif
 |