diff options
author | Andy Wingo <wingo@pobox.com> | 2008-10-31 14:09:01 +0100 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2008-10-31 14:09:01 +0100 |
commit | 1e4b834ab1821f272359e03712044a4793c5d529 (patch) | |
tree | 8316033e95d754f76d5b21abe37bfb787cef8d7f /libguile/vm-i-scheme.c | |
parent | eb5f05c3209530792ddbd81a8afadaed3836b168 (diff) | |
download | guile-1e4b834ab1821f272359e03712044a4793c5d529.tar.gz |
new ops: slot-ref, slot-set. remove and recompile your .go files
* libguile/vm-i-scheme.c (slot-ref, slot-set): New ops.
Diffstat (limited to 'libguile/vm-i-scheme.c')
-rw-r--r-- | libguile/vm-i-scheme.c | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/libguile/vm-i-scheme.c b/libguile/vm-i-scheme.c index d4dac80d3..efaa73546 100644 --- a/libguile/vm-i-scheme.c +++ b/libguile/vm-i-scheme.c @@ -274,6 +274,28 @@ VM_DEFINE_FUNCTION (mod, "mod", 2) RETURN (scm_modulo (x, y)); } + +/* + * GOOPS support + */ +VM_DEFINE_FUNCTION (slot_ref, "slot-ref", 2) +{ + size_t slot; + ARGS2 (instance, idx); + slot = SCM_I_INUM (idx); + RETURN (SCM_PACK (SCM_STRUCT_DATA (instance) [slot])); +} + +VM_DEFINE_FUNCTION (slot_set, "slot-set", 3) +{ + size_t slot; + ARGS3 (instance, idx, val); + slot = SCM_I_INUM (idx); + SCM_STRUCT_DATA (instance) [slot] = SCM_UNPACK (val); + RETURN (SCM_UNSPECIFIED); +} + + /* Local Variables: c-file-style: "gnu" |