gpgscm: Implement tags.
authorJustus Winter <justus@g10code.com>
Fri, 18 Nov 2016 12:23:11 +0000 (13:23 +0100)
committerJustus Winter <justus@g10code.com>
Thu, 8 Dec 2016 16:15:20 +0000 (17:15 +0100)
commitfcf5aea44627def43425d03881e20902e7c0331e
treea786be767f3e6980e94eb061386204eccde9789f
parenta75790b74095828f967c012eff7033f570d93077
gpgscm: Implement tags.

* tests/gpgscm/opdefines.h: Add opcodes to create and retrieve tags.
* tests/gpgscm/scheme.c (T_TAGGED): New macro.
(mk_tagged_value): New function.
(has_tag): Likewise.
(get_tag): Likewise.
(mark): Mark tag.
(opexe_4): Implement new opcodes.
* tests/gpgscm/scheme.h (USE_TAGS): New macro.
--

Tags are similar to property lists, but property lists can only be
attached to symbols.  Tags can not be attached to an existing object,
but a tagged copy can be created.  Once done, the tag can be
manipulated in constant time.

Using this during parsing will enable us to produce meaningful error
messages.

Signed-off-by: Justus Winter <justus@g10code.com>
tests/gpgscm/opdefines.h
tests/gpgscm/scheme.c
tests/gpgscm/scheme.h