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;
VMChainLink
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.