cmd_ln.h

来自「CMU大名鼎鼎的SPHINX-3大词汇量连续语音识别系统」· C头文件 代码 · 共 182 行

H
182
字号
/* ==================================================================== * Copyright (c) 1999-2004 Carnegie Mellon University.  All rights * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright *    notice, this list of conditions and the following disclaimer.  * * 2. Redistributions in binary form must reproduce the above copyright *    notice, this list of conditions and the following disclaimer in *    the documentation and/or other materials provided with the *    distribution. * * This work was supported in part by funding from the Defense Advanced  * Research Projects Agency and the National Science Foundation of the  * United States of America, and the CMU Sphinx Speech Consortium. * * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND  * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * ==================================================================== * *//* * cmd_ln.h -- Command line argument parsing. * * ********************************************** * CMU ARPA Speech Project * * Copyright (c) 1999 Carnegie Mellon University. * ALL RIGHTS RESERVED. * ********************************************** *  * HISTORY *  * 15-Jul-1997	M K Ravishankar (rkm@cs.cmu.edu) at Carnegie Mellon University * 		Added required arguments types. *  * 07-Dec-96	M K Ravishankar (rkm@cs.cmu.edu) at Carnegie Mellon University * 		Created, based on Eric's implementation.  Basically, combined several *		functions into one, eliminated validation, and simplified the interface. */#ifndef _LIBUTIL_CMD_LN_H_#define _LIBUTIL_CMD_LN_H_#include "prim_type.h"/** \file cmd_ln.h *  \brief Command-line parsing and handling. *   *  A command-line parsing routine that handle command-line input and *  file input of arguments.  */  #ifdef __cplusplusextern "C" {#endif  /**   * Type of reguired argument.    */#define ARG_REQUIRED	1/* Arguments of these types are OPTIONAL */  /** \def ARG_INT32   * Type of 32-bit integer   * \def ARG_FLOAT32   * Type of 32-bit floating-point number   * \def ARG_FLOAT64   * Type of 64-bit floating-point number   * \def ARG_STRING   * Type of String   */  #define ARG_INT32	2#define ARG_FLOAT32	4#define ARG_FLOAT64	6#define ARG_STRING	8#define ARG_MAX_LENGTH 256  /** Arguments of these types are REQUIRED */#define REQARG_INT32	(ARG_INT32 | ARG_REQUIRED)#define REQARG_FLOAT32	(ARG_FLOAT32 | ARG_REQUIRED)#define REQARG_FLOAT64	(ARG_FLOAT64 | ARG_REQUIRED)#define REQARG_STRING	(ARG_STRING | ARG_REQUIRED)typedef int32 argtype_t;typedef struct {    char *name;		/** Name of the command line switch (case-insensitive) */    argtype_t type;    char *deflt;	/** Default value (as a printed string) or NULL if none */    char *doc;		/** Documentation/description string */} arg_t;  /** * Parse the given list of arguments (name-value pairs) according to the given definitions. * Argument values can be retrieved in future using cmd_ln_access().  argv[0] is assumed to be * the program name and skipped.  Any unknown argument name causes a fatal error.  The routine * also prints the prevailing argument values (to stderr) after parsing. * Return value: 0 if successful, -1 if error. */int32 cmd_ln_parse (arg_t *defn,	/** In: Array of argument name definitions */		    int32 argc,		/** In: #Actual arguments */		    char *argv[]);	/** In: Actual arguments */  /**   * Parse an arguments file by deliminating on " \r\t\n" and putting each tokens * into an argv[] for cmd_ln_parse(). */int32 cmd_ln_parse_file(arg_t *defn, char *filename);  /** *Default entering routine application routine for command-line *initialization, this control the relationship between specified *argument file and argument list. */void cmd_ln_appl_enter(int argc,   /** In: #Actual arguments */		       char *argv[], /** In: Actual arguments */		       char* default_argfn, /** In: default argument file name*/		       arg_t *defn); /** Command-line argument definition */  /** *Default exit routine for application for command-line *uninitialization , this control the relationship between specified *argument file and argument list.   */void cmd_ln_appl_exit();/* * Return a pointer to the previously parsed value for the given argument name. * The pointer should be cast to the appropriate type before use: * e.g., *((float32 *) cmd_ln_access ("-eps") to get the float32 argument named "-eps". * And, some convenient wrappers around this function. */const void *cmd_ln_access (char *name);	/* In: Argument name whose value is sought */#define cmd_ln_str(name)	((char *)cmd_ln_access(name))#define cmd_ln_int32(name)	(*((int32 *)cmd_ln_access(name)))#define cmd_ln_float32(name)	(*((float32 *)cmd_ln_access(name)))#define cmd_ln_float64(name)	(*((float64 *)cmd_ln_access(name)))  /**   * Print a help message listing the valid argument names, and the associated * attributes as given in defn. */void  cmd_ln_print_help (FILE *fp,	/** In: File to which to print */			 arg_t *defn);	/** In: Array of argument name definitions *//* RAH, 4.17.01, call this to free memory allocated during cmd_ln_parse() */void cmd_ln_free ();#ifdef __cplusplus}#endif#endif

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?