[cfe-commits] r66088 - in /cfe/trunk: include/clang/Driver/Arg.h lib/Driver/Arg.cpp

Daniel Dunbar daniel at zuster.org
Wed Mar 4 14:37:53 PST 2009


Author: ddunbar
Date: Wed Mar  4 16:37:52 2009
New Revision: 66088

URL: http://llvm.org/viewvc/llvm-project?rev=66088&view=rev
Log:
Driver: Stub out Arg implementations.

Added:
    cfe/trunk/lib/Driver/Arg.cpp
Modified:
    cfe/trunk/include/clang/Driver/Arg.h

Modified: cfe/trunk/include/clang/Driver/Arg.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Driver/Arg.h?rev=66088&r1=66087&r2=66088&view=diff

==============================================================================
--- cfe/trunk/include/clang/Driver/Arg.h (original)
+++ cfe/trunk/include/clang/Driver/Arg.h Wed Mar  4 16:37:52 2009
@@ -10,6 +10,13 @@
 #ifndef CLANG_DRIVER_ARG_H_
 #define CLANG_DRIVER_ARG_H_
 
+#include "llvm/Support/Casting.h"
+using llvm::isa;
+using llvm::cast;
+using llvm::cast_or_null;
+using llvm::dyn_cast;
+using llvm::dyn_cast_or_null;
+
 #include "Util.h"
 
 namespace clang {
@@ -25,15 +32,18 @@
   /// ArgList to provide efficient iteration over all instances of a
   /// particular option.
   class Arg {
-  private:
+  public:
     enum ArgClass {
-      PositionalArg = 0,
-      JoinedArg,
-      SeparateArg,
-      CommaJoinedArg,
-      JoinedAndSeparateArg
+      PositionalClass = 0,
+      JoinedClass,
+      SeparateClass,
+      CommaJoinedClass,
+      JoinedAndSeparateClass
     };
 
+  private:
+    ArgClass Kind;
+
     /// The option this argument is an instance of.
     const Option *Opt;
     
@@ -46,16 +56,21 @@
     
   public:
     Arg(const Arg &);
+    virtual ~Arg();
 
-    /// render - Append the argument onto the given array as strings.
-    virtual void render(const ArgList &Args, ArgStringList &Output) const = 0;
-
-    virtual unsigned getNumValues() const = 0;
-    virtual const char *getValue(const ArgList &Args, unsigned N) const = 0;
+    ArgClass getKind() const { return Kind; }
 
     const Option &getOption() const { return *Opt; }
 
     unsigned getIndex() const { return Index; }
+
+    virtual unsigned getNumValues() const = 0;
+    virtual const char *getValue(const ArgList &Args, unsigned N) const = 0;
+    
+    /// render - Append the argument onto the given array as strings.
+    virtual void render(const ArgList &Args, ArgStringList &Output) const = 0;
+
+    static bool classof(const Arg *) { return true; }    
   };
 
   /// PositionalArg - A simple positional argument.
@@ -63,10 +78,15 @@
   public:
     PositionalArg(const Option *Opt, unsigned Index);
 
-    virtual void render(const ArgList &Args, ArgStringList &Output) const = 0;
+    virtual void render(const ArgList &Args, ArgStringList &Output) const;
 
     virtual unsigned getNumValues() const { return 1; }
     virtual const char *getValue(const ArgList &Args, unsigned N) const;
+
+    static bool classof(const Arg *A) { 
+      return A->getKind() == Arg::PositionalClass; 
+    }
+    static bool classof(const PositionalArg *) { return true; }
   };
 
   /// JoinedArg - A single value argument where the value is joined
@@ -75,10 +95,15 @@
   public:
     JoinedArg(const Option *Opt, unsigned Index);
 
-    virtual void render(const ArgList &Args, ArgStringList &Output) const = 0;
+    virtual void render(const ArgList &Args, ArgStringList &Output) const;
 
     virtual unsigned getNumValues() const { return 1; }
     virtual const char *getValue(const ArgList &Args, unsigned N) const;
+
+    static bool classof(const Arg *A) { 
+      return A->getKind() == Arg::JoinedClass; 
+    }
+    static bool classof(const PositionalArg *) { return true; }
   };
 
   /// SeparateArg - An argument where one or more values follow the
@@ -89,10 +114,15 @@
   public:
     SeparateArg(const Option *Opt, unsigned Index, unsigned NumValues);
 
