Fix issue with having two different libraries sharing the same CreatureLib Exception C Interface.
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
2020-07-30 20:06:23 +02:00
parent 99a562812d
commit 29013bb6ac
37 changed files with 86 additions and 35 deletions

View File

@@ -1,5 +1,5 @@
#include "../../src/Library/Attacks/AttackData.hpp"
#include "../Core.hpp"
#include "Core.hpp"
using namespace CreatureLib::Library;
export uint8_t CreatureLib_AttackData_Construct(AttackData*& out, const char* name, uint8_t type,

View File

@@ -1,5 +1,7 @@
#include "../../src/Library/AttackLibrary.hpp"
#include "BaseLibrary.cpp"
#include "Core.hpp"
using namespace CreatureLib::Library;
export uint8_t CreatureLib_AttackLibrary_Construct(AttackLibrary*& library, size_t initialCapacity = 32) {

View File

@@ -1,4 +1,4 @@
#include "../Core.hpp"
#include "Core.hpp"
#define BASELIBRARY(simpleName, fullname, returnType) \
export uint8_t simpleName##_Insert(fullname* p, const char* name, returnType* t) { \

View File

@@ -0,0 +1,5 @@
#include "Core.hpp"
std::string ExceptionHandler::_creatureLibLastException = "";
export const char* CreatureLib_C_GetLastException() { return ExceptionHandler::GetLastException(); }

View File

@@ -0,0 +1,41 @@
#ifndef CREATURELIB_CORE_HPP
#define CREATURELIB_CORE_HPP
#include <cstring>
#include <exception>
#include <sstream>
#include <string>
#define export extern "C" [[maybe_unused]]
#define CreatureLibLibraryException 2;
#define __FILENAME__ (strrchr(__FILE__, '/') ? strrchr(__FILE__, '/') + 1 : __FILE__)
class ExceptionHandler {
static std::string _creatureLibLastException;
public:
static void SetLastException(std::string function, const std::exception& e) {
std::stringstream ss;
ss << "[" << function << "] " << e.what();
_creatureLibLastException = ss.str();
}
static const char* GetLastException() { return _creatureLibLastException.c_str(); }
};
#define Try(data) \
try { \
data; \
return 0; \
} catch (const std::exception& e) { \
ExceptionHandler::SetLastException(__FUNCTION__, e); \
return CreatureLibLibraryException; \
}
#define SIMPLE_GET_FUNC(type, name, returnType) \
export returnType CreatureLib_##type##_##name(const type* p) { return p->name(); }
#define BORROWED_GET_FUNC(type, name, returnType) \
export returnType CreatureLib_##type##_##name(const type* p) { return p->name().GetRaw(); }
#define SMART_GET_FUNC(type, name, returnType) \
export returnType CreatureLib_##type##_##name(const type* p) { return p->name().get(); }
#endif // CREATURELIB_CORE_HPP

View File

@@ -1,5 +1,5 @@
#include "../../src/Library/CreatureData/CreatureSpecies.hpp"
#include "../Core.hpp"
#include "Core.hpp"
using namespace CreatureLib::Library;
export uint8_t CreatureLib_CreatureSpecies_Construct(CreatureSpecies*& out, uint16_t id, const char* name,

View File

@@ -1,5 +1,5 @@
#include "../../src/Library/DataLibrary.hpp"
#include "../Core.hpp"
#include "Core.hpp"
using namespace CreatureLib::Library;
export uint8_t CreatureLib_DataLibrary_Construct(const DataLibrary*& out, LibrarySettings* settings,

View File

@@ -1,5 +1,5 @@
#include "../../src/Library/EffectParameter.hpp"
#include "../Core.hpp"
#include "Core.hpp"
using namespace CreatureLib::Library;
export EffectParameter* CreatureLib_EffectParameter_FromBool(bool b) { return new EffectParameter(b); }

View File

@@ -1,7 +1,7 @@
#include "../../src/Library/GrowthRates/GrowthRate.hpp"
#include "../../src/Library/GrowthRates/ExternGrowthRate.hpp"
#include "../../src/Library/GrowthRates/LookupGrowthRate.hpp"
#include "../Core.hpp"
#include "Core.hpp"
using namespace CreatureLib::Library;
export GrowthRate* CreatureLib_LookupGrowthRate_Construct(uint32_t experiencePerLevel[], size_t count) {

View File

@@ -1,5 +1,5 @@
#include "../../src/Library/GrowthRates/GrowthRateLibrary.hpp"
#include "../Core.hpp"
#include "Core.hpp"
using namespace CreatureLib::Library;
export GrowthRateLibrary* CreatureLib_GrowthRateLibrary_Construct(size_t initialCapacity) {

View File

@@ -1,5 +1,5 @@
#include "../../src/Library/Items/Item.hpp"
#include "../Core.hpp"
#include "Core.hpp"
using namespace CreatureLib::Library;
export Item* CreatureLib_Item_Construct(const char* name, ItemCategory category, BattleItemCategory battleCategory,

View File

@@ -1,6 +1,6 @@
#include "../../src/Library/ItemLibrary.hpp"
#include "../Core.hpp"
#include "BaseLibrary.cpp"
#include "Core.hpp"
using namespace CreatureLib::Library;
export const ItemLibrary* CreatureLib_ItemLibrary_Construct(size_t initialCapacity = 32) {

View File

@@ -1,5 +1,5 @@
#include "../../src/Library/CreatureData/LearnableAttacks.hpp"
#include "../Core.hpp"
#include "Core.hpp"
using namespace CreatureLib::Library;
export uint8_t CreatureLib_LearnableAttacks_Construct(LearnableAttacks*& out, size_t levelAttackCapacity) {

View File

@@ -1,5 +1,5 @@
#include "../../src/Library/LibrarySettings.hpp"
#include "../Core.hpp"
#include "Core.hpp"
using namespace CreatureLib::Library;
export const LibrarySettings* CreatureLib_LibrarySettings_Construct(uint8_t maximalLevel, uint8_t maximalMoves) {

View File

@@ -1,6 +1,6 @@
#include "../../src/Library/SpeciesLibrary.hpp"
#include "../Core.hpp"
#include "BaseLibrary.cpp"
#include "Core.hpp"
using namespace CreatureLib::Library;
export const SpeciesLibrary* CreatureLib_SpeciesLibrary_Construct(size_t initialCapacity = 32) {

View File

@@ -1,5 +1,5 @@
#include "../../src/Library/CreatureData/SpeciesVariant.hpp"
#include "../Core.hpp"
#include "Core.hpp"
using namespace CreatureLib::Library;

View File

@@ -1,5 +1,5 @@
#include "../../src/Library/TypeLibrary.hpp"
#include "../Core.hpp"
#include "Core.hpp"
using namespace CreatureLib::Library;
export TypeLibrary* CreatureLib_TypeLibrary_Construct(size_t initialCapacity) {