4#include "Utilities/Parsing.h"
6#include "Foundation/Collections/Pool.h"
7#include "Foundation/ComponentModel/Entity.h"
8#include "Foundation/StringView.h"
20 enum class ScriptFlags
30 ENABLE_ENUM_FLAGS(ScriptFlags);
32 enum class ScriptValueType
44 std::string stringValue;
47 using ScriptArgs = std::vector<ScriptArg>;
55 ScriptFunctionType func;
56 ScriptValueType retValue;
57 std::vector<ScriptValueType> argTypes;
62 ScriptFunctionType getter;
63 ScriptFunctionType setter;
71 std::vector<ScriptFunction> functions;
73 ScriptProxyGet proxyGet;
74 ScriptProxySet proxySet;
75 std::weak_ptr<ScriptContext> context;
85 virtual void update() {}
87 virtual bool addScript(
const StringView & , ScriptFlags = ScriptFlags::None) {
return false; }
90 virtual ScriptObject * createObject(ScriptValueType = ScriptValueType::Object,
void * =
nullptr) {
return nullptr; }
91 virtual ScriptObject * createObjectProxy(ScriptProxyGet , ScriptProxySet ) {
return nullptr; }
97 virtual void addFunction(
ScriptObject *,
const StringView & , ScriptValueType , std::vector<ScriptValueType> , ScriptFunctionType ) {}
98 virtual void addProperty(
ScriptObject *,
const StringView & , ScriptValueType , ScriptFunctionType , ScriptFunctionType ) {}
105 std::string evalResult;
106 std::string evalStack;
109 std::weak_ptr<ScriptContext> self;
112 using ScriptContextHandle = std::shared_ptr<ScriptContext>;
119 virtual void initialize() = 0;
120 virtual void cleanup() = 0;
123 virtual void completions(
const TokenStream & , TokenStream & ) {}
131 std::string buffer = std::string(16384,
'\0');
132 std::vector<std::string> history;
133 std::vector<std::string> commandHistory;
134 int historyIndex = 0;
135 bool movedUp =
false;
136 bool movedDown =
false;
138 TokenStream currentCompletions;
139 int completionIndex = 0;
140 size_t completionOffset = 0;
141 std::string original;
142 std::string suggested;
144 bool scrollToBottom =
true;
147 virtual bool canLoad(ScriptFlags flags)
const = 0;
Container for components, providing composition of dynamic entities.
A Context instance contains all the services, systems and runtime components needed to use Cogs.
Provides a weakly referenced view over the contents of a string.
Contains all Cogs related functionality.
Pool used to store elements of ElementType.