Type of structure that contains result of expression evaluation.
typedef struct t_result { // Result of expression's evaluation
int type; // Type of expression, DEC(R)_xxx
int dtype; // Type of data, DEC_xxx
union {
char data[10]; // Binary form of expression's value
ulong u; // Value as unsigned integer
long l; // Value as signed integer
long double f; }; // Value as 80-bit float
union {
char value[TEXTLEN]; // ASCII form of expression's value
wchar_t wvalue[TEXTLEN/2]; };// UNICODE form of expression's value
ulong lvaddr; // Address or index of lvalue or NULL
} t_result;
Members:
type - exact type of expression, one of DEC_xxx or DECR_xxx possibly ORed with DEC_SIGNED if result should be interpreted as signed number. type is DEC_UNKNOWN if expression is invalid. Expression is lvalue (can be assigned to) if either type is DEC_xxx and lvaddr is not 0, or if type is one of DECR_xxx. All possible types are listed in the table below:
| type & DECR_TYPEMASK | Meaning |
| DEC_UNKNOWN | Error in expression |
| DEC_BYTE | Byte |
| DEC_WORD | Short integer |
| DEC_DWORD | Long integer |
| DEC_FLOAT4 | 32-bit float |
| DEC_FWORD | 48-bit descriptor or long pointer |
| DEC_FLOAT8 | 64-bit double |
| DEC_QWORD | Quadword |
| DEC_FLOAT10 | 80-bit long double |
| DEC_STRING | Zero-terminated ASCII string |
| DEC_UNICODE | Zero-terminated UNICODE string |
| DECR_BYTE | Byte register |
| DECR_WORD | Short integer register |
| DECR_DWORD | Long integer register |
| DECR_QWORD | MMX register |
| DECR_FLOAT10 | Floating-point register |
| DECR_SEG | Segment register |
dtype - simplified type of data, possibly ORed with DEC_SIGNED, describes value stored in t_result.data. If bit DEC_SIGNED is set, result must be interpreted as signed, otherwise as unsigned:
| dtype | Interpretation of t_result.data |
| DEC_UNKNOWN | Error in expression or result doesn't fit into data |
| DEC_DWORD | 32-bit unsigned integer in t_result.u |
| DEC_DWORD|DEC_SIGNED | 32-bit signed integer stored in t_result.l |
| DEC_QWORD | 64-bit integer in data[0..7] |
| DEC_FLOAT10 | 80-bit long double stored in t_result.f |
data, u, l, f - result of expression if this can be represented as integer or float. Which field to select depends on dtype;
value - result of expression of type DEC_STRING (truncated to TEXTLEN characters) or error message if type is DEC_UNKNOWN;
wvalue - result of expression of type DEC_UNICODE (truncated to TEXTLEN/2 characters);
lvaddr - address of expression if type is one of DEC_xxx, or index of register if type is DECR_xxx.
See also: Expression