diff --git a/interfaces/Crafter.Event.cppm b/interfaces/Crafter.Event.cppm index 60123e6..4bc8197 100644 --- a/interfaces/Crafter.Event.cppm +++ b/interfaces/Crafter.Event.cppm @@ -1,6 +1,6 @@ /* Crafter®.Event -Copyright (C) 2025 Catcrafts® +Copyright (C) 2026 Catcrafts® catcrafts.net This library is free software; you can redistribute it and/or @@ -268,6 +268,7 @@ namespace Crafter { template void EventListener::Clear() { if (eventToListenTo != nullptr) { eventToListenTo->RemoveListener(this); + eventToListenTo = nullptr; } } @@ -291,6 +292,10 @@ namespace Crafter { eventToListenTo->AddListener(this); } + EventListener::EventListener() { + eventToListenTo = nullptr; + } + EventListener::~EventListener() { if (eventToListenTo != nullptr) { eventToListenTo->RemoveListener(this); @@ -300,10 +305,7 @@ namespace Crafter { void EventListener::Clear() { if (eventToListenTo != nullptr) { eventToListenTo->RemoveListener(this); + eventToListenTo = nullptr; } } - - EventListener::EventListener() { - eventToListenTo = nullptr; - } } \ No newline at end of file diff --git a/project.cpp b/project.cpp new file mode 100644 index 0000000..820e445 --- /dev/null +++ b/project.cpp @@ -0,0 +1,29 @@ +import std; +import Crafter.Build; +namespace fs = std::filesystem; +using namespace Crafter; + +extern "C" Configuration CrafterBuildProject(std::span args) { + bool debug = false; + bool timing = false; + std::string target = "x86_64-pc-linux-gnu"; + for (std::string_view arg : args) { + if (arg == "--debug") debug = true; + else if (arg == "--timing") timing = true; + else if (arg.starts_with("--target=")) target = std::string(arg.substr(std::string_view("--target=").size())); + } + + Configuration cfg; + cfg.path = "./"; + cfg.name = "Crafter.Event"; + cfg.outputName = "Crafter.Event"; + cfg.target = target; + cfg.type = ConfigurationType::LibraryStatic; + cfg.debug = debug; + if (timing) cfg.defines.push_back({"CRAFTER_TIMING", ""}); + + std::array ifaces = { "interfaces/Crafter.Event" }; + std::array impls = {}; + cfg.GetInterfacesAndImplementations(ifaces, impls); + return cfg; +} diff --git a/project.json b/project.json deleted file mode 100644 index 4dd4c6c..0000000 --- a/project.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "name": "crafter-event", - "configurations": [ - { - "name": "lib", - "interfaces": ["interfaces/Crafter.Event"], - "type":"library" - - }, - { - "name": "lib-timing", - "extends": ["lib"], - "defines": [{ "name": "CRAFTER_TIMING" }] - }, - { - "name": "lib-debug", - "debug" : true, - "extends": ["lib"] - } - ] -}