| |
| // 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; |
| } |