UEFIStarter
a simple UEFI framework
cmdline.h
Go to the documentation of this file.
1 
11 #ifndef __CMDLINE_H
12 #define __CMDLINE_H
13 
14 #include <Uefi.h>
15 
17 #define RV_HELP 0x10000000
18 
20 typedef enum
21 {
27 
31 typedef union {
32  double dbl;
33  UINT64 uint64;
34  CHAR16 *wcstr;
36 
39 
41 typedef struct {
45  CHAR16 *name;
46  CHAR16 *helptext;
48 
50 typedef struct {
51  CHAR16 *name;
52  UINTN count;
55 
63 #define ARG_GROUP(VARIABLE,LIST,DESCRIPTION) cmdline_argument_group_t VARIABLE={DESCRIPTION,sizeof(LIST)/sizeof(cmdline_argument_t),LIST};
64 
65 
66 BOOLEAN wctype_int(CHAR16 *string);
67 BOOLEAN wctype_float(CHAR16 *string);
68 double _wcstof(CHAR16 *str);
69 
78 #define DOUBLE_RANGE_VALIDATOR(FUNC,FIELD,MIN,MAX) static BOOLEAN FUNC(cmdline_value_t v) { return validate_double_range(v,FIELD,MIN,MAX); }
79 
80 BOOLEAN validate_double_range(cmdline_value_t v, CHAR16 *field, double min, double max);
81 
90 #define INT_RANGE_VALIDATOR(FUNC,FIELD,MIN,MAX) static BOOLEAN FUNC(cmdline_value_t v) { return validate_uint64_range(v,FIELD,MIN,MAX); }
91 
92 BOOLEAN validate_uint64_range(cmdline_value_t v, CHAR16 *field, UINT64 min, UINT64 max);
93 
94 EFI_STATUS parse_parameters(INTN argc, CHAR16 **argv, UINTN group_count, VA_LIST groups);
95 void print_help_text(UINTN group_count, VA_LIST groups);
96 
97 CHAR16 **argv_from_ascii(int argc, char **argv_ascii);
98 void free_argv();
99 
100 #endif
CHAR16 * helptext
a user-friendly help text
Definition: cmdline.h:46
BOOLEAN validate_uint64_range(cmdline_value_t v, CHAR16 *field, UINT64 min, UINT64 max)
Checks whether a uint64 command line parameter is within boundaries.
Definition: cmdline.c:176
UINTN count
the number of entries in the group
Definition: cmdline.h:52
cmdline_value_t value
the parsed value
Definition: cmdline.h:42
model for one command line argument
Definition: cmdline.h:41
BOOLEAN wctype_int(CHAR16 *string)
Checks whether a string looks like an integer.
Definition: cmdline.c:63
double _wcstof(CHAR16 *str)
Converts a numeric string into a double value.
Definition: cmdline.c:88
BOOLEAN validate_double_range(cmdline_value_t v, CHAR16 *field, double min, double max)
Checks whether a double command line parameter is within boundaries.
Definition: cmdline.c:159
void free_argv()
Frees the memory pages for the internal _argv storage.
Definition: cmdline.c:508
argument_type
the supported command line argument types
Definition: cmdline.h:20
BOOLEAN wctype_float(CHAR16 *string)
Checks whether a string looks like a number.
Definition: cmdline.c:74
UINT64 uint64
UINT64 variant.
Definition: cmdline.h:33
one parsed command line value
Definition: cmdline.h:31
boolean
Definition: cmdline.h:22
void print_help_text(UINTN group_count, VA_LIST groups)
Outputs the help text for all argument groups, including the built-in ones.
Definition: cmdline.c:276
double dbl
double variant
Definition: cmdline.h:32
CHAR16 ** argv_from_ascii(int argc, char **argv_ascii)
Converts ASCII command line parameters to UTF-16.
Definition: cmdline.c:489
CHAR16 * name
the argument&#39;s name
Definition: cmdline.h:45
CHAR16 * wcstr
UTF-16 string variant.
Definition: cmdline.h:34
cmdline_argument_t * list
the list of arguments in this group
Definition: cmdline.h:53
integer
Definition: cmdline.h:23
CHAR16 * name
the group&#39;s name or short description, may be NULL
Definition: cmdline.h:51
BOOLEAN validate_argument_f(cmdline_value_t)
function pointer type for command line argument validators
Definition: cmdline.h:38
UTF-16 string.
Definition: cmdline.h:25
validate_argument_f * validator_func
the validator function, may be NULL
Definition: cmdline.h:44
model for group of command line arguments
Definition: cmdline.h:50
argument_type type
the argument&#39;s type
Definition: cmdline.h:43
double
Definition: cmdline.h:24
EFI_STATUS parse_parameters(INTN argc, CHAR16 **argv, UINTN group_count, VA_LIST groups)
Parses command-line parameters.
Definition: cmdline.c:449