#ifndef __COMMANDS_H__
#define __COMMANDS_H__
#include "string"
#include "iostream"
using namespace std;

class CControl;
struct command
{
	string com;
	string sAliasData;	//prikazy aliasu
	command *reverse;
	command *next;	
	void (CControl::*x)(string);
	bool par, isDefault;

	command( string c, void (CControl::*fnc)(string), bool parameter = false);
	command();
};

#define HASH_COM_HEIGHT	10

namespace commandsLibrary
{
	int hash_function(const string s);
	

	void init();
	bool doCommand(CControl *c, string s, string par = string("") );
	bool doCommand(CControl *c, command *cmd, string par = string("") );
	void addCom(string com, void (CControl::*func)(string), string reverse = string(""),bool parameter = false);
	void addAliasCom(string com, void (CControl::*func)(string), string reverse = string(""),bool parameter = false, string aliasData= string(""));
	command *getCommand(string com);
};

#endif
