X-Git-Url: https://git.saurik.com/apt.git/blobdiff_plain/08e8f724674eb96678dcabf856534c58f5c29996..d8ea5ec978b2fa1074d84abc4d4e5bab19f2a1ae:/apt-pkg/contrib/cmndline.h diff --git a/apt-pkg/contrib/cmndline.h b/apt-pkg/contrib/cmndline.h index 038f421e7..e611cd637 100644 --- a/apt-pkg/contrib/cmndline.h +++ b/apt-pkg/contrib/cmndline.h @@ -1,6 +1,6 @@ // -*- mode: cpp; mode: fold -*- // Description /*{{{*/ -// $Id: cmndline.h,v 1.1 1998/09/22 05:30:26 jgg Exp $ +// $Id: cmndline.h,v 1.6 1999/01/18 06:20:07 jgg Exp $ /* ###################################################################### Command Line Class - Sophisticated command line parser @@ -38,7 +38,6 @@ ##################################################################### */ /*}}}*/ -// Header section: pkglib #ifndef PKGLIB_CMNDLINE_H #define PKGLIB_CMNDLINE_H @@ -52,13 +51,15 @@ class CommandLine { public: struct Args; + struct Dispatch; protected: Args *ArgList; Configuration *Conf; - bool HandleOpt(int &I,int argc,const char *argv[],const char *&Opt,Args *A); - + bool HandleOpt(int &I,int argc,const char *argv[], + const char *&Opt,Args *A,bool PreceedeMatch = false); + public: enum AFlags @@ -67,15 +68,19 @@ class CommandLine IntLevel = (1 << 1), Boolean = (1 << 2), InvBoolean = (1 << 3), - ConfigFile = (1 << 4) | HasArg + ConfigFile = (1 << 4) | HasArg, + ArbItem = (1 << 5) | HasArg }; const char **FileList; bool Parse(int argc,const char **argv); void ShowHelp(); + unsigned int FileSize() const; + bool DispatchArg(Dispatch *List,bool NoMatch = true); CommandLine(Args *AList,Configuration *Conf); + ~CommandLine(); }; struct CommandLine::Args @@ -86,6 +91,13 @@ struct CommandLine::Args unsigned long Flags; inline bool end() {return ShortOpt == 0 && LongOpt == 0;}; + inline bool IsBoolean() {return Flags == 0 || (Flags & (Boolean|InvBoolean)) != 0;}; +}; + +struct CommandLine::Dispatch +{ + const char *Match; + bool (*Handler)(CommandLine &); }; - + #endif