Procházet zdrojové kódy

test: updated plugin examples

Michele Caini před 5 roky
rodič
revize
aae199ff1c

+ 6 - 4
test/lib/dispatcher_plugin/plugin.cpp

@@ -4,12 +4,14 @@
 #include "type_context.h"
 #include "types.h"
 
-inline static type_context *context;
+struct ctx {
+    inline static type_context *ref;
+};
 
 template<typename Type>
 struct entt::type_seq<Type> {
     [[nodiscard]] static id_type value() ENTT_NOEXCEPT {
-        static const entt::id_type value = context->value(entt::type_hash<Type>::value());
+        static const entt::id_type value = ctx::ref->value(entt::type_hash<Type>::value());
         return value;
     }
 };
@@ -17,8 +19,8 @@ struct entt::type_seq<Type> {
 CR_EXPORT int cr_main(cr_plugin *ctx, cr_op operation) {
     switch (operation) {
     case CR_STEP:
-        if(!context) {
-            context = static_cast<type_context *>(ctx->userdata);
+        if(!ctx::ref) {
+            ctx::ref = static_cast<type_context *>(ctx->userdata);
         } else {
             static_cast<entt::dispatcher *>(ctx->userdata)->trigger<event>();
             static_cast<entt::dispatcher *>(ctx->userdata)->trigger<message>(42);

+ 6 - 4
test/lib/emitter_plugin/plugin.cpp

@@ -4,12 +4,14 @@
 #include "type_context.h"
 #include "types.h"
 
-inline static type_context *context;
+struct ctx {
+    inline static type_context *ref;
+};
 
 template<typename Type>
 struct entt::type_seq<Type> {
     [[nodiscard]] static id_type value() ENTT_NOEXCEPT {
-        static const entt::id_type value = context->value(entt::type_hash<Type>::value());
+        static const entt::id_type value = ctx::ref->value(entt::type_hash<Type>::value());
         return value;
     }
 };
@@ -17,8 +19,8 @@ struct entt::type_seq<Type> {
 CR_EXPORT int cr_main(cr_plugin *ctx, cr_op operation) {
     switch (operation) {
     case CR_STEP:
-        if(!context) {
-            context = static_cast<type_context *>(ctx->userdata);
+        if(!ctx::ref) {
+            ctx::ref = static_cast<type_context *>(ctx->userdata);
         } else {
             static_cast<test_emitter *>(ctx->userdata)->publish<event>();
             static_cast<test_emitter *>(ctx->userdata)->publish<message>(42);

+ 7 - 5
test/lib/registry_plugin/plugin.cpp

@@ -4,12 +4,14 @@
 #include "type_context.h"
 #include "types.h"
 
-inline static type_context *context;
+struct ctx {
+    inline static type_context *ref;
+};
 
 template<typename Type>
 struct entt::type_seq<Type> {
     [[nodiscard]] static id_type value() ENTT_NOEXCEPT {
-        static const entt::id_type value = context->value(entt::type_hash<Type>::value());
+        static const entt::id_type value = ctx::ref->value(entt::type_hash<Type>::value());
         return value;
     }
 };
@@ -17,14 +19,14 @@ struct entt::type_seq<Type> {
 CR_EXPORT int cr_main(cr_plugin *ctx, cr_op operation) {
     switch (operation) {
     case CR_STEP:
-        if(!context) {
-            context = static_cast<type_context *>(ctx->userdata);
+        if(!ctx::ref) {
+            ctx::ref = static_cast<type_context *>(ctx->userdata);
         } else {
             // forces things to break
             auto &registry = *static_cast<entt::registry *>(ctx->userdata);
 
             registry.prepare<velocity>();
-            
+
             const auto view = registry.view<position>();
             registry.insert(view.begin(), view.end(), velocity{1., 1.});