OpenTTD Source: src/console_internal.h Source File

OpenTTD Source 15.0-RC2

console_internal.h
Go to the documentation of this file.
1/*
2 * This file is part of OpenTTD.
3 * OpenTTD 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, version 2.
4 * OpenTTD 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.
5 * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <https://www.gnu.org/licenses/old-licenses/gpl-2.0>.
6 */
7
10#ifndef CONSOLE_INTERNAL_H
11#define CONSOLE_INTERNAL_H
12
13#include "gfx_type.h"
14
15 static const uint ICON_CMDLN_SIZE = 1024;
16
18 enum ConsoleHookResult : uint8_t {
19 CHR_ALLOW,
20 CHR_DISALLOW,
21 CHR_HIDE,
22};
23
32 using IConsoleCmdProc = bool(std::span<std::string_view>);
33using IConsoleHook = ConsoleHookResult(bool);
34 struct IConsoleCmd {
35 IConsoleCmd(const std::string &name, IConsoleCmdProc *proc, IConsoleHook *hook) : name(name), proc(proc), hook(hook) {}
36
37 std::string name;
38 IConsoleCmdProc *proc;
39 IConsoleHook *hook;
40};
41
54 struct IConsoleAlias {
55 IConsoleAlias(const std::string &name, std::string_view cmdline) : name(name), cmdline(cmdline) {}
56
57 std::string name;
58 std::string cmdline;
59};
60
61 struct IConsole
62{
63 typedef std::map<std::string, IConsoleCmd> CommandList;
64 typedef std::map<std::string, IConsoleAlias> AliasList;
65
66 /* console parser */
67 static CommandList &Commands();
68 static AliasList &Aliases();
69
70 /* Commands */
71 static void CmdRegister(const std::string &name, IConsoleCmdProc *proc, IConsoleHook *hook = nullptr);
72 static IConsoleCmd *CmdGet(const std::string &name);
73 static void AliasRegister(const std::string &name, std::string_view cmd);
74 static IConsoleAlias *AliasGet(const std::string &name);
75};
76
77/* console functions */
78void IConsoleClearBuffer();
79
80/* console std lib (register ingame commands/aliases) */
81void IConsoleStdLibRegister();
82
83void IConsoleGUIInit();
84void IConsoleGUIFree();
85void IConsoleGUIPrint(TextColour colour_code, const std::string &string);
86
87#endif /* CONSOLE_INTERNAL_H */
Commands
Commands
List of commands.
Definition command_type.h:196
ConsoleHookResult
ConsoleHookResult
Return values of console hooks (IConsoleHook).
Definition console_internal.h:18
CHR_HIDE
@ CHR_HIDE
Hide the existence of the command.
Definition console_internal.h:21
CHR_DISALLOW
@ CHR_DISALLOW
Disallow command execution.
Definition console_internal.h:20
CHR_ALLOW
@ CHR_ALLOW
Allow command execution.
Definition console_internal.h:19
IConsoleCmdProc
bool(std::span< std::string_view >) IConsoleCmdProc
–Commands– Commands are commands, or functions.
Definition console_internal.h:32
IConsoleGUIPrint
void IConsoleGUIPrint(TextColour colour_code, const std::string &string)
Handle the printing of text entered into the console or redirected there by any other means.
Definition console_gui.cpp:498
ICON_CMDLN_SIZE
static const uint ICON_CMDLN_SIZE
maximum length of a typed in command
Definition console_internal.h:15
gfx_type.h
Types related to the graphics and/or input devices.
TextColour
TextColour
Colour of the strings, see _string_colourmap in table/string_colours.h or docs/ottd-colourtext-palett...
Definition gfx_type.h:307
IConsoleAlias
–Aliases– Aliases are like shortcuts for complex functions, variable assignments, etc.
Definition console_internal.h:54
IConsoleAlias::cmdline
std::string cmdline
command(s) that is/are being aliased
Definition console_internal.h:58
IConsoleAlias::name
std::string name
name of the alias
Definition console_internal.h:57
IConsoleCmd
Definition console_internal.h:34
IConsoleCmd::proc
IConsoleCmdProc * proc
process executed when command is typed
Definition console_internal.h:38
IConsoleCmd::hook
IConsoleHook * hook
any special trigger action that needs executing
Definition console_internal.h:39
IConsoleCmd::name
std::string name
name of command
Definition console_internal.h:37
IConsole
Definition console_internal.h:62
IConsole::AliasRegister
static void AliasRegister(const std::string &name, std::string_view cmd)
Register a an alias for an already existing command in the console.
Definition console.cpp:159
IConsole::AliasGet
static IConsoleAlias * AliasGet(const std::string &name)
Find the alias pointed to by its string.
Definition console.cpp:170
IConsole::CmdRegister
static void CmdRegister(const std::string &name, IConsoleCmdProc *proc, IConsoleHook *hook=nullptr)
Register a new command to be used in the console.
Definition console.cpp:137
IConsole::CmdGet
static IConsoleCmd * CmdGet(const std::string &name)
Find the command pointed to by its string.
Definition console.cpp:147