mirror of
git://git.gnupg.org/gnupg.git
synced 2025-07-02 22:46:30 +02:00
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 <justus@g10code.com>
This commit is contained in:
parent
8e5ad9aabd
commit
56c36f2932
3 changed files with 45 additions and 1 deletions
|
@ -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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue