4.3 Data Structures L-Z


Language

typedef ByteEnum Language;
    #define L_DEFAULT               0
    #define L_GRAPHIC               0
    #define L_ENGLISH               1
    #define L_GERMAN                2
    #define L_FRENCH                3
    #define L_SPANISH               4
    #define L_ITALIAN               5
    #define L_DANISH                6
    #define L_DUTCH                 7

LargeMouseData

typedef struct {
    PointDWFixed                LMD_location;
    byte                        LMD_buttonInfo;
    UIFunctionsActive           LMD_uiFunctionsActive;
} LargeMouseData;

LayerPriority

typedef ByteEnum LayerPriority;
    #define LAYER_PRIO_MODAL                 6
    #define LAYER_PRIO_ON_TOP                8
    #define LAYER_PRIO_STD                  12
    #define LAYER_PRIO_ON_BOTTOM            14

LexicalOrder

typedef ByteEnum LexicalOrder;
    #define LEX_SPACE                   0x20
    #define LEX_NONBRKSPACE             1
    #define LEX_EXCLAMATION             2
    #define LEX_EXCLAMDOWN              3
    #define LEX_QUOTE                   4
    #define LEX_GUILLEDDBLLEFT          5
    #define LEX_GUILLEDDBLRIGHT         6
    #define LEX_GUILSNGLEFT             7
    #define LEX_GUILSNGRIGHT            8
    #define LEX_QUOTEDBLLEFT            9
    #define LEX_QUOTEDBLRIGHT           10
    #define LEX_DBLQUOTELOW             11
    #define LEX_NUMBER_SIGN             12
    #define LEX_DOLLAR_SIGN             13
    #define LEX_PERCENT                 14
    #define LEX_AMPERSAND               15
    #define LEX_SNG_QUOTE               16
    #define LEX_QUOTEDSNGLEFT           17
    #define LEX_QUOTEDSNGRIGHT          18
    #define LEX_SNGQUOTELOW             19
    #define LEX_LEFT_PAREN              20
    #define LEX_RIGHT_PAREN             21
    #define LEX_ASTERISK                22
    #define LEX_PLUS                    23
    #define LEX_COMMA                   24
    #define LEX_MINUS                   25
    #define LEX_PERIOD                  26
    #define LEX_SLASH                   27
    #define LEX_ZERO                    28
    #define LEX_ONE                     29
    #define LEX_TWO                     30
    #define LEX_THREE                   31
    #define LEX_FOUR                    32
    #define LEX_FIVE                    33
    #define LEX_SIX                     34
    #define LEX_SEVEN                   35
    #define LEX_EIGHT                   36
    #define LEX_NINE                    37
    #define LEX_COLON                   38
    #define LEX_SEMICOLON               39
    #define LEX_LESS_THAN               40
    #define LEX_EQUAL                   41
    #define LEX_GREATER_THAN            42
    #define LEX_QUESTION_MARK           43
    #define LEX_QUESTIONDOWN            44
    #define LEX_AT_SIGN                 45
    #define LEX_UA                      46
    #define LEX_UA_ACUTE                47
    #define LEX_UA_GRAVE                48
    #define LEX_UA_CIRCUMFLEX           49
    #define LEX_UA_DIERESIS             50
    #define LEX_U_AE                    51
    #define LEX_UA_TILDE                52
    #define LEX_UA_RING                 53
    #define LEX_LA                      54
    #define LEX_LA_ACUTE                55
    #define LEX_LA_GRAVE                56
    #define LEX_LA_CIRCUMFLEX           57
    #define LEX_LA_DIERESIS             58
    #define LEX_L_AE                    59
    #define LEX_LA_TILDE                60
    #define LEX_LA_RING                 61
    #define LEX_UB                      62
    #define LEX_LB                      63
    #define LEX_UC                      64
    #define LEX_UC_CEDILLA              65
    #define LEX_LC                      66
    #define LEX_LC_CEDILLA              67
    #define LEX_UD                      68
    #define LEX_LD                      69
    #define LEX_UE                      70
    #define LEX_UE_ACUTE                71
    #define LEX_UE_GRAVE                72
    #define LEX_UE_CIRCUMFLEX           73
    #define LEX_UE_DIERESIS             74
    #define LEX_LE                      75
    #define LEX_LE_ACUTE                76
    #define LEX_LE_GRAVE                77
    #define LEX_LE_CIRCUMFLEX           78
    #define LEX_LE_DIERESIS             79
    #define LEX_UF                      80
    #define LEX_LF                      81
    #define LEX_UG                      82
    #define LEX_LG                      83
    #define LEX_UH                      84
    #define LEX_LH                      85
    #define LEX_UI                      86
    #define LEX_UI_ACUTE                87
    #define LEX_UI_GRAVE                88
    #define LEX_UI_CIRCUMFLEX           89
    #define LEX_UI_DIERESIS             90
    #define LEX_LI                      91
    #define LEX_LI_ACUTE                92
    #define LEX_LI_GRAVE                93
    #define LEX_LI_CIRCUMFLEX           94
    #define LEX_LI_DIERESIS             95
    #define LEX_LI_DOTLESS              96
    #define LEX_UJ                      97
    #define LEX_LJ                      98
    #define LEX_UK                      99
    #define LEX_LK                      100
    #define LEX_UL                      101
    #define LEX_LL                      102
    #define LEX_UM                      103
    #define LEX_LM                      104
    #define LEX_UN                      105
    #define LEX_UN_TILDE                106
    #define LEX_LN                      107
    #define LEX_LN_TILDE                108
    #define LEX_UO                      109
    #define LEX_UO_ACUTE                110
    #define LEX_UO_GRAVE                111
    #define LEX_UO_CIRCUMFLEX           112
    #define LEX_UO_DIERESIS             113
    #define LEX_U_OE                    114
    #define LEX_UO_TILDE                115
    #define LEX_UO_SLASH                116
    #define LEX_LO                      117
    #define LEX_LO_ACUTE                118
    #define LEX_LO_GRAVE                119
    #define LEX_LO_CIRCUMFLEX           120
    #define LEX_LO_DIERESIS             121
    #define LEX_L_OE                    122
    #define LEX_LO_TILDE                123
    #define LEX_LO_SLASH                124
    #define LEX_UP                      125
    #define LEX_LP                      126
    #define LEX_UQ                      127
    #define LEX_LQ                      128
    #define LEX_UR                      129
    #define LEX_LR                      130
    #define LEX_US                      131
    #define LEX_LS                      132
    #define LEX_GERMANDBLS              133
    #define LEX_UT                      134
    #define LEX_LT                      135
    #define LEX_UU                      136
    #define LEX_UU_ACUTE                137
    #define LEX_UU_GRAVE                138
    #define LEX_UU_CIRCUMFLEX           139
    #define LEX_UU_DIERESIS             140
    #define LEX_LU                      141
    #define LEX_LU_ACUTE                142
    #define LEX_LU_GRAVE                143
    #define LEX_LU_CIRCUMFLEX           144
    #define LEX_LU_DIERESIS             145
    #define LEX_UV                      146
    #define LEX_LV                      147
    #define LEX_UW                      148
    #define LEX_LW                      149
    #define LEX_UX                      150
    #define LEX_LX                      151
    #define LEX_UY                      152
    #define LEX_UY_ACUTE                153
    #define LEX_UY_DIERESIS             154
    #define LEX_LY                      155
    #define LEX_LY_ACUTE                156
    #define LEX_LY_DIERESIS             157
    #define LEX_UZ                      158
    #define LEX_LZ                      159
    #define LEX_LEFT_BRACKET            160
    #define LEX_BACKSLASH               161
    #define LEX_RIGHT_BRACKET           162
    #define LEX_ASCII_CIRCUMFLEX        163
    #define LEX_UNDERSCORE              164
    #define LEX_BACKQUOTE               165
    #define LEX_LEFT_BRACE              166
    #define LEX_VERTICAL_BAR            167
    #define LEX_RIGHT_BRACE             168
    #define LEX_ASCII_TILDE             169
    #define LEX_DELETE                  170
    #define LEX_DAGGER                  171
    #define LEX_DBLDAGGER               172
    #define LEX_DEGREE                  173
    #define LEX_CENT                    174
    #define LEX_STERLING                175
    #define LEX_CURRENCY                176
    #define LEX_YEN                     177
    #define LEX_SECTION                 178
    #define LEX_BULLET                  179
    #define LEX_DIAMONDBULLET           180
    #define LEX_PARAGRAPH               181
    #define LEX_REGISTERED              182
    #define LEX_COPYRIGHT               183
    #define LEX_TRADEMARK               184
    #define LEX_NOTEQUAL                185
    #define LEX_INFINITY                186
    #define LEX_PLUSMINUS               187
    #define LEX_LESSEQUAL               188
    #define LEX_GREATEREQUAL            189
    #define LEX_APPROX_EQUAL            190
    #define LEX_L_MU                    191
    #define LEX_L_DELTA                 192
    #define LEX_U_SIGMA                 193
    #define LEX_U_PI                    194
    #define LEX_L_PI                    195
    #define LEX_INTEGRAL                196
    #define LEX_ORDFEMININE             197
    #define LEX_ORDMASCULINE            198
    #define LEX_U_OMEGA                 199
    #define LEX_LOGICAL_NOT             200
    #define LEX_ROOT                    201
    #define LEX_FLORIN                  202
    #define LEX_U_DELTA                 203
    #define LEX_ELLIPSIS                204
    #define LEX_ENDASH                  205
    #define LEX_EMDASH                  206
    #define LEX_DIVISION                207
    #define LEX_FRACTION                208
    #define LEX_CNTR_DOT                209
    #define LEX_PERTHOUSAND             210
    #define LEX_LOGO                    211
    #define LEX_ACUTE                   212
    #define LEX_DIERESIS                213
    #define LEX_CIRCUMFLEX              214
    #define LEX_TILDE                   215
    #define LEX_MACRON                  216
    #define LEX_BREVE                   217
    #define LEX_DOTACCENT               218
    #define LEX_RING                    219
    #define LEX_CEDILLA                 220
    #define LEX_HUNGARUMLAT             221
    #define LEX_OGONEK                  222
    #define LEX_CARON                   223

LexFirstOrder

typedef ByteEnum Lex1stOrder;
    #define LEX1_SPACE                  0x20
    #define LEX1_EXCLAMATION            1
    #define LEX1_QUOTE                  2
    #define LEX1_NUMBER_SIGN            3
    #define LEX1_DOLLAR_SIGN            4
    #define LEX1_PERCENT                5
    #define LEX1_AMPERSAND              6
    #define LEX1_SNG_QUOTE              7
    #define LEX1_PARENTHESIS            8
    #define LEX1_ASTERISK               9
    #define LEX1_PLUS                   10
    #define LEX1_COMMA                  11
    #define LEX1_MINUS                  12
    #define LEX1_PERIOD                 13
    #define LEX1_SLASH                  14
    #define LEX1_ZERO                   15
    #define LEX1_ONE                    16
    #define LEX1_TWO                    17
    #define LEX1_THREE                  18
    #define LEX1_FOUR                   19
    #define LEX1_FIVE                   20
    #define LEX1_SIX                    21
    #define LEX1_SEVEN                  22
    #define LEX1_EIGHT                  23
    #define LEX1_NINE                   24
    #define LEX1_COLON                  25
    #define LEX1_SEMICOLON              26
    #define LEX1_LESS_THAN              27
    #define LEX1_EQUAL                  28
    #define LEX1_GREATER_THAN           29
    #define LEX1_QUESTION_MARK          30
    #define LEX1_AT_SIGN                31
    #define LEX1_A                      32
    #define LEX1_B                      33
    #define LEX1_C                      34
    #define LEX1_D                      35
    #define LEX1_E                      36
    #define LEX1_F                      37
    #define LEX1_G                      38
    #define LEX1_H                      39
    #define LEX1_I                      40
    #define LEX1_J                  41
    #define LEX1_K                  42
    #define LEX1_L                  43
    #define LEX1_M                  44
    #define LEX1_N                  45
    #define LEX1_O                  46
    #define LEX1_P                  47
    #define LEX1_Q                  48
    #define LEX1_R                  49
    #define LEX1_S                  50
    #define LEX1_T                  51
    #define LEX1_U                  52
    #define LEX1_V                  53
    #define LEX1_W                  54
    #define LEX1_X                  55
    #define LEX1_Y                  56
    #define LEX1_Z                  57
    #define LEX1_LEFT_BRACKET       58
    #define LEX1_BACKSLASH          59
    #define LEX1_RIGHT_BRACKET      60
    #define LEX1_ASCII_CIRCUMFLEX   61
    #define LEX1_UNDERSCORE         62
    #define LEX1_BACKQUOTE          63
    #define LEX1_LEFT_BRACE         64
    #define LEX1_VERTICAL_BAR       65
    #define LEX1_RIGHT_BRACE        66
    #define LEX1_ASCII_TILDE        67
    #define LEX1_ASCII_DELETE       68
    #define LEX1_DAGGER             69
    #define LEX1_DEGREE             70
    #define LEX1_CENT               71
    #define LEX1_STERLING           72
    #define LEX1_SECTION            73
    #define LEX1_BULLET             74
    #define LEX1_PARAGRAPH          75
    #define LEX1_REGISTERED         76
    #define LEX1_COPYRIGHT          77
    #define LEX1_TRADEMARK          78
    #define LEX1_ACUTE              79
    #define LEX1_DIERESIS           80
    #define LEX1_NOTEQUAL           81
    #define LEX1_INFINITY           82
    #define LEX1_PLUSMINUS          83
    #define LEX1_LESSEQUAL          84
    #define LEX1_GREATEREQUAL       85
    #define LEX1_YEN                86
    #define LEX1_MU                 87
    #define LEX1_DELTA              88
    #define LEX1_SIGMA              89
    #define LEX1_PI                 90
    #define LEX1_INTEGRAL           91
    #define LEX1_ORDFEMININE        92
    #define LEX1_ORDMASCULINE       93
    #define LEX1_OMEGA              94
    #define LEX1_QUESTIONDOWN       95
    #define LEX1_EXCLAMDOWN         96
    #define LEX1_LOGICALNOT         97
    #define LEX1_ROOT               98
    #define LEX1_FLORIN             99
    #define LEX1_APPROX_EQUAL       100
    #define LEX1_ELLIPSIS           101
    #define LEX1_ENDASH             102
    #define LEX1_EMDASH             103
    #define LEX1_DIVISION           104
    #define LEX1_DIAMONDBULLET      105
    #define LEX1_FRACTION           106
    #define LEX1_CURRENCY           107
    #define LEX1_CNTR_DOT           108
    #define LEX1_PERTHOUSAND        109
    #define LEX1_LOGO               110
    #define LEX1_CIRCUMFLEX         111
    #define LEX1_TILDE              112
    #define LEX1_MACRON             113
    #define LEX1_BREVE              114
    #define LEX1_DOTACCENT          115
    #define LEX1_RING               116
    #define LEX1_CEDILLA            117
    #define LEX1_HUNGARUMLAT        118
    #define LEX1_OGONEK             119
    #define LEX1_CARON              120

