📄 cmdparser.h
字号:
/* cmdParser.h - Command line parsing utility functions *//* Copyright 2000 Wind River Systems, Inc. *//*Modification history--------------------01b,23nov99,rcb Make KeywordMatch() function public.01a,01jun99,rcb First.*//*DESCRIPTIONThis file includes a collection of command-line parsing functions which areuseful in the creation of command line utilities, such as bus exercisers.There are three groups of functions defined by this library. The first isa collection of general string parser functions, such as functions to eliminatewhite space, functions to strip tokens out of a string, and so forth. The second set of functions drive the actual parsing process. In order to use this second set of functions, clients must construct a table of CMD_DESCRstructures which define the commands to be recognized by the parser. A brief example of such a table is shown below..CSCMD_DESCR commands [] = { {"Help", 4, "Help/?", "Displays list of commands.", CmdParserHelpFunc}, {"?", 1, NULL, NULL, CmdParserHelpFunc}, {"Exit", 4, "Exit", "Exits program.", CmdParserExitFunc}, {NULL, 0, NULL, NULL, NULL} };.CEThe first field is the keyword for the command. The second field specifiesthe number of characters of the command which must match - allowing the userto enter only a portion of the keyword as a shortcut. The third and fourthfields are strings giving the command usage and a brief help string. A NULLin the Help field indicates that the corresponding keyword is a synonym for another command its usage/help should not be shown. The final field is a pointer to a function of type CMD_EXEC_FUNC which will be invoked if the parser encounters the corresponding command.The third group of functions provide standard CMD_EXEC_FUNCs for certaincommonly used commands, such as CmdParserHelpFunc and CmdParserExitFunc asshown in the preceding example.The caller may pass a generic (pVOID) parameter to the command line parsingfunctions in the second group. This function is in turn passed to theCMD_EXEC_FUNCs. In this way, the caller can specify context informationfor the command execution functions.Commands are executed after the user presses [enter]. Multiple commands may be entered on the same command line separated by semicolons (';'). Each command as if it had been entered on a separate line (unless a command terminates with an error, in which case all remaining commands entered on the same line will be ignored).*/#ifndef __INCcmdParserh#define __INCcmdParserh#ifdef __cplusplusextern "C" {#endif/* Constants *//* Command parser return codes */#define RET_OK 0 /* Normal termination */#define RET_ERROR 1 /* Program failure */#define RET_CONTINUE 2 /* Program continues looping *//* Prompt & input definitions */#define CMD_SEPARATOR ';' /* Command separator character */#define MAX_CMD_LEN 256 /* Maximum command length */#define MAX_KEYWORD_LEN 32 /* Maximum cmd keyword length *//* Command descriptors *//* * CMD_EXEC_FUNC * * Note: The CMD_EXEC_FUNC is expected to update the <Cmd> parameter so * that it points to the next character in the command line following * the parameters consumed by the CMD_EXEC_FUNC itself. */typedef UINT16 (*CMD_EXEC_FUNC) ( pVOID param, /* Generic parameter passed down */ char **ppCmd, /* Ptr to remainder of cmd line */ FILE *fin, /* stream for input (if any) */ FILE *fout /* stream for output (if any) */ );/* * CMD_DESCR - defines a command/keyword to be recognized by parser */typedef struct cmd_descr { char *keyword; /* Command keyword */ int minMatch; /* Minimum # of chars to match */ char *usage; /* Syntax */ char *help; /* Description string */ CMD_EXEC_FUNC execFunc; /* Command execution function */ } CMD_DESCR, *pCMD_DESCR;/* function prototypes */UINT16 PromptAndExecCmd ( pVOID param, /* Generic parameter for exec funcs */ char *pPrompt, /* Prompt to display */ FILE *fin, /* Input stream */ FILE *fout, /* Output stream */ CMD_DESCR *pCmdTable /* CMD_DESCR table */ );UINT16 ExecCmd ( pVOID param, /* Generic parameter for exec funcs */ char *pCmd, /* Cmd buffer to be parsed/executed */ FILE *fin, /* Stream for input */ FILE *fout, /* Stream for output */ CMD_DESCR *pCmdTable /* CMD_DESCR table */ );int KeywordMatch ( char *s1, /* string 1 */ char *s2, /* string 2 */ int len /* max length to compare */ );char *SkipSpace ( char *pStr /* Input string */ );UINT16 TruncSpace ( char *pStr /* Input string */ );char *GetNextToken ( char *pStr, /* Input string */ char *pToken, /* Bfr to receive token */ UINT16 tokenLen /* Max length of Token bfr */ );char *GetHexToken ( char *pStr, /* input string */ long *pToken, /* buffer to receive token value */ long defVal /* default value */ );UINT16 CmdParserHelpFunc ( pVOID param, /* Generic parameter passed down */ char **ppCmd, /* Ptr to remainder of cmd line */ FILE *fin, /* stream for input (if any) */ FILE *fout /* stream for output (if any) */ );UINT16 CmdParserExitFunc ( pVOID param, /* Generic parameter passed down */ char **ppCmd, /* Ptr to remainder of cmd line */ FILE *fin, /* stream for input (if any) */ FILE *fout /* stream for output (if any) */ );#ifdef __cplusplus}#endif#endif /* __INCcmdParserh *//* End of file. */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -