aboutsummaryrefslogtreecommitdiffstats
path: root/tests/gpgscm/scheme.c
diff options
context:
space:
mode:
authorJustus Winter <[email protected]>2016-06-23 14:14:10 +0000
committerJustus Winter <[email protected]>2016-06-23 14:14:10 +0000
commit332fa86982dc811640ac8643332d8375816e5b81 (patch)
tree7d67f20254ffe30c5896bde66daaa705f8ae07c8 /tests/gpgscm/scheme.c
parentgpgscm: Fix Scheme initialization. (diff)
downloadgnupg-332fa86982dc811640ac8643332d8375816e5b81.tar.gz
gnupg-332fa86982dc811640ac8643332d8375816e5b81.zip
gpgscm: Add types for special objects.
* tests/gpgscm/scheme.c (enum scheme_types): Add types for boolean, nil, eof, and the sink object. (type_to_string): Handle new types. (scheme_init_custom_alloc): Give special objects a type. Signed-off-by: Justus Winter <[email protected]>
Diffstat (limited to 'tests/gpgscm/scheme.c')
-rw-r--r--tests/gpgscm/scheme.c20
1 files changed, 14 insertions, 6 deletions
diff --git a/tests/gpgscm/scheme.c b/tests/gpgscm/scheme.c
index 3ed5d9bf2..486194c19 100644
--- a/tests/gpgscm/scheme.c
+++ b/tests/gpgscm/scheme.c
@@ -126,7 +126,11 @@ enum scheme_types {
T_PROMISE=13,
T_ENVIRONMENT=14,
T_FOREIGN_OBJECT=15,
- T_LAST_SYSTEM_TYPE=15
+ T_BOOLEAN=16,
+ T_NIL=17,
+ T_EOF_OBJ=18,
+ T_SINK=19,
+ T_LAST_SYSTEM_TYPE=19
};
static const char *
@@ -149,6 +153,10 @@ type_to_string (enum scheme_types typ)
case T_PROMISE: return "promise";
case T_ENVIRONMENT: return "environment";
case T_FOREIGN_OBJECT: return "foreign object";
+ case T_BOOLEAN: return "boolean";
+ case T_NIL: return "nil";
+ case T_EOF_OBJ: return "eof object";
+ case T_SINK: return "sink";
}
assert (! "not reached");
}
@@ -4770,19 +4778,19 @@ int scheme_init_custom_alloc(scheme *sc, func_alloc malloc, func_dealloc free) {
sc->tracing=0;
/* init sc->NIL */
- typeflag(sc->NIL) = (T_ATOM | MARK);
+ typeflag(sc->NIL) = (T_NIL | T_ATOM | MARK);
car(sc->NIL) = cdr(sc->NIL) = sc->NIL;
/* init T */
- typeflag(sc->T) = (T_ATOM | MARK);
+ typeflag(sc->T) = (T_BOOLEAN | T_ATOM | MARK);
car(sc->T) = cdr(sc->T) = sc->T;
/* init F */
- typeflag(sc->F) = (T_ATOM | MARK);
+ typeflag(sc->F) = (T_BOOLEAN | T_ATOM | MARK);
car(sc->F) = cdr(sc->F) = sc->F;
/* init EOF_OBJ */
- typeflag(sc->EOF_OBJ) = (T_ATOM | MARK);
+ typeflag(sc->EOF_OBJ) = (T_EOF_OBJ | T_ATOM | MARK);
car(sc->EOF_OBJ) = cdr(sc->EOF_OBJ) = sc->EOF_OBJ;
/* init sink */
- typeflag(sc->sink) = (T_PAIR | MARK);
+ typeflag(sc->sink) = (T_SINK | T_PAIR | MARK);
car(sc->sink) = sc->NIL;
/* init c_nest */
sc->c_nest = sc->NIL;