+2000-04-01 Ken Raeburn <raeburn@gnu.org>
+
+ * alloc.c (MARK_STRING, UNMARK_STRING, STRING_MARKED_P): Expand
+ non-union-type versions of XMARK and friends here, because XMARK
+ and friends won't work on an integer field if NO_UNION_TYPE is not
+ defined.
+ (make_number): Define as a function if it's not defined as a
+ macro.
+
2000-04-01 Gerd Moellmann <gerd@gnu.org>
* term.c (TN_no_color_video): New variable.
/* Mark, unmark, query mark bit of a Lisp string. S must be a pointer
to a struct Lisp_String. */
-#define MARK_STRING(S) XMARK ((S)->size)
-#define UNMARK_STRING(S) XUNMARK ((S)->size)
-#define STRING_MARKED_P(S) XMARKBIT ((S)->size)
+#define MARK_STRING(S) ((S)->size |= MARKBIT)
+#define UNMARK_STRING(S) ((S)->size &= ~MARKBIT)
+#define STRING_MARKED_P(S) ((S)->size & MARKBIT)
/* Value is the number of bytes/chars of S, a pointer to a struct
Lisp_String. This must be used instead of STRING_BYTES (S) or
} \
} while (0)
-
+\f
+/* Number support. If NO_UNION_TYPE isn't in effect, we
+ can't create number objects in macros. */
+#ifndef make_number
+Lisp_Object
+make_number (n)
+ int n;
+{
+ Lisp_Object obj;
+ obj.s.val = n;
+ obj.s.type = Lisp_Int;
+ return obj;
+}
+#endif
\f
/***********************************************************************
String Allocation