(CHAR_INTP): Moved from buffer.h
authortomo <tomo>
Thu, 2 Sep 1999 22:15:34 +0000 (22:15 +0000)
committertomo <tomo>
Thu, 2 Sep 1999 22:15:34 +0000 (22:15 +0000)
(CHAR_OR_CHAR_INTP): Likewise.
(XCHAR_OR_CHAR_INT): Likewise.
(CHECK_CHAR_COERCE_INT): Likewise.

src/character.h

index f7befb4..ef43177 100644 (file)
@@ -32,4 +32,34 @@ Boston, MA 02111-1307, USA.  */
 # include "char-ucs.h"
 #endif /* CHAR_IS_UCS4 */
 
+
+#define CHAR_INTP(x) (INTP (x) && valid_char_p (XINT (x)))
+
+#define CHAR_OR_CHAR_INTP(x) (CHARP (x) || CHAR_INTP (x))
+
+#ifdef ERROR_CHECK_TYPECHECK
+
+INLINE Emchar XCHAR_OR_CHAR_INT (Lisp_Object obj);
+INLINE Emchar
+XCHAR_OR_CHAR_INT (Lisp_Object obj)
+{
+  assert (CHAR_OR_CHAR_INTP (obj));
+  return CHARP (obj) ? XCHAR (obj) : XINT (obj);
+}
+
+#else
+
+#define XCHAR_OR_CHAR_INT(obj) (CHARP ((obj)) ? XCHAR ((obj)) : XINT ((obj)))
+
+#endif
+
+#define CHECK_CHAR_COERCE_INT(x) do {          \
+  if (CHARP (x))                               \
+     ;                                         \
+  else if (CHAR_INTP (x))                      \
+    x = make_char (XINT (x));                  \
+  else                                         \
+    x = wrong_type_argument (Qcharacterp, x);  \
+} while (0)
+
 #endif /* _XEMACS_CHARACTER_H */