/*
 * $Source: $
 * $Revision: $
 * $Date: $
 * $State: $
 * $Author: $
 *
 *
 * $Log: $
 *
 */

/************************************************************

Created: Friday, October 20, 1989 at 5:14 AM
	GestaltEqu.h
	C Interface to the Macintosh Libraries


	Copyright Apple Computer, Inc.	1989-90
	All rights reserved

************************************************************/


#ifndef __GESTALTEQU__
#define __GESTALTEQU__

#ifndef REZ

#ifndef __TYPES__
#include <Types.h>
#endif

#ifdef __cplusplus
extern "C" {
#endif

pascal OSErr Gestalt( OSType selector, long *response );
pascal OSErr NewGestalt( OSType selector, ProcPtr gestaltFunction );
pascal OSErr ReplaceGestalt( OSType selector, ProcPtr gestaltFunction,
	ProcPtr *oldGestaltFunction);


#ifdef __cplusplus
}
#endif

#endif	/*REZ*/

/************************
 *	Gestalt error codes
 ************************/
#define gestaltUnknownErr			-5550			/* value returned if Gestalt doesn't know the answer */
#define gestaltUndefSelectorErr 	-5551			/* undefined selector was passed to Gestalt */
#define gestaltDupSelectorErr		-5552			/* tried to add an entry that already existed */
#define gestaltLocationErr			-5553			/* gestalt function ptr wasn't in sysheap */

/**************************
 *	Environment Selectors
 **************************/
#define gestaltVersion				'vers'			/* gestalt version */

#define gestaltAddressingModeAttr	'addr'			/* addressing mode attributes */
#define gestalt32BitAddressing		0				/* using 32-bit addressing mode */
#define gestalt32BitSysZone 		1				/* 32-bit compatible system zone */
#define gestalt32BitCapable 		2				/* Machine is 32-bit capable */

#define gestaltAliasMgrAttr 		'alis'			/* Alias Mgr Attributes */
#define gestaltAliasMgrPresent		0				/* True if the Alias Mgr is present */

#define gestaltAppleTalkVersion 	'atlk'			/* appletalk version */

#define gestaltAUXVersion			'a/ux'			/* a/ux version, if present */

#define gestaltConnMgrAttr			'conn'			/* connection mgr attributes	*/
#define gestaltConnMgrPresent		0
#define gestaltConnMgrErrorString	1
#define gestaltConnMgrMultiAsyncIO	2				/* Extended IO model? 	*/
#define gestaltConnMgrCMSearchFix	3				/* Fix to CMAddSearch? 	*/

#define gestaltCRMAttr				'crm '			/* comm resource mgr attributes */
#define gestaltCRMPresent			0

#define	gestaltCTBVersion			'ctbv'			/* CommToolbox version */

#define gestaltDBAccessMgrAttr		'dbac'			/* Database Access Mgr attributes */
#define gestaltDBAccessMgrPresent	0				/* True if Database Access Mgr present */

#define gestaltDITLExtAttr			'ditl'    		/* AppenDITL, etc. calls from CTB */
#define gestaltDITLExtPresent		0     			/* True if calls are present */

#define gestaltEditionMgrAttr		'edtn'			/* Edition Mgr attributes */
#define gestaltEditionMgrPresent	0				/* True if Edition Mgr present */

#define gestaltAppleEventsAttr		'evnt'			/* Apple Events attributes */
#define gestaltAppleEventsPresent	0				/* True if Apple Events present */

#define gestaltFolderMgrAttr		'fold'			/* Folder Mgr attributes */
#define gestaltFolderMgrPresent 	0				/* True if Folder Mgr present */

#define gestaltFontMgrAttr			'font'			/* Font Mgr attributes */
#define gestaltOutlineFonts 		0				/* True if Outline Fonts supported */

#define gestaltFPUType				'fpu '			/* fpu type */
#define gestaltNoFPU				0				/* no FPU */
#define gestalt68881				1				/* 68881 FPU */
#define gestalt68882				2				/* 68882 FPU */

#define gestaltFXfrMgrAttr			'fxfr'			/* file transfer manager attributes */
#define gestaltFXfrMgrPresent		0
#define gestaltFXfrMgrErrorString	1

