]> granicus.if.org Git - clang/commitdiff
Driver: Add ArgList implementation.
authorDaniel Dunbar <daniel@zuster.org>
Wed, 4 Mar 2009 17:10:42 +0000 (17:10 +0000)
committerDaniel Dunbar <daniel@zuster.org>
Wed, 4 Mar 2009 17:10:42 +0000 (17:10 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66037 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/Driver/ArgList.h
lib/Driver/ArgList.cpp [new file with mode: 0644]

index 0fc488e73efce08afda88d1fb961358a395ed094..52d4a19f7935b445145bf57e03d59aad15970b93 100644 (file)
@@ -10,6 +10,7 @@
 #ifndef CLANG_DRIVER_ARGLIST_H_
 #define CLANG_DRIVER_ARGLIST_H_
 
+#include "Util.h"
 #include "llvm/ADT/DenseMap.h"
 #include "llvm/ADT/SmallVector.h"
 
@@ -34,7 +35,7 @@ namespace driver {
     ArgStringList ArgStrings;
 
     /// The full list of arguments.
-    llvm::SmallVector<Arg*, 16> Args;
+    arglist_type Args;
 
     /// A map of arguments by option ID; in conjunction with the
     /// intrusive list in Arg instances this allows iterating over all
@@ -42,7 +43,7 @@ namespace driver {
     llvm::DenseMap<unsigned, Arg*> ArgMap;
 
   public:
-    ArgList(unsigned argc, const char **argv);
+    ArgList(const char **ArgBegin, const char **ArgEnd);
     ArgList(const ArgList &);
     ~ArgList();
 
diff --git a/lib/Driver/ArgList.cpp b/lib/Driver/ArgList.cpp
new file mode 100644 (file)
index 0000000..a8b00bb
--- /dev/null
@@ -0,0 +1,22 @@
+//===--- ArgList.cpp - Argument List Management -------------------------*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#include "clang/Driver/ArgList.h"
+#include "clang/Driver/Arg.h"
+
+using namespace clang::driver;
+
+ArgList::ArgList(const char **ArgBegin, const char **ArgEnd) {
+  ArgStrings.append(ArgBegin, ArgEnd);
+}
+
+ArgList::~ArgList() {
+  for (iterator it = begin(), ie = end(); it != ie; ++ie)
+    delete *it;
+}