类声明
类声明定义了一组相关联的类元素(或字段),这些元素被存储在一起。类声明由类元素语句、零个或多个访问语句以及零个或多个事件语句组成,其语法如下:
[compact] [persistent | transient] class class-name {class-elements-list};
其中类元素列表由以下内容组成:
element-statement | access-statement | event-statement;
[element-statement | access-statement|event-statement;]
[…;]
元素声明语句的语法根据所声明字段的类型如下所示:
[nullable] type-identifier | struct-name | enum element-name[length] [ = value
[, element-name [length] [= value]] …
];
或
vector {type-identifier | struct-name} vector-name;
或
vector {type-identifier | struct-name} vector-name;
根据所声明的索引类型,访问语句的语法如下:
[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;
或
[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];
或
trie < class-element[,class-element] > indexname;
或
trigram < class-element[,class-element] > indexname;
或
[unique] rtree < class-element > indexname;
或
kdtree < class-element[,class-element] > indexname;
或
oid;
或
autoid[number-of-expected-entries];
或
list;
根据所声明的索引类型,事件语句具有如下语法:
event <[[class-element] update | new | delete | delete_all | checkpoint] > event_name [; event-statement ] ;
其中类元素具有以下语法:
element-name| structname
并且向量元素的语法为:
vector-name.struct-element | vector-name;
紧凑限定符
紧凑类限定符将类元素的总大小限制为 64K。这不仅包括应用程序数据,还包括运行时所需的开销。
注意:紧凑声明显著减少了维护类数据所需的开销(简单来说,类中的所有引用都是 2 字节而不是 4 字节)。很容易估算对象中的引用总数——每个可选、向量、字符串或二进制大对象字段都占用一个引用。