core: Cleanup make_cell, remove tmp cells.
[mes.git] / src / vector.c
index 479b773f90e4c1d3f31c51a25193ffe9448520a6..ad4cac916c290b4ba1864ba7b0a2aa66073c0b7a 100644 (file)
@@ -1,6 +1,6 @@
 /* -*-comment-start: "//";comment-end:""-*-
  * Mes --- Maxwell Equations of Software
- * Copyright © 2016,2017,2018 Jan Nieuwenhuizen <janneke@gnu.org>
+ * Copyright © 2016,2017,2018 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
  *
  * This file is part of Mes.
  *
  */
 
 SCM
-make_vector_ (SCM n)
+make_vector__ (int k)
 {
-  int k = VALUE (n);
-  VALUE (tmp_num) = TVECTOR;
   SCM v = alloc (k);
-  SCM x = make_cell_ (tmp_num, k, v);
+  SCM x = make_cell__ (TVECTOR, k, v);
   for (int i=0; i<k; i++) g_cells[v+i] = g_cells[vector_entry (cell_unspecified)];
   return x;
 }
 
+SCM
+make_vector_ (SCM n)
+{
+  return make_vector__ (VALUE (n));
+}
+
 SCM
 vector_length (SCM x)
 {
@@ -42,15 +46,20 @@ vector_ref (SCM x, SCM i)
   assert (TYPE (x) == TVECTOR);
   assert (VALUE (i) < LENGTH (x));
   SCM e = VECTOR (x) + VALUE (i);
-  if (TYPE (e) == TREF) e = REF (e);
-  if (TYPE (e) == TCHAR) e = MAKE_CHAR (VALUE (e));
-  if (TYPE (e) == TNUMBER) e = MAKE_NUMBER (VALUE (e));
+  if (TYPE (e) == TREF)
+    e = REF (e);
+  if (TYPE (e) == TCHAR)
+    e = MAKE_CHAR (VALUE (e));
+  if (TYPE (e) == TNUMBER)
+    e = MAKE_NUMBER (VALUE (e));
   return e;
 }
 
 SCM
-vector_entry (SCM x) {
-  if (TYPE (x) == TPAIR || TYPE (x) == TSPECIAL || TYPE (x) == TSTRING || TYPE (x) == TSYMBOL || TYPE (x) == TVECTOR) x = MAKE_REF (x);
+vector_entry (SCM x)
+{
+  if (TYPE (x) == TPAIR || TYPE (x) == TSPECIAL || TYPE (x) == TSTRING || TYPE (x) == TSYMBOL || TYPE (x) == TVECTOR)
+    x = MAKE_REF (x);
   return x;
 }
 
@@ -66,8 +75,8 @@ vector_set_x (SCM x, SCM i, SCM e)
 SCM
 list_to_vector (SCM x)
 {
-  VALUE (tmp_num) = VALUE (length (x));
-  SCM v = make_vector_ (tmp_num);
+
+  SCM v = make_vector__ (length__ (x));
   SCM p = VECTOR (v);
   while (x != cell_nil)
     {
@@ -81,10 +90,12 @@ SCM
 vector_to_list (SCM v)
 {
   SCM x = cell_nil;
-  for (int i = 0; i < LENGTH (v); i++) {
-    SCM e = VECTOR (v)+i;
-    if (TYPE (e) == TREF) e = REF (e);
-    x = append2 (x, cons (e, cell_nil));
-  }
+  for (int i = 0; i < LENGTH (v); i++)
+    {
+      SCM e = VECTOR (v)+i;
+      if (TYPE (e) == TREF)
+        e = REF (e);
+      x = append2 (x, cons (e, cell_nil));
+    }
   return x;
 }