LibraryCallType

typedef enum /* word */ {
    LCT_ATTACH,             /* The library was just loaded. */
    LCT_DETACH,             /* The library is about to be unloaded. */
    LCT_NEW_CLIENT,         /* A new client of the library was just loaded. */
    LCT_NEW_CLIENT_THREAD,  /* A new thread was just created for a
                             * current client of the library. */
    LCT_CLIENT_THREAD_EXIT, /* A thread was just exited for a current
                             * client of the library. */
    LCT_CLIENT_EXIT,        /* Library's client is about to be unloaded. */
} LibraryCallType

This type is used by library entry point routines. Library entry point routines take a value of this enumerated type to determine what, if anything, is to be done.


LineAttr

typedef struct {
    byte            LA_colorFlag;
    RGBValue        LA_color;
    SysDrawMask     LA_mask;
    ColorMapMode    LA_mapMode;
    LineEnd         LA_end;
    LineJoin        LA_join;
    LineStyle       LA_style;
    WWFixed         LA_width;
} LineAttr;

LineEnd

typedef ByteEnum LineEnd;
    #define LE_BUTTCAP              0
    #define LE_ROUNDCAP             1
    #define LE_SQUARECAP            2
    #define LAST_LINE_END_TYPE      LE_SQUARECAP

Line ends determine how the graphics system will draw the end of a line segment.


LineJoin

typedef ByteEnum LineJoin;
    #define LJ_MITERED                  0
    #define LJ_ROUND                    1
    #define LJ_BEVELED                  2
    #define LAST_LINE_JOIN_TYPE         LJ_BEVELED

This enumerated type determines how the graphics system will draw corners of rectangles and polylines.


LineStyle

typedef ByteEnum LineStyle;
    #define LS_SOLID                    0
    #define LS_DASHED                   1
    #define LS_DOTTED                   2
    #define LS_DASHDOT                  3
    #define LS_DASHDDOT                 4
    #define LS_CUSTOM                   5
    #define MAX_DASH_ARRAY_PAIRS        5

The LineStyle type describes a line’s “dottedness.” Lines using custom dashes will work with the DashPairArray structure.


LMemBlockHeader

typedef struct {
    MemHandle       LMBH_handle;
    word            LMBH_offset;
    word            LMBH_flags;
    LMemTypes       LMBH_lmemType;
    word            LMBH_blockSize;
    word            LMBH_nHandles;
    word            LMBH_freeList;
    word            LMBH_totalFree;
} LMemBlockHeader;

This structure is found at the beginning of every block which contains an LMem heap. You can examine any of the fields by locking the block and casting its address to a *LMemBlockHeader. You should not, however, change any of the fields yourself; they are managed by the LMem routines.

Contents: The header has the following fields:

LMBH_handle
The handle of this block.

LMBH_offset
The offset from the beginning of the block to the beginning of the heap.

LMBH_flags
The LocalMemoryFlags currently set for the block. The flags are described in the entry for LMemInitHeap().

LMBH_lmemType
The type of LMem heap in this block. This field is a member of the LMemType enumerated type, described in the entry for LMemInitHeap().

LMBH_blockSize
The total size of this block. This size may change in either direction as a result of chunk allocation and heap compaction.

LMBH_nHandles
The number of handles available in the chunk handle table. Not all of these chunks are necessarily allocated as owned or free chunks. The table grows automatically when necessary.

LMBH_freeList
The chunk handle of the first free chunk in the linked list of free chunks.

LMBH_totalFree
The total amount of free space in the LMem heap.

Warnings: Do not change the settings of the LMemBlockHeader. They are automatically maintained by the LMem routines.

Include: lmem.h

See Also: LMemInitHeap()


LMemType

typdef enum {
    LMEM_TYPE_GENERAL,
    LMEM_TYPE_WINDOW,
    LMEM_TYPE_OBJ_BLOCK,
    LMEM_TYPE_GSTATE,
    LMEM_TYPE_FONT_BLK,
    LMEM_TYPE_GSTRING,
    LMEM_TYPE_DB_ITEMS
} LMemType;

LMem heaps are created for many different purposes. Some of these purposes require the heap to have special functionality. For this reason, when you create an LMem heap, you must specify what it will be used for. The following types are available:

LMEM_TYPE_GENERAL
The LMem heap will be used for general data storage, possibly including a chunk, name, or element array. When an application creates an LMem heap, it will almost always be of type “General” or “Object.”

LMEM_TYPE_OBJ_BLOCK
Objects are stored in object blocks, which are LMem heaps. An object block has some extra header information and contains one chunk which contains only flags. All the objects in the block are stored as chunks on the heap. Applications can directly create object blocks.

LMEM_TYPE_WINDOW
Windows are stored in memory as LMem heaps. The header contains information about the window; each region in the window is stored as a chunk. Applications will not directly create Window heaps.

LMEM_TYPE_GSTATE
A GState is an LMem heap. The GState information is in the header, and the application clip-rectangle is stored in a chunk. Applications do not directly create GState blocks; rather, they call a GState creation routine, which creates the block.

LMEM_TYPE_FONT_BLOCK
Font blocks are stored as LMem heaps. Applications do not create font blocks directly.

LMEM_TYPE_GSTRING
Whenever a GString is created or loaded, a GString LMem heap is created, and elements are added as chunks. The heap is created automatically by the GString routines; applications should not create GString blocks.

LMEM_TYPE_DB_ITEMS
The Virtual Memory mechanism provides routines to create and manage database items, short pieces of data which are dynamically allocated and are saved with the VM file. Applications do not directly allocate DB blocks; rather, they call DB routines, which see to it that the blocks are created.

Include: lmem.h


LocalDistanceFlags

typedef WordFlags LocalDistanceFlags;
    #define LDF_FULL_NAMES                      0x8000
    #define LDF_PRINT_PLURAL_IF_NEEDED          0x4000

LocalCmpStringsDosToGeosFlags

typedef ByteFlags LocalCmpStringsDosToGeosFlags;
    #define LCSDTG_NO_CONVERT_STRING_2              0x02
    #define LCSDTGF_NO_CONVERT_STRING_1             0x01

LocalCurrencyFormat

typedef struct {
    byte    CurrencyFormatFlags;
    byte    currencyDigits;
    word    thousandsSeparator;
    word    decimalSeparator;
    word    listSeparator;
} LocalCurrencyFormat;

LocalMemoryFlags

typedef WordFlags LocalMemoryFlags;
    #define LMF_HAS_FLAGS               0x8000
    #define LMF_IN_RESOURCE             0x4000
    #define LMF_DETACHABLE              0x2000
    #define LMF_DUPLICATED              0x1000
    #define LMF_RELOCATED               0x0800
    #define LMF_AUTO_FREE               0x0400
    #define LMF_IN_LMEM_ALLOC           0x0200
    #define LMF_IS_VM                   0x0100
    #define LMF_NO_HANDLES              0x0080
    #define LMF_NO_ENLARGE              0x0040
    #define LMF_RETURN_ERRORS           0x0020
    #define LMF_DEATH_COUNT             0x0007
    #define STD_LMEM_OBJECT_FLAGS       (LMF_HAS_FLAGS | LMF_RELOCATED)

When an LMem heap is allocated, certain flags are passed to indicate properties the heap should have. Some of the flags are passed only for system-created heaps. The flags are stored in a word-length record (LocalMemoryFlags); the record also contains flags indicating the current state of the heap. The LocalMemoryFlags are listed below:

LMF_HAS_FLAGS
Set if the block has a chunk containing only flags. This flag is set for object blocks; it is usually cleared for general LMem heaps.

LMF_IN_RESOURCE
Set if the block has just been loaded from a resource and has not been changed since being loaded. This flag is set only for object blocks created by the compiler.

LMF_DETACHABLE
Set if the block is an object block which can be saved to a state file.

LMF_DUPLICATED
Set if block is an object block created by the ObjDuplicateBlock() routine. This flag should not be set by applications.

LMF_RELOCATED
Set if all the objects in the block have been relocated. The object system sets this when it has relocated all the objects in the block.

LMF_AUTO_FREE
This flag is used by several object routines. It indicates that if the block’s in-use count drops to zero, the block may be freed. This flag should not be set by applications.

LMF_IN_MEM_ALLOC
This flag is used in error-checking code to prevent the heap from being validated while a chunk is being allocated. For internal use only-do not modify.

LMF_IS_VM
Set if the LMem heap is in a VM block and the block should be marked dirty whenever a chunk is marked dirty. This flag is automatically set by the VM code when an LMem heap is created in or attached to a VM file. This flag should not be set by applications.

LMF_NO_HANDLES
Set if block does not use chunk handles. A block can be set to simulate the C malloc() routine; in this case, chunks are not relocated after being created, so chunk handles are not needed. Ordinarily, these blocks are created by the malloc() routine, not by applications.

LMF_NO_ENLARGE
Indicates that the local-memory routines should not enlarge this block to fulfill chunk requests. This guarantees that the block will not be moved by a chunk allocation request; however, it makes these requests more likely to fail.

LMF_RETURN_ERRORS
Set if local memory routines should return errors when allocation requests cannot be fulfilled. If the flag is not set, allocation routines will fatal-error if they cannot comply with requests. This flag is generally clear for expandable LMem blocks, since many system routines (such as ObjInstantiate()) are optimized in such a way that they cannot deal with LMem allocation errors.

LMF_DEATH_COUNT
This field occupies the least significant three bits of the flag field. It means nothing if the value is zero. If it is non-zero, it indicates the number of remove-block messages left which must hit BlockDeathCommon before it will free the block. This flag is used by the handlers for MSG_FREE_DUPLICATE and MSG_REMOVE_BLOCK.

STD_LMEM_OBJ_FLAGS This is a constant which combines the LMF_HAS_FLAGS and LMF_RELOCATED flags. These flags should be set for all object blocks.

Include: lmem.h


LocalNumericFormat

typedef struct {
    byte    numberFormatFlags;
    byte    decimalDigits;
    word    thousandsSeparator;
    word    decimalSeparator;
    word    listSeparator;
} LocalNumericFormat;

LocalQuotes

typedef struct {
    word    frontSingle;
    word    endSingle;
    word    frontDouble;
    word    endDouble;
} LocalQuotes;

ManufacturerID

typedef enum { /* word */
    MANUFACTURER_ID_GEOWORKS
} ManufacturerID;

MapColorToMono

typedef ByteEnum MapColorToMono;
    #define CMT_CLOSEST             0
    #define CMT_DITHER              1

This type determines what the graphics system will do when trying to draw in an unavailable color. It will either draw in the closest color, or else mix two or more close colors to get as close as possible overall.


MapListBlockHeader

typedef struct {
    LMemBlockHeader         MLBH_base;
    word                    MLBH_numDestFields;
    word                    MLBH_chunk1;
} MapListBlockHeader;

MarginDimensions

typedef struct {
    int     leftMargin;
    int     topMargin;
    int     rightMargin;
    int     bottomMargin;
} MarginDimensions;

MeasurementType

typedef ByteEnum MeasurementType;
    #define MEASURE_US              0
    #define MEASURE_METRIC          1

MediaType

typedef enum /* byte */ {
    #define MEDIA_NONEXISTENT       0
    #define MEDIA_160K              1
    #define MEDIA_180K              2
    #define MEDIA_320K              3
    #define MEDIA_360K              4
    #define MEDIA_720K              5
    #define MEDIA_1M2               6
    #define MEDIA_1M44              7
    #define MEDIA_2M88              8
    #define MEDIA_FIXED_DISK        9
    #define MEDIA_CUSTOM            10
} MediaType;

The MediaType enumerated type indicates how a disk is formatted. A member of this enumerated type is returned by some disk-information routines (e.g. DriveGetDefaultMedia()). A MediaType value is also passed to DiskFormat(), indicating how the disk should be formatted.


MemGetInfoType

typedef enum /* word */ {
    MGIT_SIZE=0,                    /* size in bytes */
    MGIT_FLAGS_AND_LOCK_COUNT=2,    /* use MGI_LOCK_COUNT and MGI_FLAGS */
    MGIT_OWNER_OR_VM_FILE_HANDLE=4,
    MGIT_ADDRESS=6,
    MGIT_OTHER_INFO=8,
    MGIT_EXEC_THREAD=10
} MemGetInfoType;

MemHandle

typedef Handle MemHandle;

Message

typedef word Message;

MessageError

typedef enum /* word */ {
     MESSAGE_NO_ERROR,          /* no error was encountered */
     MESSAGE_NO_HANDLES         /* no handle could be allocated
                                 * and MF_CAN_DISCARD_IF_DESPARATE
                                 * was passed */
} MessageErrors;

A MessageError is returned by ObjMessage() in assembly to indicate whether the message was successfully sent. This is not encountered by C applications.


MessageFlags

typedef WordFlags MessageFlags;
    #define MF_CALL                     0x8000      /* @call */
    #define MF_FORCE_QUEUE              0x4000
    #define MF_STACK                    0x2000      /* @stack */
    #define MF_CHECK_DUPLICATE          0x0800
    #define MF_CHECK_LAST_ONLY          0x0400
    #define MF_REPLACE                  0x0200
    #define MF_CUSTOM                   0x0100
    #define MF_FIXUP_DS                 0x0080
    #define MF_FIXUP_ES                 0x0040
    #define MF_DISCARD_IF_NO_MATCH      0x0020
    #define MF_MATCH_ALL                0x0010
    #define MF_INSERT_AT_FRONT          0x0008      /* puts at front of queue */
    #define MF_CAN_DISCARD_IF_DESPERATE 0x0004
    #define MF_RECORD                   0x0002      /* @record */
    #define MF_DISPATCH_DONT_FREE       0x0002

