diff lib-src/mule/fakelisp.h @ 70:131b0175ea99 r20-0b30

Import from CVS: tag r20-0b30
author cvs
date Mon, 13 Aug 2007 09:02:59 +0200
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/lib-src/mule/fakelisp.h	Mon Aug 13 09:02:59 2007 +0200
@@ -0,0 +1,75 @@
+#ifndef _FAKELISP_H
+#define _FAKELISP_H
+
+#include <config.h>
+
+/* Cancel substitutions made by config.h for Emacs.  */
+#undef open
+#undef read
+#undef write
+#undef close
+
+/* We used to test for `BSTRING' here, but only GCC and Emacs define
+   `BSTRING', as far as I know, and neither of them use this code.  */
+#if HAVE_STRING_H || STDC_HEADERS
+#include <string.h>
+#ifndef bcmp
+#define bcmp(s1, s2, n) memcmp ((s1), (s2), (n))
+#endif
+#ifndef bcopy
+#define bcopy(s, d, n)  memcpy ((d), (s), (n))
+#endif
+#ifndef bzero
+#define bzero(s, n)     memset ((s), 0, (n))
+#endif
+#else
+#include <strings.h>
+#endif
+
+typedef unsigned int Lisp_Object;
+
+enum Lisp_Type {
+  Lisp_Int,
+  Lisp_Symbol,
+  Lisp_String,
+  Lisp_Vector
+};
+
+#ifndef VALBITS					/* hir, 1994.12.19 */
+#define VALBITS 24
+#endif
+#define VALMASK ((1 << VALBITS) - 1)
+
+#define XTYPE(x) ((enum Lisp_Type)((x)>>VALBITS))
+
+struct Lisp_Vector {
+  int size;
+  Lisp_Object *contents;
+};
+
+struct Lisp_String {
+  int size;
+  unsigned char *data;
+};
+
+struct Lisp_Symbol {
+  unsigned char *name;
+  Lisp_Object value;
+};
+
+#define Qnil (Lisp_Object)(Lisp_Symbol << VALBITS)
+#define Qt   (Lisp_Object)((Lisp_Symbol << VALBITS) | 1)
+
+#define XFASTINT(x) (x)
+#define XVECTOR(x) ((struct Lisp_Vector *)Lisp_Object_Table[(x)&VALMASK])
+#define XSTRING(x) ((struct Lisp_String *)Lisp_Object_Table[(x)&VALMASK])
+#define XSYMBOL(x) ((struct Lisp_Symbol *)Lisp_Object_Table[(x)&VALMASK])
+
+extern void *Lisp_Object_Table[4096];
+
+extern Lisp_Object make_vector(), make_string(), make_symbol();
+extern Lisp_Object Fsymbol_value();
+
+#define GLYPH unsigned int
+
+#endif /* _FAKELISP_H */