Definitions and Formats
This chapter explains where the word 'Gestalt' comes from, a few things are defined and it explains how each selector code entry looks like.
Use in Language
Webster's Dictionary
ge.stalt \g<e>-'s(h)t<a:>lt, -'s(h)t<o.>lt\ n, pl ge.stalt.en
\-<\e>n\ or gestalts (1922)
[G, lit., shape, form] :a structure, configuration, or pattern of physical, biological, or psychological phenomena so integrated as to constitute a functional unit with properties not derivable by summation of its parts.
(Try this one: http://www.m-w.com/dictionary/gestalt)
German-Dutch Dictionary
Gestalt w [-en]
stature, figure, form; Ritter von der Traurigen -, knight of the sorrowful figure.
Definitions
Apple Software
This category includes all selectors installed by software published by Apple Computer, Inc.
Inside Macintosh says this about them:
"Apple reserves for its own use all four-character sequences consisting solely of lowercase letters and non alphabetic ASCII characters".
It includes all selectors of the next two categories:
Apple System Software
This category includes all selectors installed by System Software from Apple Computer, Inc.
Apple Additional Software
These are selectors installed by additional, non-system, software from Apple Computer, Inc.
Third Parties Software
These are selectors installed by software from parties other than Apple Computer, Inc.
Inside Macintosh says about these:
"If you have registered a creator string with Apple, you are strongly encouraged to use that sequence as your selector code". This type of selectors is included in this list with the motto "If you don't know they are there, you can't do anything with them".
Especially the Third Party selectors may change with every new release and are therefore only listed in the 'known selectors' part when the author has described the structure in the documentation or by email to me. These selectors don't have a high priority but when possible I want to know atleast which software installs it to exclude it as a possible "Apple selector".
Format Selector Entry
Format used to display information about each selector:
selector_code (Software_name & type [since_version], by company/author)
constant_name (selector code in hex)
description
enum {
#define selectorconstant 'selector_code'
constant_1 = value_1, /* remark &ref.numbertosource */
constant_n = value_n}; /* remark &ref.numbertosource */
NOTE and/or WARNING:
Where the type is one of:
app application (APPL)
cp control panel (cdev)
enbl enabler
ext extension (INIT/appe/RDEV etc.)
Example:
COLA (Sugarwater ext [1.0] part of Knowledge Navigator [1.0]
by John Sculley)
gestaltSugarwaterVersion
Returns version of Sugarwater as NumVersion.
enum {
#define gestaltSugarwaterVersion 'COLA' /* &AB01 */
gestaltSugarwaterLightVersion = 0x0200}; /* first light version */
WARNING: This example is fictitious.
NOTE:
Sugarwater? See the book 'West of Eden, The End of Innocence at
Apple' by Frank Rose.
Most selectors are listed as four characters, if there are only two or three characters displayed the remainder are spaces (or it's a typo!).
Diacritical characters are shown in the most logical normal character and at the end of the entry a note is included about which key-combination to press with a normal International system and US keyboard layout to get the required diacritical character and also listed is its hexadecimal code.
When 'INF' is at the end of the first line it means it is an informational selector, all others are environmental selectors.
The source reference number may also be used in other places than indicated above. It then applies to other parts of the entry or to the whole entry. A single question mark indicates an uncertainty regarding the information in front of the question mark. Three question marks indicate complete absence of the information.
Some symbolic names may not originate from official publications.
Symbolic Names Suffixes
The last characters of the symbolic names form a suffix which indicates the type of the returned value. Below is a table which lists the different types of suffix and their meaning.
===========================================================================
Symbolic Names Suffixes
===========================================================================
Suffix Meaning
---------------------------------------------------------------------------
Addr Value is an address, i.e. to the base address of
a memory-mapped device or to a function in
memory.
Attr Value is a range of 32 bits (0 is the least
significant bit), must compare with list of
constants and use BitTst or similair. Sometimes
it is a bitmask, then use BitAnd.
Code Value is four ASCII characters representing a
four byte string (no length byte or zero-
terminated).
Count Value is a number indicating how many of the
indicated type exist.
Features Same as 'Attr' suffix. Usually used by mistake
instead of the more common 'Attr' suffix.
Grade Grade is a value which marks a threshold for
other software to do certain actions. The unit
is undefined.
Icon Value is the resource ID of an icon (in the
system file).
Size Value is a size, usually in bytes.
Table Value is the base address of a table.
Type Value is an index to map to a version or name.
Version Value is a version number. See the section
'Format Version Numbers' below, for a list of
different formats of version numbers.
<none> If there is no suffix like the ones above, the
presence of the selector only implies the
software which installed the selector is present.
The returned value is then private to the
installee.
---------------------------------------------------------------------------
Format Version Numbers
BCD (Binary Coded Decimal)
0x0402 means 4.0.2. Usually the lower two bytes of the response.
Integer
The decimal representation of the returned value in the low-byte is the version.
Double BCD
(my own fantasy name..., RR)
0x00010108 means 1.1.8.
NumVersion
The format of the LongInt response can be coerced into type NumVersion, which is the same format as used for the 'vers' resource type.
type
NumVersion = packed record
case INTEGER of
0: (majorRev: SignedByte; {1st part of version number in BCD}
minorRev: 0..9; {2nd part is 1 nibble in BCD}
bugFixRev: 0..9; {3rd part is 1 nibble in BCD}
stage: SignedByte; {stage code: dev, alpha, beta, final}
nonRelRev: SignedByte);{revision level of non-released version}
1: (version: LONGINT); {to use all 4 fields at one time}
end;
stage is one of: 0x20 = development
0x40 = alpha
0x60 = beta
0x80 = final