diff options
author | Miles Bader <miles@gnu.org> | 1997-05-15 22:28:16 +0000 |
---|---|---|
committer | Miles Bader <miles@gnu.org> | 1997-05-15 22:28:16 +0000 |
commit | 90baea3ab072bf8486aaf4d60f0b77ebdfb6301a (patch) | |
tree | 9dcc5bc53b30f1717a112b2f92d6463b8d11a67f /utils/parse.h | |
parent | 0cd3e5a21fdf695a53467e3b4fe35d5b6357c3c7 (diff) |
Initial checkin
Diffstat (limited to 'utils/parse.h')
-rw-r--r-- | utils/parse.h | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/utils/parse.h b/utils/parse.h new file mode 100644 index 00000000..72a96055 --- /dev/null +++ b/utils/parse.h @@ -0,0 +1,55 @@ +/* Random helpful option parsing functions + + Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc. + + Written by Miles Bader <miles@gnu.ai.mit.edu> + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2, or (at + your option) any later version. + + This program is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ + +#ifndef __PARSE_H__ +#define __PARSE_H__ + +/* For each string in the comma-separated list in ARG, call ADD_FN; if ARG is + empty and DEFAULT_FN isn't NULL, then call ADD_FN on the resutl of calling + DEFAULT_FN instead, otherwise signal an error. */ +extern void parse_strlist (char *arg, + void (*add_fn)(const char *str), + const char *(*default_fn)(), + const char *type_name); + +/* For each numeric string in the comma-separated list in ARG, call ADD_FN; + if ARG is empty and DEFAULT_FN isn't NULL, then call DEF_FN to get a number, + and call ADD_FN on that, otherwise signal an error. If any member of the + list isn't a number, and LOOKUP_FN isn't NULL, then it is called to return + an integer for the string. LOOKUP_FN should signal an error itself it + there's some problem parsing the string. */ +extern void parse_numlist (char *arg, + void (*add_fn)(unsigned num), + int (*default_fn)(), + int (*lookup_fn)(const char *str), + const char *type_name); + +/* Return the index of which of a set of strings ARG matches, including + non-ambiguous partial matches. CHOICE_FN should be a function that + returns the name of the Nth option, or 0 if N is out of range, and KIND + should be a string that describes what's being matched, for use in error + messages. If ALLOW_MISMATCHES is true, then -1 is returned in the event + that ARG matches no entry , otherwise, an error message is printed and the + program exits in this event. If ARG is an ambiguous match, an error + message is printed and the program exits. */ +extern int parse_enum (char *arg, const char *(*choice_fn)(unsigned n), + char *kind, int allow_mismatches); + +#endif /* __PARSE_H__ */ |