Changes for EffectParameter type in AngelScript, fixes for ConstString memory leak in AngelScript.
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
@@ -2,7 +2,6 @@
|
||||
#include <CreatureLib/Battling/Models/Creature.hpp>
|
||||
#include <cassert>
|
||||
#include <regex>
|
||||
#include "../../../extern/angelscript_addons/scriptarray/scriptarray.h"
|
||||
#include "../../../extern/angelscript_addons/scripthandle/scripthandle.h"
|
||||
#include "../../../extern/angelscript_addons/scripthelper/scripthelper.h"
|
||||
#include "../../../extern/angelscript_addons/scriptstdstring/scriptstdstring.h"
|
||||
@@ -226,14 +225,12 @@ uint8_t* AngelScripResolver::WriteByteCodeToMemory(size_t& size, bool stripDebug
|
||||
}
|
||||
void AngelScripResolver::LoadByteCodeFromMemory(
|
||||
uint8_t* byte, size_t size, const Dictionary<ScriptCategory, Dictionary<ConstString, const char*>>& types) {
|
||||
std::cout << "Loading from RAM" << std::endl;
|
||||
auto stream = new MemoryByteCodeStream(byte, size);
|
||||
InitializeByteCode(stream, types);
|
||||
delete stream;
|
||||
}
|
||||
void AngelScripResolver::InitializeByteCode(asIBinaryStream* stream,
|
||||
const Dictionary<ScriptCategory, Dictionary<ConstString, const char*>>& types) {
|
||||
std::cout << "Loading byte code" << std::endl;
|
||||
int result = _mainModule->LoadByteCode(stream);
|
||||
Assert(result == asSUCCESS);
|
||||
|
||||
|
||||
@@ -1,9 +1,11 @@
|
||||
#include "ConstString.hpp"
|
||||
using ConstString = Arbutils::CaseInsensitiveConstString;
|
||||
|
||||
static void ConstructConstString(ConstString* self) { self = new ConstString(); }
|
||||
static void CopyConstructConstString(const ConstString& other, ConstString* self) { self = new ConstString(other); }
|
||||
static void DestructConstString(ConstString* self) { self->~ConstString(); }
|
||||
static void ConstructConstString(void* self) { new (self)ConstString(); }
|
||||
static void CopyConstructConstString(const ConstString& other, void* self) { new (self)ConstString(other); }
|
||||
static void DestructConstString(void* self) {
|
||||
((ConstString*)self)->~ConstString();
|
||||
}
|
||||
static bool ConstStringEquality(const ConstString& a, const ConstString& b) { return a == b; }
|
||||
static bool ConstStringStdStringEquality(const ConstString& a, const std::string& b) { return a == b; }
|
||||
static ConstString ImplStdStringConstStringConv(const std::string& s) { return ConstString(s); }
|
||||
@@ -12,7 +14,7 @@ static uint32_t ImplConstStringHashConv(const ConstString& s) { return s.GetHash
|
||||
|
||||
void ConstStringRegister::Register(asIScriptEngine* engine) {
|
||||
auto r = engine->RegisterObjectType("constString", sizeof(Arbutils::CaseInsensitiveConstString),
|
||||
asOBJ_VALUE | asOBJ_POD | asGetTypeTraits<ConstString>());
|
||||
asOBJ_VALUE | asOBJ_APP_CLASS_CDAK);
|
||||
Assert(r >= 0);
|
||||
|
||||
r = engine->RegisterObjectBehaviour("constString", asBEHAVE_CONSTRUCT, "void f()", asFUNCTION(ConstructConstString),
|
||||
@@ -27,7 +29,7 @@ void ConstStringRegister::Register(asIScriptEngine* engine) {
|
||||
asCALL_CDECL_OBJLAST);
|
||||
Assert(r >= 0);
|
||||
|
||||
r = engine->RegisterObjectMethod("string", "constString &opAssign(const constString &in)",
|
||||
r = engine->RegisterObjectMethod("constString", "constString &opAssign(const constString &in)",
|
||||
asMETHODPR(ConstString, operator=,(const ConstString&), ConstString&),
|
||||
asCALL_THISCALL);
|
||||
Assert(r >= 0);
|
||||
|
||||
@@ -4,7 +4,9 @@
|
||||
|
||||
static CreatureLib::Library::EffectParameter* Ref_Factory() { return new CreatureLib::Library::EffectParameter(); }
|
||||
|
||||
static std::string AsString(const CreatureLib::Library::EffectParameter* p) { return p->AsString(); }
|
||||
static const Arbutils::CaseInsensitiveConstString& AsString(const CreatureLib::Library::EffectParameter* p) {
|
||||
return p->AsString();
|
||||
}
|
||||
|
||||
void RegisterEffectParameter::Register(asIScriptEngine* engine) {
|
||||
[[maybe_unused]] int r = engine->RegisterEnum("EffectParameterType");
|
||||
@@ -34,8 +36,9 @@ void RegisterEffectParameter::Register(asIScriptEngine* engine) {
|
||||
r = engine->RegisterObjectMethod("EffectParameter", "float AsFloat() const",
|
||||
asMETHOD(CreatureLib::Library::EffectParameter, AsFloat), asCALL_THISCALL);
|
||||
Assert(r >= 0);
|
||||
r = engine->RegisterObjectMethod(
|
||||
"EffectParameter", "string AsString() const",
|
||||
asFUNCTIONPR(AsString, (const CreatureLib::Library::EffectParameter*), std::string), asCALL_CDECL_OBJFIRST);
|
||||
r = engine->RegisterObjectMethod("EffectParameter", "const constString& AsString() const",
|
||||
asFUNCTIONPR(AsString, (const CreatureLib::Library::EffectParameter*),
|
||||
const Arbutils::CaseInsensitiveConstString&),
|
||||
asCALL_CDECL_OBJFIRST);
|
||||
Assert(r >= 0);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user