#include "mb/pg_wchar.h"
Go to the source code of this file.
Data Structures | |
struct | regex_t |
struct | regmatch_t |
struct | rm_detail_t |
Defines | |
#define | _REGEX_H_ |
#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 |
#define | REG_UIMPOSSIBLE 010000 |
#define | REG_USHORTEST 020000 |
#define | REG_BASIC 000000 |
#define | REG_EXTENDED 000001 |
#define | REG_ADVF 000002 |
#define | REG_ADVANCED 000003 |
#define | REG_QUOTE 000004 |
#define | REG_NOSPEC REG_QUOTE |
#define | REG_ICASE 000010 |
#define | REG_NOSUB 000020 |
#define | REG_EXPANDED 000040 |
#define | REG_NLSTOP 000100 |
#define | REG_NLANCH 000200 |
#define | REG_NEWLINE 000300 |
#define | REG_PEND 000400 |
#define | REG_EXPECT 001000 |
#define | REG_BOSONLY 002000 |
#define | REG_DUMP 004000 |
#define | REG_FAKE 010000 |
#define | REG_PROGRESS 020000 |
#define | REG_NOTBOL 0001 |
#define | REG_NOTEOL 0002 |
#define | REG_STARTEND 0004 |
#define | REG_FTRACE 0010 |
#define | REG_MTRACE 0020 |
#define | REG_SMALL 0040 |
#define | REG_OKAY 0 |
#define | REG_NOMATCH 1 |
#define | REG_BADPAT 2 |
#define | REG_ECOLLATE 3 |
#define | REG_ECTYPE 4 |
#define | REG_EESCAPE 5 |
#define | REG_ESUBREG 6 |
#define | REG_EBRACK 7 |
#define | REG_EPAREN 8 |
#define | REG_EBRACE 9 |
#define | REG_BADBR 10 |
#define | REG_ERANGE 11 |
#define | REG_ESPACE 12 |
#define | REG_BADRPT 13 |
#define | REG_ASSERT 15 |
#define | REG_INVARG 16 |
#define | REG_MIXED 17 |
#define | REG_BADOPT 18 |
#define | REG_ETOOBIG 19 |
#define | REG_ECOLORS 20 |
#define | REG_ATOI 101 |
#define | REG_ITOA 102 |
#define | REG_PREFIX (-1) |
#define | REG_EXACT (-2) |
Typedefs | |
typedef long | regoff_t |
Functions | |
int | pg_regcomp (regex_t *, const pg_wchar *, size_t, int, Oid) |
int | pg_regexec (regex_t *, const pg_wchar *, size_t, size_t, rm_detail_t *, size_t, regmatch_t[], int) |
int | pg_regprefix (regex_t *, pg_wchar **, size_t *) |
void | pg_regfree (regex_t *) |
size_t | pg_regerror (int, const regex_t *, char *, size_t) |
void | pg_set_regex_collation (Oid collation) |
#define REG_ADVANCED 000003 |
Definition at line 103 of file regex.h.
Referenced by createTrgmNFA(), lexstart(), nameicregexeq(), nameicregexne(), nameregexeq(), nameregexne(), NIAddAffix(), parse_ident_line(), parse_re_flags(), parseqatom(), pg_regcomp(), prefixes(), texticregexeq(), texticregexne(), textregexeq(), textregexne(), textregexreplace_noopt(), and textregexsubstr().
#define REG_ADVF 000002 |
Definition at line 102 of file regex.h.
Referenced by lexescape(), lexstart(), next(), and prefixes().
#define REG_ASSERT 15 |
Definition at line 151 of file regex.h.
Referenced by brackpart(), next(), parseqatom(), pickss(), and repeat().
#define REG_ATOI 101 |
Definition at line 158 of file regex.h.
Referenced by pg_regerror().
#define REG_BADBR 10 |
Definition at line 147 of file regex.h.
Referenced by next(), parseqatom(), and scannum().
#define REG_BADOPT 18 |
Definition at line 154 of file regex.h.
Referenced by prefixes().
#define REG_BADPAT 2 |
Definition at line 139 of file regex.h.
Referenced by prefixes().
#define REG_BADRPT 13 |
Definition at line 150 of file regex.h.
Referenced by next(), parseqatom(), and prefixes().
#define REG_DUMP 004000 |
Definition at line 115 of file regex.h.
Referenced by pg_regcomp().
#define REG_ECOLLATE 3 |
Definition at line 140 of file regex.h.
Referenced by brackpart(), and element().
#define REG_ECOLORS 20 |
Definition at line 156 of file regex.h.
Referenced by newcolor().
#define REG_ECTYPE 4 |
Definition at line 141 of file regex.h.
Referenced by brackpart(), and cclass().
#define REG_EESCAPE 5 |
Definition at line 142 of file regex.h.
Referenced by brenext(), lexdigits(), lexescape(), and next().
#define REG_EPAREN 8 |
Definition at line 145 of file regex.h.
Referenced by parse(), and parseqatom().
#define REG_ERANGE 11 |
Definition at line 148 of file regex.h.
Referenced by brackpart(), and range().
#define REG_ESPACE 12 |
Definition at line 149 of file regex.h.
Referenced by allocarc(), cclass(), compact(), getcvec(), lacon(), moresubs(), newcolor(), newdfa(), newlacon(), newstate(), pg_regcomp(), setcolor(), subblock(), and subre().
#define REG_ESUBREG 6 |
Definition at line 143 of file regex.h.
Referenced by parseqatom().
#define REG_ETOOBIG 19 |
Definition at line 155 of file regex.h.
Referenced by newstate().
#define REG_EXACT (-2) |
Definition at line 162 of file regex.h.
Referenced by pg_regprefix(), and regexp_fixed_prefix().
#define REG_EXPANDED 000040 |
Definition at line 108 of file regex.h.
Referenced by brenext(), lexstart(), next(), pg_regcomp(), prefixes(), and skip().
#define REG_EXPECT 001000 |
Definition at line 113 of file regex.h.
Referenced by cfind(), find(), and pg_regexec().
#define REG_EXTENDED 000001 |
Definition at line 101 of file regex.h.
Referenced by lexstart(), next(), parse_re_flags(), parseqatom(), and pg_regcomp().
#define REG_FTRACE 0010 |
Definition at line 127 of file regex.h.
Referenced by longest(), and shortest().
#define REG_ICASE 000010 |
Definition at line 106 of file regex.h.
Referenced by brackpart(), createTrgmNFA(), nameicregexeq(), nameicregexne(), onechr(), texticregexeq(), and texticregexne().
#define REG_INVARG 16 |
Definition at line 152 of file regex.h.
Referenced by pg_regcomp(), and pg_regexec().
#define REG_ITOA 102 |
Definition at line 159 of file regex.h.
Referenced by pg_regerror().
#define REG_NEWLINE 000300 |
Definition at line 111 of file regex.h.
Referenced by lexstart().
#define REG_NLANCH 000200 |
Definition at line 110 of file regex.h.
Referenced by parseqatom(), and pg_regcomp().
#define REG_NLSTOP 000100 |
Definition at line 109 of file regex.h.
Referenced by cbracket(), parseqatom(), and pg_regcomp().
#define REG_NOMATCH 1 |
Definition at line 138 of file regex.h.
Referenced by caltdissect(), ccondissect(), cdissect(), cfindloop(), check_ident_usermap(), citerdissect(), crevcondissect(), creviterdissect(), RE_wchar_execute(), regexp_fixed_prefix(), and replace_text_regexp().
#define REG_NOSUB 000020 |
Definition at line 107 of file regex.h.
Referenced by next(), NIAddAffix(), and pg_regexec().
#define REG_OKAY 0 |
Definition at line 137 of file regex.h.
Referenced by ccondissect(), cdissect(), cfindloop(), citerdissect(), crevcondissect(), creviterdissect(), pg_regexec(), RE_compile(), RE_compile_and_cache(), RE_wchar_execute(), and replace_text_regexp().
#define REG_PREFIX (-1) |
Definition at line 161 of file regex.h.
Referenced by pg_regprefix(), and regexp_fixed_prefix().
#define REG_QUOTE 000004 |
Definition at line 104 of file regex.h.
Referenced by lexstart(), pg_regcomp(), and prefixes().
#define REG_UBACKREF 000001 |
Definition at line 60 of file regex.h.
Referenced by brenext(), and lexescape().
#define REG_UBOUNDS 000004 |
#define REG_UBSALNUM 000020 |
#define REG_UIMPOSSIBLE 010000 |
Definition at line 72 of file regex.h.
Referenced by pg_regexec(), and pg_regprefix().
#define REG_ULOCALE 002000 |
Definition at line 70 of file regex.h.
Referenced by element(), lexescape(), and next().
#define REG_UNONPOSIX 000200 |
Definition at line 67 of file regex.h.
Referenced by brenext(), lexescape(), next(), prefixes(), and skip().
#define REG_UPBOTCH 000040 |
Definition at line 65 of file regex.h.
Referenced by parseqatom().
#define REG_USHORTEST 020000 |
Definition at line 73 of file regex.h.
Referenced by pg_regcomp().
#define REG_UUNPORT 001000 |
Definition at line 69 of file regex.h.
Referenced by brackpart(), and lexescape().
#define REG_UUNSPEC 000400 |
Definition at line 68 of file regex.h.
Referenced by brenext(), next(), and parsebranch().
size_t pg_regerror | ( | int | , | |
const regex_t * | , | |||
char * | , | |||
size_t | ||||
) |
Definition at line 60 of file regerror.c.
References rerr::code, rerr::explain, rerr::name, REG_ATOI, REG_ITOA, rerrs, and unk.
Referenced by check_ident_usermap(), NIAddAffix(), parse_ident_line(), RE_compile(), RE_compile_and_cache(), RE_wchar_execute(), regexp_fixed_prefix(), and replace_text_regexp().
{ struct rerr *r; const char *msg; char convbuf[sizeof(unk) + 50]; /* 50 = plenty for int */ size_t len; int icode; switch (errcode) { case REG_ATOI: /* convert name to number */ for (r = rerrs; r->code >= 0; r++) if (strcmp(r->name, errbuf) == 0) break; sprintf(convbuf, "%d", r->code); /* -1 for unknown */ msg = convbuf; break; case REG_ITOA: /* convert number to name */ icode = atoi(errbuf); /* not our problem if this fails */ for (r = rerrs; r->code >= 0; r++) if (r->code == icode) break; if (r->code >= 0) msg = r->name; else { /* unknown; tell him the number */ sprintf(convbuf, "REG_%u", (unsigned) icode); msg = convbuf; } break; default: /* a real, normal error code */ for (r = rerrs; r->code >= 0; r++) if (r->code == errcode) break; if (r->code >= 0) msg = r->explain; else { /* unknown; say so */ sprintf(convbuf, unk, errcode); msg = convbuf; } break; } len = strlen(msg) + 1; /* space needed, including NUL */ if (errbuf_size > 0) { if (errbuf_size > len) strcpy(errbuf, msg); else { /* truncate to fit */ strncpy(errbuf, msg, errbuf_size - 1); errbuf[errbuf_size - 1] = '\0'; } } return len; }
int pg_regexec | ( | regex_t * | , | |
const pg_wchar * | , | |||
size_t | , | |||
size_t | , | |||
rm_detail_t * | , | |||
size_t | , | |||
regmatch_t | [], | |||
int | ||||
) |
void pg_regfree | ( | regex_t * | ) |
Definition at line 49 of file regfree.c.
References NULL, and regex_t::re_fns.
Referenced by createTrgmNFA(), load_ident(), and RE_compile_and_cache().
void pg_set_regex_collation | ( | Oid | collation | ) |
Definition at line 231 of file regc_pg_locale.c.
References DEFAULT_COLLATION_OID, ereport, errcode(), errhint(), errmsg(), ERROR, GetDatabaseEncoding(), lc_ctype_is_c(), OidIsValid, pg_newlocale_from_collation(), pg_regex_collation, pg_regex_locale, pg_regex_strategy, and PG_UTF8.
Referenced by pg_regcomp(), pg_regexec(), and pg_regprefix().
{ if (lc_ctype_is_c(collation)) { /* C/POSIX collations use this path regardless of database encoding */ pg_regex_strategy = PG_REGEX_LOCALE_C; pg_regex_locale = 0; pg_regex_collation = C_COLLATION_OID; } else { if (collation == DEFAULT_COLLATION_OID) pg_regex_locale = 0; else if (OidIsValid(collation)) { /* * NB: pg_newlocale_from_collation will fail if not HAVE_LOCALE_T; * the case of pg_regex_locale != 0 but not HAVE_LOCALE_T does not * have to be considered below. */ pg_regex_locale = pg_newlocale_from_collation(collation); } else { /* * This typically means that the parser could not resolve a * conflict of implicit collations, so report it that way. */ ereport(ERROR, (errcode(ERRCODE_INDETERMINATE_COLLATION), errmsg("could not determine which collation to use for regular expression"), errhint("Use the COLLATE clause to set the collation explicitly."))); } #ifdef USE_WIDE_UPPER_LOWER if (GetDatabaseEncoding() == PG_UTF8) { if (pg_regex_locale) pg_regex_strategy = PG_REGEX_LOCALE_WIDE_L; else pg_regex_strategy = PG_REGEX_LOCALE_WIDE; } else #endif /* USE_WIDE_UPPER_LOWER */ { if (pg_regex_locale) pg_regex_strategy = PG_REGEX_LOCALE_1BYTE_L; else pg_regex_strategy = PG_REGEX_LOCALE_1BYTE; } pg_regex_collation = collation; } }