-    virtual void render(const ArgList &Args, ArgStringList &Output) const = 0;
+    virtual void render(const ArgList &Args, ArgStringList &Output) const;
 
     virtual unsigned getNumValues() const { return NumValues; }
     virtual const char *getValue(const ArgList &Args, unsigned N) const;
+
+    static bool classof(const Arg *A) { 
+      return A->getKind() == Arg::SeparateClass; 
+    }
+    static bool classof(const PositionalArg *) { return true; }
   };
 
   /// CommaJoinedArg - An argument with multiple values joined by
@@ -107,10 +137,15 @@
   public:
     CommaJoinedArg(const Option *Opt, unsigned Index, unsigned NumValues);
 
-    virtual void render(const ArgList &Args, ArgStringList &Output) const = 0;
+    virtual void render(const ArgList &Args, ArgStringList &Output) const;
 
     virtual unsigned getNumValues() const { return NumValues; }
     virtual const char *getValue(const ArgList &Args, unsigned N) const;
+
+    static bool classof(const Arg *A) { 
+      return A->getKind() == Arg::CommaJoinedClass; 
+    }
+    static bool classof(const PositionalArg *) { return true; }
   };
 
   /// JoinedAndSeparateArg - An argument with both joined and separate
@@ -119,10 +154,15 @@
   public:
     JoinedAndSeparateArg(const Option *Opt, unsigned Index);
 
-    virtual void render(const ArgList &Args, ArgStringList &Output) const = 0;
+    virtual void render(const ArgList &Args, ArgStringList &Output) const;
 
     virtual unsigned getNumValues() const { return 2; }
     virtual const char *getValue(const ArgList &Args, unsigned N) const;
+
+    static bool classof(const Arg *A) { 
+      return A->getKind() == Arg::JoinedAndSeparateClass; 
+    }
+    static bool classof(const PositionalArg *) { return true; }
   };
 } // end namespace driver
 } // end namespace clang

Added: cfe/trunk/lib/Driver/Arg.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Arg.cpp?rev=66088&view=auto

==============================================================================
--- cfe/trunk/lib/Driver/Arg.cpp (added)
+++ cfe/trunk/lib/Driver/Arg.cpp Wed Mar  4 16:37:52 2009
@@ -0,0 +1,72 @@
+//===--- Arg.cpp - Argument Implementations -----------------------------*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#include "clang/Driver/Arg.h"
+
+using namespace clang::driver;
+
+Arg::Arg(ArgClass _Kind, const Option *_Opt, unsigned _Index) 
+  : Kind(_Kind),
+    Opt(_Opt),
+    Index(_Index)
+{
+}
+
+Arg::~Arg() { }
+
+PositionalArg::PositionalArg(const Option *Opt, unsigned Index)
+  : Arg(PositionalClass, Opt, Index) {
+}
+
+void PositionalArg::render(const ArgList &Args, ArgStringList &Output) const {
+  assert(0 && "FIXME: Implement");
+}
+
+const char *PositionalArg::getValue(const ArgList &Args, unsigned N) const {
+  assert(0 && "FIXME: Implement");
+}
+
+JoinedArg::JoinedArg(const Option *Opt, unsigned Index)
+  : Arg(JoinedClass, Opt, Index) {
+}
+
+void JoinedArg::render(const ArgList &Args, ArgStringList &Output) const {
+  assert(0 && "FIXME: Implement");
+}
+
+const char *JoinedArg::getValue(const ArgList &Args, unsigned N) const {
+  assert(0 && "FIXME: Implement");
+}
+
+CommaJoinedArg::CommaJoinedArg(const Option *Opt, unsigned Index, 
+                               unsigned _NumValues)
+  : Arg(CommaJoinedClass, Opt, Index), NumValues(_NumValues) {
+}
+
+void CommaJoinedArg::render(const ArgList &Args, ArgStringList &Output) const {
+  assert(0 && "FIXME: Implement");
+}
+
+const char *CommaJoinedArg::getValue(const ArgList &Args, unsigned N) const {
+  assert(0 && "FIXME: Implement");
+}
+
+JoinedAndSeparateArg::JoinedAndSeparateArg(const Option *Opt, unsigned Index)
+  : Arg(JoinedAndSeparateClass, Opt, Index) {
+}
+
+void JoinedAndSeparateArg::render(const ArgList &Args, 
+                                  ArgStringList &Output) const {
+  assert(0 && "FIXME: Implement");
+}
+
+const char *JoinedAndSeparateArg::getValue(const ArgList &Args, 
+                                           unsigned N) const {
+  assert(0 && "FIXME: Implement");
+}





More information about the cfe-commits mailing list