MessageFlags are specified in the assembly version of ObjMessage(). Most of these flags are set properly by Goc and the kernel in C. See the reference entries for the Goc keywords @call and @send.


MessageHandle

typedef Handle MessageHandle;

MessageMethod

typedef void     MessageMethod();

MinIncrementType

typedef union {
    MinUSMeasure                MIT_US;
    MinMetricMeasure            MIT_METRIC;
    MinPointMeasure             MIT_POINT;
    MinPicaMeasure              MIT_PICA;
} MinIncrementType;

MinMetricMeasure

typedef ByteEnum MinMetricMeasure;
    #define MMM_MILLIMETER                  0
    #define MMM_HALF_CENTIMETER             1
    #define MMM_CENTIMETER                  2

MinPicaMeasure

typedef ByteEnum MinPicaMeasure;
    #define MPM_PICA                    0
    #define MPM_INCH                    1

MinPointMeasure

typedef ByteEnum MinPointMeasure;
    #define MPM_25_POINT                    0
    #define MPM_50_POINT                    1
    #define MPM_100_POINT                   2

MinUSMeasure

typedef ByteEnum MinUSMeasure;
    #define MUSM_EIGHTH_INCH                0
    #define MUSM_QUARTER_INCH               1
    #define MUSM_HALF_INCH                  2
    #define MUSM_ONE_INCH                   3

MixMode

typedef ByteEnum MixMode;
    #define MM_CLEAR        0   /* clear destination */
    #define MM_COPY         1   /* new drawing is opaque */
    #define MM_NOP          2   /* no drawing */
    #define MM_AND          3   /* logical AND of new and old colors */
    #define MM_INVERT       4   /* inverse of old color */
    #define MM_XOR          5   /* XOR of new and old colors */
    #define MM_SET          6   /* set destination black */
    #define MM_OR           7   /* logical OR of new and old colors */

The MixMode determines what the graphics system will do when drawing one thing on top of another.


MonoTransfer

typedef struct {
    byte MT_gray[256];
} MonoTransfer;

MouseReturnFlags

typedef WordFlags MouseReturnFlags;
    #define MRF_PROCESSED                       0x8000
    #define MRF_REPLAY                          0x4000
    #define MRF_PREVENT_PASS_THROUGH            0x2000
    #define MRF_SET_POINTER_IMAGE               0x1000
    #define MRF_CLEAR_POINTER_IMAGE             0x0800

These flags are used in various parts of the system that work with mouse input. Which values are appropriate to pass will vary based on context.


MouseReturnParams

typedef struct {
    word                    unused;
    MouseReturnFlags        flags;
    optr                    ptrImage;
} MouseReturnParams;

This structure is used in certain areas of the system which work with mouse input.


NameArrayAddFlags

typedef WordFlags NameArrayAddFlags;
    #define NAAF_SET_DATA_ON_REPLACE 0x8000

NameArrayElement

typedef struct {
    RefElementHeader NAE_meta;
} NameArrayElement;

NameArrayHeader

typedef struct{
    ElementArrayHeader      NAH_meta;
    word                    NAH_dataSize;   /* Size of data section of
                                             * each element */
} NameArrayHeader;

Every name array must begin with a NameArrayHeader. Since name arrays are special kinds of element arrays, the NameArrayHeader must itself begin with an ElementArrayHeader. The structure contains one additional field, NAH_dataSize. This field specifies how long the data section of every element is. Applications may examine this field, but they must not change it.


NameArrayMaxElement

typedef struct {
    RefElementHeader NAME_meta;
    byte NAME_data[NAME_ARRAY_MAX_DATA_SIZE];
    char NAME_name[NAME_ARRAY_MAX_NAME_SIZE];
} NameArrayMaxElement;

NO_ERROR_RETURNED

#define NO_ERROR_RETURNED               0

NoteType

typedef ByteEnum NoteType;
    #define NT_INK          0
    #define NT_TEXT         1

NotificationType

typedef struct {
    ManufacturerID          NT_manuf;
    word            NT_type;
} NotificationType;

NotifyInkHasTarget

typedef struct {
    optr    NIHT_optr;
} NotifyInkHasTarget;

NULL

#undef NULL
#define NULL        0

NullChunk

#define NullChunk       ((ChunkHandle) 0)

NullClass

#define NullClass       ((ClassStruct *) 0)

NullHandle

#define NullHandle      ((Handle) 0)

NullOptr

#define NullOptr        ((optr) 0)

NumberFormatFlags

typedef ByteFlags NumberFormatFlags;
    #define NFF_LEADING_ZERO                0x01

NumberType

typedef ByteEnum NumberType;
    #define NT_VALUE                0
    #define NT_BOOLEAN              1
    #define NT_DATE_TIME            2

ObjChunkFlags

typedef ByteFlags ObjChunkFlags;
    #define OCF_VARDATA_RELOC           0x10
    #define OCF_DIRTY                   0x08
    #define OCF_IGNORE_DIRTY            0x04
    #define OCF_IN_RESOURCE             0x02
    #define OCF_IS_OBJECT               0x01

This record is stored at the beginning of each chunk and gives specific information about the chunk. The flags are internal.


ObjLMemBlockHeader

typedef struct {
    LMemBlockHeader     OLMBH_header;   /* standard LMem block header */
    word                OLMBH_inUseCount;
    word                OLMBH_interactibleCount;
    optr                OLMBH_output;
    word                OLMBH_resourceSize;
} ObjLMemBlockHeader;

This is the standard Object Block header that begins every object block; you can set additional header fields with the @header Goc keyword. The fields of this structure are

OLMBH_header
The standard LMem block header. See the LMemBlockHeader structure type.

OLMBH_inUseCount
The “in use” count for the block. If not zero, then the block may not safely be freed.

OLMBH_interactibleCount
The “interactable” count for the block. If not zero, then one or more objects in the block are either visible to the user or about to be activated by the user (e.g. via keyboard shortcut). A block with a non-zero interactible count may not be swapped.

OLMBH_output
The optr of the object that will be notified about changes in resource status, such as in-use count changing to or from zero. Messages may also be sent to this output object via the TravelOption TO_OBJ_BLOCK_OUTPUT.

OLMBH_resourceSize
The size of the object block (resource).


ObjRelocation

typedef struct {
    ObjRelocationType       OR_type;
    word                    OR_offset;
} ObjRelocation;

ObjRelocationSource

typedef ByteEnum ObjRelocationSource;
    #define ORS_NULL                            0
    #define ORS_OWNING_GEODE                    1
    #define ORS_KERNEL                          2
    #define ORS_LIBRARY                         3
    #define ORS_CURRENT_BLOCK                   4
    #define ORS_VM_HANDLE                       5
    #define ORS_OWNING_GEODE_ENTRY_POINT        6
    #define ORS_NON_STATE_VM                    7
    #define ORS_UNKNOWN_BLOCK                   8
    #define ORS_EXTERNAL                        9
    #define RID_SOURCE_OFFSET                   12

ObjRelocationType

typedef ByteEnum ObjRelocationType;
    #define RELOC_END_OF_LIST                       0
    #define RELOC_RELOC_HANDLE                      1
    #define RELOC_RELOC_SEGMENT                     2
    #define RELOC_RELOC_ENTRY_POINT                 3

OperatorStackElement

typedef struct {
    EvalStackOperatorType OSE_type;
    EvalStackOperatorType OSE_data;
} OperatorStackElement;

OperatorType

typedef ByteEnum OperatorType;
    #define OP_RANGE_SEPARATOR                      0
    #define OP_NEGATION                             1
    #define OP_PERCENT                              2
    #define OP_EXPONENTIATION                       3
    #define OP_MULTIPLICATION                       4
    #define OP_DIVISION                             5
    #define OP_MODULO                               6
    #define OP_ADDITION                             7
    #define OP_SUBTRACTION                          8
    #define OP_EQUAL                                9
    #define OP_NOT_EQUAL                            10
    #define OP_LESS_THAN                            11
    #define OP_GREATER_THAN                         12
    #define OP_LESS_THAN_OR_EQUAL                   13
    #define OP_GREATER_THAN_OR_EQUAL                14
    #define OP_STRING_CONCAT                        15
    #define OP_RANGE_INTERSECTION                   16
    #define OP_NOT_EQUAL_GRAPHIC                    17
    #define OP_DIVISION_GRAPHIC                     18
    #define OP_LESS_THAN_OR_EQUAL_GRAPHIC           19
    #define OP_GREATER_THAN_OR_EQUAL_GRAPHIC        20
    #define OP_PERCENT_MODULO                       21
    #define OP_SUBTRACTION_NEGATION                 22


optr

typedef dword optr;

PageLayout

typedef union {
    PageLayoutPaper             PL_paper;
    PageLayoutEnvelope          PL_envelope;
    PageLayoutLabel             PL_label;
} PageLayout;

PageLayoutEnvelope

typedef WordFlags PageLayoutEnvelope;
    #define PLE_PATH                0x0040
    #define PLE_ORIENTATION         0x0010
    #define PLE_TYPE                0x0004

PageLayoutLabel

typedef WordFlags PageLayoutLabel;
    #define PLL_ROWS            0x7e00          /* labels down */
    #define PLL_COLUMNS         0x01f8          /* labels across */
    #define PLL_TYPE            0x0004          /* PT_LABEL */

PageLayoutPaper

typedef WordFlags PageLayoutPaper;
    #define PLP_ORIENTATION         0x0008
    #define PLP_TYPE                0x0004

PageSize

typedef struct {
    word            unused;
    word            PS_width;
    word            PS_height;
    PageLayout      PS_layout;
} PageSize;

PageSizeCtrlAttrs

typedef WordFlags PageSizeCtrlAttrs;
    #define PZCA_ACT_LIKE_GADGET            0x8000
    #define PZCA_PAPER_SIZE                 0x4000
    #define PZCA_INITIALIZE                 0x2000

PageSizeCtrlFeatures

typedef ByteFlags PageSizeControlFeatures;
    #define PSIZECF_MARGINS             0x04
    #define PSIZECF_ALL                 0x02
    #define PSIZECF_PAGE_TYPE           0x01

PageSizeReport

typedef struct {
    dword               PSR_width;
    dword               PSR_height;
    PageLayout          PSR_layout;
    PCMarginParams      PSR_margins;
} PageSizeReport:

PageType

typedef enum {
    PT_PAPER,
    PT_ENVELOPE,
    PT_LABEL
} PageType;

PaperOrientation

typedef ByteEnum PaperOrientation;
    #define PO_PORTRAIT             0x00
    #define PO_LANDSCAPE            0x01

ParallelUnit

typedef enum
    {
        PARALLEL_LPT1 = 0,
        PARALLEL_LPT2 = 2,
        PARALLEL_LPT3 = 4,
        PARALLEL_LPT4 = 6,
    } ParallelUnit;

ParserFlags

typedef ByteFlags ParserFlags;
    #define PF_HAS_LOOKAHEAD                0x80
    #define PF_CONTAINS_DISPLAY_FUNC        0x40
    #define PF_OPERATORS                    0x20
    #define PF_NUMBERS                      0x10
    #define PF_CELLS                        0x08
    #define PF_FUNCTIONS                    0x04
    #define PF_NAMES                        0x02
    #define PF_NEW_NAMES                    0x01

ParserParameters

typedef struct {
    CommonParameters    PP_common;
    word                PP_parserBufferSize;
    ParserFlags         PP_flags;
    dword               PP_textPtr;
    ScannerToken        PP_currentToken;
    ScannerToken        PP_lookAheadToken;
    byte                PP_error;       /* ParserScannerEvaluatorError */
    word                PP_tokenStart;
    word                PP_tokenEnd;
} ParserParameters;

ParserScannerEvaluatorError

typedef ByteEnum ParserScannerEvaluatorError;
    /*
     * Scanner errors
     */
    #define PSEE_BAD_NUMBER                     0
    #define PSEE_BAD_CELL_REFERENCE             1
    #define PSEE_NO_CLOSE_QUOTE                 2
    #define PSEE_COLUMN_TOO_LARGE               3
    #define PSEE_ROW_TOO_LARGE                  4
    #define PSEE_ILLEGAL_TOKEN                  5
    /*
     * Parser errors
     */
    #define PSEE_GENERAL                        6
    #define PSEE_TOO_MANY_TOKENS                7
    #define PSEE_EXPECTED_OPEN_PAREN            8
    #define PSEE_EXPECTED_CLOSE_PAREN           9
    #define PSEE_BAD_EXPRESSION                 10
    #define PSEE_EXPECTED_END_OF_EXPRESSION     11
    #define PSEE_MISSING_CLOSE_PAREN            12
    #define PSEE_UNKNOWN_IDENTIFIER             13
    #define PSEE_NOT_ENOUGH_NAME_SPACE          14
    /*
     * Serious evaluator errors
     */
    #define PSEE_OUT_OF_STACK_SPACE             15
    #define PSEE_NESTING_TOO_DEEP               16
    /*
     * Evaluator errors that are returned as the result of formulas.
     * These are returned on the argument stack.
     */
    #define PSEE_ROW_OUT_OF_RANGE               17
    #define PSEE_COLUMN_OUT_OF_RANGE            18
    #define PSEE_FUNCTION_NO_LONGER_EXISTS      19
    #define PSEE_BAD_ARG_COUNT                  20
    #define PSEE_WRONG_TYPE                     21
    #define PSEE_DIVIDE_BY_ZERO                 22
    #define PSEE_UNDEFINED_NAME                 23
    #define PSEE_CIRCULAR_REF                   24
    #define PSEE_CIRCULAR_DEP                   25
    #define PSEE_CIRC_NAME_REF                  26
    #define PSEE_NUMBER_OUT_OF_RANGE            27
    #define PSEE_GEN_ERR                        28
    #define PSEE_NA                             29
    /*
     * Dependency errors
     */
    #define PSEE_TOO_MANY_DEPENDENCIES          30
    #define PSEE_SSHEET_BASE                    0xc0
    #define PSEE_FLOAT_BASE                     250
    #define PSEE_APP_BASE                       230
    #define PSEE_FLOAT_POS_INFINITY             PSEE_FLOAT_BASE
    #define PSEE_FLOAT_NEG_INFINITY             (PSEE_FLOAT_BASE + 1)
    #define PSEE_FLOAT_GEN_ERR                  (PSEE_FLOAT_BASE + 2)

ParserToken

typedef struct {
    ParserTokenType         PT_type;
    ParserTokenData         PT_data;
} ParserToken;

