annotate lib-src/mule/fakelisp.c @ 146:2af401a6ecca r20-2p1

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