A class declaration defines a group of related class-elements (or fields) that are stored together. A class declaration consists of class element statements, zero or more access statements, and zero or more event statements with syntax as follows:
[compact] [persistent | transient] class class-name {class-elements-list};where a class-elements-list consists of:
element-statement | access-statement | event-statement; [element-statement | access-statement|event-statement;] […;]
The element-statement has syntax as follows according to the type of field being declared:
[nullable] type-identifier | struct-name | enum element-name[length] [ = value [, element-name [length] [= value]] …];or
vector {type-identifier | struct-name} vector-name;or
[optional] struct-name element-name;
The access-statement has syntax as follows according to the type of index being declared:
[voluntary] [unique][inclusive][userdef] tree <class-element | struct-name.element-name | vector-element [asc|desc] [collate collation_name] [,class-element | struct-name.element-name | vector-element [asc|desc] [collate collation_name]…]> indexname;or
[userdef] [unique|nonunique] hash <class-element | struct-name.element-name | vector-element [collate collation_name] [,class-element | struct-name.element-name |vector-element [collate collation_name]…]> index-name[expected-number-of-entries];or
trie < class-element[,class-element] > indexname;or
trigram < class-element[,class-element] > indexname;or
[unique] rtree < class-element > indexname;or
kdtree < class-element[,class-element] > indexname;or
oid;or
or
list;
The event-statement has syntax as follows according to the type of index being declared:
event <[[class-element] update | new | delete | delete_all | checkpoint] > event_name [; event-statement ] ;where class-element has syntax:
element-name| structnameand vector-element has syntax:
vector-name.struct-element | vector-name;The Compact qualifier
The
compactclass qualifier limits the total size of the class’ elements to 64K. (That includes not just application data, but also the overhead required by the runtime.)Note: The
compactdeclaration significantly reduces the overhead that is necessary to maintain the class data (simply put, all references within a class are 2-bytes instead of 4-bytes). It is easy to estimate the total number of references within an object—eachoptional,vector,string, orblobfield takes one reference.