From 90baea3ab072bf8486aaf4d60f0b77ebdfb6301a Mon Sep 17 00:00:00 2001 From: Miles Bader Date: Thu, 15 May 1997 22:28:16 +0000 Subject: Initial checkin --- utils/parse.h | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 utils/parse.h (limited to 'utils/parse.h') 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 + + 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__ */ -- cgit v1.2.3