ParserTokenCellData

typedef struct {
    CellReference           PTCD_cellRef;
} ParserTokenCellData;

ParserTokenData

typedef union {
    ParserTokenNumberData               PTD_number;
    ParserTokenStringData               PTD_string;
    ParserTokenNameData                 PTD_name;
    ParserTokenCellData                 PTD_cell;
    ParserTokenFunctionData             PTD_function;
    ParserTokenOperatorData             PTD_operator;
} ParserTokenData;

ParserTokenFunctionData

typedef struct {
    word        PTFD_functionID;
} ParserTokenFunctionData;

ParserTokenNameData

typedef struct {
    word        PTND_name;
} ParserTokenNameData;

ParserTokenNumberData

typedef struct {
    FloatNum        PTND_value;
} ParserTokenNumberData;

ParserTokenOperatorData

typedef struct {
    OperatorType            PTOD_operatorID;
} ParserTokenOperatorData;

ParserTokenStringData

typedef struct {
    word        PTSD_length;
} ParserTokenStringData;

ParserTokenType

typedef ByteEnum ParserTokenType;
    #define PARSER_TOKEN_NUMBER                 0
    #define PARSER_TOKEN_STRING                 1
    #define PARSER_TOKEN_CELL                   2
    #define PARSER_TOKEN_END_OF_EXPRESSION      3
    #define PARSER_TOKEN_OPEN_PAREN             4
    #define PARSER_TOKEN_CLOSE_PAREN            5
    #define PARSER_TOKEN_NAME                   6
    #define PARSER_TOKEN_FUNCTION               7
    #define PARSER_TOKEN_CLOSE_FUNCTION         8
    #define PARSER_TOKEN_ARG_END                9
    #define PARSER_TOKEN_OPERATOR               10

PathCombineType

typedef enum /* word */ {
    PCT_NULL,           /* wipe out old path */
    PCT_REPLACE,        /* replace old path with upcoming path */
    PCT_UNION,          /* union old path with new */
    PCT_INTERSECTION    /* intersect old path with new */
} PathCombineType;

PathName

typedef char PathName[PATH_BUFFER_SIZE];

PatternType

typedef ByteEnum PatternType;
    #define PT_SOLID                    0
    #define PT_SYSTEM_HATCH             1
    #define PT_SYSTEM_BITMAP            2
    #define PT_USER_HATCH               3
    #define PT_USER_BITMAP              4
    #define PT_CUSTOM_HATCH             5
    #define PT_CUSTOM_BITMAP            6

PCDocSizeParams

typedef struct {
    dword   PCDSP_width;
    dword   PCDSP_height;
} PCDocSizeParams;

Use this structure to communicate document sizes to a Print Control.


PCMarginParams

typedef struct {
    word    PCMP_left;          /* left margin */
    word    PCMP_top;           /* top margin */
    word    PCMP_right;         /* right margin */
    word    PCMP_bottom;        /* bottom margin */
} PCMarginParams

This structure holds information about a document’s or printer’s margins.


PCProgressType

typedef enum {
    PCPT_PAGE,
    PCPT_PERCENT,
    PCPT_TEXT
} PCProgressType;

Point

typedef struct {
    sword P_x;
    sword P_y;
} Point;

PointDWord

typedef struct {
    sdword PD_x;
    sdword PD_y;
} PointDWord;

PointDWFixed

typedef struct {
    DWFixed PDF_x;
    DWFixed PDF_y;
} PointDWFixed;

PointerDef

typedef struct {
    sbyte   PD_hotX;
    sbyte   PD_hotY;
    byte    PD_mask[STANDARD_CURSOR_IMAGE_SIZE];
    byte    PD_image[STANDARD_CURSOR_IMAGE_SIZE];
} PointerDef;
     STANDARD_CURSOR_IMAGE_SIZE = 32

This structure defines a mouse pointer.


PointWWFixed

typedef struct {
    WWFixed     PF_x;
    WWFixed     PF_y;
} PointWWFixed;

These structures are used to specify graphics point coordinates. Which point structure to use depends on size of the coordinate space and accuracy required.


PrintControlAttrs

typedef WordFlags PrintControlAttrs;
    #define PCA_MARK_APP_BUSY       0x2000      /* mark busy while printing */
    #define PCA_VERIFY_PRINT        0x1000      /* verify before printing */
    #define PCA_SHOW_PROGRESS       0x0800      /* show print progress dialog box */
    #define PCA_PROGRESS_PERCENT    0x0400      /* show progress by percentage */
    #define PCA_PROGRESS_PAGE       0x0200      /* show progress by page */
    #define PCA_FORCE_ROTATION      0x0100      /* Force rotation of output */
    #define PCA_COPY_CONTROLS       0x0080      /* Copy controls are available */
    #define PCA_PAGE_CONTROLS       0x0040      /* Page range controls available */
    #define PCA_QUALITY_CONTROLS    0x0020      /* Quality controls available */
    #define PCA_USES_DIALOG_BOX     0x0010      /* Dialog box should appear */
    #define PCA_GRAPHICS_MODE       0x0008      /* Supports graphics mode output */
    #define PCA_TEXT_MODE           x0004       /* Supports text mode output */
    #define PCA_DEFAULT_QUALITY     0x0002      /* default print quality */

PrintControlFeatures

    typedef ByteFlags PrintControlFeatures;
    #define PRINTCF_PRINT_TRIGGER   0x02    /* wants a print trigger */
    #define PRINTCF_FAX_TRIGGER     0x01    /* wants a fax trigger */

PrintControlStatus

typedef enum {
    PCS_PRINT_BOX_VISIBLE,
    PCS_PRINT_BOX_NOT_VISIBLE
} PrintControlStatus;

PrintControlToolboxFeatures

typedef ByteFlags PrintControlToolboxFeatures;
    #define PRINTCTF_PRINT_TRIGGER  0x02    /* wants a print tool trigger */
    #define PRINTCTF_FAX_TRIGGER    0x01    /* wants a fax tool trigger */

PrinterDriverType

typedef enum PrinterDriverType;
    PDT_PRINTER,
    PDT_PLOTTER,
    PDT_FACSIMILE,
    PDT_CAMERA,
    PDT_OTHER,
} PrinterDriverType;

This enumerated type indicates the type of printer driver that we are dealing with.


PrinterOutputModes

typedef ByteFlags PrinterOutputModes;
    #define POM_GRAPHICS_LOW        0x10
    #define POM_GRAPHICS_MEDIUM     0x08
    #define POM_GRAPHICS_HIGH       0x04
    #define POM_TEXT_DRAFT          0x02
    #define POM_TEXT_NLQ            0x01
    #define PRINT_GRAPHICS = (POM_GRAPHICS_LOW | POM_GRAPHICS_MEDIUM |
                             POM_GRAPHICS_HIGH )
    #define PRINT_TEXT = (POM_TEXT_DRAFT | POM_TEXT_NLQ)

PrintQualityEnum

typedef enum {
    PQT_HIGH,
    PQT_MEDIUM,
    PQT_LOW
} PrintQualityEnum;

ProtocolNumber

typedef struct {
    word    PN_major;
    word    PN_minor;
} ProtocolNumber;

Defines the protocol level of a file, geode, or document. PN_major represents significant compatibility comparisons, and PN_minor represents less significant differences. If the major protocol is different between two items, they are incompatible. If the minor protocol is different, they may or may not be incompatible.


QueueHandle

typedef Handle QueueHandle;

QuickSortParameters

typedef struct _QuickSortParameters {
    word _pascal (*QSP_compareCallback) (void *     el1, 
                                         void *     el2,
                                         word       valueForCallback));
    void _pascal (*QSP_lockCallback) (void *el, word valueForCallback));
    void _pascal (*QSP_unlockCallback) (void *el, word valueForCallback));
    word        QSP_insertLimit;
    word        QSP_medianLimit;

    /* These are set internally by the quicksort algorithm and should not
     * be set by the caller: */
    word        QSP_nLesser;
    word        QSP_nGreater;
} QuickSortParameters;

This structure is passed to ArrayQuickSort. The fields have the following meanings:

*QSP_compareCallback
This routine is called to compare elements. It should be declared _pascal. It should return a positive value if *el1 ought to come before *el2 in the sorted list; a negative value if *el1 ought to come after *el2 in the sorted list; and zero if it doesn’t matter which comes first.

QSP_lockCallback*
This routine is called before **ArrayQuickSort
examines or changes any element. It should be declared _pascal. You can pass a null function pointer, indicating that no locking callback routine should be called.

QSP_lockCallback*
This routine is called after **ArrayQuickSort
examines or changes any element. It should be declared _pascal. You can pass a null function pointer, indicating that no unlocking callback routine should be called.

QSP_insertLimit
If there are fewer than QSP_insertLimit elements in a sublist, ArrayQuickSort will use an insertion sort for that sublist, rather than a QuickSort.

QSP_medianLimit
If there are fewer than QSP_medianLimit elements in a sublist, ArrayQuickSort will use the first element as a partition, instead of searching for the median element.


RangeEnumCallbackParams

typedef struct {
    RangeEnumParams     *RECP_params;
    word                RECP_row;
    word                RECP_column;
    word                RECP_cellData;
} RangeEnumCallbackParams;

This structure is passed to the callback routine for RangeEnum().


RangeEnumFlags

typedef ByteFlags RangeEnumFlags;
    #define REF_ALL_CELLS                   0x80
    #define REF_NO_LOCK                     0x40
    #define REF_COLUMN_FLAGS                0x20
    #define REP_MATCH_COLUMN_FLAGS          0x10
    #define REF_CELL_ALLOCATED              0x08
    #define REF_CELL_FREED                  0x04
    #define REF_OTHER_ALLOC_OR_FREE         0x02
    #define REF_COLUMN_FLAGS_MODIFIED       0x01

These flags are used by RangeEnum().


RangeEnumParams

typedef struct {
    PCB(RANGE_ENUM_CALLBACK_RETURN_TYPE, REP_callback,
                                    (RangeEnumCallbackParams));
    Rectangle               REP_bounds;
    byte                    REP_columnFlags;
    word                    *REP_columnFlagsArray;
    CellFunctionParameters  *REP_cfp;
    byte                    REP_matchFlags;
    word                    *REP_locals;
} RangeEnumParams;

This structure is used by two routines, RangeEnum() and CellGetExtent(). When it is used by RangeEnum(), the structure specifies all the details about how RangeEnum() will function. CellGetExtent() is passed a blank RangeEnumParams structure; it fills in the REP_bounds field.

The callback routine, if any, should be declared _pascal.

Include: cell.h


RangeInsertParams

typedef struct {
    Rectangle       RIP_bounds;
    Point           RIP_delta;
    dword           RIP_cfp;
} RangeInsertParams;

RangeInsert() is passed the address of a RangeInsertParams structure. This structure specifies three things:

RIP_bounds - Which cells should be shifted.

RIP_delta - How far the cells should be shifted and in which direction.

RIP_cfp - The address of the CellFunctionParameters structure. You don’t have to initialize this; the routine will do so automatically.

Include: cell.h

See Also: RangeInsert()


RangeSortError

typedef enum /* word */ {
    RSE_NO_ERROR,
    RSE_UNABLE_TO_ALLOC,
} RangeSortError;

RangeSortCellExistFlags

typedef ByteFlags RangeSortCellExistsFlags;
    #define RSCEF_SECOND_CELL_EXISTS    0x02
    #define RSCEF_FIRST_CELL_EXISTS     0x01

RangeSortFlags

typedef ByteFlags RangeSortFlags;
    #define RSF_SORT_ROWS               0x80
    #define RSF_SORT_ASCENDING          0x40
    #define RSF_IGNORE_CASE             0x20

RangeSortParams

typedef struct {
    Rectangle       RSP_range;
    Point           RSP_active;
    dword           RSP_callback;
    byte            RSP_flags; /* RangeSortFlags */
    dword           RSP_cfp;
    word            RSP_sourceChunk;
    word            RSP_destChunk;
    word            RSP_base;
    dword           RSP_lockedEntry;
    byte            RSP_cachedFlags;
} RangeSortParams;

Rectangle

typedef struct {
    sword   R_left;
    sword   R_top;
    sword   R_right;
    sword   R_bottom;
} Rectangle;

This structure represents a graphics rectangle.


RectDWord

typedef struct {
    sdword  RD_left;
    sdword  RD_top;
    sdword  RD_right;
    sdword  RD_bottom;
} RectDWord;

This structure represents a graphics rectangle.


RectRegion

typedef struct {
    word    RR_y1M1;
    word    RR_eo1;     /* EOREGREC */
    word    RR_y2;
    word    RR_x1;
    word    RR_x2;
    word    RR_eo2;     /* EOREGREC */
    word    RR_eo3;     /* EOREGREC */
} RectRegion;

RefElementHeader

typedef struct {
     WordAndAHalf REH_refCount;
} RefElementHeader;

Region

typedef word Region;
    #define EOREGREC                0x8000
    #define EOREG_HIGH               0x80

This structure represents a region of a graphics coordinate space.

Regions are described in terms of a rectangular array (thus the similarity to bitmaps). Instead of specifying an on/off value for each pixel, however, regions assume that the region will be fairly undetailed and that the data structure can thus be treated in the manner of a sparse array. Only the cells in which the color value of a row changes are recorded. The tricky part here is keeping in mind that when figuring out whether or not a row is the same as a previous row, the system works its way up from the bottom, so that you should compare each row with the row beneath it to determine whether it needs an entry.

The easiest region to describe is the null region, which is a special case described by a single word with the value EOREGREC (a constant whose name stands for End Of REGion RECord value). Describing a non-null region requires several numbers.

The first four numbers of the region description give the bounds of the region. Next come one or more series of numbers. Each series describes a row, specifying which pixels of that row are part of the region. The only rows which need to be described are those which are different from the row below. The first number of each row description is the row number, its y coordinate. The last number of each series is a special token, EOREGREC, which lets the kernel know that the next number of the description will be the start of another row. Between the row number and EOREGREC are the column numbers where the pixels toggle on and off. The first number after the row number corresponds to the first column in which the pixel is on; the next number is the first subsequent column in which the pixel is off; and so on.


RegionFillRule

typedef ByteEnum RegionFillRule;
    #define ODD_EVEN            0
    #define WINDING             1

This enumerated type determines how a path or region should be filled. Winding fill is more versatile, but requires that the path or polygon’s edges run in the correct direction.


ReleaseNumber

