📄 ofcmdln.h
字号:
** @param value reference to floating point variable where the value should be stored * @param low minimum boundary for value (used for range check) * @param incl if OFTrue 'low' value is valid (included), otherwise invalid * ** @return status of get/conversion, VS_Normal if successful (use getStatusString for error string) */ E_ValueStatus getValueAndCheckMin(OFCmdFloat &value, const OFCmdFloat low, const OFBool incl = OFTrue); /** returns next argument as a floating point value and checks for given boundaries * ** @param value reference to floating point variable where the value should be stored * @param low minimum boundary for value (used for range check, boundary included) * @param high maximum boundary for value (dito) * ** @return status of get/conversion, VS_Normal if successful (use getStatusString for error string) */ E_ValueStatus getValueAndCheckMinMax(OFCmdFloat &value, const OFCmdFloat low, const OFCmdFloat high); /** returns next argument as a C string * ** @param value reference to C string variable where the value should be stored * ** @return status of get/conversion, VS_Normal if successful (use getStatusString for error string) */ E_ValueStatus getValue(const char *&value); /** returns next argument as a C++ string * ** @param value reference to C++ string variable where the value should be stored * ** @return status of get/conversion, VS_Normal if successful (use getStatusString for error string) */ E_ValueStatus getValue(OFCmdString &value); // --- parsing command line /** parses specified command line arguments (argc, argv). * Additionally create internal structures for evaluation and return status indicating any errors * occuring during the parse process. If "--help" or the specified shortcut is the only command * line argument, the status code PS_NoArguments is returned. * ** @param argCount number of command line arguments stored in argValue * @param argValue array where the command line arguments are stored * @param flags optional flags affecting the parse process (see below) * @param startPos index of first argument which should be parsed (starting from 0, default: 1) * ** @return status of parse process, PS_Normal if successful (use getStatusString for error string) */ E_ParseStatus parseLine(int argCount, char *argValue[], const int flags = 0, const int startPos = 1); // --- get usage/status strings /** returns command line syntax as a C++ string (single text line). * Text consists of "[options]" (if defined by addOption) and all parameters defined by addParam. * ** @param syntaxStr reference to C++ string where the text should be stored */ void getSyntaxString(OFString &syntaxStr) const; /** returns description of all options as a C++ string (multiple text lines). * Text consists of group headings, short and long option names, option descriptions and additional * option values. * ** @param optionStr reference to C++ string where the text should be stored */ void getOptionString(OFString &optionStr) const; /** returns description of all parameters as a C++ string (multiple text lines). * Text consists of heading "parameters:" and parameter names and descriptions. * ** @param paramStr reference to C++ string where the text should be stored */ void getParamString(OFString ¶mStr) const; /** returns status of parseLine as a C++ string * ** @param status value returned by method parseLine * @param statusStr reference to C++string where the text should be stored */ void getStatusString(const E_ParseStatus status, OFString &statusStr); /** returns status of getParam as a C++ string * ** @param status value returned by method getParam * @param statusStr reference to C++string where the text should be stored */ void getStatusString(const E_ParamValueStatus status, OFString &statusStr); /** returns status of getValue as a C++ string * ** @param status value returned by method getValue * @param statusStr reference to C++string where the text should be stored */ void getStatusString(const E_ValueStatus status, OFString &statusStr); // --- flags (used for method parseLine) /// parsing flag to expand wildcard under Windows (very similar to Unix) static const int ExpandWildcards; /// disable support for command files ("@filename") containing additional arguments static const int NoCommandFiles; protected: /** checks whether given option is valid (starting with an option char and not followed by a number) */ OFBool checkOption(const OFString &option, const OFBool mode = OFTrue) const; /** finds specified parameter and sets given iterator to this position */ OFBool findParam(int pos, OFListIterator(OFCmdParamPos *) &pos_iter); /** finds specified option and returns reference to its describing structure */ const OFCmdOption *findCmdOption(const OFString &option) const; /** stores the specified parameter in the argument/parameter list */ void storeParameter(const OFString ¶m, const int directOption = 0); /** check whether 'argValue' points to command file and parse content if so */ E_ParseStatus parseCommandFile(const char *argValue, OFList<OFString> &argList); /** packs the two 16 bit values into one 32 bit value */ int packColumnValues(int longCols, int shortCols) const; /** unpacks two 16 bit values from one 32 bit value */ void unpackColumnValues(const int value, unsigned int &longCols, unsigned int &shortCols) const;#ifdef HAVE_WINDOWS_H /** expands wildcards in specified parameter. * Very similar to Unix environments, stores each resulting parameter in the argument/parameter list */ void expandWildcards(const OFString ¶m, int directOption = 0);#endif /** checks whether number of parameters in parsed command line is within the range of min/max (see below) */ E_ParseStatus checkParamCount(); /** returns last command line argument as a C++ string */ OFBool getLastArg(OFString &arg); /** returns name of parameter which is missed in the parsed command line (used for error output) */ OFBool getMissingParam(OFString ¶m); private: /// list of valid/defined command line options OFList<OFCmdOption *> ValidOptionList; /// list of valid/defined command line parameters OFList<OFCmdParam *> ValidParamList; /// list of command line arguments (after parsing) OFList<OFString> ArgumentList; /// current position in argument list OFListIterator(OFString) ArgumentIterator; /// list of parameter positions within argument list OFList<OFCmdParamPos *> ParamPosList; /// list of option positions within argument list OFList<OFListIterator_OFString> OptionPosList; /// current position in option position list OFListIterator(OFListIterator_OFString) OptionPosIterator; /// current position in option position list (used for option blocks) OFListIterator(OFListIterator_OFString) OptionBlockIterator; /// OFTrue if option block is active, OFFalse otherwise OFBool OptionBlockMode; /// C++ string conisting of all valid characters introducing an option OFString OptionChars; /// OFTrue if an "exclusive" option is used in the command line, OFFalse otherwise OFBool ExclusiveOption; /// width of column for long option names int LongColumn; /// width of column for short option names int ShortColumn; /// width of column for parameter names int ParamColumn; /// minimum number of parameters which should be accepted int MinParamCount; /// maximum number of parameter which should be accepted int MaxParamCount; /// mode of last added parameter (used for debug checking) OFCmdParam::E_ParamMode LastParamMode; private: /// private undefined assignment operator OFCommandLine &operator=(const OFCommandLine &obj);};#endif/* * * CVS/RCS Log: * $Log: ofcmdln.h,v $ * Revision 1.37 2005/12/08 16:05:48 meichel * Changed include path schema for all DCMTK header files * * Revision 1.36 2003/12/05 13:59:33 joergr * Fixed problem with retrieving option values using the new iteration feature. * * Revision 1.35 2003/12/05 10:36:03 joergr * Added support for iterating over command line arguments and options. * Removed leading underscore characters from preprocessor symbols (reserved * symbols). Updated copyright date where appropriate. * * Revision 1.34 2003/06/12 13:19:58 joergr * Added support for so-called command files ("@filename") which can be used to * summarize command line options and parameter * * Revision 1.33 2003/05/20 08:42:39 joergr * Renamed parameters/variables "string" to avoid name clash with STL class. * * Revision 1.32 2002/12/09 13:04:41 joergr * Replaced tab characters by spaces. * * Revision 1.31 2002/12/05 13:48:21 joergr * Make sure that no warning on "unchecked command line options" is reported in * debug mode when an exclusive option is used. * * Revision 1.30 2002/11/27 11:23:04 meichel * Adapted module ofstd to use of new header file ofstdinc.h * * Revision 1.29 2002/09/19 08:30:20 joergr * Added general support for "exclusive" command line options besides "--help", * e.g. "--version". * * Revision 1.28 2001/11/09 15:46:42 joergr * Renamed some of the getValue/getParam methods to avoid ambiguities reported * by certain compilers. * * Revision 1.27 2001/08/23 16:05:52 meichel * Added private undefined copy assignment operators to avoid gcc warnings * * Revision 1.26 2001/06/01 15:51:32 meichel * Updated copyright header * * Revision 1.25 2000/10/10 12:01:20 meichel * Created/updated doc++ comments * * Revision 1.24 2000/04/14 15:17:11 meichel * Adapted all ofstd library classes to consistently use ofConsole for output. * * Revision 1.23 2000/03/08 16:36:01 meichel * Updated copyright header. * * Revision 1.22 2000/03/07 15:38:49 joergr * Changed behaviour of class OFConsoleApplication to support automatic * evaluation of "--help" option for command line application with no * mandatory parameter. * * Revision 1.21 2000/03/03 14:02:46 meichel * Implemented library support for redirecting error messages into memory * instead of printing them to stdout/stderr for GUI applications. * * Revision 1.20 2000/03/02 12:39:11 joergr * Fixed inconsistency: console applications with no or only optional * parameters could not be started without any command line argument * because this was always regarded identical with "--help" (print usage). * * Revision 1.19 1999/10/04 10:02:31 joergr * Fixed bug in wildcard expansion (concerning "direct option" feature). * * Revision 1.18 1999/09/13 16:36:54 joergr * Corrected bug in OFCommandLine::findOption() regarding the optional * parameter 'pos' specifying a reference command line parameter. * * Revision 1.17 1999/09/06 16:48:25 joergr * Added support to method 'findOption()' to detect options which are * 'direct' predecessors of an optionally specified reference parameter. * * Revision 1.16 1999/05/04 08:38:26 joergr * Added DOC++ comments to header file. * * Revision 1.15 1999/04/29 15:21:45 joergr * Removed debug code. * * Revision 1.13 1999/04/28 13:13:16 joergr * Removed some '#ifdef DEBUG' statements from header files to avoid * problems with inconsistent compilations. * * Revision 1.12 1999/04/27 17:46:05 joergr * Added some comments (DOC++ style). * * Revision 1.10 1999/04/26 16:32:47 joergr * Added support to define minimum width of short and long option columns. * Removed bug: empty parameters have always been interpreted as options. * Enhanced support of wildcard expansion under Windows (now very similar * to Unix shells). * * Revision 1.9 1999/03/24 16:59:38 joergr * Added optional parameters to define minimum width of columns for short and * long options in syntax output. * Changed optional integer parameter in method findOption to enum type. * * Revision 1.8 1999/02/08 11:51:38 joergr * Removed '#include <iostream.h>' from ofcmdln.h. * * Revision 1.7 1999/02/05 14:07:07 joergr * Added automatic wildcard expansion for Windows compilers. * * Revision 1.6 1998/12/02 18:44:25 joergr * Introduced test whether added options are correct (starting with defined * option character followed by a character which is no number). Changed * parse routine to distinguish between options (normally starting mit - or * +) and signed numbers which can be valid parameters. * * Revision 1.5 1998/12/02 17:38:53 joergr * Introduced new enum type used to indicate the status when converting * parameter values (similar to option values). Changed return value of * getParam() methods to this type. Added corresponding getStatusString() * method to convert status code to strings. * * Revision 1.4 1998/12/02 15:19:49 joergr * Added methods to convert parameters to signed/unsigned integers and * floats. Changed return value of existing getParam() methods. * * Revision 1.3 1998/11/30 12:30:18 joergr * Use lists of pointers (!) to internal data structures to avoid errors with * MSVC5 (operator '==' was not defined to compare structures). * * Revision 1.2 1998/11/30 12:27:02 joergr * Introduced additional type definition to avoid errors with MSVC5 when * using ListIterators of ListIterators (syntax problems?). * * Revision 1.1 1998/11/27 12:34:47 joergr * Added class to handle command line arguments. * * */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -