diff options
author | Arch Librarian <arch@canonical.com> | 2004-09-20 16:50:59 +0000 |
---|---|---|
committer | Arch Librarian <arch@canonical.com> | 2004-09-20 16:50:59 +0000 |
commit | 08e8f724674eb96678dcabf856534c58f5c29996 (patch) | |
tree | f8cde76f1af140aa9d0536ea062d6e1fd0379c98 /apt-pkg/contrib/cmndline.h | |
parent | c5162d564ac98a1e97812ec5d290d2375c0820d8 (diff) |
Sync
Author: jgg
Date: 1998-09-22 05:30:24 GMT
Sync
Diffstat (limited to 'apt-pkg/contrib/cmndline.h')
-rw-r--r-- | apt-pkg/contrib/cmndline.h | 91 |
1 files changed, 91 insertions, 0 deletions
diff --git a/apt-pkg/contrib/cmndline.h b/apt-pkg/contrib/cmndline.h new file mode 100644 index 000000000..038f421e7 --- /dev/null +++ b/apt-pkg/contrib/cmndline.h @@ -0,0 +1,91 @@ +// -*- mode: cpp; mode: fold -*- +// Description /*{{{*/ +// $Id: cmndline.h,v 1.1 1998/09/22 05:30:26 jgg Exp $ +/* ###################################################################### + + Command Line Class - Sophisticated command line parser + + This class provides a unified command line parser/option handliner/ + configuration mechanism. It allows the caller to specify the option + set and map the option set into the configuration class or other + special functioning. + + Filenames are stripped from the option stream and put into their + own array. + + The argument descriptor array can be initialized as: + + CommandLine::Args Args[] = + {{'q',"quiet","apt::get::quiet",CommandLine::IntLevel}, + {0,0,0,0,0}}; + + The flags mean, + HasArg - Means the argument has a value + IntLevel - Means the argument is an integer level indication, the + following -qqqq (+3) -q5 (=5) -q=5 (=5) are valid + Boolean - Means it is true/false or yes/no. + -d (true) --no-d (false) --yes-d (true) + --long (true) --no-long (false) --yes-long (true) + -d=yes (true) -d=no (false) Words like enable, disable, + true false, yes no and on off are recognized in logical + places. + InvBoolean - Same as boolean but the case with no specified sense + (first case) is set to false. + ConfigFile - Means this flag should be interprited as the name of + a config file to read in at this point in option processing. + Implies HasArg. + The default, if the flags are 0 is to use Boolean + + ##################################################################### */ + /*}}}*/ +// Header section: pkglib +#ifndef PKGLIB_CMNDLINE_H +#define PKGLIB_CMNDLINE_H + +#ifdef __GNUG__ +#pragma interface "apt-pkg/cmndline.h" +#endif + +#include <apt-pkg/configuration.h> + +class CommandLine +{ + public: + struct Args; + + protected: + + Args *ArgList; + Configuration *Conf; + bool HandleOpt(int &I,int argc,const char *argv[],const char *&Opt,Args *A); + + public: + + enum AFlags + { + HasArg = (1 << 0), + IntLevel = (1 << 1), + Boolean = (1 << 2), + InvBoolean = (1 << 3), + ConfigFile = (1 << 4) | HasArg + }; + + const char **FileList; + + bool Parse(int argc,const char **argv); + void ShowHelp(); + + CommandLine(Args *AList,Configuration *Conf); +}; + +struct CommandLine::Args +{ + char ShortOpt; + const char *LongOpt; + const char *ConfName; + unsigned long Flags; + + inline bool end() {return ShortOpt == 0 && LongOpt == 0;}; +}; + +#endif |