Gestalt Selectors List

Apple System Software (C-D)

This chapter lists selector codes of which the meaning is documented and the first character of the selector code is in the C-D range.

cash (System [???]) &S03
     gestaltRAMCacheSize
     Returns byte-size of physical RAM allocated to Disk Cache.
     0 = Disk Cache Off

     #define gestaltRAMCacheSize 'cash' /* RAM cache size */

     NOTE:
     This selector is listed in THINK Reference 1.0 but it is unknown which
     System Software version should install it.

cfrg (System [7.1.2? on PowerMac])
     (CFM68K ext [1.0a1], part of OpenDoc)
     gestaltCFMAttr
     Returns information about the Code Fragment Manager.

     enum {
     #define gestaltCFMAttr 'cfrg' /* Code Fragment Mgr attributes */
     gestaltCFMPresent       = 0,       /* Code Fragment Manager present */
     gestaltCFMPresentMask   = 0x0001,
     gestaltCFM99Present     = 2,       /* The CFM-99 features are */
     gestaltCFM99PresentMask = 0x0004}; /* present. */

cmnu (Contextual Menu Extension? ext [1.0?] part of Mac OS 8.0)
     gestaltContextualMenuAttr
     Returns information about the Contextual Menu capabilities?

     enum {
     #define gestaltContextualMenuAttr 'cmnu'
     gestaltContextualMenuPresent       = 0, /* also seen next constant: */
     gestaltContextualMenuUnusedBit     = 0,
     gestaltContextualMenuTrapAvailable = 1};

