forked from OSchip/llvm-project
179 lines
7.3 KiB
TableGen
179 lines
7.3 KiB
TableGen
|
|
// The fields below describe how the fields of `OptionDefinition` struct are
|
|
// initialized by different definitions in the Options.td and this file.
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
// Field: usage_mask
|
|
// Default value: LLDB_OPT_SET_ALL (Option allowed in all groups)
|
|
// Set by:
|
|
// - `Group`: Sets a single group to this option.
|
|
// Example: def foo : Option<"foo", "f">, Group<1>;
|
|
// - `Groups`: Sets a given list of group numbers.
|
|
// Example: def foo : Option<"foo", "f">, Groups<[1,4,6]>;
|
|
// - `GroupRange`: Sets an interval of groups. Start and end are inclusive.
|
|
// Example: def foo : Option<"foo", "f">, GroupRange<1, 4>;
|
|
// Sets group 1, 2, 3, 4 for the option.
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
// Field: required
|
|
// Default value: false (Not required)
|
|
// Set by:
|
|
// - `Required`: Marks the option as required.
|
|
// Example: def foo : Option<"foo", "f">, Required;
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
// Field: long_option
|
|
// Default value: not available (has to be defined in Option)
|
|
// Set by:
|
|
// - `Option` constructor: Already set by constructor.
|
|
// Example: def foo : Option<"long-option", "l">
|
|
// ^
|
|
// long option value
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
// Field: short_option
|
|
// Default value: not available (has to be defined in Option)
|
|
// Set by:
|
|
// - `Option` constructor: Already set by constructor.
|
|
// Example: def foo : Option<"long-option", "l">
|
|
// ^
|
|
// short option
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
// Field: option_has_arg
|
|
// Default value: OptionParser::eNoArgument (No argument allowed)
|
|
// Set by:
|
|
// - `OptionalArg`: Sets the argument type and marks it as optional.
|
|
// - `Arg`: Sets the argument type and marks it as required.
|
|
// - `EnumArg`: Sets the argument type to an enum and marks it as required.
|
|
// - `OptionalEnumArg`: Same as EnumArg but marks it as optional.
|
|
// See argument_type field for more info.
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
// Field: validator
|
|
// Default value: 0 (No validator for option)
|
|
// Set by:
|
|
// - `Validator`: Sets the value to a given validator (which has to exist in
|
|
// the surrounding code.
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
// Field: enum_values
|
|
// Default value: {} (No enum associated with this option)
|
|
// Set by:
|
|
// - `OptionalEnumArg`:
|
|
// - `EnumArg`: Sets the argument type and assigns it a enum holding the valid
|
|
// values. The enum needs to be a variable in the including code.
|
|
// Marks the option as required (see option_has_arg).
|
|
// Example: def foo : Option<"foo", "f">,
|
|
// EnumArg<"SortOrder",
|
|
// "OptionEnumValues(g_sort_option_enumeration)">;
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
// Field: completion_type
|
|
// Default value: CommandCompletions::eNoCompletion (no tab completion)
|
|
// Set by:
|
|
// - `Completion`: Gives the option a single completion kind.
|
|
// Example: def foo : Option<"foo", "f">,
|
|
// Completion<"DiskFile">;
|
|
// Sets the completion to eDiskFileCompletion
|
|
//
|
|
// - `Completions`: Sets a given kinds of completions.
|
|
// Example: def foo : Option<"foo", "f">,
|
|
// Completions<["DiskFile", "DiskDirectory"]>;
|
|
// Sets the completion to
|
|
// `eDiskFileCompletion | eDiskDirectoryCompletion`.
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
// Field: argument_type
|
|
// Default value: eArgTypeNone
|
|
// Set by:
|
|
// - `OptionalArg`: Sets the argument type and marks it as optional.
|
|
// Example: def foo : Option<"foo", "f">, OptionalArg<"Pid">;
|
|
// Sets the argument type to eArgTypePid and marks option as
|
|
// optional (see option_has_arg).
|
|
// - `Arg`: Sets the argument type and marks it as required.
|
|
// Example: def foo : Option<"foo", "f">, Arg<"Pid">;
|
|
// Sets the argument type to eArgTypePid and marks option as
|
|
// required (see option_has_arg).
|
|
// - `OptionalEnumArg`:
|
|
// - `EnumArg`: Sets the argument type and assigns it a enum holding the valid
|
|
// values. The enum needs to be a variable in the including code.
|
|
// Marks the option as required (see option_has_arg).
|
|
// Example: def foo : Option<"foo", "f">,
|
|
// EnumArg<"SortOrder",
|
|
// "OptionEnumValues(g_sort_option_enumeration)">;
|
|
// Use `OptionalEnumArg` for having an option enum argument.
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
// Field: usage_text
|
|
// Default value: ""
|
|
// Set by:
|
|
// - `Desc`: Sets the description for the given option.
|
|
// Example: def foo : Option<"foo", "f">, Desc<"does nothing.">;
|
|
// Sets the description to "does nothing.".
|
|
|
|
// Base class for all options.
|
|
class Option<string fullname, string shortname> {
|
|
string FullName = fullname;
|
|
string ShortName = shortname;
|
|
// The full associated command/subcommand such as "settings set".
|
|
string Command;
|
|
}
|
|
|
|
// Moves the option into a list of option groups.
|
|
class Groups<list<int> groups> {
|
|
list<int> Groups = groups;
|
|
}
|
|
|
|
// Moves the option in all option groups in a range.
|
|
// Start and end values are inclusive.
|
|
class GroupRange<int start, int end> {
|
|
int GroupStart = start;
|
|
int GroupEnd = end;
|
|
}
|
|
// Moves the option in a single option group.
|
|
class Group<int group> {
|
|
int GroupStart = group;
|
|
int GroupEnd = group;
|
|
}
|
|
|
|
// Sets the description for the option that should be
|
|
// displayed to the user.
|
|
class Desc<string description> {
|
|
string Description = description;
|
|
}
|
|
|
|
// Marks the option as required when calling the
|
|
// associated command.
|
|
class Required {
|
|
bit Required = 1;
|
|
}
|
|
|
|
// Gives the option an optional argument.
|
|
class OptionalArg<string type> {
|
|
string ArgType = type;
|
|
bit OptionalArg = 1;
|
|
}
|
|
|
|
// Gives the option an required argument.
|
|
class Arg<string type> {
|
|
string ArgType = type;
|
|
}
|
|
|
|
// Gives the option an required argument.
|
|
class EnumArg<string type, string enum> {
|
|
string ArgType = type;
|
|
string ArgEnum = enum;
|
|
}
|
|
|
|
// Gives the option an required argument.
|
|
class OptionalEnumArg<string type, string enum> {
|
|
string ArgType = type;
|
|
string ArgEnum = enum;
|
|
bit OptionalArg = 1;
|
|
}
|
|
|
|
// Sets the available completions for the given option.
|
|
class Completions<list<string> completions> {
|
|
list<string> Completions = completions;
|
|
}
|
|
// Sets a single completion for the given option.
|
|
class Completion<string completion> {
|
|
list<string> Completions = [completion];
|
|
}
|
|
|
|
// Sets the validator for a given option.
|
|
class Validator<string validator> {
|
|
string Validator = validator;
|
|
}
|