Commit 26284f5ecb4be94dd15e3653cb1c380018b1c5e0

Thomas de Grivel 2025-03-14T22:20:48

wip tests pcallable

diff --git a/event/event.c b/event/event.c
index eb7450a..24cd671 100644
--- a/event/event.c
+++ b/event/event.c
@@ -58,14 +58,14 @@ static void kc3_event_callback (int fd, short events, void *tag_tuple)
     assert(! "kc3_event_callback: invalid arg: tuple size != 3");
     abort();
   }
-  if (tag->data.tuple.tag[0].type != TAG_CALLABLE) {
+  if (tag->data.tuple.tag[0].type != TAG_PCALLABLE) {
     err_puts("kc3_event_callback: invalid arg: not a Callable"
              " (Cfn or Fn)");
     assert(!("kc3_event_callback: invalid arg: not a Callable"
              " (Cfn or Fn)"));
     abort();
   }
-  if (! (callable = tag->data.tuple.tag[0].data.callable)) {
+  if (! (callable = tag->data.tuple.tag[0].data.pcallable)) {
     err_puts("kc3_event_callback: invalid arg: ! callable");
     assert(! "kc3_event_callback: invalid arg: ! callable");
     abort();
@@ -146,7 +146,7 @@ struct event * kc3_event_new (struct event_base **event_base, s32 fd,
     assert(! "kc3_event_new: event_new");
     return NULL;
   }
-  tag_init_callable_copy(tag->data.tuple.tag, callback);
+  tag_init_pcallable_copy(tag->data.tuple.tag, callback);
   tag_init_copy(tag->data.tuple.tag + 2, arg);
   tag_init_ptr(tag->data.tuple.tag + 1, ev);
   return ev;
diff --git a/gtk4/signal.c b/gtk4/signal.c
index 0027dc1..6cdb963 100644
--- a/gtk4/signal.c
+++ b/gtk4/signal.c
@@ -14,6 +14,7 @@
 #include <libkc3/callable.h>
 #include <libkc3/eval.h>
 #include <libkc3/list.h>
+#include <libkc3/pcallable.h>
 #include <libkc3/tag.h>
 #include <libkc3/tuple.h>
 #include "signal.h"
@@ -25,12 +26,12 @@ void kc3_gtk4_signal_callback (GObject *object, s_tuple *tuple)
   s_tag tag;
   s_list *tmp;
   if (tuple->count != 2 ||
-      tuple->tag[0].type != TAG_CALLABLE) {
+      tuple->tag[0].type != TAG_PCALLABLE) {
     err_puts("kc3_gtk4_signal_callback: invalid tuple");
     assert(! "kc3_gtk4_signal_callback: invalid tuple");
     abort();
   }
-  callable = tuple->tag->data.callable;
+  callable = tuple->tag->data.pcallable;
   if (! callable ||
       callable->type == CALLABLE_VOID) {
     err_puts("kc3_gtk4_signal_callback: invalid callable");
@@ -69,10 +70,10 @@ void kc3_gtk4_signal_connect (GObject **object,
     assert(! "kc3_gtk4_signal_connect: tuple_new");
     abort();
   }
-  tuple->tag->type = TAG_CALLABLE;
-  if (! p_callable_init_copy(&tuple->tag->data.callable, callback)) {
-    err_puts("kc3_gtk4_signal_connect: p_callable_init_copy");
-    assert(! "kc3_gtk4_signal_connect: p_callable_init_copy");
+  tuple->tag->type = TAG_PCALLABLE;
+  if (! pcallable_init_copy(&tuple->tag->data.pcallable, callback)) {
+    err_puts("kc3_gtk4_signal_connect: pcallable_init_copy");
+    assert(! "kc3_gtk4_signal_connect: pcallable_init_copy");
     abort();
   }
   if (! tag_init_copy(tuple->tag + 1, data)) {
diff --git a/gtk4/simple_action.c b/gtk4/simple_action.c
index 0d286b3..60844cd 100644
--- a/gtk4/simple_action.c
+++ b/gtk4/simple_action.c
@@ -75,9 +75,9 @@ GSimpleAction ** kc3_gtk4_simple_action_new (GSimpleAction **dest,
   cb->action = tmp;
   cb->next = g_action_callbacks;
   g_action_callbacks = cb;
-  if (! (p_callable_init_copy(&cb->callable, callable))) {
-    err_puts("kc3_gtk4_simple_action_new: p_callable_init_copy");
-    assert(! "kc3_gtk4_simple_action_new: p_callable_init_copy");
+  if (! (pcallable_init_copy(&cb->callable, callable))) {
+    err_puts("kc3_gtk4_simple_action_new: pcallable_init_copy");
+    assert(! "kc3_gtk4_simple_action_new: pcallable_init_copy");
     return NULL;
   }
   if (! (tag_init_copy(&cb->tag, data))) {
diff --git a/test/ops_test.c b/test/ops_test.c
index b7366ff..d9c3d7f 100644
--- a/test/ops_test.c
+++ b/test/ops_test.c
@@ -15,6 +15,7 @@
 #include "../libkc3/callable.h"
 #include "../libkc3/op.h"
 #include "../libkc3/ops.h"
+#include "../libkc3/pcallable.h"
 #include "../libkc3/struct.h"
 #include "../libkc3/sym.h"
 #include "../libkc3/tag.h"
@@ -67,7 +68,7 @@ TEST_CASE(ops_add)
   op->arity = 2;
   op->precedence = 1;
   op->associativity = 1;
-  op->callable = callable_new();
+  TEST_ASSERT(pcallable_init(&op->pcallable));
   TEST_ASSERT(ops_add(ops, &op_tag));
   TEST_EQ(ops->ht.count, 1);
   tag_clean(&op_tag);
@@ -90,7 +91,7 @@ TEST_CASE(ops_get)
   op->arity = 2;
   op->precedence = 3;
   op->associativity = 1;
-  op->callable = callable_new();
+  TEST_ASSERT(pcallable_init(&op->pcallable));
   TEST_ASSERT(ops_add(ops, &op_tag));
   TEST_EQ(ops->ht.count, 1);
   tag_clean(&op_tag);