/* handy.h
*
- * Copyright (c) 1991-1994, Larry Wall
+ * Copyright (c) 1991-1997, Larry Wall
*
* You may distribute under the terms of either the GNU General Public
* License or the Artistic License, as specified in the README file.
#endif /* NeXT */
#ifndef HAS_BOOL
-# ifdef UTS
+# if defined(UTS) || defined(VMS)
# define bool int
# else
# define bool char
standard library calls (where we pass an I32 and the library is
expecting an int), but the disadvantage that an I32 is not 32 bits.
Andy Dougherty August 1996
+
+ In the future, we may perhaps want to think about something like
+ #if INTSIZE == 4
+ typedef I32 int;
+ #else
+ # if LONGSIZE == 4
+ typedef I32 long;
+ # else
+ # if SHORTSIZE == 4
+ typedef I32 short;
+ # else
+ typedef I32 int;
+ # endif
+ # endif
+ #endif
+ For the moment, these are mentioned here so metaconfig will
+ construct Configure to figure out the various sizes.
*/
typedef char I8;
# define U32_MIN PERL_ULONG_MIN
#endif
+#define BIT_DIGITS(N) (((N)*146)/485 + 1) /* log2(10) =~ 146/485 */
+#define TYPE_DIGITS(T) BIT_DIGITS(sizeof(T) * 8)
+#define TYPE_CHARS(T) (TYPE_DIGITS(T) + 2) /* sign, NUL */
+
#define Ctl(ch) ((ch) & 037)
#define strNE(s1,s2) (strcmp(s1,s2))
#define strnNE(s1,s2,l) (strncmp(s1,s2,l))
#define strnEQ(s1,s2,l) (!strncmp(s1,s2,l))
+#ifdef HAS_MEMCMP
+# define memNE(s1,s2,l) (memcmp(s1,s2,l))
+# define memEQ(s1,s2,l) (!memcmp(s1,s2,l))
+#else
+# define memNE(s1,s2,l) (bcmp(s1,s2,l))
+# define memEQ(s1,s2,l) (!bcmp(s1,s2,l))
+#endif
+
/*
* Character classes.
*
#define Safefree(d) safexfree((Malloc_t)d)
#define NEWSV(x,len) newSV(x,len)
-#define MAXXCOUNT 1200
+#define MAXXCOUNT 1400
long xcount[MAXXCOUNT];
long lastxcount[MAXXCOUNT];