The OB methods table (OBMETHODS) consists of a number of contiguous (OBMETHOD) definitions, each of which contains all the information about a specific OB method related to the OB class to which it belongs.
The location (relative to the file) and the number of elements in the table are specified by the OBCLASS.METHODSOFF and OBCLASS.METHODSCNT fields, respectively.
OB method definition
An OB method (OBMETHOD) consists of the following information:
Name |
Offset |
Type |
Description |
---|---|---|---|
ID |
+0 |
U32 |
OB method ID. Note: the values 0 and 0xFFFFFF are special meaning IDs. |
|
+4 |
U8[2] |
(reserved) |
FLAGS |
+6 |
U16 |
OB method settings: 0x0001 Uncompressed TEXT field (NCF0). 0x0002 Uncompressed MODIFIER field (NCF1). |
NAME |
+8 |
U32 |
Offset OB method name (related to strings). |
KNAME |
+12 |
U32 |
Offset key name of OB method (relative to strings). |
TEXT |
+16 |
U32 |
Offset description of OB method (relative to compressed strings, or strings if NCF0). |
CALLID |
+20 |
U32 |
Method ID in call (#1) |
PARAMSOFF |
+24 |
U32 |
Offset of parameter table for OB method (relative to file). |
PARAMSCNT |
+28 |
U32 |
Size of parameter table by OB method. |
RETTYPEID |
+32 |
U32 |
Return variable type ID. Note: Can be a default or user-defined type. |
ATTRIB |
+36 |
U32 |
Attributes method. |
MODIFIER |
+40 |
U32 |
OB method modifier offsets (relative to compressed strings, or strings if NCF1). |
(#1) The value of the CALLID field is derived from the value of the METHOD.ID field, in the source .OBB file.
Parameter table for OB method
The parameter table by OB method (OBMETHODPS) consists of a number of contiguous definitions (OBMETHODP), each of which contains all the information about a specific parameter related to the OB method to which it belongs.
The location (relative to the file) and the number of elements in the table are specified by the OBMETHOD.PARAMSOFF and OBMETHOD.PARAMSCNT fields, respectively.
Parameter definition for OB method
A parameter for OB method (OBMETHODP) consists of the following information:
Name |
Offset |
Type |
Description |
---|---|---|---|
TYPEID |
+0 |
U32 |
Variable type ID Note: Can be a predefined type or user-defined. |
ATTRIB |
+4 |
U16 |
Parameter attributes: 0x0001 Parameter passed by reference (ABYREF) 0x0002 Parameter passed by pointer (ABYPTR) |
FLAGS |
+6 |
U16 |
Parameter settings: 0x0001 Uncompressed TEXT field (NCF0). |
NAME |
+8 |
U32 |
Offset parameter name (relative to strings). |
TEXT |
+12 |
U32 |
Offset parameter description (relative to compressed strings, or strings if NCF0). |
DIM0 |
+16 |
U32 |
1st array size (0=unspecified)(#1). |
DIM1 |
+20 |
U32 |
2nd array size (0=unspecified)(#1). |
DIM2 |
+24 |
U32 |
3rd array size (0=unspecified)(#1). |
(#1) Although ARRAYn fields are 32bit, in the current version of SW the maximum size should still be considered only 16bit (i.e., maximum index 0xFFFF).