From e86e90cc031a0670fdb0d9c23e23f90b009ba3da Mon Sep 17 00:00:00 2001 From: Justus Winter Date: Thu, 31 Mar 2016 13:49:56 +0200 Subject: tests/gpgscm: Foreign objects support for TinySCHEME. * tests/gpgscm/scheme-private.h (struct cell): Add 'foreign_object'. (is_foreign_object): New prototype. (get_foreign_object_{vtable,data}): Likewise. * tests/gpgscm/scheme.c (enum scheme_types): New type. (is_foreign_object): New function. (get_foreign_object_{vtable,data}): Likewise. (mk_foreign_object): Likewise. (finalize_cell): Free foreign objects. (atom2str): Pretty-print foreign objects. (vtbl): Add new functions. * tests/gpgscm/scheme.h (struct foreign_object_vtable): New type. (mk_foreign_object): New prototype. (struct scheme_interface): Add new functions. Patch from Thomas Munro, https://sourceforge.net/p/tinyscheme/patches/13/ Signed-off-by: Justus Winter --- tests/gpgscm/scheme-private.h | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'tests/gpgscm/scheme-private.h') diff --git a/tests/gpgscm/scheme-private.h b/tests/gpgscm/scheme-private.h index 0ddfdbcc5..9eafe766d 100644 --- a/tests/gpgscm/scheme-private.h +++ b/tests/gpgscm/scheme-private.h @@ -55,6 +55,10 @@ struct cell { struct cell *_car; struct cell *_cdr; } _cons; + struct { + char *_data; + const foreign_object_vtable *_vtable; + } _foreign_object; } _object; }; @@ -207,6 +211,10 @@ int is_environment(pointer p); int is_immutable(pointer p); void setimmutable(pointer p); +int is_foreign_object(pointer p); +const foreign_object_vtable *get_foreign_object_vtable(pointer p); +void *get_foreign_object_data(pointer p); + #ifdef __cplusplus } #endif -- cgit v1.2.3