[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 2/3] libpoke: add `pk_{s,g}et_user_data' functions
From: |
Mohammad-Reza Nabipoor |
Subject: |
[PATCH 2/3] libpoke: add `pk_{s,g}et_user_data' functions |
Date: |
Tue, 14 Nov 2023 02:18:54 +0100 |
2023-11-14 Mohammad-Reza Nabipoor <mnabipoor@gnu.org>
* libpoke/libpoke.h (pk_set_user_data): New function to register an
opaque data pointer.
(pk_get_user_data): New function to retrieve the registered opaque
data pointer.
* libpoke/libpoke.c (struct _pk_compiler): Add new field `user_data'.
(pk_set_user_data): New function impl.
(pk_get_user_data): Likewise.
* testsuite/poke.libpoke/api.c (main): Add tests for new functions.
---
ChangeLog | 11 +++++++++++
libpoke/libpoke.c | 15 +++++++++++++++
libpoke/libpoke.h | 5 +++++
testsuite/poke.libpoke/api.c | 2 ++
4 files changed, 33 insertions(+)
diff --git a/ChangeLog b/ChangeLog
index 42d1e9f8..594e2014 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+2023-11-14 Mohammad-Reza Nabipoor <mnabipoor@gnu.org>
+
+ * libpoke/libpoke.h (pk_set_user_data): New function to register an
+ opaque data pointer.
+ (pk_get_user_data): New function to retrieve the registered opaque
+ data pointer.
+ * libpoke/libpoke.c (struct _pk_compiler): Add new field `user_data'.
+ (pk_set_user_data): New function impl.
+ (pk_get_user_data): Likewise.
+ * testsuite/poke.libpoke/api.c (main): Add tests for new functions.
+
2023-11-14 Mohammad-Reza Nabipoor <mnabipoor@gnu.org>
* common/pk-utils.h (pk_print_binary): Remove function decl.
diff --git a/libpoke/libpoke.c b/libpoke/libpoke.c
index 9ed02a50..f1d896ae 100644
--- a/libpoke/libpoke.c
+++ b/libpoke/libpoke.c
@@ -44,6 +44,7 @@ struct _pk_compiler
ios completion_ios;
int completion_idx;
struct pkl_ast_node_iter completion_iter;
+ void *user_data;
};
struct pk_term_if libpoke_term_if;
@@ -134,6 +135,20 @@ pk_errno (pk_compiler pkc)
return PK_ERROR;
}
+void
+pk_set_user_data (pk_compiler pkc, void *user_data)
+{
+ pkc->status = PK_OK;
+ pkc->user_data = user_data;
+}
+
+void *
+pk_get_user_data (pk_compiler pkc)
+{
+ pkc->status = PK_OK;
+ return pkc->user_data;
+}
+
int
pk_compile_file (pk_compiler pkc, const char *filename,
pk_val *exit_exception)
diff --git a/libpoke/libpoke.h b/libpoke/libpoke.h
index 66575a70..1ac05fda 100644
--- a/libpoke/libpoke.h
+++ b/libpoke/libpoke.h
@@ -166,6 +166,11 @@ void pk_unregister_thread (void) LIBPOKE_API;
int pk_errno (pk_compiler pkc) LIBPOKE_API;
+/* Set/get user-defined opaque data to the compiler instance. */
+
+void pk_set_user_data (pk_compiler pkc, void *user_data) LIBPOKE_API;
+void *pk_get_user_data (pk_compiler pkc) LIBPOKE_API;
+
/* Compile and execute a Poke program from the given file FILENAME.
EXIT_EXCEPTION is a pointer to a pk_val variable that is set to an
diff --git a/testsuite/poke.libpoke/api.c b/testsuite/poke.libpoke/api.c
index 471e5c18..5bdbb9bc 100644
--- a/testsuite/poke.libpoke/api.c
+++ b/testsuite/poke.libpoke/api.c
@@ -237,9 +237,11 @@ main ()
pkc = test_pk_compiler_new ();
+ pk_set_user_data (pkc, (uintptr_t)0xdeadbeef);
test_pk_keyword_p (pkc);
test_pk_load (pkc);
test_pk_ios (pkc);
+ T ("pk_get_user_data", pk_get_user_data (pkc) == (uintptr_t)0xdeadbeef);
test_pk_compiler_free (pkc);
return 0;
--
2.42.1
- [PATCH] libpoke, poke, poked, pokefmt: add `pk_compiler' to terminal interface, Mohammad-Reza Nabipoor, 2023/11/01
- Re: [PATCH] libpoke,poke,poked,pokefmt: add `pk_compiler' to terminal interface, Jose E. Marchesi, 2023/11/01
- [PATCH 3/3] libpoke, poke, poked, pokefmt: add `pk_compiler' to terminal interface, Mohammad-Reza Nabipoor, 2023/11/13
- Re: [PATCH 3/3] libpoke,poke,poked,pokefmt: add `pk_compiler' to terminal interface, Jose E. Marchesi, 2023/11/14
- Re: [PATCH 1/3] pk-utils: change pk_print_binary func to macro, Jose E. Marchesi, 2023/11/14
- Re: [PATCH 1/3] pk-utils: change pk_print_binary func to macro, Mohammad-Reza Nabipoor, 2023/11/14
- Re: [PATCH 1/3] pk-utils: change pk_print_binary func to macro, Jose E. Marchesi, 2023/11/15
- Re: [PATCH 1/3] pk-utils: change pk_print_binary func to macro, Mohammad-Reza Nabipoor, 2023/11/15