]> git.saurik.com Git - apt.git/blobdiff - apt-pkg/contrib/cmndline.h
Backed out previous apt-pkg/contrib/mmap.cc fix/kludge/...
[apt.git] / apt-pkg / contrib / cmndline.h
index 038f421e70b5ee3b08efc8ac05a18a626e8e8646..e611cd6372f30fbc72799b7450402b81f565b97a 100644 (file)
@@ -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