/* * * * * * * * * * * * * * * * 
 * 	 ______     __  __     ______     __  __     ______     ______     __  __    
 *	/\  __ \   /\ \/\ \   /\  == \   /\ \_\ \   /\  __ \   /\  ___\   /\ \/ /    
 *	\ \ \/\ \  \ \ \_\ \  \ \  __<   \ \  __ \  \ \  __ \  \ \ \____  \ \  _"-.  
 *	 \ \_____\  \ \_____\  \ \_____\  \ \_\ \_\  \ \_\ \_\  \ \_____\  \ \_\ \_\ 
 *	  \/_____/   \/_____/   \/_____/   \/_/\/_/   \/_/\/_/   \/_____/   \/_/\/_/ 
 *
 *  - Version : 3L
 *  - By Oubliette
 * * * * * * * * * * * * * * * */

#ifndef _CONSOLE_COMMANDS

#define _CONSOLE_COMMANDS

#include "oubhack_iluaobject.h"
#include <hash_map>

struct concom_res {

	bool bSuccess;
	const char* ccErr;

};

struct write_res {

	const char* sug;
	const char* sugs;

};

class IConsoleCommands {

private :
	ILuaObject*		m_objCommands;

public:

	IConsoleCommands( );
	void Close();

	// Add - Remove
	void			AddConsoleCommand( const char*, ILuaObject*, ILuaObject*, const char* );
	void			RemoveConsoleCommand( const char* );

	// Get
	ILuaObject*		GetConsoleCommandExecute( const char* );
	ILuaObject*		GetConsoleCommandWrite( const char* );
	ILuaObject*		GetConsoleCommandList( );
	const char*		GetConsoleCommandHelp( const char* );

	// Execute 
	concom_res		ExecuteConsoleCommand( const char* ccName, const char* ccArgs );
	write_res		WriteConsoleCommand( const char* ccName, const char* ccArgs );

};

#endif