Structures
A structure is an aggregate object, which contains one or more sub-objects (members) which are potentially of different types. This code shows some examples of structure definitions and declarations:
// create named structure type 'struct s1'
struct s1 {
int x,y;
};
// create two objects: 'a' is of type 'struct s1', 'b' is of type 'array[4] of struct s1'
struct s1 a, b[4];
// create objects 'c' and 'd'; both are of type 'array[3] of struct s1'
struct s1[3] c, d;
// create an anonymous structure type, and objects 'e' and 'f' of that type
struct {
bit4 a;
var6 b;
struct s2 {
var32 x,y;
} c[2];
} e, f;
// create named structure type 'struct s3', and objects 'g' and 'h' of that type
struct s3 { int x,y; } g;
struct s3 h;
Structures may be passed to, and returned from, functions. Structures which are assignment-compatible support a number of operations, including assignment and comparison.
Maia structures are essentially identical to C structures, except that they may not contain incomplete arrays, and C99 named member initialisation is not supported. The comparison operators are supported in Maia, but not in C.