summaryrefslogtreecommitdiffstats
path: root/generic/tclRegexp.h
diff options
context:
space:
mode:
Diffstat (limited to 'generic/tclRegexp.h')
-rw-r--r--generic/tclRegexp.h219
1 files changed, 24 insertions, 195 deletions
diff --git a/generic/tclRegexp.h b/generic/tclRegexp.h
index be5cb77..9e56730 100644
--- a/generic/tclRegexp.h
+++ b/generic/tclRegexp.h
@@ -7,8 +7,9 @@
* Copyright (c) 1998 Henry Spencer. All rights reserved.
*
* Development of this software was funded, in part, by Cray Research Inc.,
- * UUNET Communications Services Inc., and Sun Microsystems Inc., none of
- * whom are responsible for the results. The author thanks all of them.
+ * UUNET Communications Services Inc., Sun Microsystems Inc., and
+ * Scriptics Corporation, none of whom are responsible for the results.
+ * The author thanks all of them.
*
* Redistribution and use in source and binary forms -- with or without
* modification -- are permitted for any purpose, provided that
@@ -26,20 +27,19 @@
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
+ * Copyright (c) 1998 by Scriptics Corporation.
* Copyright (c) 1998 by Sun Microsystems, Inc.
*
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tclRegexp.h,v 1.1.2.2 1998/09/24 23:59:02 stanton Exp $
+ * RCS: @(#) $Id: tclRegexp.h,v 1.1.2.3 1998/10/21 20:40:06 stanton Exp $
*/
#ifndef _TCLREGEXP
#define _TCLREGEXP
-#ifndef _TCLINT
-#include "tclInt.h"
-#endif
+#include "regcustom.h"
#ifdef BUILD_tcl
# undef TCL_STORAGE_CLASS
@@ -47,190 +47,6 @@
#endif
/*
- * The following definitions were culled from wctype.h and wchar.h.
- * Those two header files are now gone. Eventually we should replace all
- * instances of, e.g., iswalnum() with TclUniCharIsAlnum() in the regexp
- * code.
- */
-
-#undef wint_t
-#define wint_t int
-
-#undef WEOF
-#undef WCHAR_MIN
-#undef WCHAR_MAX
-
-#define WEOF -1
-#define WCHAR_MIN 0x0000
-#define WCHAR_MAX 0xffff
-
-#undef iswalnum
-#undef iswalpha
-#undef iswdigit
-#undef iswspace
-
-#define iswalnum(x) TclUniCharIsAlnum(x)
-#define iswalpha(x) TclUniCharIsAlpha(x)
-#define iswdigit(x) TclUniCharIsDigit(x)
-#define iswspace(x) TclUniCharIsSpace(x)
-
-#undef wcslen
-#undef wcsncmp
-
-#define wcslen TclUniCharLen
-#define wcsncmp TclUniCharNcmp
-
-/*
- * The following definitions were added by JO to make Tcl compile
- * under SunOS, where off_t and wchar_t aren't defined; perhaps all of
- * the code below can be collapsed into a few simple definitions?
- */
-
-#ifndef __RE_REGOFF_T
-# define __RE_REGOFF_T int
-#endif
-#ifndef __RE_WCHAR_T
-# define __RE_WCHAR_T Tcl_UniChar
-#endif
-
-/*
- * regoff_t has to be large enough to hold either off_t or ssize_t,
- * and must be signed; it's only a guess that off_t is big enough, so we
- * offer an override.
- */
-#ifdef __RE_REGOFF_T
-typedef __RE_REGOFF_T regoff_t; /* offset type for result reporting */
-#else
-typedef off_t regoff_t;
-#endif
-
-/*
- * We offer the option of using a non-wchar_t type in the w prototypes so
- * that <regex.h> can be included without first including (e.g.) <wchar.h>.
- * Note that __RE_WCHAR_T must in fact be the same type as wchar_t!
- */
-#ifdef __RE_WCHAR_T
-typedef __RE_WCHAR_T re_wchar; /* internal name for the type */
-#else
-typedef wchar_t re_wchar;
-#endif
-
-#define REMAGIC 0xfed7
-
-/*
- * other interface types
- */
-
-/* the biggie, a compiled RE (or rather, a front end to same) */
-typedef struct {
- int re_magic; /* magic number */
- size_t re_nsub; /* number of subexpressions */
- int re_info; /* information about RE */
-# define REG_UBACKREF 000001
-# define REG_ULOOKAHEAD 000002
-# define REG_UBOUNDS 000004
-# define REG_UBRACES 000010
-# define REG_UBSALNUM 000020
-# define REG_UPBOTCH 000040
-# define REG_UBBS 000100
-# define REG_UNONPOSIX 000200
-# define REG_UUNSPEC 000400
-# define REG_UUNPORT 001000
-# define REG_ULOCALE 002000
-# define REG_UEMPTYMATCH 004000
- int re_csize; /* sizeof(character) */
- VOID *re_guts; /* none of your business :-) */
- VOID *re_fns; /* none of your business :-) */
-} regex_t;
-
-/* result reporting (may acquire more fields later) */
-typedef struct {
- regoff_t rm_so; /* start of substring */
- regoff_t rm_eo; /* end of substring */
-} regmatch_t;
-
-
-
-/*
- * compilation
- ^ int regcomp(regex_t *, const char *, int);
- ^ int re_comp(regex_t *, const char *, size_t, int);
- ^ #ifndef __RE_NOWIDE
- ^ int re_wcomp(regex_t *, const re_wchar *, size_t, int);
- ^ #endif
- */
-
-#define REG_DUMP 004000 /* none of your business :-) */
-#define REG_FAKE 010000 /* none of your business :-) */
-#define REG_PROGRESS 020000 /* none of your business :-) */
-
-
-
-/*
- * execution
- ^ int regexec(regex_t *, const char *, size_t, regmatch_t [], int);
- ^ int re_exec(regex_t *, const char *, size_t, size_t, regmatch_t [], int);
- ^ #ifndef __RE_NOWIDE
- ^ int re_wexec(regex_t *, const re_wchar *, size_t, size_t, regmatch_t [], int);
- ^ #endif
- */
-#define REG_FTRACE 0010 /* none of your business */
-#define REG_MTRACE 0020 /* none of your business */
-#define REG_SMALL 0040 /* none of your business */
-
-/*
- * error reporting
- * Be careful if modifying the list of error codes -- the table used by
- * regerror() is generated automatically from this file!
- *
- * Note that there is no wchar_t variant of regerror at this time; what
- * kind of character is used for error reports is independent of what kind
- * is used in matching.
- *
- ^ extern size_t regerror(int, const regex_t *, char *, size_t);
- */
-#define REG_OKAY 0 /* no errors detected */
-#define REG_NOMATCH 1 /* regexec() failed to match */
-#define REG_BADPAT 2 /* invalid regular expression */
-#define REG_ECOLLATE 3 /* invalid collating element */
-#define REG_ECTYPE 4 /* invalid character class */
-#define REG_EESCAPE 5 /* invalid escape \ sequence */
-#define REG_ESUBREG 6 /* invalid backreference number */
-#define REG_EBRACK 7 /* brackets [] not balanced */
-#define REG_EPAREN 8 /* parentheses () not balanced */
-#define REG_EBRACE 9 /* braces {} not balanced */
-#define REG_BADBR 10 /* invalid repetition count(s) */
-#define REG_ERANGE 11 /* invalid character range */
-#define REG_ESPACE 12 /* out of memory */
-#define REG_BADRPT 13 /* quantifier operand invalid */
-#define REG_EMPTY 14 /* empty regular expression */
-#define REG_ASSERT 15 /* "can't happen" -- you found a bug */
-#define REG_INVARG 16 /* invalid argument to regex routine */
-#define REG_MIXED 17 /* char RE applied to wchar_t string (etc.) */
-#define REG_BADOPT 18 /* invalid embedded option */
-#define REG_IMPOSS 19 /* can never match */
-/* two specials for debugging and testing */
-#define REG_ATOI 101 /* convert error-code name to number */
-#define REG_ITOA 102 /* convert error-code number to name */
-
-
-
-/*
- * the prototypes, as possibly munched by fwd
- */
-/* =====^!^===== begin forwards =====^!^===== */
-/* automatically gathered by fwd; do not hand-edit */
-/* === regex.h === */
-EXTERN int re_ucomp _ANSI_ARGS_((regex_t *, const Tcl_UniChar *,
- size_t, int));
-EXTERN int re_uexec _ANSI_ARGS_((regex_t *, const Tcl_UniChar *,
- size_t, size_t, regmatch_t [], int));
-EXTERN VOID regfree _ANSI_ARGS_((regex_t *));
-EXTERN size_t regerror _ANSI_ARGS_((int, const regex_t *, char *, size_t));
-/* automatically gathered by fwd; do not hand-edit */
-/* =====^!^===== end forwards =====^!^===== */
-
-/*
* The TclRegexp structure encapsulates a compiled regex_t,
* the flags that were used to compile it, and an array of pointers
* that are used to indicate subexpressions after a call to Tcl_RegExpExec.
@@ -251,6 +67,24 @@ typedef struct TclRegexp {
} TclRegexp;
/*
+ * Functions exported for use within the rest of Tcl.
+ */
+
+EXTERN Tcl_RegExp TclRegCompObj _ANSI_ARGS_((Tcl_Interp *interp,
+ Tcl_Obj *patObj, int flags));
+EXTERN int TclRegAbout _ANSI_ARGS_((Tcl_Interp *interp,
+ Tcl_RegExp re));
+EXTERN VOID TclRegXflags _ANSI_ARGS_((char *string, int length,
+ int *cflagsPtr, int *eflagsPtr));
+EXTERN int TclRegExpExecUniChar _ANSI_ARGS_((Tcl_Interp *interp,
+ Tcl_RegExp re, CONST Tcl_UniChar *uniString,
+ int numChars, int flags));
+EXTERN int TclRegExpMatchObj _ANSI_ARGS_((Tcl_Interp *interp,
+ char *string, Tcl_Obj *patObj));
+EXTERN void TclRegExpRangeUniChar _ANSI_ARGS_((Tcl_RegExp re,
+ int index, int *startPtr, int *endPtr));
+
+/*
* Functions exported from the regexp package for the test package to use.
*/
@@ -258,8 +92,3 @@ EXTERN void TclRegError _ANSI_ARGS_((Tcl_Interp *interp, char *msg,
int status));
#endif /* _TCLREGEXP */
-
-
-
-
-