Introduce reference type, use vectors of SCM.
authorJan Nieuwenhuizen <janneke@gnu.org>
Mon, 24 Oct 2016 22:21:28 +0000 (00:21 +0200)
committerJan Nieuwenhuizen <janneke@gnu.org>
Mon, 12 Dec 2016 19:33:48 +0000 (20:33 +0100)
commitd209a1812101264a2186700e35dff1860b41598b
treef3fa343a3506c5c30ad053b7e9aa5c4777a323c3
parent3249db47b0ed43abaebcd0d1033decea272ac73a
Introduce reference type, use vectors of SCM.

* mes.c (type): Add REF.
  (scm_t): Add ref, change vector to *scm_t.  Update users.
  (alloc): New function.
  (cons, make_char, make_macro, make_number, make_string,
  internal_make_symbol, make_vector): Use it.
  (make_ref): New function.
  (vector_entry): New function.
  (make_vector, list_to_vector, vector_set_x): Use it.
  (vector_ref): Dereference REF entry.
  (display_helper): Handle REF.
* lib.c (vector_to_list): Handle REF.
* type.c (ref_p): New function.
* tests/vector.test (vector list): New test.

Bugfix vector-ref.

* mes.c (vector-ref): Make copies of simple values.  Fixes lalr.
* tests/vector.test (vector-set! 3): New test.
lib.c
mes.c
module/mes/record-0.mes
tests/vector.test
type.c