diff --git a/CInterface/Battling/Battle.cpp b/CInterface/Battling/Battle.cpp index 65de1d0..e406485 100644 --- a/CInterface/Battling/Battle.cpp +++ b/CInterface/Battling/Battle.cpp @@ -1,5 +1,5 @@ #include "../../src/Battling/Models/Battle.hpp" -#include "Core.hpp" +#include "../Core.hpp" using namespace CreatureLib::Battling; export uint8_t CreatureLib_Battle_Construct(Battle*& out, const BattleLibrary* library, BattleParty* partyArr[], diff --git a/CInterface/Battling/BattleLibrary.cpp b/CInterface/Battling/BattleLibrary.cpp index 3882330..6594ddc 100644 --- a/CInterface/Battling/BattleLibrary.cpp +++ b/CInterface/Battling/BattleLibrary.cpp @@ -1,5 +1,5 @@ #include "../../src/Battling/Library/BattleLibrary.hpp" -#include "Core.hpp" +#include "../Core.hpp" using namespace CreatureLib::Battling; export uint8_t CreatureLib_BattleLibrary_Construct(const BattleLibrary*& out, diff --git a/CInterface/Battling/BattleParty.cpp b/CInterface/Battling/BattleParty.cpp index 19e5703..0058246 100644 --- a/CInterface/Battling/BattleParty.cpp +++ b/CInterface/Battling/BattleParty.cpp @@ -1,5 +1,5 @@ #include "../../src/Battling/Models/BattleParty.hpp" -#include "Core.hpp" +#include "../Core.hpp" using namespace CreatureLib::Battling; // Note that creatureIndices should be twice the size of numberOfIndices, and have index of side, index of creature on diff --git a/CInterface/Battling/BattleRandom.cpp b/CInterface/Battling/BattleRandom.cpp index 033367c..2328ad6 100644 --- a/CInterface/Battling/BattleRandom.cpp +++ b/CInterface/Battling/BattleRandom.cpp @@ -1,5 +1,5 @@ #include "../../src/Battling/Models/BattleRandom.hpp" -#include "Core.hpp" +#include "../Core.hpp" using namespace CreatureLib::Battling; export BattleRandom* CreatureLib_BattleRandom_Construct() { return new BattleRandom(); } diff --git a/CInterface/Battling/BattleSide.cpp b/CInterface/Battling/BattleSide.cpp index cf596a0..a8b85ea 100644 --- a/CInterface/Battling/BattleSide.cpp +++ b/CInterface/Battling/BattleSide.cpp @@ -1,5 +1,5 @@ #include "../../src/Battling/Models/BattleSide.hpp" -#include "Core.hpp" +#include "../Core.hpp" using namespace CreatureLib::Battling; export BattleSide* CreatureLib_BattleSide_Construct(uint8_t index, Battle* battle, uint8_t creaturesPerSide) { diff --git a/CInterface/Battling/BattleStatCalculator.cpp b/CInterface/Battling/BattleStatCalculator.cpp index 3613ea0..4e6724d 100644 --- a/CInterface/Battling/BattleStatCalculator.cpp +++ b/CInterface/Battling/BattleStatCalculator.cpp @@ -1,5 +1,5 @@ #include "../../src/Battling/Library/BattleStatCalculator.hpp" -#include "Core.hpp" +#include "../Core.hpp" using namespace CreatureLib::Battling; export const BattleStatCalculator* CreatureLib_BattleStatCalculator_Construct() { return new BattleStatCalculator(); } diff --git a/CInterface/Battling/Core.hpp b/CInterface/Battling/Core.hpp deleted file mode 100644 index faf26a1..0000000 --- a/CInterface/Battling/Core.hpp +++ /dev/null @@ -1,41 +0,0 @@ -#ifndef CREATURELIB_CORE_HPP -#define CREATURELIB_CORE_HPP - -#include -#include -#include -#include -#define export extern "C" [[maybe_unused]] - -#define CreatureLibBattlingException 3; -#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 CreatureLibBattlingException; \ - } - -#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 diff --git a/CInterface/Battling/Creature.cpp b/CInterface/Battling/Creature.cpp index 32b982e..265c901 100644 --- a/CInterface/Battling/Creature.cpp +++ b/CInterface/Battling/Creature.cpp @@ -1,5 +1,5 @@ #include "../../src/Battling/Models/Creature.hpp" -#include "Core.hpp" +#include "../Core.hpp" using namespace CreatureLib::Battling; export uint8_t CreatureLib_Creature_Construct(Creature*& out, const BattleLibrary* library, diff --git a/CInterface/Battling/CreatureParty.cpp b/CInterface/Battling/CreatureParty.cpp index 9b97b72..5d000a7 100644 --- a/CInterface/Battling/CreatureParty.cpp +++ b/CInterface/Battling/CreatureParty.cpp @@ -1,5 +1,5 @@ #include "../../src/Battling/Models/CreatureParty.hpp" -#include "Core.hpp" +#include "../Core.hpp" using namespace CreatureLib::Battling; export CreatureParty* CreatureLib_CreatureParty_ConstructWithSize(size_t size) { return new CreatureParty(size); } diff --git a/CInterface/Battling/DamageLibrary.cpp b/CInterface/Battling/DamageLibrary.cpp index b5bfba9..f4efb76 100644 --- a/CInterface/Battling/DamageLibrary.cpp +++ b/CInterface/Battling/DamageLibrary.cpp @@ -1,5 +1,5 @@ #include "../../src/Battling/Library/DamageLibrary.hpp" -#include "Core.hpp" +#include "../Core.hpp" using namespace CreatureLib::Battling; export const DamageLibrary* CreatureLib_DamageLibrary_Construct() { return new DamageLibrary(); } diff --git a/CInterface/Battling/EventData.cpp b/CInterface/Battling/EventData.cpp index fb749ff..3da43f7 100644 --- a/CInterface/Battling/EventData.cpp +++ b/CInterface/Battling/EventData.cpp @@ -1,5 +1,5 @@ #include "../../src/Battling/EventHooks/EventData.hpp" -#include "Core.hpp" +#include "../Core.hpp" using namespace CreatureLib::Battling; export void CreatureLib_EventData_Destruct(const EventData* p) { delete p; } diff --git a/CInterface/Battling/ExecutingAttack.cpp b/CInterface/Battling/ExecutingAttack.cpp index 8d629e3..c515a58 100644 --- a/CInterface/Battling/ExecutingAttack.cpp +++ b/CInterface/Battling/ExecutingAttack.cpp @@ -1,5 +1,5 @@ #include "../../src/Battling/Models/ExecutingAttack.hpp" -#include "Core.hpp" +#include "../Core.hpp" using namespace CreatureLib::Battling; export uint8_t CreatureLib_ExecutingAttack_Construct(ExecutingAttack*& out, Creature* const* targets, diff --git a/CInterface/Battling/ExperienceLibrary.cpp b/CInterface/Battling/ExperienceLibrary.cpp index 15c5b19..b98ae9f 100644 --- a/CInterface/Battling/ExperienceLibrary.cpp +++ b/CInterface/Battling/ExperienceLibrary.cpp @@ -1,5 +1,5 @@ #include "../../src/Battling/Library/ExperienceLibrary.hpp" -#include "Core.hpp" +#include "../Core.hpp" using namespace CreatureLib::Battling; export const ExperienceLibrary* CreatureLib_ExperienceLibrary_Construct() { return new ExperienceLibrary(); } diff --git a/CInterface/Battling/LearnedAttack.cpp b/CInterface/Battling/LearnedAttack.cpp index a5ed283..f199bbe 100644 --- a/CInterface/Battling/LearnedAttack.cpp +++ b/CInterface/Battling/LearnedAttack.cpp @@ -1,5 +1,5 @@ #include "../../src/Battling/Models/LearnedAttack.hpp" -#include "Core.hpp" +#include "../Core.hpp" using namespace CreatureLib::Battling; export uint8_t CreatureLib_LearnedAttack_Construct(LearnedAttack*& out, const CreatureLib::Library::AttackData* attack, diff --git a/CInterface/Battling/MiscLibrary.cpp b/CInterface/Battling/MiscLibrary.cpp index ec4cd5f..8b4c7f7 100644 --- a/CInterface/Battling/MiscLibrary.cpp +++ b/CInterface/Battling/MiscLibrary.cpp @@ -1,5 +1,5 @@ #include "../../src/Battling/Library/MiscLibrary.hpp" -#include "Core.hpp" +#include "../Core.hpp" using namespace CreatureLib::Battling; export MiscLibrary* CreatureLib_MiscLibrary_Construct() { return new MiscLibrary(); } diff --git a/CInterface/Battling/Script.cpp b/CInterface/Battling/Script.cpp index c5d36ea..355b983 100644 --- a/CInterface/Battling/Script.cpp +++ b/CInterface/Battling/Script.cpp @@ -1,5 +1,5 @@ #include "../../src/Battling/ScriptHandling/Script.hpp" -#include "Core.hpp" +#include "../Core.hpp" using namespace CreatureLib::Battling; export void CreatureLib_Script_Destruct(Script* p) { delete p; } diff --git a/CInterface/Battling/ScriptResolver.cpp b/CInterface/Battling/ScriptResolver.cpp index 7a1d78a..e41c33a 100644 --- a/CInterface/Battling/ScriptResolver.cpp +++ b/CInterface/Battling/ScriptResolver.cpp @@ -1,5 +1,5 @@ #include "../../src/Battling/ScriptHandling/ScriptResolver.hpp" -#include "Core.hpp" +#include "../Core.hpp" using namespace CreatureLib::Battling; export ScriptResolver* CreatureLib_ScriptResolver_Construct() { return new ScriptResolver(); } diff --git a/CInterface/Battling/TurnChoices.cpp b/CInterface/Battling/TurnChoices.cpp index 8742123..3870c76 100644 --- a/CInterface/Battling/TurnChoices.cpp +++ b/CInterface/Battling/TurnChoices.cpp @@ -2,7 +2,7 @@ #include "../../src/Battling/TurnChoices/FleeTurnChoice.hpp" #include "../../src/Battling/TurnChoices/PassTurnChoice.hpp" #include "../../src/Battling/TurnChoices/SwitchTurnChoice.hpp" -#include "Core.hpp" +#include "../Core.hpp" using namespace CreatureLib::Battling; export AttackTurnChoice* CreatureLib_AttackTurnChoice_Construct(Creature* user, LearnedAttack* attack, diff --git a/CInterface/Battling/Core.cpp b/CInterface/Core.cpp similarity index 100% rename from CInterface/Battling/Core.cpp rename to CInterface/Core.cpp diff --git a/CInterface/Library/Core.hpp b/CInterface/Core.hpp similarity index 95% rename from CInterface/Library/Core.hpp rename to CInterface/Core.hpp index ec46d93..a12c6d4 100644 --- a/CInterface/Library/Core.hpp +++ b/CInterface/Core.hpp @@ -7,7 +7,7 @@ #include #define export extern "C" [[maybe_unused]] -#define CreatureLibLibraryException 2; +#define CreatureLibException 2; #define __FILENAME__ (strrchr(__FILE__, '/') ? strrchr(__FILE__, '/') + 1 : __FILE__) class ExceptionHandler { @@ -28,7 +28,7 @@ public: return 0; \ } catch (const std::exception& e) { \ ExceptionHandler::SetLastException(__FUNCTION__, e); \ - return CreatureLibLibraryException; \ + return CreatureLibException; \ } #define SIMPLE_GET_FUNC(type, name, returnType) \ diff --git a/CInterface/Library/AttackData.cpp b/CInterface/Library/AttackData.cpp index 4db30f3..e076ec4 100644 --- a/CInterface/Library/AttackData.cpp +++ b/CInterface/Library/AttackData.cpp @@ -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, diff --git a/CInterface/Library/AttackLibrary.cpp b/CInterface/Library/AttackLibrary.cpp index 3e39c26..f91fc20 100644 --- a/CInterface/Library/AttackLibrary.cpp +++ b/CInterface/Library/AttackLibrary.cpp @@ -1,6 +1,6 @@ #include "../../src/Library/AttackLibrary.hpp" +#include "../Core.hpp" #include "BaseLibrary.cpp" -#include "Core.hpp" using namespace CreatureLib::Library; diff --git a/CInterface/Library/BaseLibrary.cpp b/CInterface/Library/BaseLibrary.cpp index edd8667..06ab3ce 100644 --- a/CInterface/Library/BaseLibrary.cpp +++ b/CInterface/Library/BaseLibrary.cpp @@ -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) { \ diff --git a/CInterface/Library/Core.cpp b/CInterface/Library/Core.cpp deleted file mode 100644 index 786aae0..0000000 --- a/CInterface/Library/Core.cpp +++ /dev/null @@ -1,5 +0,0 @@ -#include "Core.hpp" - -std::string ExceptionHandler::_creatureLibLastException = ""; - -export const char* CreatureLib_C_GetLastException() { return ExceptionHandler::GetLastException(); } diff --git a/CInterface/Library/CreatureSpecies.cpp b/CInterface/Library/CreatureSpecies.cpp index f56a792..b11ac76 100644 --- a/CInterface/Library/CreatureSpecies.cpp +++ b/CInterface/Library/CreatureSpecies.cpp @@ -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, diff --git a/CInterface/Library/DataLibrary.cpp b/CInterface/Library/DataLibrary.cpp index 35c2d4a..76079d6 100644 --- a/CInterface/Library/DataLibrary.cpp +++ b/CInterface/Library/DataLibrary.cpp @@ -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, diff --git a/CInterface/Library/EffectParameter.cpp b/CInterface/Library/EffectParameter.cpp index cb08f2d..6d517dd 100644 --- a/CInterface/Library/EffectParameter.cpp +++ b/CInterface/Library/EffectParameter.cpp @@ -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); } diff --git a/CInterface/Library/GrowthRate.cpp b/CInterface/Library/GrowthRate.cpp index 66755db..24af7d3 100644 --- a/CInterface/Library/GrowthRate.cpp +++ b/CInterface/Library/GrowthRate.cpp @@ -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) { diff --git a/CInterface/Library/GrowthRateLibrary.cpp b/CInterface/Library/GrowthRateLibrary.cpp index 024eac5..e6eab00 100644 --- a/CInterface/Library/GrowthRateLibrary.cpp +++ b/CInterface/Library/GrowthRateLibrary.cpp @@ -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) { diff --git a/CInterface/Library/Item.cpp b/CInterface/Library/Item.cpp index 78c3d40..9adf74e 100644 --- a/CInterface/Library/Item.cpp +++ b/CInterface/Library/Item.cpp @@ -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, diff --git a/CInterface/Library/ItemLibrary.cpp b/CInterface/Library/ItemLibrary.cpp index 02fadd6..dacc26c 100644 --- a/CInterface/Library/ItemLibrary.cpp +++ b/CInterface/Library/ItemLibrary.cpp @@ -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) { diff --git a/CInterface/Library/LearnableAttacks.cpp b/CInterface/Library/LearnableAttacks.cpp index fbf74a6..b5f1fab 100644 --- a/CInterface/Library/LearnableAttacks.cpp +++ b/CInterface/Library/LearnableAttacks.cpp @@ -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) { diff --git a/CInterface/Library/LibrarySettings.cpp b/CInterface/Library/LibrarySettings.cpp index 4065287..5b8a9fd 100644 --- a/CInterface/Library/LibrarySettings.cpp +++ b/CInterface/Library/LibrarySettings.cpp @@ -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) { diff --git a/CInterface/Library/SpeciesLibrary.cpp b/CInterface/Library/SpeciesLibrary.cpp index 5b05695..c631b6c 100644 --- a/CInterface/Library/SpeciesLibrary.cpp +++ b/CInterface/Library/SpeciesLibrary.cpp @@ -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) { diff --git a/CInterface/Library/SpeciesVariant.cpp b/CInterface/Library/SpeciesVariant.cpp index 3aa5076..1ff5a9f 100644 --- a/CInterface/Library/SpeciesVariant.cpp +++ b/CInterface/Library/SpeciesVariant.cpp @@ -1,5 +1,5 @@ #include "../../src/Library/CreatureData/SpeciesVariant.hpp" -#include "Core.hpp" +#include "../Core.hpp" using namespace CreatureLib::Library; diff --git a/CInterface/Library/TypeLibrary.cpp b/CInterface/Library/TypeLibrary.cpp index f5be93e..8891062 100644 --- a/CInterface/Library/TypeLibrary.cpp +++ b/CInterface/Library/TypeLibrary.cpp @@ -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) { diff --git a/CMakeLists.txt b/CMakeLists.txt index e6f98ff..bfb86ac 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -20,13 +20,9 @@ if (SHARED) set(LIBTYPE SHARED) endif (SHARED) -# Create main Library library with files in src/Library -file(GLOB_RECURSE LIBRARY_SRC_FILES "src/Library/*.cpp" "src/Library/*.hpp" "CInterface/Library/*.cpp" "CInterface/Library/*.hpp") -add_library(CreatureLibLibrary SHARED ${LIBRARY_SRC_FILES}) - -# Create Battling library with files in src/Battling -file(GLOB_RECURSE BATTLING_SRC_FILES "src/Battling/*.cpp" "src/Battling/*.hpp" "CInterface/Battling/*.cpp" "CInterface/Battling/*.hpp") -add_library(CreatureLibBattling SHARED ${BATTLING_SRC_FILES}) +file(GLOB_RECURSE LIBRARY_SRC_FILES + "src/*.cpp" "src/*.hpp" "CInterface/*.cpp" "CInterface/*.hpp") +add_library(CreatureLib SHARED ${LIBRARY_SRC_FILES}) # If we are building for Windows we need to set some specific variables. if (WINDOWS) @@ -40,25 +36,21 @@ endif (WINDOWS) # Set up links to all relevant libraries. SET(_LIBRARYLINKS Arbutils) -SET(_BATTLINGLINKS CreatureLibLibrary Arbutils) # If we need to link the C libraries statically, do so. if (STATICC) message(STATUS "Linking C statically.") SET(_LIBRARYLINKS ${_LIBRARYLINKS} -static-libgcc -static-libstdc++) - SET(_BATTLINGLINKS ${_BATTLINGLINKS} -static-libgcc -static-libstdc++) endif () # And link the libraries together -target_link_libraries(CreatureLibLibrary PUBLIC ${_LIBRARYLINKS}) -target_link_libraries(CreatureLibBattling PUBLIC ${_BATTLINGLINKS}) -target_compile_definitions(CreatureLibBattling PRIVATE BATTLING) +target_link_libraries(CreatureLib PUBLIC ${_LIBRARYLINKS}) if (TESTS) # Create Test executable file(GLOB_RECURSE TEST_FILES "tests/*.cpp" "tests/*.hpp") add_executable(CreatureLibTests ${TEST_FILES} extern/catch.hpp) - target_link_libraries(CreatureLibTests PUBLIC CreatureLibLibrary CreatureLibBattling Arbutils) + target_link_libraries(CreatureLibTests PUBLIC CreatureLib Arbutils) # Add a definition for the test library target_compile_definitions(CreatureLibTests PRIVATE TESTS_BUILD)