R++ inspect tag formatSpecification of the tag format for R++ inspect data. Data format: 0x100 |
Raw data received from an R++ inspect operation, will be organized as a sequence of tag, each of them may have different types of data and parameters.
The size of each data depends on the tag code and his data contents.
Logical data structure
The logical structure of the inspect data is the following:
[tag_begin_expr_data ... tags for expression extra information tag_end]
tag_begin_data ... tags for data tag_end_data |
The extra block expr_data is optional and can be present when there are information and data for sub-expressions of the required source inspect expression.
R++ factory data types ID (type_id)
List of factory data types ID defined in R++ language:
Data type |
ID |
Description |
type_id_invalid |
0 |
Invalid data type (or placeholder) |
type_id_i8 |
1 |
8bit signed data |
type_id_i16 |
2 |
16bit signed data |
type_id_i32 |
3 |
32bit signed data |
type_id_i64 |
4 |
64bit signed data |
type_id_u8 |
5 |
8bit signed data |
type_id_u16 |
6 |
16bit signed data |
type_id_u32 |
7 |
32bit signed data |
type_id_u64 |
8 |
64bit signed data |
type_id_float |
9 |
32bit floating point data |
type_id_real |
10 |
64bit floating point data |
type_id_bool |
11 |
Boolean data |
type_id_null |
12 |
Null data |
type_id_string |
13 |
String data |
Note: type ID values greater than 0xFFF are to be considered as user defined types. ID 0xFFFFFFFF is reserved.
TAG data structure
The data structure of a tag is the following:
Offset |
Type |
Label |
Description |
0 |
U8 |
TAG_ID |
Tag ID |
1 |
... |
TAG_DATA |
Tag data (optional) |
Database of the TAGs
List of all supported tags:
Tag name |
Tag ID |
Description / Payload (TDATA) |
||||||||||||||||
0 |
Invalid tag (or placeholder). No payload. |
|||||||||||||||||
1 |
8bit signed integer value
|
|||||||||||||||||
2 |
16bit signed integer value
|
|||||||||||||||||
3 |
32bit signed integer value
|
|||||||||||||||||
4 |
64bit signed integer value
|
|||||||||||||||||
5 |
8bit unsigned integer value
|
|||||||||||||||||
6 |
16bit unsigned integer value
|
|||||||||||||||||
7 |
32bit unsigned integer value
|
|||||||||||||||||
8 |
64bit unsigned integer value
|
|||||||||||||||||
9 |
32bit floating point value
|
|||||||||||||||||
10 |
64bit floating point value
|
|||||||||||||||||
11 |
False boolean value. No payload. |
|||||||||||||||||
12 |
True boolean value. No payload. |
|||||||||||||||||
13 |
Null value. No payload. |
|||||||||||||||||
14 |
String value.
|
|||||||||||||||||
15 |
I32 enumeration value
Note (#1): the TYPE_ID must be (in the debug file) a data_type of kind enum, enum_mask or error_code |
|||||||||||||||||
|
16 |
U32 enumeration value
Note (#1): the TYPE_ID must be (in the debug file) a data_type of kind enum, enum_mask or error_code |
||||||||||||||||
17 |
Start a block of tags for an array of uniformed values (all of the same type).
|
|||||||||||||||||
18 |
Start a block of tags for an array for heterogeneous values (items may be of different type).
|
|||||||||||||||||
19 |
Allow to skip a number of values (inside the current block of tags).
|
|||||||||||||||||
20 |
Allow to skip a single value (inside the current block of tags).
|
|||||||||||||||||
21 |
Start a block of tags for a static (a class, a struct, etc).
|
|||||||||||||||||
22 |
Start a block of tags for an instance (of a class, of a struct, etc)
|
|||||||||||||||||
23 |
Start the main block of tags (entry point of the inspect data reply). |
|||||||||||||||||
24 |
The corresponding value is not currently available (for example, due to compiler optimizations). |
|||||||||||||||||
25 |
Close the current block of tags. No payload. |
|||||||||||||||||
26 |
Start a block of tags for with the inspect extra data reply (for example contains, if required, value of the sub-expression). No payload. |
|||||||||||||||||
27 |
Start a block of tags for a sub-expression value.
|
|||||||||||||||||
28 |
Start a block of tags for an instance for a base type (inside an instance block, at the end of all value tags of the current instance).
|