Please enable JavaScript to view this site.

R++ inspect tag format

Specification 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)

tag_invalid

0

Invalid tag (or placeholder). No payload.

tag_i8

1

8bit signed integer value

Offset

Type

Label

Description

+0

I8

VALUE

Tag value

tag_i16

2

16bit signed integer value

Offset

Type

Label

Description

+0

I16

VALUE

Tag value

tag_i32

3

32bit signed integer value

Offset

Type

Label

Description

+0

I32

VALUE

Tag value

tag_i64

4

64bit signed integer value

Offset

Type

Label

Description

+0

I64

VALUE

Tag value

tag_u8

5

8bit unsigned integer value

Offset

Type

Label

Description

+0

U8

VALUE

Tag value

tag_u16

6

16bit unsigned integer value

Offset

Type

Label

Description

+0

U16

VALUE

Tag value

tag_u32

7

32bit unsigned integer value

Offset

Type

Label

Description

+0

U32

VALUE

Tag value

tag_u64

8

64bit unsigned integer value

Offset

Type

Label

Description

+0

U8

VALUE

Tag value

tag_float

9

32bit floating point value

Offset

Type

Label

Description

+0

FLT

VALUE

Tag value

tag_real

10

64bit floating point value

Offset

Type

Label

Description

+0

DBL

VALUE

Tag value

tag_bool_false

11

False boolean value. No payload.

tag_bool_true

12

True boolean value. No payload.

tag_null

13

Null value. No payload.

tag_string

14

String value.

Offset

Type

Label

Description

+0

U32

SIZE

String size

+4

STRZ

VALUE

String value

tag_enum_i32

15

I32 enumeration value

Offset

Type

Label

Description

+0

U32

TYPE_ID

Owner enumeration data type ID (#1)

+4

I32

VALUE

Enumeration value

(depends on type)

Note (#1): the TYPE_ID must be (in the debug file) a data_type of kind enum, enum_mask or error_code

tag_enum_u32

 

16

U32 enumeration value

Offset

Type

Label

Description

+0

U32

TYPE_ID

Owner enumeration data type ID (#1)

+4

U32

VALUE

Enumeration value

(depends on type)

Note (#1): the TYPE_ID must be (in the debug file) a data_type of kind enum, enum_mask or error_code

tag_begin_uniform_array

17

Start a block of tags for an array of uniformed values (all of the same type).

Offset

Type

Label

Description

+0

U8

NSIZE

Number of sizes

+1

U32[NSIZE]

SIZES

List of sizes

...

U32

TYPE_ID

Array data type ID

tag_begin_heterogeneous_array

18

Start a block of tags for an array for heterogeneous values (items may be of different type).

Offset

Type

Label

Description

+0

U8

NSIZE

Number of sizes

+1

U32[NSIZE]

SIZES

List of sizes

tag_lazy_range

19

Allow to skip a number of values (inside the current block of tags).

Offset

Type

Label

Description

+0

U32

COUNT

Number of values  to be skipped

tag_lazy_id

20

Allow to skip a single value (inside the current block of tags).

Offset

Type

Label

Description

+0

U32

TYPE_ID

Skipped data type ID

tag_begin_static

21

Start a block of tags for a static (a class, a struct, etc).

Offset

Type

Label

Description

+0

U32

TYPE_ID

Instance data type ID

tag_begin_instance

22

Start a block of tags for an instance (of a class, of a struct, etc)

Offset

Type

Label

Description

+0

U32

TYPE_ID

Instance data type ID

tag_begin_data

23

Start the main block of tags (entry point of the inspect data reply).

tag_missing

24

The corresponding value is not currently available (for example, due to compiler optimizations).

tag_end

25

Close the current block of tags. No payload.

tag_begin_expr_data

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.

tag_begin_expr_value

27

Start a block of tags for a sub-expression value.

Offset

Type

Label

Description

+0

U32

BEGIN

Sub-expression starting index (in expression)

+4

U32

END

Sub-expression ending index (in expression)

tag_base_instance

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).

Offset

Type

Label

Description

+0

U32

TYPE_ID

Base instance data type ID

 

 

  

Keyboard Navigation

F7 for caret browsing
Hold ALT and press letter

This Info: ALT+q
Page Header: ALT+h
Topic Header: ALT+t
Topic Body: ALT+b
Contents: ALT+c
Search: ALT+s
Exit Menu/Up: ESC