Contents data of a process is organized as a structured sequence of tags with any associated data.
Offset |
Type |
Name |
Description |
---|---|---|---|
0 |
U8 |
TAG_ID |
Tag code |
1 |
U8[...] |
TAG_DATA |
Tag data (optional) |
Currently the tag codes provided are as follows:
Name |
Value |
Description |
---|---|---|
tag_invalid |
0 |
Invalid tag (reserved) |
tag_i8 |
1 |
8 bit signed data (i8) |
tag_i16 |
2 |
16 bit signed data (i16) |
tag_i32 |
3 |
32 bit signed data (i32) |
tag_i64 |
4 |
64 bit signed data (i64) |
tag_u8 |
5 |
8 bit unsigned data (u8) |
tag_u16 |
6 |
16 bit unsigned data (u16) |
tag_u32 |
7 |
32 bit unsigned data (u32) |
tag_u64 |
8 |
64 bit unsigned data (u64) |
tag_float |
9 |
32 bit floating point data (float) |
tag_real |
10 |
64-bit floating point data (double) |
tag_bool_false |
11 |
Boolean false value (has no data) |
tag_bool_true |
12 |
Boolean true value (has no data) |
tag_null |
13 |
Null value (has no data) |
tag_string |
14 |
String value |
tag_enum_i32 |
15 |
Enumeration type value (i32) |
tag_enum_u32 |
16 |
Enumeration type value (u32) |
tag_begin_uniform_array |
17 |
Start a block for uniform array type |
tag_begin_heterogeneous_array |
18 |
Start a block for heterogeneous array type |
tag_lazy_range |
19 |
Skip a range of values within a heterogeneous array |
tag_lazy_id |
20 |
Skip a single value either within a heterogeneous array, or within a tag_begin_static or tag_begin_instance block |
tag_begin_static |
21 |
Start a block description for static fields of a type |
tag_begin_instance |
22 |
Start a block description for instance fields of a type |
tag_begin_data |
23 |
Start a block root that will contain all data |
tag_missing |
24 |
Indicates that the expected field is not available (e.g., due to optimizations), has no data |
tag_end |
25 |
End of block (has no data) |
tag_begin_expr_data |
26 |
Start a block for additional (optional) data for an expression |
tag_begin_expr_value |
27 |
Start a block of data for a specific value for an expression part (within a tag_begin_expr_data) |
tag_base_instance |
28 |
Start a block for instance fields of a basic type (within an instance block) |
Received data always have tag_begin_data as the start tag and tag_end as the end tag.
More complex tags will be described below (DATA_FMT=0x101).
tag_string
The tag payload is composed as follows:
Offset |
Type |
Name |
Description |
---|---|---|---|
0 |
U32 |
SIZE |
Length of the string (including final \0). |
4 |
U8[SIZE] |
VALUE |
Representation of the string as a UTF-8 sequence, with final \0. |
tag_enum_i32
The tag payload is composed as follows:
Offset |
Type |
Name |
Description |
---|---|---|---|
0 |
U32 |
TYPE_ID |
Data type ID of the enumeration |
4 |
I32 |
VALUE |
Value of the enumeration |
tag_enum_u32
The tag payload is composed as follows:
Offset |
Type |
Name |
Description |
---|---|---|---|
0 |
U32 |
TYPE_ID |
Data type ID of the enumeration |
4 |
U32 |
VALUE |
Value of the enumeration |
tag_begin_uniform_array
The tag payload is composed as follows:
Offset |
Type |
Name |
Description |
---|---|---|---|
0 |
U8 |
NSIZE |
Number of array dimensions [1, 3] |
1 |
U32[NSIZE] |
SIZES |
Length of the individual dimensions of the array |
… |
U32 |
TYPE_ID |
Scalar type ID of data described |
Notes:
•In the case of simple types (i8, i16, i32, i64, u8, u16, u32, u64, double, float, bool), the block following the tag directly contains the data without any associated tag, the size of each individual element is (1, 2, 4, 8, 1, 2, 4, 8, 4, 1) bytes, respectively.
•As an optimization, in case the content is of tag_begin_instance elements, the type field of the tag_begin_instance is omitted.
•The data block is closed by tag_end.
tag_begin_heterogeneous_array
The tag payload is composed as follows:
Offset |
Type |
Name |
Description |
---|---|---|---|
0 |
U8 |
NSIZE |
Number of array dimensions [1, 3] |
1 |
U32[NSIZE] |
SIZES |
Length of the individual dimensions of the array |
Notes:
•Each individual array element is preceded by a tag.
•The data block is closed by tag_end.
tag_lazy_range
The tag payload is composed as follows:
Offset |
Type |
Name |
Description |
---|---|---|---|
0 |
U32 |
COUNT |
Number of elements skipped, i.e., not expanded |
tag_lazy_id
The tag payload is composed as follows:
Offset |
Type |
Name |
Description |
---|---|---|---|
0 |
U32 |
TYPE_ID |
Data type ID given of the skipped value, i.e., not expanded |
tag_begin_static
The tag payload is composed as follows:
Offset |
Type |
Name |
Description |
---|---|---|---|
0 |
u32 |
type_id |
Data type ID that is described |
Note:
•The data block is closed by tag_end.
tag_begin_instance
The tag payload is composed as follows:
Offset |
Type |
Name |
Description |
---|---|---|---|
0 |
U32 |
TYPE_ID |
Data type ID being described |
Note:
•In case you are describing a class type, the elements of the base class will be inserted immediately after the elements present directly in the class indicated by the type (and so on transitively) and will be preceded by the tag tag_base_type.
•The data block is closed by tag_end.
tag_base_type
The tag payload is composed as follows:
Offset |
Type |
Name |
Description |
---|---|---|---|
0 |
U32 |
TYPE_ID |
Basic data type ID that is described |
tag_begin_expr_value
The tag payload is composed as follows:
Offset |
Type |
Name |
Description |
---|---|---|---|
0 |
U32 |
BEGIN_POS |
Initial position (in the expression) of the partial value description |
4 |
U32 |
END_POS |
End position (in the expression) of the partial value description |