cmta (ColorSync ext [1.0.4?]
     gestaltColorMatchingAttr &AD09
     Returns information about the ColorSync Utilities?

     enum {
     #define gestaltColorMatchingAttr 'cmta' /* Color Matching Attr. */
     gestaltHighLevelMatching      = 0,  /* BeginMatching &
                                             DrawMatchedPicture present */
     gestaltColorMatchingLibLoaded = 1}; /* Native PowerPC shared library
                                             is loaded. a.k.a.
                                             gestaltSharedLibLoaded? */

cmtc (ColorSync ext [1.0?])
     gestaltColorMatchingVersion
     Returns the version of the Color Matching software as BCD.

     enum {
     #define gestaltColorMatchingVersion 'cmtc' /* Color Matching
                                                    version */
     gestaltColorSync10  = 0x0100,  /* &AD09 */
     gestaltColorSync11  = 0x0110,  /* &AD09 */
     gestaltColorSync104 = 0x0104,  /* &AD09 */
     gestaltColorSync105 = 0x0105,  /* &AD09 */
     gestaltColorSync20  = 0x0200,  /* &AD17/AD21 */
     gestaltColorSync21  = 0x0210,
     gestaltColorSync211 = 0x0211,
     gestaltColorSync212 = 0x0212,
     gestaltColorSync213 = 0x0213,
     gestaltColorSync25  = 0x0250,
     gestaltColorSync251 = 0x0251,  /* observed */
     gestaltColorSync26  = 0x0260,
     gestaltColorSync261 = 0x0261,
     gestaltColorSync30  = 0x0300};

     NOTE:
     ColorSync 1.0 returns gestaltColorSync10 for the version of the
     utilities that work with System 6.0.7. And gestaltColorSync11 is
     returned by the version that works with System 7.0 and later.
     From version 1.0.4 up the correct version is returned. &AD17

cntl (System? [8.5?])
     gestaltControlMgrAttr
     Returns information about the Allegro Control Manager 2.0.

     enum {
     #define gestaltControlMgrAttr 'cntl'
     gestaltControlMgrPresent = (1L << 0)}; /* version 2.0 present */

conn (System [7.0])
     gestaltConnMgrAttr
     Returns information about the Connection Manager.

     enum {
     #define gestaltConnMgrAttr 'conn' /* Conn. Mgr attributes */
     gestaltConnMgrPresent      = 0,  /* Connection Mgr is present */
     gestaltConnMgrCMSearchFix  = 1,  /* fix for CMAddSearch present */
     gestaltConnMgrErrorString  = 2,  /* has CMGetErrorString &AS02 */
     gestaltConnMgrMultiAsyncIO = 3}; /* CMNewsIOPB,CMDisposeIOPB,
                                          CMPBRead,CMPBWrite,CMPBIOKill
                                          &AS02 */

     NOTE:
     Not installed by Communications Toolbox for System 6.

cpkr (Color Picker ext [2.0?])
     gestaltColorPicker
     gestaltColorPickerVersion
     Returns Color Picker version as BCD.

     /* ColorPicker Mgr version */
     #define gestaltColorPicker 'cpkr'
     #define gestaltColorPickerVersion 'cpkr'

     NOTE:
     Version 2.0a4 returns as response 0x0001, but version 2.0a5 and
     later (including 2.0f) return 0x0100. (Rene Ros)

cpnt (System [7.1])
     (Color Picker Extension ext [2.0])
     (Color Sync ext [1.0.4?])
     (Macintosh Easy Open cp [1.0?-1.1.2?])
     (Mac OS Easy Open cp [1.1.3])
     (QuickTime ext [1.0])
     (Speech Manager ext [1.1.1, not 1.2?])
     gestaltComponentMgr
     Returns Component Manager version as INTEGER.

     #define gestaltComponentMgr 'cpnt' /* Component Mgr version &AS01 */

cpuf (System [8.0])
     gestaltNativeCPUfamily &AD35
     Return a value that indicates the CPU family of the current PowerPC
     processor.
     This selector returns the same values as the gestaltNativeCPUtype
     ('cput'), but it does not distinguish between variants within the same
     processor family. It allows developers to test for the presence of
     particular family-specific PowerPC processor features without having
     to know all of the members of a CPU family.

     #define gestaltNativeCPUfamily 'cpuf' /* Native CPU family */

     ======================================================================
     Returned values for the CPU type and family for the PowerPC CPUs
     ======================================================================
     PowerPC        gestaltNativeCPUfamily   gestaltNativeCPUtype
     Processor      (since Mac OS 8)         (since System 7.5)
     ----------------------------------------------------------------------
       601          gestaltCPU601            gestaltCPU601
       603          gestaltCPU603            gestaltCPU603
       603e         gestaltCPU603            gestaltCPU603e
       603ev        gestaltCPU603            gestaltCPU603ev
       604          gestaltCPU604            gestaltCPU604
       604e         gestaltCPU604            gestaltCPU604e
       750          gestaltCPU750?           gestaltCPU750?
     ----------------------------------------------------------------------

cput (System [7.1.2?]) &AS04/AS05
     gestaltNativeCPUtype
     Returns a value that indicates the type of native processor that is
     currently running.

     enum {
     #define gestaltNativeCPUtype 'cput' /* Native CPU type */
     /* Motorola Architecture */
     gestaltCPU68000      = 0,
     gestaltCPU68010      = 1,
     gestaltCPU68020      = 2,
     gestaltCPU68030      = 3,
     gestaltCPU68040      = 4,

     /* PowerPC Architecture */
     gestaltCPU601        = 0x101,
     gestaltCPU603        = 0x103,
     gestaltCPU604        = 0x104,
     gestaltCPU603e       = 0x106, /* 3.3 Volt 603 with 16K caches &AS22 */
     gestaltCPU603ev      = 0x107, /* 2.5 Volt 603e, good to 300 Mhz. See
                                      also note below */
     gestaltCPU750        = 0x108, /* G3, codename Arthur, also 740 */
     gestaltCPU604e       = 0x109, /* 2.5 Volt 604 with 32K caches */
     gestaltCPU604ev      = 0x10A, /* codename Mach5, 250 Mhz and up */
     gestaltCPUMax        = 0x10C, /* Max , MPC7400/ Altivec;
                                      observed G4 in G3 Mac */
     gestaltX704?         = 0x154, /* X704 from Exponential Technology
                                      Inc. */
     gestaltX704_2?       = 0x160, /* ??? */

     /* PowerPC Architecture (Unreleased & Rumoured) */
     gestaltHelmwind?     = ???,   /* 200, 250, 300 MHz */
     gestaltCPU614?       = ???,
     gestaltCPU615?       = ???,
     gestaltCPU620?       = ???,
     gestaltCPU630?       = ???,

     gestaltCPU603q?      = ???,   /* Quantum Effect Design Inc. */

     /* Intel Architecture */
     /* x86 CPUs all start with 'i' in the high nybble */
     gestaltCPU486        = FOURCHARCODE('i486'),
     gestaltCPUPentium    = FOURCHARCODE('i586'),
     gestaltCPUPentiumPro = FOURCHARCODE('i5pr'),
     gestaltCPUPentiumII  = FOURCHARCODE('i5ii'),
     gestaltCPUX86        = FOURCHARCODE('ixxx')
     };

     NOTE:
     The 'cput' selector is available on all Macs running System 7.5 or
     later and sometimes with System 7.1. If not available, use 'proc'
     selector. &AS22

     According to Universal Interfaces 3.0d3 Gestalt.h header file the
     Quadra 660AV and Quadra 840AV with System 7.1 always return 5 because
     of a ROM bug. But since they have a M68040, 5 is the correct value?
     Or after an PPC upgrade these two machines still return 5?
     System 7.5 fixes this problem. &AS22

     The GestaltEqu.h file published with E.T.O. #12 was replaced by the
     one on E.T.O. #13. However there was made a mistake, it lists the 68K
     values in the range 0-4 while it should be 1-5 as listed above.
     This problem is acknowledged by Apple.
     You can fix this problem by using the declarations listed above or by
     using the GestaltEqu.h file from E.T.O. #13 but then test first the
     gestaltSysArchitecture ('sysa') selector and when it reports a 68K
     machine use gestaltProcessorType.
     However, System 7.5 and later were apperantly created using the
     incorrect header file and return the incorrect values.
     Example: 'cput' returns 3 and 'proc' returns 4.
     (Anonymous, Dave Radcliffe, Roland Mansson, Rene Ros)
     Now it seems a bug is made into a feature. The latest Gestalt
     header files explicity states the range 0-4 is the correct one. And
     the value returned on a Quadra 660AV and Quadra 840AV is indeed
     incorrect. I'am confused by all this, are you? (Rene Ros)

     Although the 166 MHz [and up] PowerPC 603ev is pin compatible with the
     original 603e, it has physical differences such as die size and power
     consumption. And in little-endian addressing, performance is improved.
     (David Cook)

     To check whether the native system architecture is a MC680x0 or a
     PowerPC use the gestaltSysArchitecture ('sysa') selector. See for
     more information on the 68K processors the gestaltProcessorType
     ('proc') selector.

     There are also some problems with this selector on 68k Macintosh
     computers equipped with an accelerator board. See for more info the
     section 'Accelerated 68K Macintosh Computers' in the Reports chapter.

crm  (System [7.0])
     gestaltCRMAttr
     Returns information about the Communications Resource Manager.

     enum {
     #define gestaltCRMAttr 'crm ' /* Comm. Resource Mgr attributes */
     gestaltCRMPresent       = 0,  /* Comm. Resource Mgr present */
     gestaltCRMPersistentFix = 1,  /* fix for persistent tools &AS02 */
     gestaltCRMToolRsrcCalls = 2}; /* has CRMGetToolResource/
                                       ReleaseToolResource &AS02 */

     NOTE:
     Not installed by Communications Toolbox for System 6.

csvr (Control Strip cp [1.0])
     gestaltControlStripVersion
     Returns the version of Control Strip software that is installed as
     NumVersion.

     #define gestaltControlStripVersion 'csvr'

     WARNING:
     Control Strip 1.0 used to install the 'sdvr' selector (which is used
     by PowerTalk) instead of this selector to return the version. This is
     corrected when the gestaltControlStripAttr ('sdev') selector has bit
     gestaltControlStripVersionFixed set (Control Strip 1.1 and later).
     &AS11/AT08 (Rene Ros)

ctbm (System [???])
     gestaltCTBManagersAttr &S02
     Returns information about the Communications Toolbox Managers, it is a
     bitmask of which managers are present.

     #define gestaltCTBManagersAttr 'ctbm' /* Comm. Mgrs attributes */

     NOTE:
     Never installed by any known system version. Never planned for any
     previous or future system version. (Alex Rosenberg)

ctbu (System [7.0])
     gestaltCTBUtilsAttr &S02
     Returns information about the Communications Toolbox Utilities.

     enum {
     #define gestaltCTBUtilsAttr 'ctbu' /* Comm. TB Utils attr. */
     gestaltCTBUtilsPresent = 0};

     NOTE:
     Not installed by Communications Toolbox for System 6 and not observed
     with any other system software version.

ctbv (System [7.0])
     gestaltCTBVersion
     Returns the version number of the Communications Toolbox as BCD.

     #define gestaltCTBVersion 'ctbv' /* Comm. Toolbox version */

     NOTE:
     Not installed by Communications Toolbox for System 6.

     With the Power Macintosh the Communication Toolbox returned a Gestalt
     value indicating version 1.1 while the ROM actually had version 1.0.
     This is fixed by the PowerPC Enabler 1.0.1. and the PowerPC Upgrade
     Card Enabler 1.0.1. because they install CTB 1.1. &AT06
     As of System 7.1, the version of the CTB should track the System
     version. The PowerMac ROMs handled this incorrectly and System 7.5
     rectifies this by reporting 7.5.0. (Alex Rosenberg)

cuda (System? [7.1.2?], on Performa 630TV)
     gestaltCudaDispatchMgrVersion?
     Returns the version of the Cuda Manager as BCD?

     #define gestaltCudaDispatchMgrVersion? 'cuda'

     Values found: 0x0002 0025, 0x0002 0028 and 0x0004 0000 (latter on
                   Motorola Starmax)

danm (System [Copland?])
     gestaltDesktopAnimationMgr &AD21
     Returns information about the Desktop Animation Manager (DAM).

     enum {
     #define gestaltDesktopAnimationMgr 'danm'
     gestaltDesktopAnimationMgrPresent = 0}; /* if set, DAM is present */

     WARNING:
     From the Preliminary Copland Headers. Copland is replaced by Rhapsody.

dbac (System [7.0])
     gestaltDBAccessMgrAttr
     Returns information about the Data Access Manager.

     enum {
     #define gestaltDBAccessMgrAttr 'dbac' /* Data Access Mgr attributes */
     gestaltDBAccessMgrPresent = 0}; /* TRUE if Data Access Mgr present */

dfnd (PowerTalk ext [1.0?], part of PowerTalk)
     gestaltSDPFindVersion
     Returns the SDP Find version as INTEGER. Returns zero if not present
     and available.

     #define gestaltSDPFindVersion 'dfnd' /* SDP Find version */

dict (System [7.1])
     gestaltDictionaryMgrAttr
     Returns information about the Dictionary Manager.

     enum {
     #define gestaltDictionaryMgrAttr 'dict' /* Dictionary Mgr attributes */
     gestaltDictionaryMgrPresent = 0};

ditl (System [7.0])
     gestaltDITLExtAttr
     Returns information about the Dialog Manager.

     enum {
     gestaltDITLExtAttr 'ditl' /* Dialog Mgr attributes */
     gestaltDITLExtPresent      = 0,  /* Dialog Mgr extensions present */
     gestaltDITLExtSupportsIctb = 1}; /* True if AppendDITL, ShortenDITL
                                         support 'ictb's &AS28 */

dlog (System? [8.5?])
     gestaltDialogMgrAttr
     Returns information about the (PowerPC-native?) Dialog Manager.

     enum {
     #define gestaltDialogMgrAttr 'dlog'
     gestaltDialogMgrPresent = (1L << 0),
     gestalt???              =  1}; /* unknown, Mac OS 9.0 */

doub (WorldScript II ext [7.2?], part of KanjiTalk7 and
                                 several language kits)
     gestaltWorldScriptIIVersion
     Returns the version of WorldScript II as BCD?

     #define gestaltWorldScriptIIVersion 'doub'

     NOTE:
     This selector seems to be installed by WorldScript II (the
     System 7.1 ext needed to handle double-byte scripts like Japanese,
     Korean and Traditional Chinese). Known returned value is 0x0710.
     (Marco Piovanelli)

dplv (Display Enabler [1.0?])
     (System [7.1.1])
     gestaltDisplayMgrVers &AS05
     Returns Display Manager version as Double BCD.

     #define gestaltDisplayMgrVers 'dplv' /* Display Mgr version */

     NOTE:
     Version 1 returned the version as INTEGER, version 2 returns it as
     Double BCD. (Jean-Pierre Curcio)

dply (Display Enabler [1.0?])
     (System [7.1.1])
     gestaltDisplayMgrAttr &AS05
     Returns information about the Display Manager.

     enum {
     #define gestaltDisplayMgrAttr 'dply'     /* Display Mgr attr. */
     gestaltDisplayMgrPresent           = 0,  /* True if Display Mgr is
                                                 present */
     gestalt???                         = 1,  /* seen with System 7.5.2 */
     gestaltDisplayMgrCanSwitchMirrored = 2,  /* True if Display Mgr can
                                                 switch modes on mirrored
                                                 displays &AD21 */
     gestaltDisplayMgrSetDepthNotifies  = 3,  /* True, SetDepth generates
                                                 Display  Mgr
                                                 notification &AD21 */
     gestaltDisplayMgrCanConfirm        = 4,  /* True if Display Manager
                                                 supports
                                                 DMConfirmConfiguration */
     gestaltDisplayMgrColorSyncAware    = 5,  /* True if Display Manager
                                                 supports profiles for
                                                 displays */
     gestaltDisplayMgrGeneratesProfiles = 6}; /* True if Display Manager
                                                 will automatically
                                                 generate profiles for
                                                 displays */

drag (Macintosh Drag and Drop ext [1.0])
     (System? [7.5?])
     gestaltDragMgrAttr &AD05
     Returns information about the Drag Manager.

     enum {
     #define gestaltDragMgrAttr 'drag' /* Drag Manager attributes */
     gestaltDragMgrPresent            =  0,  /* Drag Manager is present */
     gestaltDragMgrFloatingWind       =  1,  /* &AS09 */
     gestaltPPCDragLibPresent         =  2,  /* &AS09 */
     gestaltDragMgrHasImageSupport    =  3,  /* SetDragImage function
                                                present to drag semi-
                                                transparant images instead
                                                of outlines
                                                (Anonymous) &AT14 */
     gestaltCanStartDragInFloatWindow =  4,  /* Drag Manager supports
                                                starting a drag in a
                                                floating window */
     gestaltDragMgr???                = 31}; /* set with System 7.5 */

     NOTE:
     With System 7.5.3 on a Quadra 700 the gestaltDragMgrHasImageSupport
     is set! So the preparation code works until one calls SetDragImage(),
     that fails with error code -1858 ("this call is implemented on PPC
     only"). (Fabrizio Oddone)

dsig (PowerTalk ext [1.0?], part of PowerTalk)
     gestaltDigitalSignatureVersion
     Returns version of the Digital Signature toolbox as BCD.

     #define gestaltDigitalSignatureVersion 'dsig' /* Digitial Signature
                                                       version */

dkpx (Desktop Pictures cp [1.0?])
     gestaltDesktopPicturesAttr
     Returns information about the Desktop Pictures control panel.

     enum {
     #define gestaltDesktopPicturesAttr 'dkpx'
     gestaltDesktopPicturesInstalled = 0,
     gestaltDesktopPicturesDisplayed = 1};

     NOTE:
     Installed by Mac OS 8.0 (codename Tempo).

dtpf (System? [8.1?])
     gestaltDTPFeatures
     Returns information about the Desktop Printing features.

     enum {
     #define gestaltDTPFeatures 'dtpf'
     gestalt???              = 0x00000001,
     gestalt???              = 0x00000002,
     kDTPThirdPartySupported = 0x00000004}; /* supports third party
                                               drivers, since Mac OS 8.5 */

dtpx (Desktop Printer Extension ext [2.0],
      part of Desktop Printing 2.0 and LaserWriter 8, Version 8.4 or later)
     gestaltDTPInfo &AT24
     Returns a handle to a GestaltDTPInfo structure (listed below). The
     handle theDTPList points to a list of DTPInfo structures.

     #define gestaltDTPInfo 'dtpx' /* gestalt selector for the PFE DTP */
     #define kGestaltPFEInfo gestaltDTPInfo

     enum {
     kDTPGestaltStructVersion2 = 0x02008000,
     // version 2.0f0 (for Mac OS 8.0, 8.1 and 7.x)
     kDTPGestaltStructVersion3 = 0x03000000
     // version 3.0 (for Mac OS 8.5)
     };

     // DTPInfo
     typedef struct {
       short   vRefNum;      // vRefNum of the DTP folder
       long    dirID;        // directory ID of the DTP folder
       Str31   dtpName;      // name of the DTP folder
       OSType  driverType;   // creator type of the print driver
                                for this DTP
       Boolean current;      // is this DTP currently the default printer?
       Str32   printerName;  // name of the actual printer on the net
                             // (only for LaserWriter 8 dtps)
       Str32   zoneName;     // zone where this printer resides
                             // (only for LaserWriter 8 dtps)
     } DTPInfo;

     // data associated with the desktop printer info gestalt
     typedef struct {
       long    version;           // kDTPGestaltStructVersion3 or
                                  // kDTPGestaltStructVersion2
       short   numDTPs;           // number of the active dtps
       Handle  theDTPList;        // handle to a list of DTPInfo for the
                                  // active dtps
       Handle  theDTPDriverList;  // handle to a list of print drive
                                  // file specs for each of the active
                                  // dtp in theDTPList
       long    reserved;
     } GestaltDTPInfo, **GestaltDTPInfoHdle;

     // BELOW ARE OLD STRUCTURES
     typedef struct
     {
       long    version;    /* version of the Nessie that is running */
       short   numDTPs;    /* number of desktop printer in the list */
       Handle  theDTPList;
     } GestaltPFEInfo, **GestaltPFEInfoHdle;

     typedef struct
     {
       short   vRefNum;    /* vRefNum of the DTP folder */
       long    dirID;      /* directory ID of the DTP folder */
       Str31   dtpName;    /* name of the DTP folder */
       OSType  driverType; /* creator type of the print driver for this
                               DTP */
       Boolean current;    /* is this DTP currently the default printer */
       Str32   printerName;/* name of the actual printer on the net
                               (only for LW8.4 dtps) */
       Str32   zoneName;   /* zone where this printer resides (only for
                               LW8.4 dtps) */
     } DTPInfo, *DTPInfoPtr;

     NOTE:
     See the source tech note (1079) for more detailed information.