Previous: Computed Fields, Up: Structs [Contents][Index]
The following attributes are defined for struct values.
sizeGives an offset with the storage occupied by the complete struct. Example:
(poke) type Packet = struct { byte s; byte[s] d; }
(poke) (Packet { s = 3 })'size
32UL#b
lengthGives the number of fields stored in the struct. Note that, due to absent fields, this doesn’t always corresponds to the number of fields that appear in the definition of a struct type.
For example, for the following struct type:
type Packet =
struct
{
byte magic: magic in [0xffUB,0xfeUB];
byte control if magic == 0xfe;
byte[128] payload;
};
We get the following results:
(poke) (Packet { magic = 0xff })'length
2UL
(poke) (Packet { magic = 0xfe })'length
3UL
mappedBoolean indicating whether the struct is mapped.
strictBoolean indicating whether the struct is mapped in strict mode.
elem (idx)Element occupying the position idx in the array. Note that this
attribute evaluates to a value of type any.
eoffset (idx)Offset of the field identified by the index idx in the struct. Examples:
(poke) type Foo = struct { int i; long l; }
(poke) Foo{}'eoffset (1)
32#b
If the provided index is out of bounds then E_out_of_bounds is
raised.
esize (idx)Size of the field identified by the index idx in the struct. Examples:
(poke) type Foo = struct { int i; long l; }
(poke) Foo{}'esize (1)
64#b
If the provided index is out of bounds then E_out_of_bounds is
raised.
ename (idx)Name of the field identified by the index idx in the struct. If the field is anonymous then the empty string.
Examples:
(poke) type Foo = struct { int foo; long bar; }
(poke) Foo{}'ename (0)
"foo"
If the provided index is out of bounds then E_out_of_bounds is
raised.
Previous: Computed Fields, Up: Structs [Contents][Index]