#endif
static inline int
-lowtag_of(lispobj obj) {
+lowtag_of(lispobj obj)
+{
return obj & LOWTAG_MASK;
}
static inline int
-widetag_of(lispobj obj) {
+widetag_of(lispobj obj)
+{
return obj & WIDETAG_MASK;
}
{
return (lispobj *) ((pointer_sized_uint_t) (obj & ~LOWTAG_MASK));
}
+
/* inverse operation: create a suitably tagged lispobj from a native
* pointer or integer. Needs to be a macro due to the tedious C type
* system */
#define make_fixnum(n) ((lispobj)((n)<<N_FIXNUM_TAG_BITS))
#define fixnum_value(n) (((long)n)>>N_FIXNUM_TAG_BITS)
-/* Too bad ANSI C doesn't define "bool" as C++ does.. */
+#if defined(LISP_FEATURE_WIN32)
+/* KLUDGE: Avoid double definition of boolean by rpcndr.h included via
+ * shlobj.h.
+ *
+ * FIXME: We should probably arrange to use the rpcndr.h boolean on Windows,
+ * or get rid of our own boolean type. If the boolean type is only used in
+ * the runtime, and never passed to Lisp, then it doesn't matter which one
+ * we use.
+ */
+#define boolean rpcndr_boolean
+#include <shlobj.h>
+#undef boolean
+#endif
typedef int boolean;
/* This only works for static symbols. */