typedef struct {
    word    RN_major;
    word    RN_minor;
    word    RN_change;
    word    RN_engineering;
} ReleaseNumber;

Used to record what version a file, document, or geode is. This represents the release level; the most significant numbers are RN_major and RN_minor. The other fields are typically used only internally to a manufacturer.


ResolveStandardPathFlags

typedef WordFlags FileResolveStandardPathFlags;
    #define FRSPF_ADD_DRIVE_NAME            0x0002
    #define FRSPF_RETURN_FIRST_DIR          0x0001

RGBColorAsDWord

typedef dword RGBColorAsDWord;
    RGB_RED(val) ( val & 0xff)
    RGB_GREEN(val) ( (val >> 8) & 0xff )
    RGB_BLUE(val) ( (val >> 16) & 0xff )
    RGB_INDEX(val) ( (val >> 24) & 0xff )

See the ColorQuad data structure to find out the meanings of the fields.


RGBDelta

typedef struct {
    byte    RGBD_red;
    byte    RGBD_green;
    byte    RGBD_blue;
} RGBDelta;

RGBTransfer

typedef struct {
    byte    RGBT_red[256];
    byte    RGBT_green[256];
    byte    RGBT_blue[256];
} RGBTransfer;

RGBValue

typedef struct {
    byte    RGB_red;
    byte    RGB_green;
    byte    RGB_blue;
} RGBValue;

SampleFormat

typedef struct {
    DACSampleFormat SMID_format:15;
    DACReferenceByte SMID_reference:1;
} SampleFormat;

SampleFormatDescription

typedef struct {
     word   SFD_manufact;
     word   SFD_format;
     word   SFD_rate;
     word   SFD_playFlags;
} SampleFormatDescription;

This structure acts as a header for a sampled sound, giving format information needed to properly interpret the sound data.


SansFace

typedef byte SansFace;
    #define SF_A_CLOSED 0x0080
    #define SF_A_OPEN 0x0000

sbyte

typedef char sbyte;

ScannerToken

typedef struct {
    ScannerTokenType                ST_type;
    ScannerTokenData                ST_data;
} ScannerToken;

ScannerTokenCellData

typedef struct {
    CellReference           STCD_cellRef;
} ScannerTokenCellData;

ScannerTokenData

typedef union {
    ScannerTokenNumberData                  STD_number;
    ScannerTokenStringData                  STD_string;
    ScannerTokenCellData                    STD_cell;
    ScannerTokenIdentifierData              STD_identifier;
    ScannerTokenOperatorData                STD_operator;
} ScannerTokenData;

ScannerTokenIdentifierData

typedef struct {
    word        STID_start;
} ScannerTokenIdentifierData;

ScannerTokenNumberData

typedef struct {
    FloatNum        STND_value;
} ScannerTokenNumberData;

ScannerTokenOperatorData

typedef struct {
    OperatorType            STOD_operatorID;
} ScannerTokenOperatorData;

ScannerTokenStringData

typedef struct {
    word    STSD_start;
    word    STSD_length;
} ScannerTokenStringData;

ScannerTokenType

typedef ByteEnum ScannerTokenType;
    #define SCANNER_TOKEN_NUMBER                        0
    #define SCANNER_TOKEN_STRING                        1
    #define SCANNER_TOKEN_CELL                          2
    #define SCANNER_TOKEN_END_OF_EXPRESSION             3
    #define SCANNER_TOKEN_OPEN_PAREN                    4
    #define SCANNER_TOKEN_CLOSE_PAREN                   5
    #define SCANNER_TOKEN_IDENTIFIER                    6
    #define SCANNER_TOKEN_OPERATOR                      7
    #define SCANNER_TOKEN_LIST_SEPARATOR                8

ScriptAttrAsWord

typedef word ScriptAttrAsWord;
    /*  High byte is a vertical offset, as a fraction of the font size.
        Low byte is a fractional scale to use.
        Thus, setting a subscript attr to 0x8020 would result in subscript
        characters being printed half a line down and at 1/4 normal size. */

This structure specifies the offset and scale factor with which sub- and superscript characters should draw.


ScriptFace

typedef byte ScriptFace;
    #define SF_CURSIVE 0x0080
    #define SF_CALLIGRAPHIC 0x0000

sdword

typedef long sdword;

segment

typedef word segment;

SemaphoreError

typedef enum {
    SE_NO_ERROR,            /* No error occurred */
    SE_TIMEOUT,             /* The semaphore timed out before
                             * it could be grabbed by the thread */
    SE_PREVIOUS_OWNER_DIED  /* The current holder of the semaphore
                             * exited abnormally */
} SemaphoreError;

Determines the error encountered by semaphore and threadlock routines such as ThreadPSem() and ThreadPTimedSem().


SerialBaud

typedef enum
    {
        SERIAL_BAUD_115200          = 1,
        SERIAL_BAUD_57600           = 2,
        SERIAL_BAUD_38400           = 3,
        SERIAL_BAUD_19200           = 6,
        SERIAL_BAUD_14400           = 8,
        SERIAL_BAUD_9600            = 12,
        SERIAL_BAUD_7200            = 16,
        SERIAL_BAUD_4800            = 24,
        SERIAL_BAUD_3600            = 32,
        SERIAL_BAUD_2400            = 48,
        SERIAL_BAUD_2000            = 58,
        SERIAL_BAUD_1800            = 64,
        SERIAL_BAUD_1200            = 96,
        SERIAL_BAUD_600             = 192,
        SERIAL_BAUD_300             = 384
    } SerialBaud;

SerialFormat

typedef ByteFlags SerialFormat;
    #define SERIAL_FORMAT_DLAB_OFFSET       (7)
    #define SERIAL_FORMAT_DLAB              (0x01 << SERIAL_FORMAT_DLAB_OFFSET)

    #define SERIAL_FORMAT_BREAK_OFFSET      (6)
    #define SERIAL_FORMAT_BREAK             (0x01 << SERIAL_FORMAT_BREAK_OFFSET)

    #define SERIAL_FORMAT_PARITY_OFFSET     (3)
    #define SERIAL_FORMAT_PARITY            (0x07 << SERIAL_FORMAT_PARITY_OFFSET)

    #define SERIAL_FORMAT_EXTRA_STOP_OFFSET (2)
    #define SERIAL_FORMAT_EXTRA_STOP        (0x01 << \ 
                                            SERIAL_FORMAT_EXTRA_STOP_OFFSET)

    #define SERIAL_FORMAT_LENGTH_OFFSET     (0)
    #define SERIAL_FORMAT_LENGTH            (0x03 << SERIAL_FORMAT_LENGTH_OFFSET)

SerialMode

typedef enum {
        SERIAL_MODE_RAW,
        SERIAL_MODE_RARE,
        SERIAL_MODE_COOKED
} SerialMode;

SerialModem

typedef ByteFlags SerialModem;
    #define SERIAL_MODEM_OUT2_OFFSET    (3)
    #define SERIAL_MODEM_OUT2           (0x01 << SERIAL_MODEM_OUT2_OFFSET)

    #define SERIAL_MODEM_OUT1_OFFSET    (2)
    #define SERIAL_MODEM_OUT1           (0x01 << SERIAL_MODEM_OUT1_OFFSET)

    #define SERIAL_MODEM_RTS_OFFSET     (1)
    #define SERIAL_MODEM_RTS            (0x01 << SERIAL_MODEM_RTS_OFFSET)

    #define SERIAL_MODEM_DTR_OFFSET     (0)
    #define SERIAL_MODEM_DTR            (0x01 << SERIAL_MODEM_DTR_OFFSET)

SerialPortNum

typedef enum
    {
        SERIAL_COM1         = 0,
        SERIAL_COM2         = 2,
        SERIAL_COM3         = 4,
        SERIAL_COM4         = 6,
        SERIAL_COM5         = 8,
        SERIAL_COM6         = 10,
        SERIAL_COM7         = 12,
        SERIAL_COM8         = 14
    } SerialPortNum;

SerialUnit

typedef enum
    {
        SERIAL_COM1         = 0,
        SERIAL_COM2         = 2,
        SERIAL_COM3         = 4,
        SERIAL_COM4         = 6,
        SERIAL_COM5         = 8,
        SERIAL_COM6         = 10,
        SERIAL_COM7         = 12,
        SERIAL_COM8         = 14
    } SerialUnit;

SemaphoreHandle

typedef Handle SemaphoreHandle;

SerifFace

typedef byte SerifFace;
    #define SF_SLAB     0x00c0
    #define SF_MODERN   0x0080
    #define SF_TRANS    0x0040
    #define SF_OLD      0x0000

SetPalType

typedef ByteEnum SetPalType;
    #define SPT_DEFAULT             0
    #define SPT_CUSTOM              1

ShiftState

typedef ByteFlags ShiftState;
    #define SS_LALT                 0x80
    #define SS_RALT                 0x40
    #define SS_LCTRL                0x20
    #define SS_RCTRL                0x10
    #define SS_LSHIFT               0x08
    #define SS_RSHIFT               0x04
    #define SS_FIRE_BUTTON_1        0x02
    #define SS_FIRE_BUTTON_2        0x01

Modifiers which will be incorporated into input information. Corresponds to alt keys, control keys, shift keys, or special system modifiers. Note that these bits will only be set if not already accounted for; that is, if you are passed the character “E”, the shift modifiers of this structure will not be marked.


SoundDriverCapability

typedef WordFlags SoundDriverCapability;
    #define SDC_NOISE               0x8000
    #define SDC_WAVEFORM            0x6000
    #define SDC_TIMBRE              0x1800
    #define SDC_ENVELOPE            0x0600

typedef WordFlags SoundDriverNoiseCapability;
    #define SDNC_NO_NOISE           0x0000
    #define SDNC_WHITE_NOISE            0x8000

typedef WordFlags SoundDriverWaveFormCapability
    #define SDWFC_NONE              0x0000
    #define SDWFC_SELECT            0x2000
    #define SDWFC_GENERATE          0x4000

typedef WordFlags SoundDriverTimbreCapability;
    #define SDTC_TONE_GENERATOR 0x0000
    #define SDTC_ADDITIVE           0x0800
    #define SDTC_MODULATOR          0x1000
    #define SDTC_SELECTIVE          0x1800

typedef WordFlags SoundDriverEnvelopeCapability;
    #define SDEC_NONE               0x0000
    #define SDEC_ADSR               0x0200
    #define SDEC_DSP                0x0400

These fields encode information about what the sound driver is capable of in terms of music synthesis.


SoundPlayFlags

typedef WordFlags SoundPlayFlags;
    #define SPF_HIGH_PRIORITY               0x8000

SoundPriority

typedef enum {
     SP_SYSTEM_LEVEL=10,        /* most urgent */
     SP_ALARM=20,
     SP_STANDARD=30,
     SP_GAME=40,
     SP_BACKGROUND=50           /* least urgent */
} SoundPriority;

#define SP_IMMEDIATE            -1
#define SP_THEME                +1

If the user’s sound device can’t play all requested sounds, it will use SoundPriority values to determine which sounds are the most important.

The highest priority sound you may construct using these values is (SP_SYSTME_LEVEL + SP_IMMEDIATE). The least priority sound would be (SP_BACKGROUND + SP_THEME).


SoundSteamDeltaTimeType

typedef enum {
     SSDTT_MSEC=8,                  /* wait for N mili seconds */
     SSDTT_TICKS=10,                /* wait for N ticks */
     SSDTT_TEMPO=12,                /* wait for N beats */
} SoundStreamDeltaTimeType;
    /* The following macros may help when constructing music buffers */
    #define DeltaTick(time)         SSDTT_TICKS, time
    #define DeltaMS(time)           SSDTT_MSEC, time
    #define DeltaTempo(time)        SSDTT_TEMPO, time

These are the units by which you can specify a sound’s duration: milliseconds, timer “ticks” (each 1/60 second), or by means of an independently supplied tempo.


SoundStreamEvents

typedef enum {
     SSE_VOICE_ON=0,            /* turn on voice event */
     SSE_VOICE_OFF=2,           /* turn off voice event */
     SSE_CHANGE=4,              /* change instrument */
     SSE_GENERAL=6              /* system-specific event */
} SoundStreamEvents;
    /* The following macros may help when constructing music buffers */
    #define General(command)  SSE_GENERAL, command

    #define Rest(duration)  General(GE_NO_EVENT), DeltaTick(duration)

    #define VoiceOn(voice,freq,attack)  SSE_VOICE_ON, voice, freq, attack
    #define VoiceOff(voice) SSE_VOICE_OFF, voice
    #define ChangeEnvelope(voice, instrument, table)  \
                            SSE_CHANGE, voice, instrument, table

    #define SoundNote(voice,freq,duration,attack)  \
                    VoiceOn(voice, freq, attack), DeltaTempo(duration), VoiceOff(voice)
    #define Staccato(voice,freq,duration,attack) \
                    VoiceOn(voice, freq, attack), DeltaTempo(((duration*0x03)/0x04)), \
                    VoiceOff(voice), DeltaTempo((duration/0x4))
    #define Natural(voice,freq,duration,attack) \
                    VoiceOn(voice, freq, attack), DeltaTempo(((duration*0x07)/0x08)),
                    VoiceOff(voice), DeltaTempo((duration/0x8))
    #define Legato(voice,freq,duration,attack)  \
                    SoundNote(voice, freq, duration, attack)

These are the “events” that make up a music buffer.


SoundStreamSize

typedef word SoundStreamSize;
    #define SSS_ONE_SHOT 128    /* 128 bytes (very small) */
    #define SSS_SMALL 256       /* 256 bytes */
    #define SSS_MEDIUM 512      /* 512 bytes (nice size) */
    #define SSS_LARGE 1024 

SoundStreamType

#define SST_ONE_SHOT        128
#define SST_SMALL           256
#define SST_MEDIUM          512
#define SST_LARGE           1024

SpecialFunctions

typedef enum /* word */ {
    SF_FILENAME,
    SF_PAGE,
    SF_PAGES,
} SpecialFunctions;

SpoolError

typedef enum /* word */ {
    SERROR_NO_SPOOL_FILE,
    SERROR_NO_PRINT_DRIVER,
    SERROR_NO_PORT_DRIVER,
    SERROR_NO_PRINTERS,
    SERROR_NO_MODE_AVAIL,
    SERROR_CANT_ALLOC_BITMAP,
    SERROR_NO_VIDMEM_DRIVER,
    SERROR_MANUAL_PAPER_FEED,
    SERROR_CANT_LOAD_PORT_DRIVER,
    SERROR_PORT_BUSY,
    SERROR_TEST_NO_PAPER,
    SERROR_TEST_OFFLINE,
    SERROR_TEST_PARALLEL_ERROR,
    SERROR_MISSING_COM_PORT,
    SERROR_PRINT_ON_STARTUP
} SpoolError;

