comparison lib-src/mule/fakelisp.c @ 70:131b0175ea99 r20-0b30

Import from CVS: tag r20-0b30
author cvs
date Mon, 13 Aug 2007 09:02:59 +0200
parents
children
comparison
equal deleted inserted replaced
69:804d1389bcd6 70:131b0175ea99
1 #include "fakelisp.h"
2
3 void *Lisp_Object_Table[4096];
4 int Lisp_Object_Index = 0;
5
6 Lisp_Object
7 make_vector(len)
8 int len;
9 {
10 Lisp_Object val = Lisp_Object_Index++;
11
12 Lisp_Object_Table[val] = (char *) malloc (sizeof (struct Lisp_Vector));
13 XVECTOR (val)->size = len;
14 XVECTOR (val)->contents =
15 (Lisp_Object *) malloc ((sizeof (Lisp_Object)) * len);
16 return (val | (Lisp_Vector << VALBITS));
17 }
18
19 Lisp_Object
20 make_string(str)
21 char *str;
22 {
23 Lisp_Object val = Lisp_Object_Index++;
24 int len = strlen (str);
25
26 Lisp_Object_Table[val] = (char *) malloc (sizeof (struct Lisp_String));
27 XSTRING (val)->size = len;
28 XSTRING (val)->data = (unsigned char *) malloc (len + 1);
29 memcpy (XSTRING (val)->data, str, len + 1);
30 return (val | (Lisp_String << VALBITS));
31 }
32
33 Lisp_Object
34 make_symbol(name)
35 char *name;
36 {
37 Lisp_Object val = Lisp_Object_Index++;
38 int len = strlen (name);
39
40 Lisp_Object_Table[val] = (char *) malloc (sizeof (struct Lisp_Symbol));
41 XSYMBOL (val)->name = (unsigned char *) malloc (len + 1);
42 memcpy (XSYMBOL (val)->name, name, len + 1);
43 XSYMBOL (val)->value = Qnil;
44 return (val | (Lisp_String << VALBITS));
45 }
46
47 Lisp_Object
48 Fsymbol_value(obj)
49 Lisp_Object obj;
50 {
51 return XSYMBOL (obj)->value;
52 }