/*
Copyright (C) 2006 Evan Teran
                   eteran@alum.rit.edu

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
*/

#ifndef FUNCTIONINFO_20070320_H_
#define FUNCTIONINFO_20070320_H_

#include <QChar>
#include <QVector>

class FunctionInfo {
public:
	FunctionInfo(const FunctionInfo &other) {
		m_Params = other.m_Params;
	}

	FunctionInfo() {
	}
	
	FunctionInfo(QChar param1) {
		m_Params.push_back(param1);
	}
	
	FunctionInfo(QChar param1, QChar param2) {
		m_Params.push_back(param1);
		m_Params.push_back(param2);
	}
	
	FunctionInfo(QChar param1, QChar param2, QChar param3) {
		m_Params.push_back(param1);
		m_Params.push_back(param2);
		m_Params.push_back(param3);
	}
	
	FunctionInfo(QChar param1, QChar param2, QChar param3, QChar param4) {
		m_Params.push_back(param1);
		m_Params.push_back(param2);
		m_Params.push_back(param3);
		m_Params.push_back(param4);
	}
	
	FunctionInfo(QChar param1, QChar param2, QChar param3, QChar param4, QChar param5) {
		m_Params.push_back(param1);
		m_Params.push_back(param2);
		m_Params.push_back(param3);
		m_Params.push_back(param4);
		m_Params.push_back(param5);
	}
	
	FunctionInfo(QChar param1, QChar param2, QChar param3, QChar param4, QChar param5, QChar param6) {
		m_Params.push_back(param1);
		m_Params.push_back(param2);
		m_Params.push_back(param3);
		m_Params.push_back(param4);
		m_Params.push_back(param5);
		m_Params.push_back(param6);
	}

	FunctionInfo(QChar param1, QChar param2, QChar param3, QChar param4, QChar param5, QChar param6, QChar param7) {
		m_Params.push_back(param1);
		m_Params.push_back(param2);
		m_Params.push_back(param3);
		m_Params.push_back(param4);
		m_Params.push_back(param5);
		m_Params.push_back(param6);
		m_Params.push_back(param7);
	}
	
public:
	const QVector<QChar> &params() const { return m_Params; }

private:
	QVector<QChar> m_Params;
};

#endif

