core: Add string ports.
authorJan Nieuwenhuizen <janneke@gnu.org>
Sun, 29 Apr 2018 15:48:38 +0000 (17:48 +0200)
committerJan Nieuwenhuizen <janneke@gnu.org>
Sun, 29 Apr 2018 15:48:38 +0000 (17:48 +0200)
commitdc24a7f76f4b3df3cadedfcc347e343a17d4f06a
tree8ce715b0edda293f77317cf97e6db01b71c7ec81
parentc20ef52f6fed2400e078890b6e107a794026af99
core: Add string ports.

* src/mes.c (type_t): Add TPORT.
  (scm_type_port): New symbol.
  (PORT): New macro.
  (MAKE_STRING_PORT): New macro.
  (eval_apply): Handle string ports in primitive-load.
  (mes_symbols): Add scm_type_port.
* src/posix.c (peekchar): Handle string ports.
  (readchar): New function.  Replace all getchar callers.
  (unreadchar): Likewise.
* module/mes/type-0 (port?): New function.
* module/mes/guile.mes (with-input-from-file): Rewrite.
  (open-input-string): Remove.
* module/mes/guile.scm (guile): Update cell types.
* src/gc.c (gc_loop): Support TPORT.
* src/lib.c (display_helper): Support TPORT.
* module/mes/display.mes (display): Support TPORT.
module/mes/display.mes
module/mes/guile.mes
module/mes/guile.scm
module/mes/type-0.mes
src/gc.c
src/lib.c
src/mes.c
src/posix.c
src/reader.c