SpoolFileName

typedef struct {
    char    SFN_base[5];
    char    SFN_num[3];
    char    SFN_ext[5];
} SpoolFileName;

SpoolInfoType

typedef enum /* word */ {
    SIT_JOB_INFO,
    SIT_QUEUE_INFO
} SpoolInfoType;

SpoolOpStatus

typedef enum /* word */ {
    SPOOL_OPERATION_SUCCESSFUL,
    SPOOL_JOB_NOT_FOUND,
    SPOOL_QUEUE_EMPTY,
    SPOOL_QUEUE_NOT_EMPTY,
    SPOOL_QUEUE_NOT_FOUND,
    SPOOL_CANT_VERIFY_PORT,
    SPOOL_OPERATION_FAILED
} SpoolOpStatus;

SpoolTimeStruct

typedef struct {
    byte    STS_second;         /* second of the minute (0-59) */
    byte    STS_minute;         /* minute of the hour (0-59) */
    byte    STS_hour;           /* hour of the day (0-23) */
} SpoolTimeStruct;

SpoolVerifyAction

typedef enum {
    SVA_NO_MESSAGE,
    SVA_WARNING,
    SVA_PRINTING
} SpoolVerifyAction;

StandardDialogBoxType

typedef enum {
    SDBT_FILE_NEW_CANNOT_CREATE_TEMP_NAME,
    SDBT_FILE_NEW_INSUFFICIENT_DISK_SPACE,
    SDBT_FILE_NEW_ERROR,
    SDBT_FILE_NEW_WRITE_PROTECTED,
    SDBT_FILE_OPEN_SHARING_DENIED,
    SDBT_FILE_OPEN_FILE_NOT_FOUND,
    SDBT_FILE_OPEN_INVALID_VM_FILE,
    SDBT_FILE_OPEN_INSUFFICIENT_DISK_SPACE,
    SDBT_FILE_OPEN_ERROR,
    SDBT_FILE_OPEN_READ_ONLY,
    SDBT_FILE_OPEN_VM_DIRTY,
    SDBT_FILE_OPEN_APP_MORE_RECENT_THAN_DOC,
    SDBT_FILE_OPEN_DOC_MORE_RECENT_THAN_APP,
    SDBT_FILE_SAVE_INSUFFICIENT_DISK_SPACE,
    SDBT_FILE_SAVE_ERROR,
    SDBT_FILE_SAVE_WRITE_PROTECTED,
    SDBT_FILE_SAVE_AS_FILE_EXISTS,
    SDBT_FILE_SAVE_AS_SHARING_DENIED,
    SDBT_FILE_CLOSE_SAVE_CHANGES,
    SDBT_FILE_CLOSE_ATTACH_DIRTY,
    SDBT_FILE_REVERT_CONFIRM,
    SDBT_FILE_REVERT_ERROR,
    SDBT_FILE_ATTACH_DISK_NOT_FOUND,
    SDBT_CANNOT_OPEN_VOLUME_SELECTED,
    SDBT_QUERY_SAVE_AS_TEMPLATE,
    SDBT_QUERY_SAVE_AS_EMPTY,
    SDBT_QUERY_SAVE_AS_DEFAULT,
    SDBT_QUERY_SAVE_AS_MULTI_USER,
    SDBT_QUERY_SAVE_AS_PUBLIC,
    SDBT_QUERY_RESET_EMPTY_FILE,
    SDBT_QUERY_RESET_DEFAULT_FILE,
    SDBT_CANNOT_OPEN_EMPTY_FILE
} StandardDialogBoxType;

StandardDialogParams

typedef struct {
    word                                 SDP_customFlags;
    char                                *SDP_customString;
    char                                *SDP_stringArg1;
    char                                *SDP_stringArg2;
    StandardDialogResponseTriggerTable  *SDP_customTriggers;
} StandardDialogParams;

StandardDialogOptrParams

typedef struct {
    word    SDOP_customFlags;
    optr    SDOP_customString;
    optr    SDOP_stringArg1;
    optr    SDOP_stringArg2;
    optr    SDOP_customTriggers;
} StandardDialogOptrParams;

StandardDialogResponseTriggerEntry

typedef struct {
    optr    SDRTE_moniker;
    word    SDRTE_responseValue;
} StandardDialogResponseTriggerEntry;

StandardDialog1ResponseTriggerTable

typedef struct {
     word                                   SD1RTT_numTriggers;
     StandardDialogResponseTriggerEntry     SD1RTT_trigger1;
} StandardDialog1ResponseTriggerTable;

StandardDialog2ResponseTriggerTable

typedef struct {
     word                                   SD2RTT_numTriggers;
     StandardDialogResponseTriggerEntry     SD2RTT_trigger1;
     StandardDialogResponseTriggerEntry     SD2RTT_trigger2;
} StandardDialog2ResponseTriggerTable;

StandardDialog3ResponseTriggerTable

typedef struct {
     word                                   SD3RTT_numTriggers;
     StandardDialogResponseTriggerEntry     SD3RTT_trigger1;
     StandardDialogResponseTriggerEntry     SD3RTT_trigger2;
     StandardDialogResponseTriggerEntry     SD3RTT_trigger3;
} StandardDialog3ResponseTriggerTable;

StandardDialog4ResponseTriggerTable

typedef struct {
     word                                   SD4RTT_numTriggers;
     StandardDialogResponseTriggerEntry     SD4RTT_trigger1;
     StandardDialogResponseTriggerEntry     SD4RTT_trigger2;
     StandardDialogResponseTriggerEntry     SD4RTT_trigger3;
     StandardDialogResponseTriggerEntry     SD4RTT_trigger4;
} StandardDialog4ResponseTriggerTable;

StandardPath

typedef enum /* word */ {
    SP_NOT_STANDARD_PATH=0,
    SP_TOP=1,
    SP_APPLICATION=3,
    SP_DOCUMENT=5,
    SP_SYSTEM=7,
    SP_PRIVATE_DATA=9,
    SP_STATE=11,
    SP_FONT=13,
    SP_SPOOL=15,
    SP_SYS_APPLICATION=17,
    SP_PUBLIC_DATA=19,
    SP_MOUSE_DRIVERS=21,
    SP_PRINTER_DRIVERS=23,
    SP_FILE_SYSTEM_DRIVERS=25,
    SP_VIDEO_DRIVERS=27,
    SP_SWAP_DRIVERS=29,
    SP_KEYBOARD_DRIVERS=31,
    SP_FONT_DRIVERS=33,
    SP_IMPORT_EXPORT_DRIVERS=35,
    SP_TASK_SWITCH_DRIVERS=37,
    SP_HELP_FILES=39,
    SP_TEMPLATE=41,
    SP_POWER_DRIVERS=43,
    SP_DOS_ROOM=45,
    SP_HWR=47,
    SP_WASTE_BASKET=49,
    SP_BACKUP=51,
    SP_PAGER_DRIVERS=53
    SP_DUMMY=256
} StandardPath;

Most routines which are passed disk handles can also be passed members of the StandardPath enumerated type. Standard paths let applications access files in a disk-independent manner. Standard paths are usually arranged in a certain hierarchy; for example, the STATE directory usually belongs to the PRIVDATA directory. However, this is entirely at the user’s discretion; applications may not make any assumption about how the standard paths are arranged.


StandardSoundType

typedef enum /* word */ {
    SST_ERROR,                  /* Sound produced when an Error box comes up. */
    SST_WARNING,                /* General warning beep sound */
    SST_NOTIFY,                 /* General notify beep */
    SST_NO_INPUT,               /* Sound produced when the user's
                                 * keystrokes/mouse presses are not going
                                 * anywhere */
    SST_CUSTOM_BUFFER=0xfffe,   /* Allows applications to play a custom
                                 * note buffer and does all the checking
                                 * for sound being off, etc. */
    SST_CUSTOM_NOTE=0xffff      /* Allows applications to play a custom
                                 * note and does all the checking for sound
                                 * being off, etc. */
} StandardSoundType;

StreamBlocker

typedef enum{
        STREAM_BLOCK            = 2,
        STREAM_NO_BLOCK         = 0
} StreamBlocker;

StreamError

typedef enum{
        STREAM_WOULD_BLOCK,
        STREAM_CLOSING,
        STREAM_CANNOT_ALLOC,
        STREAM_BUFFER_TOO_LARGE,
        STREAM_CLOSED,
        STREAM_SHORT_READ_WRITE
} StreamError;

StreamOpenFlags

typedef enum {
        STREAM_OPEN_NO_BLOCK                = 0x01,
        STREAM_OPEN_TIMEOUT             = 0x02
} StreamOpenFlags

StreamToken

typedef Handleword StreamToken;

StreamRoles

typedef enum {
        STREAM_ROLES_WRITER             = 0,
        STREAM_ROLES_READER             = -1,
        STREAM_ROLES_BOTH               = -2
} StreamRoles;

StyleChunkDesc

typedef struct {
    VMFileHandle        SCD_vmFile;
    word                SCD_vmBlockOrMemHandle;
    ChunkHandle         SCD_chunk;
} StyleChunkDesc;

StyleElementFlags

typedef WordFlags StyleElementFlags;
    #define SEF_DISPLAY_IN_TOOLBOX                      0x8000

StyleElementHeader

typedef struct {
    NameArrayElement        SEH_meta;
    word                    SEH_baseStyle;
    StyleElementFlags       SEH_flags;
    dword                   SEH_privateData;
} StyleElementHeader;

StyleSheetElementHeader

typedef struct {
     RefElementHeader           SSEH_meta;
     word                       SSEH_style;
} StyleSheetElementHeader;

SupportedEnvelopeFormat

typedef enum {
     SEF_NO_FORMAT,
     SEF_SBI_FORMAT,
     SEF_CTI_FORMAT
} SupportedEnvelopeFormat;

These values specify how a sound device can simulate musical instruments, if it can at all.


sword

typedef signed short sword;

SysConfigFlags

typedef ByteFlags SysConfigFlags;
    #define SCF_UNDER_SWAT          0x80
    #define SCF_2ND_IC              0x40
    #define SCF_RTC                 0x20
    #define SCF_COPROC              0x10
    #define SCF_RESTARTED           0x08
    #define SCF_CRASHED             0x04
    #define SCF_MCA                 0x02
    #define SCF_LOGGING             0x01

The above flags indicate the system configuration. Any or all of these flags may be set at a time; if a flag is set, the description is true. These flags are used by the kernel and can be retrieved with SysGetConfig().


SysDrawMask

typedef ByteFlags SysDrawMask;
    #define SDM_INVERSE             0x80
    #define SDM_MASK                0x7f

SysGetInfoType

See: SysGetInfo().


SysMachineType

typedef ByteEnum SysMachineType;
    #define SMT_UNKNOWN             0
    #define SMT_PC                  1
    #define SMT_PC_CONV             2
    #define SMT_PC_JR               3
    #define SMT_PC_XT               4
    #define SMT_PC_XT_286           5
    #define SMT_PC_AT               6
    #define SMT_PS2_30              7
    #define SMT_PS2_50              8
    #define SMT_PS2_60              9
    #define SMT_PS2_80              10
    #define SMT_PS1                 11

A byte-sized value indicating the type of machine running GEOS. This value can be retrieved with SysGetConfig().


SysNotifyFlags

See: SysNotify().


SysProcessorType

typedef ByteEnum SysProcessorType;
    #define SPT_8088                0
    #define SPT_8086                0
    #define SPT_80186               1
    #define SPT_80286               2
    #define SPT_80386               3
    #define SPT_80486               4

This enumerated type is a byte that indicates the type of processor on the system running GEOS. It can be retrieved with SysGetConfig().


SysShutdownType

See: SysShutdown().


SysStats

typedef struct {
    dword           SS_idleCount;       /* Idle ticks in the last second. */
    SysSwapInfo     SS_swapOuts;        /* Outward-bound swap activity. */
    SysSwapInfo     SS_swapIns;         /* Inward-bound swap actividy. */
    word            SS_contextSwitches; /* Context switches in last second. */
    word            SS_interrupts;      /* Interrupts in the last second. */
    word            SS_runQueue;        /* Runnable threads at end of
                                         * last second. */
} SysStats;

This structure is returned by SysStatistics() and represents the current performance statistics of GEOS.


SysSwapInfo

typedef struct {
    word    SSI_paragraphs;     /* Number of paragraphs swapped. */
    word    SSI_blocks;         /* Number of blocks swapped. */
} SysSwapInfo;

Structure used to represent current swap activity in SysStats structure.


SystemDrawMask

typedef ByteEnum SystemDrawMask;
    #define SDM_TILE                0
    #define SDM_SHADED_BAR          1
    #define SDM_HORIZONTAL          2
    #define SDM_VERTICAL            3
    #define SDM_DIAG_NE             4
    #define SDM_DIAG_NW             5
    #define SDM_GRID                6
    #define SDM_BIG_GRID            7
    #define SDM_BRICK               8
    #define SDM_SLANT_BRICK         9
    #define SDM_0                   89
    #define SDM_12_5                81
    #define SDM_25                  73
    #define SDM_37_5                65
    #define SDM_50                  57
    #define SDM_62_5                49
    #define SDM_75                  41
    #define SDM_87_5                33
    #define SDM_100                 25
    #define SDM_CUSTOM              0x7f
    #define SET_CUSTOM_PATTERN      SDM_CUSTOM

SystemHatch

typedef ByteEnum SystemHatch;
    #define SH_VERTICAL             0
    #define SH_HORIZONTAL           1
    #define SH_45_DEGREE            2
    #define SH_135_DEGREE           3
    #define SH_BRICK                4
    #define SH_SLANTED_BRICK        5

TargetLevel

typedef enum /* word */ {
    TL_TARGET                   = 0,
    TL_CONTENT,
    TL_GENERIC_OBJECTS          = 1000,
    TL_GEN_SYSTEM,
    TL_GEN_FIELD,
    TL_GEN_APPLICATION,
    TL_GEN_PRIMARY,
    TL_GEN_DISPLAY_CTRL,
    TL_GEN_DISPLAY,
    TL_GEN_VIEW,
    TL_LIBRARY_LEVELS           = 2000,
    TL_APPLICATION_OBJECTS      = 3000,
} TargetLevel;

