]> git.saurik.com Git - wxWidgets.git/blobdiff - src/regex/regcustom.h
added pragmas to disable icc warning when va_arg is used with a pointer type
[wxWidgets.git] / src / regex / regcustom.h
index 328354a7d7d3ffd2c2028313aa3b5b68cb1dcd44..0e2d199121fe9bd685f9085955749bcb1c2d5562 100644 (file)
@@ -1,19 +1,19 @@
 /*
- * Copyright (c) 1998, 1999 Henry Spencer.     All rights reserved.
- *
+ * Copyright (c) 1998, 1999 Henry Spencer.  All rights reserved.
+ * 
  * Development of this software was funded, in part, by Cray Research Inc.,
  * UUNET Communications Services Inc., Sun Microsystems Inc., and Scriptics
  * Corporation, none of whom are responsible for the results.  The author
- * thanks all of them.
- *
+ * thanks all of them. 
+ * 
  * Redistribution and use in source and binary forms -- with or without
  * modification -- are permitted for any purpose, provided that
  * redistributions in source form retain this entire copyright notice and
  * indicate the origin and nature of any modifications.
- *
+ * 
  * I'd appreciate being given credit for this package in the documentation
  * of software which uses it, but that is not a requirement.
- *
+ * 
  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
  * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
  * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL
  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
  * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
  * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * $Id$
  */
 
-/* headers if any */
-
-// FreeBSD, Watcom and DMars require this, CW doesn't have nor need it.
-// Others also don't seem to need it. If you have an error related to
-// (not) including <sys/types.h> please report details to
-// wx-dev@lists.wxwindows.org
-#if defined(__UNIX__) || defined(__WATCOMC__) || defined(__DIGITALMARS__)
-#   include <sys/types.h>
-#endif
-
+/* overrides for regguts.h definitions, if any */
+/* regguts only includes standard headers if NULL is not defined, so do it
+ * ourselves here */
 #include <stdio.h>
 #include <stdlib.h>
 #include <ctype.h>
 #include <limits.h>
-#ifndef wxCHECK_GCC_VERSION
-#define wxCHECK_GCC_VERSION( major, minor ) \
-    ( defined(__GNUC__) && defined(__GNUC_MINOR__) \
-    && ( ( __GNUC__ > (major) ) \
-        || ( __GNUC__ == (major) && __GNUC_MINOR__ >= (minor) ) ) )
-#endif
+#include <string.h>
 
-#if !wxUSE_UNICODE
-#   define wx_wchar char
-#else // Unicode
-    #if (defined(__GNUC__) && !wxCHECK_GCC_VERSION(2, 96))
-    #       define wx_wchar __WCHAR_TYPE__ 
-    #else // __WCHAR_TYPE__ and gcc < 2.96
-        // standard case
-        #       define wx_wchar wchar_t         
-    #endif // __WCHAR_TYPE__
-#endif // ASCII/Unicode
+/* must include this after ctype.h inclusion for CodeWarrior/Mac */
+#include "wx/wxchar.h"
 
-/* overrides for regguts.h definitions, if any */
-#define FUNCPTR(name, args) (*name) args
-#define MALLOC(n)              malloc(n)
-#define FREE(p)                        free(VS(p))
-#define REALLOC(p,n)           realloc(VS(p),n)
+/*
+ * Do not insert extras between the "begin" and "end" lines -- this
+ * chunk is automatically extracted to be fitted into regex.h.
+ */
+/* --- begin --- */
+/* ensure certain things don't sneak in from system headers */
+#ifdef __REG_WIDE_T
+#undef __REG_WIDE_T
+#endif
+#ifdef __REG_WIDE_COMPILE
+#undef __REG_WIDE_COMPILE
+#endif
+#ifdef __REG_WIDE_EXEC
+#undef __REG_WIDE_EXEC
+#endif
+#ifdef __REG_REGOFF_T
+#undef __REG_REGOFF_T
+#endif
+#ifdef __REG_VOID_T
+#undef __REG_VOID_T
+#endif
+#ifdef __REG_CONST
+#undef __REG_CONST
+#endif
+#ifdef __REG_NOFRONT
+#undef __REG_NOFRONT
+#endif
+#ifdef __REG_NOCHAR
+#undef __REG_NOCHAR
+#endif
+#if wxUSE_UNICODE
+#   define  __REG_WIDE_T        wxChar
+#   define  __REG_WIDE_COMPILE  wx_re_comp
+#   define  __REG_WIDE_EXEC     wx_re_exec
+#   define  __REG_NOCHAR        /* don't want the char versions */
+#endif
+#define __REG_NOFRONT           /* don't want regcomp() and regexec() */
+#define _ANSI_ARGS_(x)          x
+/* --- end --- */
 
 /* internal character type and related */