#define gestaltHardwareAttr 		'hdwr'			/* hardware attributes */
#define gestaltHasVIA1				0				/* VIA1 exists */
#define gestaltHasVIA2				1				/* VIA2 exists */
#define gestaltHasASC				3				/* Apple Sound Chip exists */
#define gestaltHasSCC				4				/* SCC exists */
#define	gestaltHasSCSI				7				/* SCSI exists */

#define gestaltHelpMgrAttr			'help'			/* Help Mgr Attributes */
#define gestaltHelpMgrPresent		0				/* true if help mgr is present */

#define gestaltKeyboardType 		'kbd '			/* keyboard type */
#define gestaltMacKbd				1
#define gestaltMacAndPad			2
#define gestaltMacPlusKbd			3
#define gestaltExtADBKbd			4
#define gestaltStdADBKbd			5
#define gestaltPrtblADBKbd			6
#define gestaltPrtblISOKbd			7
#define gestaltStdISOADBKbd 		8
#define gestaltExtISOADBKbd 		9
#define	gestaltElmerKbd				10
#define	gestaltElmerISOKbd			11

#define gestaltLowMemorySize		'lmem'			/* size of low memory area */

#define gestaltLogicalRAMSize		'lram'			/* logical ram size */

#define	gestaltMiscAttr				'misc'			/* miscellaneous attributes */
#define	gestaltScrollingThrottle	0				/* true if scrolling throttle on */
#define	gestaltSquareMenuBar		2				/* true if menu bar is square */

#define gestaltMMUType				'mmu '			/* mmu type */
#define gestaltNoMMU				0				/* no MMU */
#define gestaltAMU					1				/* address management unit */
#define gestalt68851				2				/* 68851 PMMU */
#define gestalt68030MMU 			3				/* 68030 built-in MMU */

#define gestaltStdNBPAttr			'nlup'			/* standard nbp attributes */
#define gestaltStdNBPPresent		0

#define	gestaltNotificationMgrAttr	'nmgr'   		/* notification manager attributes */
#define	gestaltNotificationPresent	0    			/* notification manager exists */

#define gestaltOSAttr				'os  '			/* o/s attributes */
#define gestaltSysZoneGrowable		0				/* system heap is growable */
#define gestaltLaunchCanReturn		1				/* can return from launch */
#define gestaltLaunchFullFileSpec	2				/* can launch from full file spec */
#define gestaltLaunchControl		3				/* launch control support available */
#define gestaltTempMemSupport		4				/* temp memory support */
#define gestaltRealTempMemory		5				/* temp memory handles are real */
#define gestaltTempMemTracked		6				/* temporary memory handles are tracked */
#define gestaltIPCSupport			7				/* IPC support is present */
#define gestaltSysDebuggerSupport	8				/* system debugger support is present */

#define gestaltLogicalPageSize		'pgsz'			/* logical page size */

#define gestaltPowerMgrAttr 		'powr'			/* power manager attributes */
#define gestaltPMgrExists			0
#define gestaltPMgrCPUIdle			1
#define gestaltPMgrSCC				2
#define gestaltPMgrSound			3

#define	gestaltPPCToolboxAttr		'ppc '    		/* PPC toolbox attributes */

/*
 * PPC will return the combination of following bit fields.
 * e.g. gestaltPPCSupportsRealTime +gestaltPPCSupportsIncomming + gestaltPPCSupportsOutGoing
 * indicates PPC is cuurently is only supports real time delivery
 * and both incoming and outgoing network sessions are allowed.
 * By default local real time delivery is supported as long as PPCInit has been called.
 */
#define	gestaltPPCToolboxPresent	          0X0000     	/* PPC Toolbox is present  Requires PPCInit to be called */
#define	gestaltPPCSupportsRealTime	          0X1000		/* PPC Supports real-time delivery */
#define	gestaltPPCSupportsStoreAndForward	  0X2000		/* PPC Store and Forward  delivery */
#define	gestaltPPCSupportsDontCare			  0x4000     	/* PPC Supports  Specification of Don't care */
#define	gestaltPPCSupportsIncomming			  0x0001     	/* PPC will deny incomming network requests */
#define gestaltPPCSupportsOutGoing			  0x0002     	/* PPC will deny outgoing network requests */

