///
/// A simple template helper to create Function Type Arguments
/// 
/// $Id: VectorListHelper.h,v 1.1 2008-08-29 03:04:42 mai4 Exp $
///

#ifndef _VECTOR_LIST_HELPER_H_
#define _VECTOR_LIST_HELPER_H_

#include <vector>

namespace llvm
{
struct Type;
template <class T>
struct args {
	typedef T t_arg;
	typedef std::vector<t_arg> t_list;
	static t_list list(t_arg ty1) {
		const t_arg arr[] = {ty1};
		return t_list(arr, arr + sizeof(arr) / sizeof(t_arg)); 
	};
	static t_list list(t_arg ty1, t_arg ty2) {
		const t_arg arr[] = {ty1, ty2};
		return t_list(arr, arr + sizeof(arr) / sizeof(t_arg)); 
	};
	static t_list list(t_arg ty1, t_arg ty2, t_arg ty3) {
		const t_arg arr[] = {ty1, ty2, ty3};
		return t_list(arr, arr + sizeof(arr) / sizeof(t_arg)); 
	};
	private:
		args();
};

}
#endif
