From 66060c68c0639004f7cf0b377a49779d6bcc1f78 Mon Sep 17 00:00:00 2001 From: Deukhoofd Date: Fri, 17 Apr 2020 21:02:17 +0200 Subject: [PATCH] Item C Interface. --- CInterface/Library/Item.cpp | 25 +++++++++++++++++++++++++ src/Library/Items/Item.hpp | 4 ++-- 2 files changed, 27 insertions(+), 2 deletions(-) create mode 100644 CInterface/Library/Item.cpp diff --git a/CInterface/Library/Item.cpp b/CInterface/Library/Item.cpp new file mode 100644 index 0000000..f67d7a7 --- /dev/null +++ b/CInterface/Library/Item.cpp @@ -0,0 +1,25 @@ +#include "../../src/Library/Items/Item.hpp" +#include +#include "../Core.hpp" +using namespace PkmnLib::Library; + +export Item* PkmnLib_Item_Construct(const char* name, CreatureLib::Library::ItemCategory category, + CreatureLib::Library::BattleItemCategory battleCategory, int32_t price, + const char* flags[], size_t flagsCount, uint8_t flingPower) { + std::unordered_set conversedFlags(flagsCount); + for (size_t i = 0; i < flagsCount; i++) { + conversedFlags.insert(Arbutils::CaseInsensitiveConstString::GetHash(flags[i])); + } + + return new Item(Arbutils::CaseInsensitiveConstString(name), category, battleCategory, price, conversedFlags, + flingPower); +}; + +export void PkmnLib_Item_Destruct(const Item* p) { delete p; } + +#define SIMPLE_GET_FUNC(type, name, returnType) \ + export returnType PkmnLib_##type##_##name(const PkmnLib::Library::type* p) { return p->name(); } + +SIMPLE_GET_FUNC(Item, GetFlingPower, uint8_t) + +#undef SIMPLE_GET_FUNC diff --git a/src/Library/Items/Item.hpp b/src/Library/Items/Item.hpp index 4bd7e8f..db56b49 100644 --- a/src/Library/Items/Item.hpp +++ b/src/Library/Items/Item.hpp @@ -9,10 +9,10 @@ namespace PkmnLib::Library { public: Item(const Arbutils::CaseInsensitiveConstString& name, CreatureLib::Library::ItemCategory category, CreatureLib::Library::BattleItemCategory battleCategory, int32_t price, - std::unordered_set flags, uint8_t flingPower) + const std::unordered_set& flags, uint8_t flingPower) noexcept : CreatureLib::Library::Item(name, category, battleCategory, price, flags), _flingPower(flingPower) {} - inline uint8_t GetFlingPower() const { return _flingPower; } + inline uint8_t GetFlingPower() const noexcept { return _flingPower; } }; }