]> granicus.if.org Git - clang/commitdiff
Driver: Add Arg::dump and SeparateArg stubs.
authorDaniel Dunbar <daniel@zuster.org>
Wed, 4 Mar 2009 23:02:50 +0000 (23:02 +0000)
committerDaniel Dunbar <daniel@zuster.org>
Wed, 4 Mar 2009 23:02:50 +0000 (23:02 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66100 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/Driver/Arg.h
lib/Driver/Arg.cpp

index 4bf6be6d56cb32f53396094f3445dace18989224..b558a84b89d616faf8daceac82d8632e62c9ed43 100644 (file)
@@ -71,6 +71,8 @@ namespace driver {
     virtual void render(const ArgList &Args, ArgStringList &Output) const = 0;
 
     static bool classof(const Arg *) { return true; }    
+
+    void dump() const;
   };
 
   /// PositionalArg - A simple positional argument.
index ad3c16d98aa5a2aae65a6bda737a81d0bcefadef..9f0ed7245d19ffe208d965938786ccb0f4573b1a 100644 (file)
@@ -8,6 +8,8 @@
 //===----------------------------------------------------------------------===//
 
 #include "clang/Driver/Arg.h"
+#include "clang/Driver/Option.h"
+#include "llvm/Support/raw_ostream.h"
 
 using namespace clang::driver;
 
@@ -20,6 +22,33 @@ Arg::Arg(ArgClass _Kind, const Option *_Opt, unsigned _Index)
 
 Arg::~Arg() { }
 
+void Arg::dump() const {
+  llvm::errs() << "<";
+  switch (Kind) {
+  default:
+    assert(0 && "Invalid kind");
+#define P(N) case N: llvm::errs() << #N; break
+    P(PositionalClass);
+    P(JoinedClass);
+    P(SeparateClass);
+    P(CommaJoinedClass);
+    P(JoinedAndSeparateClass);
+#undef P
+  }
+
+  llvm::errs() << " Opt:";
+  Opt->dump();
+
+  llvm::errs() << " Index:" << Index;
+
+  if (const CommaJoinedArg *CJA = dyn_cast<CommaJoinedArg>(this))
+    llvm::errs() << " NumValues:" << CJA->getNumValues();
+
+  llvm::errs() << ">\n";
+
+  llvm::errs().flush(); // FIXME
+}
+
 PositionalArg::PositionalArg(const Option *Opt, unsigned Index)
   : Arg(PositionalClass, Opt, Index) {
 }
@@ -57,6 +86,18 @@ const char *CommaJoinedArg::getValue(const ArgList &Args, unsigned N) const {
   assert(0 && "FIXME: Implement");
 }
 
+SeparateArg::SeparateArg(const Option *Opt, unsigned Index, unsigned _NumValues)
+  : Arg(SeparateClass, Opt, Index), NumValues(_NumValues) {
+}
+
+void SeparateArg::render(const ArgList &Args, ArgStringList &Output) const {
+  assert(0 && "FIXME: Implement");
+}
+
+const char *SeparateArg::getValue(const ArgList &Args, unsigned N) const { 
+  assert(0 && "FIXME: Implement");
+}
+
 JoinedAndSeparateArg::JoinedAndSeparateArg(const Option *Opt, unsigned Index)
   : Arg(JoinedAndSeparateClass, Opt, Index) {
 }