summaryrefslogtreecommitdiff
path: root/src/vi/ex-070224/libuxre/re.h
diff options
context:
space:
mode:
authorThomas Ulmer <thomasmulmer02@gmail.com>2026-03-02 20:03:16 -0800
committerThomas Ulmer <thomasmulmer02@gmail.com>2026-03-02 20:03:16 -0800
commit8b9a895e4425462787aba1b9b0b55495880fe707 (patch)
tree5c6faa3afd20729b86def89762e33606a001f3b8 /src/vi/ex-070224/libuxre/re.h
parent8e8d7917d5742c7ce42b46681c7c4430a51da505 (diff)
move vi to separate repo
Diffstat (limited to 'src/vi/ex-070224/libuxre/re.h')
-rw-r--r--src/vi/ex-070224/libuxre/re.h228
1 files changed, 0 insertions, 228 deletions
diff --git a/src/vi/ex-070224/libuxre/re.h b/src/vi/ex-070224/libuxre/re.h
deleted file mode 100644
index 9e0241e..0000000
--- a/src/vi/ex-070224/libuxre/re.h
+++ /dev/null
@@ -1,228 +0,0 @@
-/*
- * Changes by Gunnar Ritter, Freiburg i. Br., Germany, November 2002.
- *
- * Sccsid @(#)re.h 1.15 (gritter) 2/6/05
- */
-/* UNIX(R) Regular Expresssion Library
- *
- * Note: Code is released under the GNU LGPL
- *
- * Copyright (C) 2001 Caldera International, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to:
- * Free Software Foundation, Inc.
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-#ifndef LIBUXRE_RE_H
-#define LIBUXRE_RE_H
-
- /*
- * Maps safe external tag to internal one
- */
-#define re_coll_ lc_collate /* <regex.h> */
-/* #define __fnm_collate lc_collate */ /* <fnmatch.h> */
-
-#include <limits.h>
-#include "uxre_regex.h"
-/* #include <fnmatch.h> */
-#include <colldata.h>
-
-#define NBSHT (sizeof(unsigned short) * CHAR_BIT)
-#define NBYTE (((1 << CHAR_BIT) + NBSHT - 1) / NBSHT)
-#define NTYPE 4
-#define NWIDE 32
-#define NQUIV 4
-
-typedef struct
-{
- struct lc_collate *col; /* only member set by caller */
- wctype_t *extype;
- wuchar_type *exquiv;
- wchar_t *exwide;
- wctype_t type[NTYPE];
- wuchar_type quiv[NQUIV];
- wchar_t wide[NWIDE];
- unsigned short byte[NBYTE];
- unsigned short ntype;
- unsigned short nquiv;
- unsigned short nwide;
- unsigned int flags;
-} Bracket;
-
-#define BKT_NEGATED 0x001 /* complemented set */
-#define BKT_ONECASE 0x002 /* uppercase same as lowercase */
-#define BKT_NOTNL 0x004 /* do not match newline when BKT_NEGATED */
-#define BKT_BADRANGE 0x008 /* accept [m-a] ranges as [ma] */
-#define BKT_SEPRANGE 0x010 /* disallow [a-m-z] style ranges */
-#define BKT_NLBAD 0x020 /* newline disallowed */
-#define BKT_SLASHBAD 0x040 /* slash disallowed (for pathnames) */
-#define BKT_EMPTY 0x080 /* take leading ] is end (empty set) */
-#define BKT_ESCAPE 0x100 /* allow \ as quote for next anything */
-#define BKT_QUOTE 0x200 /* allow \ as quote for \\, \^, \- or \] */
-#define BKT_ESCNL 0x400 /* take \n as the newline character */
-#define BKT_ESCSEQ 0x800 /* otherwise, take \ as in C escapes */
-#define BKT_ODDRANGE 0x1000 /* oawk oddity: [m-a] means [m] */
-#define BKT_NOI18N 0x2000 /* disable [::] [==] [..] */
-#define BKT_OLDESC 0x4000 /* enable \b \f \n \r \t only */
-
- /*
- * These error returns for libuxre_bktmbcomp() are directly tied to
- * the error returns for regcomp() for convenience.
- */
-#define BKT_BADPAT (-REG_BADPAT)
-#define BKT_ECOLLATE (-REG_ECOLLATE)
-#define BKT_ECTYPE (-REG_ECTYPE)
-#define BKT_EEQUIV (-REG_EEQUIV)
-#define BKT_BADCHAR (-REG_EBKTCHAR)
-#define BKT_EBRACK (-REG_EBRACK)
-#define BKT_EMPTYSUBBKT (-REG_EMPTYSUBBKT)
-#define BKT_ERANGE (-REG_ERANGE)
-#define BKT_ESPACE (-REG_ESPACE)
-#define BKT_BADESC (-REG_BADESC)
-#define BKT_ILLSEQ (-REG_ILLSEQ)
-
- /*
- * These must be distinct from the flags in <fnmatch.h>.
- */
-#define FNM_COLLATE 0x2000 /* have collation information */
-#define FNM_CURRENT 0x4000 /* have full-sized fnm_t structure */
-
- /*
- * These must be distinct from the flags in <regex.h>.
- */
-#define REG_NFA 0x20000000
-#define REG_DFA 0x40000000
-#define REG_GOTBKT 0x80000000
-
-#define BRACE_INF USHRT_MAX
-#define BRACE_MAX 5100 /* arbitrary number < SHRT_MAX */
-#define BRACE_DFAMAX 255 /* max amount for r.e. duplication */
-
-typedef union /* extra info always kept for some tokens/nodes */
-{
- Bracket *bkt; /* ROP_BKT */
- size_t sub; /* ROP_LP (ROP_RP), ROP_REF */
- unsigned short num[2]; /* ROP_BRACE: num[0]=low, num[1]=high */
-} Info;
-
-typedef struct /* lexical context while parsing */
-{
- Info info;
- const unsigned char *pat;
- unsigned char *clist;
- struct lc_collate *col;
- unsigned long flags;
- w_type tok;
- size_t maxref;
- size_t nleft;
- size_t nright;
- size_t nclist;
- int bktflags;
- int err;
- int mb_cur_max;
-} Lex;
-
-typedef struct t_tree Tree; /* RE parse tree node */
-struct t_tree
-{
- union
- {
- Tree *ptr; /* unary & binary nodes */
- size_t pos; /* position for DFA leaves */
- } left;
- union
- {
- Tree *ptr; /* binary nodes */
- Info info;
- } right;
- Tree *parent;
- w_type op; /* positive => char. to match */
-};
-
-typedef struct re_dfa_ Dfa; /* DFA engine description */
-typedef struct re_nfa_ Nfa; /* NFA engine description */
-
-typedef struct
-{
- const unsigned char *str;
- regmatch_t *match;
- size_t nmatch;
- unsigned long flags;
- int mb_cur_max;
-} Exec;
-
- /*
- * Regular expression operators. Some only used internally.
- * All are negative, to distinguish them from the regular
- * "match this particular wide character" operation.
- */
-#define BINARY_ROP 0x02
-#define UNARY_ROP 0x01
-#define LEAF_ROP 0x00
-
-#define MAKE_ROP(k, v) (-((v) | ((k) << 4)))
-#define KIND_ROP(v) ((-(v)) >> 4)
-
-#define ROP_OR MAKE_ROP(BINARY_ROP, 1)
-#define ROP_CAT MAKE_ROP(BINARY_ROP, 2)
-
-#define ROP_STAR MAKE_ROP(UNARY_ROP, 1)
-#define ROP_PLUS MAKE_ROP(UNARY_ROP, 2)
-#define ROP_QUEST MAKE_ROP(UNARY_ROP, 3)
-#define ROP_BRACE MAKE_ROP(UNARY_ROP, 4)
-#define ROP_LP MAKE_ROP(UNARY_ROP, 5)
-#define ROP_RP MAKE_ROP(UNARY_ROP, 6)
-
-#define ROP_NOP MAKE_ROP(LEAF_ROP, 1) /* temporary */
-#define ROP_BOL MAKE_ROP(LEAF_ROP, 2) /* ^ anchor */
-#define ROP_EOL MAKE_ROP(LEAF_ROP, 3) /* $ anchor */
-#define ROP_ALL MAKE_ROP(LEAF_ROP, 4) /* anything (added) */
-#define ROP_ANYCH MAKE_ROP(LEAF_ROP, 5) /* . w/\n */
-#define ROP_NOTNL MAKE_ROP(LEAF_ROP, 6) /* . w/out \n */
-#define ROP_EMPTY MAKE_ROP(LEAF_ROP, 7) /* empty string */
-#define ROP_NONE MAKE_ROP(LEAF_ROP, 8) /* match failure */
-#define ROP_BKT MAKE_ROP(LEAF_ROP, 9) /* [...] */
-#define ROP_BKTCOPY MAKE_ROP(LEAF_ROP, 10) /* [...] (duplicated) */
-#define ROP_LT MAKE_ROP(LEAF_ROP, 11) /* \< word begin */
-#define ROP_GT MAKE_ROP(LEAF_ROP, 12) /* \> word end */
-#define ROP_REF MAKE_ROP(LEAF_ROP, 13) /* \digit */
-#define ROP_END MAKE_ROP(LEAF_ROP, 14) /* final (added) */
-
- /*
- * Return values:
- * libuxre_bktmbcomp()
- * <0 error (see BKT_* above); >0 #bytes scanned
- * libuxre_bktmbexec()
- * <0 doesn't match; >=0 matches, #extra bytes scanned
- */
-LIBUXRE_STATIC void libuxre_bktfree(Bracket *);
-LIBUXRE_STATIC int libuxre_bktmbcomp(Bracket *, const unsigned char *,
- int, int);
-LIBUXRE_STATIC int libuxre_bktmbexec(Bracket *, wchar_t,
- const unsigned char *, int);
-
-LIBUXRE_STATIC void libuxre_regdeltree(Tree *, int);
-LIBUXRE_STATIC Tree *libuxre_reg1tree(w_type, Tree *);
-LIBUXRE_STATIC Tree *libuxre_reg2tree(w_type, Tree *, Tree *);
-LIBUXRE_STATIC Tree *libuxre_regparse(Lex *, const unsigned char *, int);
-
-extern void libuxre_regdeldfa(Dfa *);
-LIBUXRE_STATIC int libuxre_regdfacomp(regex_t *, Tree *, Lex *);
-LIBUXRE_STATIC int libuxre_regdfaexec(Dfa *, Exec *);
-
-extern void libuxre_regdelnfa(Nfa *);
-LIBUXRE_STATIC int libuxre_regnfacomp(regex_t *, Tree *, Lex *);
-LIBUXRE_STATIC int libuxre_regnfaexec(Nfa *, Exec *);
-#endif /* !LIBUXRE_RE_H */