diff --git a/CInterface/Library/EffectParameter.cpp b/CInterface/Library/EffectParameter.cpp new file mode 100644 index 0000000..9732ef3 --- /dev/null +++ b/CInterface/Library/EffectParameter.cpp @@ -0,0 +1,19 @@ +#include "../../src/Library/EffectParameter.hpp" +#include "../Core.hpp" +using namespace CreatureLib::Library; + +export EffectParameter* CreatureLib_EffectParameter_FromBool(bool b) { return new EffectParameter(b); } +export EffectParameter* CreatureLib_EffectParameter_FromInt(int64_t i) { return new EffectParameter(i); } +export EffectParameter* CreatureLib_EffectParameter_FromFloat(float f) { return new EffectParameter(f); } +export EffectParameter* CreatureLib_EffectParameter_FromString(const char* c) { + return new EffectParameter(Arbutils::CaseInsensitiveConstString(c)); +} + +export void CreatureLib_EffectParameter_Destruct(const EffectParameter* p) { delete p; } +export EffectParameterType CreatureLib_EffectParameter_GetType(const EffectParameter* p) { return p->GetType(); } +export uint8_t CreatureLib_EffectParameter_AsBool(const EffectParameter* p, bool& out) { Try(out = p->AsBool();) } +export uint8_t CreatureLib_EffectParameter_AsInt(const EffectParameter* p, int64_t& out) { Try(out = p->AsInt();) } +export uint8_t CreatureLib_EffectParameter_AsFloat(const EffectParameter* p, float& out) { Try(out = p->AsFloat();) } +export uint8_t CreatureLib_EffectParameter_AsString(const EffectParameter* p, const char*& out) { + Try(out = p->AsString().c_str();) +}