mirror of
https://github.com/JGRennison/OpenTTD-patches.git
synced 2024-11-16 00:12:51 +00:00
156 lines
4.2 KiB
C
156 lines
4.2 KiB
C
#ifndef CONSOLE_H
|
|
#define CONSOLE_H
|
|
|
|
// ** console parser ** //
|
|
|
|
typedef enum _iconsole_var_types {
|
|
ICONSOLE_VAR_NONE,
|
|
ICONSOLE_VAR_BOOLEAN,
|
|
ICONSOLE_VAR_BYTE,
|
|
ICONSOLE_VAR_UINT8,
|
|
ICONSOLE_VAR_UINT16,
|
|
ICONSOLE_VAR_UINT32,
|
|
ICONSOLE_VAR_INT16,
|
|
ICONSOLE_VAR_INT32,
|
|
ICONSOLE_VAR_STRING,
|
|
ICONSOLE_VAR_POINTER,
|
|
ICONSOLE_VAR_REFERENCE,
|
|
ICONSOLE_VAR_UNKNOWN
|
|
} _iconsole_var_types;
|
|
|
|
typedef enum {
|
|
ICONSOLE_FULL,
|
|
ICONSOLE_OPENED,
|
|
ICONSOLE_CLOSED
|
|
} _iconsole_modes;
|
|
|
|
typedef enum _iconsole_hook_types {
|
|
ICONSOLE_HOOK_ACCESS,
|
|
ICONSOLE_HOOK_BEFORE_CHANGE,
|
|
ICONSOLE_HOOK_BEFORE_EXEC,
|
|
ICONSOLE_HOOK_AFTER_CHANGE,
|
|
ICONSOLE_HOOK_AFTER_EXEC
|
|
} _iconsole_hook_types;
|
|
|
|
struct _iconsole_var;
|
|
typedef bool (*iconsole_var_hook)(struct _iconsole_var* hook_var);
|
|
|
|
typedef struct _iconsole_var {
|
|
// --------------- //
|
|
union {
|
|
void* addr;
|
|
bool* bool_;
|
|
byte* byte_;
|
|
uint16* uint16_;
|
|
uint32* uint32_;
|
|
int16* int16_;
|
|
int32* int32_;
|
|
char* string_;
|
|
struct _iconsole_var* reference_;
|
|
} data;
|
|
char* name;
|
|
_iconsole_var_types type;
|
|
// -------------- //
|
|
iconsole_var_hook hook_access;
|
|
iconsole_var_hook hook_before_change;
|
|
iconsole_var_hook hook_after_change;
|
|
// -------------- //
|
|
struct _iconsole_var* _next;
|
|
bool _malloc;
|
|
} _iconsole_var;
|
|
|
|
struct _iconsole_cmd;
|
|
typedef bool (*iconsole_cmd_hook)(struct _iconsole_cmd* hook_cmd);
|
|
|
|
typedef _iconsole_var* (*_iconsole_cmd_addr)(byte argc, char* argv[], byte argt[]);
|
|
|
|
typedef struct _iconsole_cmd {
|
|
// -------------- //
|
|
_iconsole_cmd_addr addr;
|
|
char* name;
|
|
// -------------- //
|
|
iconsole_cmd_hook hook_access;
|
|
iconsole_cmd_hook hook_before_exec;
|
|
iconsole_cmd_hook hook_after_exec;
|
|
// -------------- //
|
|
void* _next;
|
|
} _iconsole_cmd;
|
|
|
|
void IConsoleAliasRegister(const char* name, const char* cmdline);
|
|
|
|
typedef struct _iconsole_alias {
|
|
// -------------- //
|
|
char * cmdline;
|
|
char* name;
|
|
void* _next;
|
|
} _iconsole_alias;
|
|
|
|
_iconsole_alias* IConsoleAliasGet(const char* name);
|
|
|
|
// ** console parser ** //
|
|
|
|
_iconsole_cmd* _iconsole_cmds; // list of registred commands
|
|
_iconsole_var* _iconsole_vars; // list of registred vars
|
|
_iconsole_alias* _iconsole_aliases; // list of registred aliases
|
|
|
|
// ** console colors ** //
|
|
VARDEF byte _iconsole_color_default;
|
|
VARDEF byte _iconsole_color_error;
|
|
VARDEF byte _iconsole_color_warning;
|
|
VARDEF byte _iconsole_color_debug;
|
|
VARDEF byte _iconsole_color_commands;
|
|
VARDEF _iconsole_modes _iconsole_mode;
|
|
|
|
// ** console functions ** //
|
|
|
|
void IConsoleInit(void);
|
|
void IConsoleClear(void);
|
|
void IConsoleFree(void);
|
|
void IConsoleResize(void);
|
|
void IConsoleSwitch(void);
|
|
void IConsoleClose(void);
|
|
void IConsoleOpen(void);
|
|
|
|
// ** console cmd buffer ** //
|
|
void IConsoleCmdBufferAdd(const char* cmd);
|
|
void IConsoleCmdBufferNavigate(signed char direction);
|
|
|
|
// ** console output ** //
|
|
void IConsolePrint(uint16 color_code, const char* string);
|
|
void CDECL IConsolePrintF(uint16 color_code, const char* s, ...);
|
|
void IConsoleDebug(const char* string);
|
|
void IConsoleError(const char* string);
|
|
void IConsoleWarning(const char* string);
|
|
|
|
// *** Commands *** //
|
|
|
|
void IConsoleCmdRegister(const char* name, _iconsole_cmd_addr addr);
|
|
_iconsole_cmd* IConsoleCmdGet(const char* name);
|
|
|
|
// *** Variables *** //
|
|
|
|
void IConsoleVarRegister(const char* name, void* addr, _iconsole_var_types type);
|
|
void IConsoleVarMemRegister(const char* name, _iconsole_var_types type);
|
|
void IConsoleVarInsert(_iconsole_var* item_new, const char* name);
|
|
_iconsole_var* IConsoleVarGet(const char* name);
|
|
_iconsole_var* IConsoleVarAlloc(_iconsole_var_types type);
|
|
void IConsoleVarFree(_iconsole_var* var);
|
|
void IConsoleVarSetString(_iconsole_var* var, const char* string);
|
|
void IConsoleVarSetValue(_iconsole_var* var, int value);
|
|
void IConsoleVarDump(const _iconsole_var* var, const char* dump_desc);
|
|
|
|
// *** Parser *** //
|
|
|
|
void IConsoleCmdExec(const char* cmdstr);
|
|
|
|
// ** console std lib ** //
|
|
void IConsoleStdLibRegister(void);
|
|
|
|
// ** hook code ** //
|
|
void IConsoleVarHook(const char* name, _iconsole_hook_types type, iconsole_var_hook proc);
|
|
void IConsoleCmdHook(const char* name, _iconsole_hook_types type, iconsole_cmd_hook proc);
|
|
bool IConsoleVarHookHandle(_iconsole_var* hook_var, _iconsole_hook_types type);
|
|
bool IConsoleCmdHookHandle(_iconsole_cmd* hook_cmd, _iconsole_hook_types type);
|
|
|
|
#endif /* CONSOLE_H */
|