From: Chris Lattner Date: Tue, 28 Jan 2003 20:01:16 +0000 (+0000) Subject: Initial checking: defult the make_vector function X-Git-Url: http://plrg.eecs.uci.edu/git/?a=commitdiff_plain;h=fd373cb944edef806f850cc0a4f91d55ae7c8dba;p=oota-llvm.git Initial checking: defult the make_vector function git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5424 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/Support/VectorExtras.h b/include/Support/VectorExtras.h new file mode 100644 index 00000000000..68aa8078bdb --- /dev/null +++ b/include/Support/VectorExtras.h @@ -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 + +/// 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 +inline std::vector make_vector(T A, ...) { + va_list Args; + va_start(Args, A); + std::vector 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 index 00000000000..68aa8078bdb --- /dev/null +++ b/include/llvm/ADT/VectorExtras.h @@ -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 + +/// 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 +inline std::vector make_vector(T A, ...) { + va_list Args; + va_start(Args, A); + std::vector Result; + Result.push_back(A); + while (T Val = va_arg(Args, T)) + Result.push_back(Val); + va_end(Args); + return Result; +} + +#endif