diff --git a/storm/Handle.hpp b/storm/Handle.hpp index b4264d2..5192138 100644 --- a/storm/Handle.hpp +++ b/storm/Handle.hpp @@ -1,10 +1,12 @@ #ifndef STORM_HANDLE_HPP #define STORM_HANDLE_HPP -#if !defined(DECLARE_HANDLE) -#define DECLARE_HANDLE(name) \ - struct name##__; \ +#define DECLARE_STORM_HANDLE(name) \ + struct name##__ { int32_t unused; }; \ + typedef struct name##__* name + +#define DECLARE_STORM_CHILD_HANDLE(name, super) \ + struct name##__ : public super##__ { int32_t unused; }; \ typedef struct name##__* name -#endif #endif diff --git a/storm/region/Types.hpp b/storm/region/Types.hpp index 123822a..7fea81e 100644 --- a/storm/region/Types.hpp +++ b/storm/region/Types.hpp @@ -4,9 +4,9 @@ #include "storm/Handle.hpp" #include -DECLARE_HANDLE(HSRGN); +DECLARE_STORM_HANDLE(HSRGN); -DECLARE_HANDLE(HLOCKEDRGN); +DECLARE_STORM_HANDLE(HLOCKEDRGN); struct RECTF { float left; diff --git a/test/Handle.cpp b/test/Handle.cpp new file mode 100644 index 0000000..9778237 --- /dev/null +++ b/test/Handle.cpp @@ -0,0 +1,23 @@ +#include "storm/Handle.hpp" +#include "test/Test.hpp" + +TEST_CASE("DECLARE_STORM_HANDLE", "[handle]") { + SECTION("declares handle") { + DECLARE_STORM_HANDLE(HTEST); + HTEST test; + + SUCCEED(); + } +} + +TEST_CASE("DECLARE_STORM_CHILD_HANDLE", "[handle]") { + SECTION("declares child handle") { + DECLARE_STORM_HANDLE(HPARENT); + DECLARE_STORM_CHILD_HANDLE(HCHILD, HPARENT); + + HPARENT parent; + HCHILD child; + + SUCCEED(); + } +}