53 static const char* blank29 =
" ";
54 static const char* blank25 = blank29 + 4;
57 std::set<OptionEntry*> sorted(root.
begin(),root.
end());
59 for(std::set<OptionEntry*>::iterator
i = sorted.begin(),
e = sorted.end();
63 std::size_t name_len = root.
size() + oe.
print(OS);
64 if (name_len < (25-1)) {
65 OS << (blank25 + name_len);
71 for (std::size_t
i = 29; *c != 0; c++,
i++) {
85 OS << option.
get_name() <<
"=<value>";
86 return option.
size() + 8;
91 return option.
size() + 1;
97 bool option_matcher(
const char* a, std::size_t a_len,
98 const char* b, std::size_t b_len) {
99 return (a_len == b_len) && std::strncmp(a, b, a_len) == 0;
105 const char* value,
size_t value_len) {
108 name_len -= root.
size();
109 assert(name_len > 0);
110 if (name[0] ==
'-' || name[0] ==
'+') {
111 assert(value_len == 0);
122 if (oe.
parse(value,value_len))
138 assert(value_len == 1);
139 char first = value[0];
148 ABORT_MSG(
"ERROR",
"boolean option not valid: " << value);
155 set_value(verb >= 0 ? verb : 0);
const char * get_name() const
static void print_usage(OptionPrefix &root, FILE *fp=stdout)
ChildSetTy::iterator iterator
const char * get_name() const
void insert(OptionEntry *oe)
JNIEnv jclass jobject const char * name
std::size_t option_print(OptionEntry &option, OStream &OS)
static int atoi(const char *nptr)
Simple stream class for formatted output.
virtual bool parse(const char *value, std::size_t value_len)=0
virtual std::size_t print(OStream &OS)=0
virtual bool parse(const char *value, std::size_t value_len)
This file contains the command line option parsing library.
const char * get_desc() const
OptionPrefix(const char *name)
#define ABORT_MSG(EXPR_SHORT, EXPR_LONG)
static bool parse_option(OptionPrefix &root, const char *name, size_t name_len, const char *value, size_t value_len)