]> git.saurik.com Git - apt.git/blobdiff - apt-pkg/contrib/cmndline.h
Merge branch 'debian/sid' into debian/experimental
[apt.git] / apt-pkg / contrib / cmndline.h
index f502dfeb63269064a5cd3224642a92a65cfb7e73..1802766333a258703d801735c149bd75fb384e0d 100644 (file)
@@ -1,6 +1,6 @@
 // -*- mode: cpp; mode: fold -*-
 // Description                                                         /*{{{*/
-// $Id: cmndline.h,v 1.3 1998/10/24 20:14:35 jgg Exp $
+// $Id: cmndline.h,v 1.7 1999/10/31 06:32:28 jgg Exp $
 /* ######################################################################
 
    Command Line Class - Sophisticated command line parser
@@ -17,7 +17,7 @@
    
  CommandLine::Args Args[] = 
  {{'q',"quiet","apt::get::quiet",CommandLine::IntLevel},
-  {0,0,0,0,0}};
+  {0,0,0,0}};
    
    The flags mean,
      HasArg - Means the argument has a value
      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.
+     ArbItem    - Means the item is an arbitrary configuration string of
+                  the form item=value, where item is passed directly
+                  to the configuration class.
    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 
-
+#ifndef APT_8_CLEANER_HEADERS
 #include <apt-pkg/configuration.h>
+#endif
+
+class Configuration;
 
 class CommandLine
 {
    public:
    struct Args;
+   struct Dispatch;
    
    protected:
    
@@ -59,6 +62,7 @@ class CommandLine
    Configuration *Conf;
    bool HandleOpt(int &I,int argc,const char *argv[],
                  const char *&Opt,Args *A,bool PreceedeMatch = false);
+   void static SaveInConfig(unsigned int const &argc, char const * const * const argv);
 
    public:
    
@@ -77,7 +81,14 @@ class CommandLine
    bool Parse(int argc,const char **argv);
    void ShowHelp();
    unsigned int FileSize() const;
+   bool DispatchArg(Dispatch *List,bool NoMatch = true);
       
+   static char const * GetCommand(Dispatch const * const Map,
+        unsigned int const argc, char const * const * const argv);
+
+   static CommandLine::Args MakeArgs(char ShortOpt, char const *LongOpt,
+        char const *ConfName, unsigned long Flags);
+
    CommandLine(Args *AList,Configuration *Conf);
    ~CommandLine();
 };
@@ -92,5 +103,11 @@ struct CommandLine::Args
    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