Annotation of gpl/axl/knife/exarg.h, revision 1.1.1.1
1.1 misho 1: /* LibExploreArguments: a library to parse command line options
2: * Copyright (C) 2005 Advanced Software Production Line, S.L.
3: *
4: * This program is free software; you can redistribute it and/or
5: * modify it under the terms of the GNU Lesser General Public License
6: * as published by the Free Software Foundation; either version 2.1 of
7: * the License, or (at your option) any later version.
8: *
9: * This program is distributed in the hope that it will be useful,
10: * but WITHOUT ANY WARRANTY; without even the implied warranty of
11: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12: * GNU Lesser General Public License for more details.
13: *
14: * You should have received a copy of the GNU Lesser General Public
15: * License along with this program; if not, write to the Free
16: * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
17: * 02111-1307 USA
18: *
19: * You may find a copy of the license under this software is released
20: * at COPYING file. This is LGPL software: you are wellcome to
21: * develop propietary applications using this library withtout any
22: * royalty or fee but returning back any change, improvement or
23: * addition in the form of source code, project image, documentation
24: * patches, etc.
25: *
26: * Contact us at:
27: *
28: * Postal address:
29: * Advanced Software Production Line, S.L.
30: * C/ Dr. Michavila NÂș 14
31: * Coslada 28820 Madrid
32: * Spain
33: *
34: * Email address:
35: * info@aspl.es - http://fact.aspl.es
36: *
37: */
38: #ifndef __EXARG_H__
39: #define __EXARG_H__
40:
41: /**
42: * \addtogroup exarg
43: * @{
44: */
45:
46: /**
47: * @brief Enum type which defines how a argument must be interpreted.
48: *
49: * This enumeration is used to figure out what type of argument is been installed.
50: * You can also see the documentation \ref exarg_install_arg to get more info about
51: * this enumeration.
52: */
53: typedef enum {
54: /**
55: * @brief Defines an argument with no option.
56: *
57: * \ref EXARG_NONE arguments are those with are switches for
58: * the program and receives not additional arguments to
59: * work. Examples of this types of arguments are usually
60: * <b>--help</b> and <b>--verson</b> options.
61: */
62: EXARG_NONE,
63: /**
64: * @brief Defines an argument with is expected to receive an
65: * additional integer value.
66: *
67: * \ref EXARG_INT arguments are those used to instruct some
68: * value to the system. An example of this type of argument
69: * can be: <b>--column-size 17</b>
70: *
71: * Because you are using an argument with expects to receive
72: * an interger, LibExArg will check this for you.
73: *
74: */
75:
76: EXARG_INT,
77: /**
78: * @brief Defines an argument with is expected to receive an
79: * additional string value.
80: *
81: * \ref EXARG_STRING arguments are those used to instruct some
82: * value to the system. An example of this type of argument
83: * can be: <b>--column-name "Test"</b>
84: *
85: * Because you are using an argument with expects to receive
86: * an string, LibExArg will check this for you.
87: *
88: *
89: */
90: EXARG_STRING
91: } ExArgType;
92:
93: /**
94: * @brief Free argument definition.
95: *
96: * This type represents an argument that is provided to the program
97: * without options (not part of data associated to a option and not an
98: * option itself. Once you get the first argument using \ref
99: * exarg_get_params, you can get the data inside using:
100: *
101: * - \ref exarg_param_get (to get the string value)
102: *
103: * To get next parameters you can use:
104: *
105: * - \ref exarg_param_next (will return the next param to the provided param).
106: *
107: */
108: typedef struct _ExArgument ExArgument;
109:
110: void exarg_parse (int argc,
111: char ** argv);
112:
113: void exarg_end ();
114:
115: void exarg_disable_help ();
116:
117: void exarg_add_usage_header (char * header);
118:
119: void exarg_add_help_header (char * header);
120:
121: void exarg_post_usage_header (char * post_header);
122:
123: void exarg_post_help_header (char * post_header);
124:
125: void exarg_install_arg (const char * arg_name,
126: const char * arg_short_name,
127: ExArgType type,
128: const char * description);
129:
130: void exarg_install_argv (int num_arg, ...);
131:
132: void exarg_add_dependency (const char * arg_name,
133: const char * arg_dependency);
134:
135: void exarg_add_exclusion (const char * arg_name,
136: const char * arg_excluded);
137:
138: void exarg_set_obligatory (char * arg_name);
139:
140: void exarg_accept_free_args (int accept);
141:
142: void exarg_define (char * arg_name,
143: char * value);
144:
145: int exarg_is_defined (char * arg_name);
146:
147: int exarg_is_definedv (char * first_value, ...);
148:
149: char * exarg_get_string (char * arg_name);
150:
151: char * exarg_get_string_alloc (char * arg_name);
152:
153: int exarg_get_int (char * arg_name);
154:
155: ExArgument * exarg_get_params ();
156:
157: const char * exarg_param_get (ExArgument * arg);
158:
159: ExArgument * exarg_param_next (ExArgument * arg);
160:
161: int exarg_get_params_num ();
162:
163: #endif
164:
165: /* @} */
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>