TestRectReturnType

typedef ByteEnum TestRectReturnType;
    #define TRRT_OUT            0
    #define TRRT_PARTIAL        1
    #define TRRT_IN             2

TextAttr

typedef struct {
    byte                TA_colorFlag;
    RGBValue            TA_color;
    SysDrawMask         TA_mask;
    GraphicPattern      TA_pattern;
    TextStyle           TA_styleSet;
    TextStyle           TA_styleClear;
    TextMode            TA_modeSet;
    TextMode            TA_modeClear;
    WBFixed             TA_spacePad;
    FontID              TA_font;
    WBFixed             TA_size;
    sword               TA_trackKern;
} TextAttr;

TextMode

typedef ByteFlags TextMode;
    #define TM_TRACK_KERN                       0x40
    #define TM_PAIR_KERN                        0x20
    #define TM_PAD_SPACES                       0x10
    #define TM_DRAW_BASE                        0x08
    #define TM_DRAW_BOTTOM                      0x04
    #define TM_DRAW_ACCENT                      0x02
    #define TM_DRAW_OPTIONAL_HYPHENS            0x01

TextStyle

typedef ByteFlags TextStyle;
    #define TS_OUTLINE                  0x40
    #define TS_BOLD                     0x20
    #define TS_ITALIC                   0x10
    #define TS_SUPERSCRIPT              0x08
    #define TS_SUBSCRIPT                0x04
    #define TS_STRIKE_THRU              0x02
    #define TS_UNDERLINE                0x01

ThreadException

typedef enum {
    TE_DIVIDE_BY_ZERO=0,
    TE_OVERFLOW=4,
    TE_BOUND=8,
    TE_FPU_EXCEPTION=12,
    TE_SINGLE_STEP=16,
    TE_BREAKPOINT=20
} ThreadException;

Processor exceptions used primarily for debugging, these are used with ThreadHandleException().


ThreadGetInfoType

typedef enum {
    TGIT_PRIORITY_AND_USAGE,    /* high byte is thread's recent CPU usage
                                 * low byte is thread's base priority */
    TGIT_THREAD_HANDLE,         /* handle of the thread */
    TGIT_QUEUE_HANDLE,          /* handle of thread's event queue */
} ThreadGetInfoType;

Used with the routine ThreadGetInfo(), it determines the type of information returned by that routine. Use the macros TGI_PRIORITY and TGI_RECENT_CPU_USAGE to separate the TGIT_PRIORITY_AND_USAGE value into its components.


ThreadHandle

typedef Handle ThreadHandle;

ThreadLockHandle

typedef Handle ThreadLockHandle;

ThreadModifyFlags

typedef ByteFlags ThreadModifyFlags;
    #define TMF_BASE_PRIO               0x80
    #define TMF_ZERO_USAGE              0x40

Used with ThreadModify(), these flags determine what aspect of the thread is modified.


TimerCompressedDate

typedef WordFlags TimerCompressedDate;
    #define TCD_YEAR        0xfe00  /* years since 1980; e.g. 1988 is `8' */
    #define TCD_MONTH       0x01e0  /* months (1 - 12) (0 illegal) */
    #define TCD_DAY         0x001f  /* days (1-31) (0 illegal) */

TimerDateAndTime

typedef struct {
    word            TDAT_year;      /* Year based on 1980. (10 => 1990) */
    word            TDAT_month;     /* Number of month (1 through 12) */
    word            TDAT_day;       /* Number of day in month (1 through 31) */
    DaysOfTheWeek   TDAT_dayOfWeek; /* DayOfTheWeek enumeration */
    word            TDAT_hours;     /* Hour of the day (0 through 23) */
    word            TDAT_minutes;   /* Minute in the hour (0 through 59) */
    word            TDAT_seconds;   /* Second in the minute (0 through 59) */
} TimerDateAndTime;

This structure is used to keep track of the current time and date.


TimerHandle

typedef Handle TimerHandle;

TimerType

See: TimerStart().


ToggleState

typedef ByteFlags ToggleState;
    #define TS_CAPSLOCK             0x80
    #define TS_NUMLOCK              0x40
    #define TS_SCROLLLOCK           0x20

This structure describes the state of certain “toggles” which will affect how input is interpreted. These toggles correspond to the caps lock, num lock, and scroll lock keys.


TokenChars

typedef char TokenChars[TOKEN_CHARS_LENGTH]; /* TOKEN_CHARS_LENGTH=4 */

TokenDBItem

typedef DBGroupAndItem TokenDBItem;

TokenEntry

typedef struct {
    GeodeToken      TE_token;       /* A GeodeToken structure for this file */
    TokenDBItem     TE_monikerList; /* A list of monikers for this token */
    TokenFlags      TE_flags;       /* Flags indicating relocation status */
    ReleaseNumber   TE_release;     /* Release number of the token DB */
    ProtocolNumber  TE_protocol;    /* Protocol number of the toke DB */
} TokenEntry;

Used for the token entry in the map item of the token database, this structure identifies the structures and other information of each token. The TE_monikerList field points to a chunk containing the item numbers of the chunks of the token.


TokenFlags

typedef WordFlags TokenFlags;
    #define TF_NEED_RELOCATION              0x8000

Used by token management routines, this flags record indicates whether the token has fields which must be relocated when the token is loaded or unloaded.


TokenGroupEntry

typedef struct {
    TokenIndexType  TGE_type;           /* The type of structure this is. */
    GroupType       TGE_groupType;      /* The type of the group item. */
    word            TGE_groupNum;       /* The number of the group. */
    word            TGE_groupSize;      /* The size of the group. */
} TokenGroupEntry;

Used to index token groups in the token database.


TokenGroupType

typedef enum {
    TGT_MAP_GROUP,              /* The TokenGroupEntry is a map group. */
    TGT_MONIKER_LIST_GROUP,     /* The TokenGroupEntry is a moniker list group. */
    TGT_TEXT_MONIKER_GROUP,     /* The TokenGroupEntry is a text moniker group. */
    TGT_CGA_MONIKER_GROUP,      /* The TokenGroupEntry is a CGA moniker group. */
    TGT_EGA_MONIKER_GROUP,      /* The TokenGroupEntry is an EGA moniker group. */
    TGT_VGA_MONIKER_GROUP,      /* The TokenGroupEntry is a VGA moniker group. */
    TGT_HGC_MONIKER_GROUP,      /* The TokenGroupEntry is an HGC moniker group. */
} TokenGroupType;

This enumerated type describes which type of moniker group is stored in the particular chunk.


TokenIndexType

typedef enum {
    TIT_TOKEN_ENTRY,        /* The type is a TokenEntry structure. */
    TIT_GROUP_ENTRY,        /* The type is a GroupEntry structure. */
} TokenIndexType;

Used to indicate the types of structures that may be stored in the token database’s map item.


TokenMonikerInfo

typedef struct {
    TokenDBItem TMI_moniker;
    word        TMI_fileFlag;   /* 0 if token is in shared token DB file; 
                                 * Non-0 if it's in local file */
} TokenMonikerInfo;

TokenRangeFlags

typedef WordFlags TokenRangeFlags;
    #define TRF_ONLY_GSTRING            0x8000
    #define TRF_ONLY_PASSED_MANUFID     0x4000
    #define TRF_UNUSED                  0x3fff

TransError

typedef enum {
     TE_NO_ERROR, /* No error */
     TE_ERROR, /* General error */
     TE_INVALID_FORMAT, /* Format is invalid */
     TE_IMPORT_NOT_SUPPORTED, /* Format is not supported for export */
     TE_EXPORT_NOT_SUPPORTED, /* Format is not supported for export */
     TE_IMPORT_ERROR, /* General error during import */
     TE_EXPORT_ERROR, /* General error during export */
     TE_FILE_ERROR, /* Generic file error */
     TE_DISK_FULL, /* The disk is full */
     TE_FILE_OPEN, /* Error in opening a file */
     TE_FILE_READ, /* Error in reading from a file */
     TE_FILE_WRITE, /* Error in writing to a file */
     TE_FILE_TOO_LARGE, /* File is too large to process */
     TE_OUT_OF_MEMORY, /* Insufficient memory for import/export /
     TE_METAFILE_CREATION_ERROR, /* Error in creating the metafile */
     TE_EXPORT_FILE_EMPTY, /* File to be exported is empty */
     TE_CUSTOM /* Custom error message */
} TransError;

This enumerated type contains error values the impex library may wish to generate when translating.


TransErrorInfo

typedef struct {
     TransError     transError; 
     /* NOTE: customMsgHandle will be valid only if transError is TE_CUSTOM. */  
    word            customMsgHandle;
} TransErrorInfo; 

TransferBlockID

typedef dword TransferBlockID;
    #define BlockIDFromFileAndBlock(f,b)    (((dword)(f) << 16) | (b))
    #define FileFromTransferBlockID(id)     ((VMFileHandle) ((id) >> 16))
    #define BlockFromTransferBlockID(id)    ((VMBlockHandle) (id))

TransMatrix

typedef struct {
    WWFixed         TM_e11;
    WWFixed         TM_e12;
    WWFixed         TM_e21;
    WWFixed         TM_e22;
    DWFixed         TM_e31;
    DWFixed         TM_e32;
} TransMatrix;

The six variable elements of a coordinate transformation matrix.


TravelOption

typedef enum {
     TO_NULL,
     TO_SELF,
     TO_OBJ_BLOCK_OUTPUT,
     TO_PROCESS
} TravelOption;
/* VisClass defines one other travel option: */
typedef enum {
     TO_VIS_PARENT=_FIRST_VisClass
} VisTravelOption;
/* GenClass defines some more travel options: */
typedef enum /* word */ {
     TO_GEN_PARENT=_FIRST_GenClass,
     TO_FOCUS,
     TO_TARGET,
     TO_MODEL,
     TO_APP_FOCUS,
     TO_APP_TARGET,
     TO_APP_MODEL,
     TO_SYS_FOCUS,
     TO_SYS_TARGET,
     TO_SYS_MODEL
} GenTravelOption;

This enumerated type can be used to specify the recipient of a message. Note that the values set up in the TravelOption, VisTravelOption, and GenTravelOption have been set up as discrete values.


TRUE

#define TRUE        -1  /* use as return value, not for comparisons */
#define FALSE        0

UIFunctionsActive

typedef ByteFlags UIFunctionsActive;
    #define UIFA_SELECT             0x80
    #define UIFA_MOVE_COPY          0x40
    #define UIFA_FEATURES           0x20
    #define UIFA_CONSTRAIN          0x10
    #define UIFA_PREF_A             0x08
    #define UIFA_PREF_B             0x04
    #define UIFA_PREF_C             0x02
    #define UIFA_IN                 0x01
    #define UIFA_ADJUST             0x08
    #define UIFA_EXTEND             0x04
    #define UIFA_MOVE               0x08
    #define UIFA_COPY               0x04
    #define UIFA_POPUP              0x08
    #define UIFA_PAN                0x04

These flags describe the context of the user’s input, providing some modal information.


UIInterfaceLevel

typedef enum /* word */ {
    UIIL_NOVICE,
    UIIL_BEGINNING_INTERMEDIATE,
    UIIL_ADVANCED_INTERMEDIATE,
    UIIL_ADVANCED,
    UIIL_GURU
} UIInterfaceLevel;

UndoActionDataFlags

typedef struct {
    dword       UADF_flags;
    word        UADF_extraflags;
} UndoActionDataFlags;

UndoActionDataPtr

typedef struct {
    void        *UADP_ptr;
    word        UADP_size;
} UndoActionDataPtr;

UndoActionDataType

typedef enum /* word */ {
    UADT_FLAGS,
    UADT_PTR,
    UADT_VM_CHAIN,
} UndoActionDataType;

UndoActionDataUnion

typedef union {
    /* To find out the type of data stored in this
     * union, check the value of the UndoActionStruct's
     * UAS_dataType field. */
    UndoActionDataFlags             UADU_flags;
    UndoActionDataPtr               UADU_ptr;
    UndoActionDataVMChain           UADU_vmChain;
} UndoActionDataUnion;
#define NULL_UNDO_CONTEXT 0

UndoActionDataVMChain

typedef struct {
    /* This structure is filled in by the code for
     * MSG_META_UNDO. VMChains passed to 
     * MSG_GEN_PROCESS_UNDO_ADD_ACTION should lie in the undo
     * file (which can be obtained by sending 
     * MSG_GEN_PROCESS_UNDO_GET_FILE). */
    VMChain                 UADVMC_vmChain;
    VMFileHandle            UADVMC_file;
} UndoActionDataVMChain;

UndoActionStruct

typedef struct {
    UndoActionDataType          UAS_dataType;
    UndoActionDataUnion         UAS_data;
    dword                       UAS_appType;
} UndoActionStruct;

UtilAsciiToHexError

typedef enum /* word */ {
    UATH_NON_NUMERIC_DIGIT_IN_STRING,
    UATH_CONVERT_OVERFLOW,
} UtilAsciiToHexError;

UtilHexToAsciiFlags

typedef WordFlags UtilHexToAsciiFlags;
    #define UHTAF_INCLUDE_LEADING_ZEROS     0x0002
    #define UHTAF_NULL_TERMINATE            0x0001

VarDataCHandler

typedef struct {
    word    VDCH_dataType;
    void    (*VDCH_handler) (MemHandle mh, ChunkHandle ch,
                            VarDataEntry *extraData,
                            word dataType, void *handlerData);
} VarDataCHandler;

An entry in a class’ vardata handler table. The first field is the data type, which acts as the entry’s index in the handler table. The second field is a far pointer to the handler routine.


VarDataEntry

typedef struct {
    word    VDE_dataType;   /* vardata data type */
    word    VDE_entrySize;  /* size of extra data; this field only exists
                             * if the type has extra data. */
} VarDataEntry;
#define VDE_extraData       sizeof(VarDataEntry);

Structure of a variable data entry. If the data type has no extra data, there will be no VDE_entrySize field. The extra data begins at offset VDE_extraData, defined above.


VarDataFlags

typedef WordFlags VarDataFlags;
    #define VDF_TYPE            0xfffc  /* 14-bit data type */
    #define VDF_EXTRA_DATA      0x0002  /* set if has extra data */
    #define VDF_SAVE_TO_STATE   0x0001  /* set if type saved to state */

