29 #define DIAG(id, text, enabled) text,
35 #define DIAG(id, text, enabled) #id,
47 void OnError(
const char *msg)
override
57 } DefaultErrorHandler;
68 ErrorHandler(&DefaultErrorHandler)
116 if (plist->
Delete())
delete plist;
138 if (iConstIndex<0)
return false;
140 if (pTargetValue) *pTargetValue =
GlobalConsts[iConstIndex];
156 C4Effect *pOldEffect, *pNextOldEffect=pEffects;
164 delete pNextOldEffect;
167 while ((pOldEffect=pNextOldEffect))
169 pNextOldEffect = pOldEffect->
pNext;
176 if (!fScenarioSection)
189 GlobalEffectsMergeCompileFunc(pComp,
pGlobalEffects,
"Effects",
this, numbers);
203 std::list<const char*> functions;
204 std::list<const char*> global_functions;
205 auto sort_alpha = [](
const char *
const &
a,
const char *
const &
b) ->
bool {
return strcmp(
a,
b) < 0; };
208 for (
int i = 0; i <
a->GetSize(); ++i)
216 functions.push_back(key->
GetCStr());
218 global_functions.push_back(key->
GetCStr());
221 functions.sort(sort_alpha);
222 if (!functions.empty() && !global_functions.empty()) functions.push_back(
nullptr);
223 global_functions.sort(sort_alpha);
224 functions.splice(functions.end(), global_functions);
232 int32_t last_handle = 1;
233 for (std::list<C4AulUserFile>::const_iterator i =
UserFiles.begin(); i !=
UserFiles.end(); ++i)
234 if ((*i).GetHandle() >= last_handle)
235 last_handle = (*i).GetHandle()+1;
244 for (std::list<C4AulUserFile>::iterator i =
UserFiles.begin(); i !=
UserFiles.end(); ++i)
245 if ((*i).GetHandle() == handle)
256 if (UserFile.GetHandle() == handle)
280 memset(Funcs, 0,
sizeof(Funcs));
288 unsigned int C4AulFuncMap::Hash(
const char * name)
291 unsigned int h = 2166136261u;
293 h = (h ^ *(name++)) * 16777619;
299 if (!Name)
return nullptr;
300 C4AulFunc * Func = Funcs[Hash(Name) % HashSize];
328 while (*pFunc != func)
330 pFunc = &((*pFunc)->MapNext);
const char * C4AulWarningIDs[]
const char * C4AulWarningMessages[]
C4AulScriptEngine ScriptEngine
bool DebugLogF(const char *strMessage ...)
C4GameScriptHost GameScript
C4Value C4VPropList(C4PropList *p)
bool SEqual(const char *szStr1, const char *szStr2)
StdPtrAdapt< T > mkNamingPtrAdapt(T *&rpObj, const char *szNaming)
StdParameterAdapt< T, P > mkParAdapt(T &&rObj, P &&rPar)
StdNamingAdapt< T > mkNamingAdapt(T &&rValue, const char *szName)
static C4AulDebug * GetDebugger()
virtual ~C4AulErrorHandler()
virtual void OnError(const char *msg)=0
virtual void OnWarning(const char *msg)=0
const char * what() const noexcept override
virtual bool GetPublic() const
const char * GetName() const
void Remove(C4AulFunc *func)
C4AulFunc * GetNextSNFunc(const C4AulFunc *After)
C4AulFunc * GetFirstFunc(const char *Name)
void Add(C4AulFunc *func)
bool GetGlobalConstant(const char *szName, C4Value *pTargetValue)
C4ValueMapNames GlobalConstNames
std::list< C4AulUserFile > UserFiles
void Denumerate(C4ValueNumbers *) override
~C4AulScriptEngine() override
void RegisterErrorHandler(C4AulErrorHandler *handler)
std::list< const char * > GetFunctionNames(C4PropList *)
C4PropListStatic * GetPropList()
C4ValueMapNames GlobalNamedNames
std::vector< C4Value > OwnedPropLists
C4ValueMapData GlobalConsts
C4Effect * pGlobalEffects
void CompileFunc(StdCompiler *pComp, bool fScenarioSection, C4ValueNumbers *numbers)
C4AulErrorHandler * ErrorHandler
C4ValueMapData GlobalNamed
void UnregisterErrorHandler(C4AulErrorHandler *handler)
C4AulUserFile * GetUserFile(int32_t handle)
void RegisterGlobalConstant(const char *szName, const C4Value &rValue)
void CloseUserFile(int32_t handle)
void Denumerate(C4ValueNumbers *) override
void Register(C4Effect **ppEffectList, int32_t iPrio)
C4Effect * pScenarioEffects
void Denumerate(C4ValueNumbers *numbers)
C4AulFunc * GetFunc(C4PropertyName k) const
virtual C4ValueArray * GetProperties() const
bool HasProperty(C4String *k) const
virtual void Denumerate(C4ValueNumbers *)
const char * GetCStr() const
C4PropList * _getPropList() const
void Denumerate(C4ValueNumbers *)
void SetNameList(C4ValueMapNames *pnNames)
int32_t AddName(const char *pnName)
int32_t GetItemNr(const char *strName) const
void Value(const T &rStruct)
virtual bool isDeserializer()
const char * getData() const