#define gestaltProcessorType		'proc'			/* processor type */
#define gestalt68000				1
#define gestalt68010				2
#define gestalt68020				3
#define gestalt68030				4

#define gestaltParityAttr			'prty'			/* parity attributes */
#define gestaltHasParityCapability	0				/* has ability to check parity */
#define gestaltParityEnabled		1				/* parity checking enabled */

#define gestaltQuickdrawVersion 	'qd  '			/* quickdraw version */
#define gestaltOriginalQD			0x000			/* original 1-bit QD			<3.2> */
#define gestalt8BitQD				0x100			/* 8-bit color QD				<3.2> */
#define gestalt32BitQD				0x200			/* 32-bit color QD				<3.2> */

#define gestaltPhysicalRAMSize		'ram '			/* physical RAM size */

#define gestaltPopupAttr			'pop!'			/* popup cdef attributes */
#define gestaltPopupPresent			0

#define gestaltResourceMgrAttr		'rsrc'			/* Resource Mgr attributes */
#define gestaltPartialRsrcs 		0				/* True if partial resources exist */

#define gestaltScriptMgrVersion 	'scri'			/* Script Manager version number	<08/05/89 pke> */
#define gestaltScriptCount			'scr#'			/* number of active script systems	<08/05/89 pke> */

#define gestaltSoundAttr			'snd '			/* sound attributes */
#define gestaltStereoCapability 	0				/* sound hardware has stereo capability */
#define gestaltStereoMixing 		1				/* stereo mixing on external speaker */
#define gestaltSoundIOMgrPresent 	3				/* The Sound I/O Manager is present   */
#define gestaltSoundInputPresent 	4				/* Sound Input hardware is present   */

#define	gestaltStandardFileAttr		'stdf'    		/* Standard File attributes */
#define	gestaltStandardFile58		0     			/* True if selectors 5-8 (StandardPutFile-CustomGetFile) are supported */

#define gestaltTextEditVersion		'te  '			/* TextEdit version number			<08/05/89 pke> */
#define gestaltTE1					1				/* TextEdit in MacIIci ROM <8Aug89smb> */
#define gestaltTE2					2				/* TextEdit with 6.0.4 Script Systems on MacIIci (Script bug fixes for MacIIci) <8Aug89smb> */
#define gestaltTE3					3				/* TextEdit with 6.0.4 Script Systems all but MacIIci <8Aug89smb> */

#define gestaltTE4					4				/* TextEdit in Big Bang <8Aug89smb> */

#define gestaltTermMgrAttr			'term'			/* terminal mgr attributes	*/
#define gestaltTermMgrPresent		0
#define gestaltTermMgrErrorString	1

#define gestaltTimeMgrVersion		'tmgr'			/* time mgr version */
#define gestaltStandardTimeMgr		1				/* standard time mgr is present */
#define gestaltRevisedTimeMgr		2				/* revised time mgr is present */
#define gestaltExtendedTimeMgr		3				/* extended time mgr is present */

#define gestaltVMAttr				'vm  '			/* virtual memory attributes */
#define gestaltVMPresent			0				/* true if virtual memory is present */

/*************************
 *	Info-only selectors
 ************************/
#define gestaltMachineType			'mach'			/* machine type */
#define gestaltClassic				1
#define gestaltMacXL				2
#define gestaltMac512KE 			3
#define gestaltMacPlus				4
#define gestaltMacSE				5
#define gestaltMacII				6
#define gestaltMacIIx				7
#define gestaltMacIIcx				8
#define gestaltMacSE030 			9
#define gestaltPortable 			10
#define gestaltMacIIci				11
#define	gestaltMacIIfx				13

#define gestaltMachineIcon			'micn'			/* machine icon */

#define gestaltROMSize				'rom '			/* rom size */
#define gestaltROMVersion			'romv'			/* rom version */
#define gestaltSystemVersion		'sysv'			/* system version*/

#endif	/*GESTALTEQU*/