This is a word record containing three fields. This word is stored in the vardata structure’s VDE_dataType field (see VarDataEntry, above).


VarDataKey

typedef word VardataKey;

VarObjRelocation

typedef struct {
    VarDataFlags    VOR_type;       /* type and tag */
    word            VOR_offset;
} VarObjRelocation;

VChar

typedef ByteEnum VChar;
    #define VC_NULL                 0x0 /* NULL */
    #define VC_CTRL_A               0x1 /* <ctrl>-A */
    #define VC_CTRL_B               0x2 /* <ctrl>-B */
    #define VC_CTRL_C               0x3 /* <ctrl>-C */
    #define VC_CTRL_D               0x4 /* <ctrl>-D */
    #define VC_CTRL_E               0x5 /* <ctrl>-E */
    #define VC_CTRL_F               0x6 /* <ctrl>-F */
    #define VC_CTRL_G               0x7 /* <ctrl>-G */
    #define VC_CTRL_H               0x8 /* <ctrl>-H */
    #define VC_CTRL_I               0x9 /* <ctrl>-I */
    #define VC_CTRL_J               0xa /* <ctrl>-J */
    #define VC_CTRL_K               0xb /* <ctrl>-K */
    #define VC_CTRL_L               0xc /* <ctrl>-L */
    #define VC_CTRL_M               0xd /* <ctrl>-M */
    #define VC_CTRL_N               0xe /* <ctrl>-N */
    #define VC_CTRL_O               0xf /* <ctrl>-O */
    #define VC_CTRL_P               0x10 /* <ctrl>-P */
    #define VC_CTRL_Q               0x11 /* <ctrl>-Q */
    #define VC_CTRL_R               0x12 /* <ctrl>-R */
    #define VC_CTRL_S               0x13 /* <ctrl>-S */
    #define VC_CTRL_T               0x14 /* <ctrl>-T */
    #define VC_CTRL_U               0x15 /* <ctrl>-U */
    #define VC_CTRL_V               0x16 /* <ctrl>-V */
    #define VC_CTRL_W               0x17 /* <ctrl>-W */
    #define VC_CTRL_X               0x18 /* <ctrl>-X */
    #define VC_CTRL_Y               0x19 /* <ctrl>-Y */
    #define VC_CTRL_Z               0x1a /* <ctrl>-Z */
    #define VC_ESCAPE               0x1b /* ESC */
    #define VC_BLANK                0x20 /* space */
    /*
     * Numeric keypad keys
     */
    #define VC_NUMPAD_ENTER             0xd /* only on PS/2 keyboards */
    #define VC_NUMPAD_DIV               `/' /* only on PS/2 keyboards */
    #define VC_NUMPAD_MULT              `*'
    #define VC_NUMPAD_PLUS              `+'
    #define VC_NUMPAD_MINUS             `-'
    #define VC_NUMPAD_PERIOD            `.'
    #define VC_NUMPAD_0                 `0'
    #define VC_NUMPAD_1                 `1'
    #define VC_NUMPAD_2                 `2'
    #define VC_NUMPAD_3                 `3'
    #define VC_NUMPAD_4                 `4'
    #define VC_NUMPAD_5                 `5'
    #define VC_NUMPAD_6                 `6'
    #define VC_NUMPAD_7                 `7'
    #define VC_NUMPAD_8                 `8'
    #define VC_NUMPAD_9                 `9'
    /*
     * Extended keyboard codes -- non-ASCII
     */
    #define VC_F1               0x80 /* Function keys */
    #define VC_F2               0x81
    #define VC_F3               0x82
    #define VC_F4               0x83
    #define VC_F5               0x84
    #define VC_F6               0x85
    #define VC_F7               0x86
    #define VC_F8               0x87
    #define VC_F9               0x88
    #define VC_F10              0x89
    #define VC_F11              0x8a /* only on PS/2 keyboards */
    #define VC_F12              0x8b /* only on PS/2 keyboards */
    #define VC_F13              0x8c /* non-standard key */
    #define VC_F14              0x8d /* non-standard key */
    #define VC_F15              0x8e /* non-standard key */
    #define VC_F16              0x8f /* non-standard key */
    #define VC_UP               0x90 /* Cursor keys */
    #define VC_DOWN             0x91
    #define VC_RIGHT            0x92
    #define VC_LEFT             0x93
    #define VC_HOME             0x94 /* Scroll commands */
    #define VC_END              0x95
    #define VC_PREVIOUS         0x96
    #define VC_NEXT             0x97
    #define VC_INS              0x98 /* INS */
    #define VC_DEL              0x9a /* DEL */
    #define VC_PRINTSCREEN      0x9b /* from <shift>-NUMPAD_MULT */
    #define VC_PAUSE            0x9c /* from <ctrl>-NUMLOCK */
    #define VC_BREAK            0x9e /* from <ctrl>- or <alt>-combo */
    #define VC_SYSTEMRESET      0x9f /* <ctrl>-<alt>-<del> combo */
    /*
    * Joystick control keys (0xa0 - 0xa9)
    */
    #define VC_JOYSTICK_0           0xa0    ; joystick 0 degrees
    #define VC_JOYSTICK_45          0xa1    ; joystick 45 degrees
    #define VC_JOYSTICK_90          0xa2    ; joystick 90 degrees
    #define VC_JOYSTICK_135         0xa3    ; joystick 135 degrees
    #define VC_JOYSTICK_180         0xa4    ; joystick 180 degrees
    #define VC_JOYSTICK_225         0xa5    ; joystick 225 degrees
    #define VC_JOYSTICK_270         0xa6    ; joystick 270 degrees
    #define VC_JOYSTICK_315         0xa7    ; joystick 315 degrees
    #define VC_FIRE_BUTTON_1        0xa8    ; fire button #1
    #define VC_FIRE_BUTTON_2        0xa9    ; fire button #2
    /*
     * Shift Keys           (0xe0 - 0xe7)
     */
    #define VC_LALT                 0xe0
    #define VC_RALT                 0xe1
    #define VC_LCTRL                0xe2
    #define VC_RCTRL                0xe3
    #define VC_LSHIFT               0xe4
    #define VC_RSHIFT               0xe5
    #define VC_SYSREQ               0xe6 /* Not on base PC keyboard */
    #define VC_ALT_GR               0xe7
    /*
     * Toggle state keys (0xe8 - 0xef)
     */
    #define VC_CAPSLOCK             0xe8
    #define VC_NUMLOCK              0xe9
    #define VC_SCROLLLOCK           0xea
    /*
     * Extended state keys (0xf0 - 0xf7)
     */
    #define VC_INVALID_KEY          0xff
    #define VC_BACKSPACE            VC_CTRL_H
    #define VC_TAB                  VC_CTRL_I
    #define VC_LF                   VC_CTRL_J
    #define VC_ENTER                VC_CTRL_M

VisRulerType

typedef ByteEnum VisRulerType;
    #define VRT_INCHES              0
    #define VRT_CENTIMETERS         1
    #define VRT_POINTS              2
    #define VRT_PICAS               3
    #define VRT_CUSTOM              CUSTOM_RULER_DEFINITION
    #define VRT_NONE                NO_RULERS
    #define VRT_DEFAULT             SYSTEM_DEFAULT

VisTextVariableType

typedef enum {
     VTVT_PAGE_NUMBER,
     VTVT_PAGE_NUMBER_IN_SECTION,
     VTVT_NUMBER_OF_PAGES,
     VTVT_NUMBER_OF_PAGES_IN_SECTION,
     VTVT_SECTION_NUMBER,
     VTVT_NUMBER_OF_SECTIONS,
     VTVT_CREATION_DATE_TIME,
     VTVT_MODIFICATION_DATE_TIME,
     VTVT_CURRENT_DATE_TIME,
     VTVT_STORED_DATE_TIME,
} VisTextVariableType;

VisTravelOption

The VisClass defines an enumerated value to be used in the place of a standard TravelOption. See the entry for TravelOption to see all possible values.


VisUpdateMode

typedef ByteEnum VisUpdateMode;
    #define VUM_MANUAL                          0
    #define VUM_NOW                             1
    #define VUM_DELAYED_VIA_UI_QUEUE            2
    #define VUM_DELAYED_VIA_APP_QUEUE           3

VMAccessFlags

typedef ByteFlags VMAccessFlags;
    #define VMAF_FORCE_READ_ONLY                            0x80
    #define VMAF_FORCE_READ_WRITE                           0x40
    #define VMAF_ALLOW_SHARED_MEMORY                        0x20
    #define VMAF_FORCE_DENY_WRITE                           0x10
    #define VMAF_DISALLOW_SHARED_MULTIPLE                   0x08
    #define VMAF_USE_BLOCK_LEVEL_SYNCHRONIZATION            0x04

VMAttributes

typedef ByteFlags VMAttributes;
    #define VMA_SYNC_UPDATE                     0x80
    #define VMA_BACKUP                          0x40
    #define VMA_OBJECT_RELOC                    0x20
    #define VMA_PRESERVE_HANDLES                0x10
    #define VMA_NOTIFY_DIRTY                    0x08
    #define VMA_NO_DISCARD_IF_IN_USE            0x04
    #define VMA_COMPACT_OBJ_BLOCK               0x02
    #define VMA_SINGLE_THREAD_ACCESS            0x01
    /*
     * Attributes that must be set for object blocks: */
    #define VMA_OBJECT_ATTRS    (VMA_OBJECT_RELOC | VMA_PRESERVE_HANDLES |
                                 VMA_NO_DISCARD_IF_IN_USE |
                                 VMA_SINGLE_THREAD_ACCESS)

VMBlockHandle

typedef word VMBlockHandle;

VMChain

typedef dword VMChain;

typedef struct {
    VMBlockHandle           VMC_next;
} VMChainLink;

VMChainTree

typedef struct {
    VMChainLink     VMCT_meta;
    word            VMCT_offset;
    word            VMCT_count;
} VMChainTree;

VMFileHandle

typedef Handle VMFileHandle;

VMInfoStruct

typedef struct {
    MemHandle       mh;
    word            size;
    word            userId;
} VMInfoStruct;

VMOpenType

typedef ByteEnum VMOpenType;
    #define VMO_OPEN                        0
    #define VMO_TEMP_FILE                   1
    #define VMO_CREATE                      2
    #define VMO_CREATE_ONLY                 3
    #define VMO_CREATE_TRUNCATE             4
    #define VMO_NATIVE_WITH_EXT_ATTRS       0x80

VMOperation

typedef enum {
    VMO_READ,
    VMO_INTERNAL,
    VMO_SAVE,
    VMO_SAVE_AS,
    VMO_REVERT,
    VMO_UPDATE,
    VMO_WRITE
} VMOperation;

VMRelocType

typedef enum {
    VMRT_UNRELOCATE_BEFORE_WRITE,
    VMRT_RELOCATE_AFTER_READ,
    VMRT_RELOCATE_AFTER_WRITE,
    VMRT_RELOCATE_FROM_RESOURCE,
    VMRT_UNRELOCATE_FROM_RESOURCE,
} VMRelocType;

VMStartExclusiveReturnValue

typedef enum {
     VMSERV_NO_CHANGES,
     VMSERV_CHANGES,
     VMSERV_TIMEOUT
} VMStartExclusiveReturnValue;

VMGrabExclusive() returns a member of this enumerated type. It may have one of the following values:

VMSERV_NO_CHANGES
No other thread has changed this file since the last time this thread had access to the file.

VMSERV_CHANGES
The file may have been altered since the last time this thread had access to it; the thread should take appropriate actions (such as re-reading any cached data).

VMSERV_TIMEOUT
This call to VMGrabExclusive() failed and timed out without getting access to the file.


VolumeName

typedef char VolumeName[VOLUME_BUFFER_SIZE];

WBFixed

typedef struct {
    byte    WBF_frac;
    word    WBF_int;
} WBFixed;

wchar

typedef unsigned int wchar;

WindowHandle

typedef Handle WindowHandle;

WinInfoType

typedef enum /* word */ {
    WIT_PRIVATE_DATA =0,
    WIT_COLOR =2,
    WIT_INPUT_OBJ =4,
    WIT_EXPOSURE_OBJ =6,
    WIT_STRATEGY =8,
    WIT_FLAGS =10,
    WIT_LAYER_ID =12,
    WIT_PARENT_WIN =14,
    WIT_FIRST_CHILD_WIN =16,
    WIT_LAST_CHILD_WIN =18,
    WIT_PREV_SIBLING_WIN =20,
    WIT_NEXT_SIBLING_WIN =22,
    WIT_PRIORITY=24,
} WinInfoType;

WinInvalFlag

typedef ByteEnum WinInvalFlag;
    #define WIF_INVALIDATE                  0
    #define WIF_DONT_INVALIDATE             1

WinPassFlags

typedef WordFlags WinPassFlags;
    #define WPF_CREATE_GSTATE               0x8000
    #define WPF_ROOT                        0x4000
    #define WPF_SAVE_UNDER                  0x2000
    #define WPF_INIT_EXCLUDED               0x1000
    #define WPF_PLACE_BEHIND                0x0800
    #define WPF_PLACE_LAYER_BEHIND          0x0400
    #define WPF_LAYER                       0x0200
    #define WPF_ABS                         0x0100
    #define WPF_PRIORITY                    0x00ff

WinPriority

typedef ByteEnum WinPriority;
    #define WIN_PRIO_POPUP                   4
    #define WIN_PRIO_MODAL                   6
    #define WIN_PRIO_ON_TOP                  8
    #define WIN_PRIO_COMMAND                10
    #define WIN_PRIO_STD                    12
    #define WIN_PRIO_ON_BOTTOM              14

word

typedef unsigned int word;

WordAndAHalf

typedef struct {
    word    WAAH_low;
    byte    WAAH_high;
} WordAndAHalf;

WordFlags

typedef word WordFlags;

WWFixed

typedef struct {
    word    WWF_frac;
    word    WWF_int;
} WWFixed;

WWFixedAsDWord

typedef dword WWFixedAsDWord

XYOffset

typedef struct {
    sword   XYO_x;
    sword   XYO_y;
} XYOffset;

A graphics coordinate offset.


XYSize

typedef struct {
    word    XYS_width;
    word    XYS_height;
} XYSize;

A graphics size, in two dimensions.


XYValueAsDWord

typedef dword XYValueAsDWord;

A graphics size, in two dimensions, expressed as a DWord.

Data Structures F-K <– Table of Contents