-typedef wx_wchar chr;                  /* the type itself */
-typedef unsigned long uchr;                    /* unsigned type that will hold a chr */
-typedef long celt;                             /* type to hold chr, MCCE number, or
-                                                                * NOCELT */
-
-#define NOCELT (-1)                    /* celt value which is not valid chr or
-                                                                * MCCE */
-#define CHR(c) ((unsigned char) (c))   /* turn char literal into chr
-                                                                                * literal */
-#define DIGITVAL(c) ((c)-'0')  /* turn chr digit into its value */
-
-/*  RN - the "not use sizeof() thing is really annoying!" */
-#if wxUSE_UNICODE
-#   if defined(__WINDOWS__)
-#       define CHRBITS 16
-#       define CHR_MAX 0xfffe          
-#   else   /* !__WINDOWS__ */
-#       if defined(__MACH__)
-#           define CHRBITS 32
-#           define CHR_MAX 0xfffffffe          
-#       else  /* !__MACH__ */
-#           if !defined(SIZEOF_WCHAR_T)
-#               define CHRBITS 16
-#               define CHR_MAX 0xfffe          
-#           else       /* defined(SIZEOF_WCHAR_T) */
-#               define CHRBITS SIZEOF_WCHAR_T
-#               define CHR_MAX ((1 << CHRBITS) - 1)            
-#           endif  /* !defined(SIZEOF_WCHAR_T) */
-#       endif  /* defined(__MACH__)  */
-#   endif  /*  defined(__WINDOWS__)  */
-#else  /*  !wxUSE_UNICODE */
-#   define CHRBITS 8                   /* bits in a chr; must not use sizeof */
-#   define CHR_MAX 0xfe
-#endif  /* wxUSE_UNICODE  */
+typedef wxChar chr;             /* the type itself */
+typedef int pchr;               /* what it promotes to */
+typedef unsigned uchr;          /* unsigned type that will hold a chr */
+typedef int celt;               /* type to hold chr, MCCE number, or NOCELT */
+#define NOCELT  (-1)            /* celt value which is not valid chr or MCCE */
+#define UCHAR(c) ((unsigned char) (c))
+#define CHR(c)  (UCHAR(c))      /* turn char literal into chr literal */
+#define DIGITVAL(c) ((c)-'0')   /* turn chr digit into its value */
+#if !wxUSE_UNICODE
+#   define CHRBITS 8            /* bits in a chr; must not use sizeof */
+#   define CHR_MIN 0x00         /* smallest and largest chr; the value */
+#   define CHR_MAX 0xff         /*  CHR_MAX-CHR_MIN+1 should fit in uchr */
+#elif SIZEOF_WCHAR_T == 4
+#   define CHRBITS 32           /* bits in a chr; must not use sizeof */
+#   define CHR_MIN 0x00000000   /* smallest and largest chr; the value */
+#   define CHR_MAX 0xffffffff   /*  CHR_MAX-CHR_MIN+1 should fit in uchr */
+#else
+#   define CHRBITS 16           /* bits in a chr; must not use sizeof */
+#   define CHR_MIN 0x0000       /* smallest and largest chr; the value */
+#   define CHR_MAX 0xffff       /*  CHR_MAX-CHR_MIN+1 should fit in uchr */
+#endif
 
-#define CHR_MIN 0x00000000             /* smallest and largest chr; the value */
-/*     
-       PUTTING PARENTHASES AROUND THIS, I.E. (1 << CHRBITS) WILL
-       CAUSE ALL CHARACTERS TO BE MATCHED!!!
-*/
-/*#define CHR_MAX 1 << CHRBITS /*0xfffffffe*/          /* CHR_MAX-CHR_MIN+1 should fit in uchr */
+/*
+ * I'm using isalpha et al. instead of wxIsalpha since BCC 5.5's iswalpha
+ * seems not to work on Windows 9x? Note that these are only used by the
+ * lexer, and although they must work for wxChars, they need only return
+ * true for characters within the ascii range.
+ */
+#define iscalnum(x)     ((wxUChar)(x) < 128 && isalnum(x))
+#define iscalpha(x)     ((wxUChar)(x) < 128 && isalpha(x))
+#define iscdigit(x)     ((wxUChar)(x) < 128 && isdigit(x))
+#define iscspace(x)     ((wxUChar)(x) < 128 && isspace(x))
 
+/* name the external functions */
+#define compile         wx_re_comp
+#define exec            wx_re_exec
 
-/* functions operating on chr */
-#define iscalnum(x) wx_isalnum(x)
-#define iscalpha(x) wx_isalpha(x)
-#define iscdigit(x) wx_isdigit(x)
-#define iscspace(x) wx_isspace(x)
+/* enable/disable debugging code (by whether REG_DEBUG is defined or not) */
+#if 0           /* no debug unless requested by makefile */
+#define REG_DEBUG       /* */
+#endif
 
 /* and pick up the standard header */
 #include "regex.h"