diff lib-src/fakelisp.c @ 0:376386a54a3c r19-14

Import from CVS: tag r19-14
author cvs
date Mon, 13 Aug 2007 08:45:50 +0200
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/lib-src/fakelisp.c	Mon Aug 13 08:45:50 2007 +0200
@@ -0,0 +1,52 @@
+#include "fakelisp.h"
+
+void *Lisp_Object_Table[4096];
+int Lisp_Object_Index = 0;
+
+Lisp_Object
+make_vector(len)
+     int len;
+{
+  Lisp_Object val = Lisp_Object_Index++;
+
+  Lisp_Object_Table[val] = (char *) malloc (sizeof (struct Lisp_Vector));
+  XVECTOR (val)->size = len;
+  XVECTOR (val)->contents =
+    (Lisp_Object *) malloc ((sizeof (Lisp_Object)) * len);
+  return (val | (Lisp_Vector << VALBITS));
+}
+
+Lisp_Object
+make_string(str)
+     char *str;
+{
+  Lisp_Object val = Lisp_Object_Index++;
+  int len = strlen (str);
+
+  Lisp_Object_Table[val] = (char *) malloc (sizeof (struct Lisp_String));
+  XSTRING (val)->size = len;
+  XSTRING (val)->data = (unsigned char *) malloc (len + 1);
+  memcpy (XSTRING (val)->data, str, len + 1);
+  return (val | (Lisp_String << VALBITS));
+}
+
+Lisp_Object
+make_symbol(name)
+     char *name;
+{
+  Lisp_Object val = Lisp_Object_Index++;
+  int len = strlen (name);
+
+  Lisp_Object_Table[val] = (char *) malloc (sizeof (struct Lisp_Symbol));
+  XSYMBOL (val)->name = (unsigned char *) malloc (len + 1);
+  memcpy (XSYMBOL (val)->name, name, len + 1);
+  XSYMBOL (val)->value = Qnil;
+  return (val | (Lisp_String << VALBITS));
+}
+
+Lisp_Object
+Fsymbol_value(obj)
+     Lisp_Object obj;
+{
+  return XSYMBOL (obj)->value;
+}