about summary refs log tree commit diff
path: root/src/engine/console.h
diff options
context:
space:
mode:
authorMagnus Auvinen <magnus.auvinen@gmail.com>2010-05-29 07:25:38 +0000
committerMagnus Auvinen <magnus.auvinen@gmail.com>2010-05-29 07:25:38 +0000
commit72c06a258940696093f255fb1061beb58e1cdd0b (patch)
tree36b9a7712eec2d4f07837eab9c38ef1c5af85319 /src/engine/console.h
parente56feb597bc743677633432f77513b02907fd169 (diff)
downloadzcatch-72c06a258940696093f255fb1061beb58e1cdd0b.tar.gz
zcatch-72c06a258940696093f255fb1061beb58e1cdd0b.zip
copied refactor to trunk
Diffstat (limited to 'src/engine/console.h')
-rw-r--r--src/engine/console.h58
1 files changed, 58 insertions, 0 deletions
diff --git a/src/engine/console.h b/src/engine/console.h
new file mode 100644
index 00000000..74d789e9
--- /dev/null
+++ b/src/engine/console.h
@@ -0,0 +1,58 @@
+#ifndef ENGINE_CONSOLE_H
+#define ENGINE_CONSOLE_H
+
+#include "kernel.h"
+
+class IConsole : public IInterface
+{
+	MACRO_INTERFACE("console", 0)
+public:
+
+	// TODO: rework this interface to reduce the amount of virtual calls
+	class IResult
+	{
+	protected:
+		unsigned m_NumArgs;
+	public:
+		IResult() { m_NumArgs = 0; }
+		virtual ~IResult() {}
+		
+		virtual int GetInteger(unsigned Index) = 0;
+		virtual float GetFloat(unsigned Index) = 0;
+		virtual const char *GetString(unsigned Index) = 0;
+		
+		int NumArguments() const { return m_NumArgs; }
+	};
+	
+	class CCommandInfo
+	{
+	public:
+		const char *m_pName;
+		const char *m_pHelp;
+		const char *m_pParams;
+	};
+
+	typedef void (*FPrintCallback)(const char *pStr, void *pUser);
+	typedef void (*FPossibleCallback)(const char *pCmd, void *pUser);
+	typedef void (*FCommandCallback)(IResult *pResult, void *pUserData);
+	typedef void (*FChainCommandCallback)(IResult *pResult, void *pUserData, FCommandCallback pfnCallback, void *pCallbackUserData);
+
+	virtual CCommandInfo *GetCommandInfo(const char *pName) = 0;
+	virtual void PossibleCommands(const char *pStr, int FlagMask, FPossibleCallback pfnCallback, void *pUser) = 0;
+	virtual void ParseArguments(int NumArgs, const char **ppArguments) = 0;
+
+	virtual void Register(const char *pName, const char *pParams, 
+		int Flags, FCommandCallback pfnFunc, void *pUser, const char *pHelp) = 0;
+	virtual void Chain(const char *pName, FChainCommandCallback pfnChainFunc, void *pUser) = 0;
+	
+	virtual void ExecuteLine(const char *Sptr) = 0;
+	virtual void ExecuteLineStroked(int Stroke, const char *pStr) = 0;
+	virtual void ExecuteFile(const char *pFilename) = 0;
+	
+	virtual void RegisterPrintCallback(FPrintCallback pfnPrintCallback, void *pUserData) = 0;
+	virtual void Print(const char *pStr) = 0;
+};
+
+extern IConsole *CreateConsole();
+
+#endif // FILE_ENGINE_CONSOLE_H