Initial checking: defult the make_vector function
authorChris Lattner <sabre@nondot.org>
Tue, 28 Jan 2003 20:01:16 +0000 (20:01 +0000)
committerChris Lattner <sabre@nondot.org>
Tue, 28 Jan 2003 20:01:16 +0000 (20:01 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5424 91177308-0d34-0410-b5e6-96231b3b80d8

include/Support/VectorExtras.h [new file with mode: 0644]
include/llvm/ADT/VectorExtras.h [new file with mode: 0644]

diff --git a/include/Support/VectorExtras.h b/include/Support/VectorExtras.h
new file mode 100644 (file)
index 0000000..68aa807
--- /dev/null
@@ -0,0 +1,29 @@
+//===-- VectorExtras.h - Helper functions for std::vector -------*- C++ -*-===//
+//
+// This file contains helper functions which are useful for working with the
+// std::vector class.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef SUPPORT_VECTOREXTRAS_H
+#define SUPPORT_VECTOREXTRAS_H
+
+#include <cstdarg>
+
+/// make_vector - Helper function which is useful for building temporary vectors
+/// to pass into type construction of CallInst ctors.  This turns a null
+/// terminated list of pointers (or other value types) into a real live vector.
+///
+template<typename T>
+inline std::vector<T> make_vector(T A, ...) {
+  va_list Args;
+  va_start(Args, A);
+  std::vector<T> Result;
+  Result.push_back(A);
+  while (T Val = va_arg(Args, T))
+    Result.push_back(Val);
+  va_end(Args);
+  return Result;
+}
+
+#endif
diff --git a/include/llvm/ADT/VectorExtras.h b/include/llvm/ADT/VectorExtras.h
new file mode 100644 (file)
index 0000000..68aa807
--- /dev/null
@@ -0,0 +1,29 @@
+//===-- VectorExtras.h - Helper functions for std::vector -------*- C++ -*-===//
+//
+// This file contains helper functions which are useful for working with the
+// std::vector class.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef SUPPORT_VECTOREXTRAS_H
+#define SUPPORT_VECTOREXTRAS_H
+
+#include <cstdarg>
+
+/// make_vector - Helper function which is useful for building temporary vectors
+/// to pass into type construction of CallInst ctors.  This turns a null
+/// terminated list of pointers (or other value types) into a real live vector.
+///
+template<typename T>
+inline std::vector<T> make_vector(T A, ...) {
+  va_list Args;
+  va_start(Args, A);
+  std::vector<T> Result;
+  Result.push_back(A);
+  while (T Val = va_arg(Args, T))
+    Result.push_back(Val);
+  va_end(Args);
+  return Result;
+}
+
+#endif