1 //===-- llvm/ADT/VectorExtras.h - Helpers for std::vector -------*- C++ -*-===// 2 // 3 // The LLVM Compiler Infrastructure 4 // 5 // This file is distributed under the University of Illinois Open Source 6 // License. See LICENSE.TXT for details. 7 // 8 //===----------------------------------------------------------------------===// 9 // 10 // This file contains helper functions which are useful for working with the 11 // std::vector class. 12 // 13 //===----------------------------------------------------------------------===// 14 15 #ifndef LLVM_ADT_VECTOREXTRAS_H 16 #define LLVM_ADT_VECTOREXTRAS_H 17 18 #include <cstdarg> 19 #include <vector> 20 21 namespace llvm { 22 23 /// make_vector - Helper function which is useful for building temporary vectors 24 /// to pass into type construction of CallInst ctors. This turns a null 25 /// terminated list of pointers (or other value types) into a real live vector. 26 /// 27 template<typename T> make_vector(T A,...)28inline std::vector<T> make_vector(T A, ...) { 29 va_list Args; 30 va_start(Args, A); 31 std::vector<T> Result; 32 Result.push_back(A); 33 while (T Val = va_arg(Args, T)) 34 Result.push_back(Val); 35 va_end(Args); 36 return Result; 37 } 38 39 } // End llvm namespace 40 41 #endif 42