Annotation of gpl/axl/knife/exarg.h, revision 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>