19dba64beSDimitry Andric// Base class for all options.
29dba64beSDimitry Andricclass Property<string name, string type> {
39dba64beSDimitry Andric  string Name = name;
49dba64beSDimitry Andric  string Type = type;
59dba64beSDimitry Andric  string Definition;
69dba64beSDimitry Andric}
79dba64beSDimitry Andric
89dba64beSDimitry Andric// Sets the description for the property that should be displayed to the user.
99dba64beSDimitry Andricclass Desc<string description> {
109dba64beSDimitry Andric  string Description = description;
119dba64beSDimitry Andric}
129dba64beSDimitry Andric
139dba64beSDimitry Andric// Marks the property as global.
149dba64beSDimitry Andricclass Global {
159dba64beSDimitry Andric  bit Global = 1;
169dba64beSDimitry Andric}
179dba64beSDimitry Andric
189dba64beSDimitry Andricclass DefaultTrue {
199dba64beSDimitry Andric  int DefaultUnsignedValue = 1;
209dba64beSDimitry Andric  bit HasDefaultUnsignedValue = 1;
21480093f4SDimitry Andric  bit HasDefaultBooleanValue = 1;
229dba64beSDimitry Andric}
239dba64beSDimitry Andric
249dba64beSDimitry Andricclass DefaultFalse {
259dba64beSDimitry Andric  int DefaultUnsignedValue = 0;
269dba64beSDimitry Andric  bit HasDefaultUnsignedValue = 1;
27480093f4SDimitry Andric  bit HasDefaultBooleanValue = 1;
289dba64beSDimitry Andric}
299dba64beSDimitry Andric
309dba64beSDimitry Andric// Gives the property a default string value.
319dba64beSDimitry Andricclass DefaultStringValue<string value> {
329dba64beSDimitry Andric  string DefaultStringValue = value;
339dba64beSDimitry Andric  bit HasDefaultStringValue = 1;
349dba64beSDimitry Andric}
359dba64beSDimitry Andric
369dba64beSDimitry Andric// Gives the property a default enum value.
379dba64beSDimitry Andricclass DefaultEnumValue<string value> {
389dba64beSDimitry Andric  string DefaultEnumValue = value;
399dba64beSDimitry Andric  bit HasDefaultEnumValue = 1;
409dba64beSDimitry Andric}
419dba64beSDimitry Andric
429dba64beSDimitry Andric// Gives the property a default string value.
439dba64beSDimitry Andricclass DefaultUnsignedValue<int value> {
449dba64beSDimitry Andric  int DefaultUnsignedValue = value;
459dba64beSDimitry Andric  bit HasDefaultUnsignedValue = 1;
469dba64beSDimitry Andric}
479dba64beSDimitry Andric
489dba64beSDimitry Andric// Gives the property enum values.
499dba64beSDimitry Andricclass EnumValues<string enum> {
509dba64beSDimitry Andric  string EnumValues = enum;
519dba64beSDimitry Andric}
52*5ffd83dbSDimitry Andric
53*5ffd83dbSDimitry Andric// Determines the element type for arrays and dictionaries.
54*5ffd83dbSDimitry Andricclass ElementType<string value> {
55*5ffd83dbSDimitry Andric  string ElementType = value;
56*5ffd83dbSDimitry Andric  bit HasElementType = 1;
57*5ffd83dbSDimitry Andric}
58