core: Remove make_char.
authorJan Nieuwenhuizen <janneke@gnu.org>
Fri, 23 Dec 2016 15:26:00 +0000 (16:26 +0100)
committerJan Nieuwenhuizen <janneke@gnu.org>
Fri, 23 Dec 2016 15:26:00 +0000 (16:26 +0100)
* mes.c (MAKE_CHAR): New macro.
  (make_char): Remove.  Update callers.
* reader.c (peek_char, read_char, unread_char): Remove.
* module/mes/scm.mes (peek-char, read-char, unread-char): New function.

mes.c
module/mes/scm.mes
reader.c
string.c

diff --git a/mes.c b/mes.c
index 5c553126244faed81f95366bc49e8cdc69c0713b..03f5550ea570fccf495773cb7f6462244a588a6e 100644 (file)
--- a/mes.c
+++ b/mes.c
@@ -181,6 +181,7 @@ SCM r3 = 0; // param 3
 #define CDADAR(x) CAR (CDR (CAR (CDR (x))))
 #define CADR(x) CAR (CDR (x))
 
+#define MAKE_CHAR(n) make_cell (tmp_num_ (CHAR), 0, tmp_num2_ (n))
 #define MAKE_NUMBER(n) make_cell (tmp_num_ (NUMBER), 0, tmp_num2_ (n))
 
 SCM display_ (FILE* f, SCM x);
@@ -677,14 +678,6 @@ append (SCM x) ///((arity . n))
   return append2 (car (x), append (cdr (x)));
  }
 
-SCM
-make_char (int x)
-{
-  g_cells[tmp_num].value = CHAR;
-  g_cells[tmp_num2].value = x;
-  return make_cell (tmp_num, tmp_num2, tmp_num2);
-}
-
 SCM
 tmp_num_ (int x)
 {
@@ -719,7 +712,7 @@ cstring_to_list (char const* s)
   SCM p = cell_nil;
   int i = strlen (s);
   while (i--)
-    p = cons (make_char (s[i]), p);
+    p = cons (MAKE_CHAR (s[i]), p);
   return p;
 }
 
@@ -778,7 +771,7 @@ vector_ref (SCM x, SCM i)
   assert (VALUE (i) < LENGTH (x));
   SCM e = VECTOR (x) + VALUE (i);
   if (TYPE (e) == REF) e = g_cells[e].ref;
-  if (TYPE (e) == CHAR) e = make_char (VALUE (e));
+  if (TYPE (e) == CHAR) e = MAKE_CHAR (VALUE (e));
   if (TYPE (e) == NUMBER) e = MAKE_NUMBER (VALUE (e));
   return e;
 }
@@ -883,7 +876,7 @@ SCM
 integer_to_char (SCM x)
 {
   assert (TYPE (x) == NUMBER);
-  return make_char (VALUE (x));
+  return MAKE_CHAR (VALUE (x));
 }
 
 void
@@ -1123,9 +1116,9 @@ SCM
 mes_stack (SCM a) ///((internal))
 {
   r0 = a;
-  r1 = make_char (0);
-  r2 = make_char (0);
-  r3 = make_char (0);
+  r1 = MAKE_CHAR (0);
+  r2 = MAKE_CHAR (0);
+  r3 = MAKE_CHAR (0);
   stack = cons (cell_nil, cell_nil);
   return r0;
 }
index 1801834720b932921fb65c809cb9107530efc420..890204da5f2b4da5a717d57be0bc6a0648b4f451 100644 (file)
           (if (null? lst) (* sign n)
               (loop (cdr lst) (+ (* n 10) (- (char->integer (car lst)) (char->integer #\0)))))))))
 
+(define (peek-char)
+  (integer->char (peek-byte)))
+
+(define (read-char)
+  (integer->char (read-byte)))
+
+(define (unread-char c)
+  (unread-byte (char->integer c))
+  c)
+
 (define (char<? a b) (< (char->integer a) (char->integer b)))
 (define (char>? a b) (> (char->integer a) (char->integer b)))
 (define (char<=? a b) (<= (char->integer a) (char->integer b)))
index 3970c32d29f796aa8c396d0d585fc8bb344fa816..55afd7d4b203f76dd9a49539a7e76b25ab6ac0a7 100644 (file)
--- a/reader.c
+++ b/reader.c
  * along with Mes.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-SCM
-peek_char ()
-{
-  return make_char (peekchar ());
-}
-
-SCM
-read_char ()
-{
-  return make_char (getchar ());
-}
-
-SCM
-unread_char (SCM c)
-{
-  return ungetchar (VALUE (c));
-}
-
 int
 read_line_comment (int c)
 {
@@ -58,7 +40,7 @@ read_word (int c, SCM w, SCM a)
   if (c == ')' && w == cell_nil) {ungetchar (c); return cell_nil;}
   if (c == ')') {ungetchar (c); return lookup_ (w, a);}
   if (c == ';') {read_line_comment (c); return read_word ('\n', w, a);}
-  return read_word (getchar (), append2 (w, cons (make_char (c), cell_nil)), a);
+  return read_word (getchar (), append2 (w, cons (MAKE_CHAR (c), cell_nil)), a);
 }
 
 int
index 61b27da455d2741105698f14d875dfa8c5b4c12a..f3eb2b172b6f566ec13f0b904627f1f176fd1b71 100644 (file)
--- a/string.c
+++ b/string.c
@@ -57,7 +57,7 @@ string_ref (SCM x, SCM k)
   assert (TYPE (x) == STRING);
   assert (TYPE (k) == NUMBER);
   VALUE (tmp_num) = VALUE (k);
-  return make_char (VALUE (list_ref (STRING (x), tmp_num)));
+  return MAKE_CHAR (VALUE (list_ref (STRING (x), tmp_num)));
 }
 
 SCM
@@ -78,7 +78,7 @@ substring (SCM x) ///((arity . n))
   while (start--) s = cdr (s);
   SCM p = cell_nil;
   while (n-- && s != cell_nil) {
-    p = append2 (p, cons (make_char (VALUE (car (s))), cell_nil));
+    p = append2 (p, cons (MAKE_CHAR (VALUE (car (s))), cell_nil));
     s = cdr (s);
   }
   return make_string (p);
@@ -89,9 +89,9 @@ number_to_string (SCM x)
 {
   assert (TYPE (x) == NUMBER);
   int n = VALUE (x);
-  SCM p = n < 0 ? cons (make_char ('-'), cell_nil) : cell_nil;
+  SCM p = n < 0 ? cons (MAKE_CHAR ('-'), cell_nil) : cell_nil;
   do {
-    p = cons (make_char (n % 10 + '0'), p);
+    p = cons (MAKE_CHAR (n % 10 + '0'), p);
     n = n / 10;
   } while (n);
   return make_string (p);