Mercurial > hg > xemacs-beta
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; +}