PageRenderTime 24ms CodeModel.GetById 16ms app.highlight 4ms RepoModel.GetById 2ms app.codeStats 0ms

/usr.bin/grep/regex/glue.h

https://bitbucket.org/freebsd/freebsd-head/
C++ Header | 67 lines | 53 code | 13 blank | 1 comment | 4 complexity | 51cd084db88d6accd6030fb75d1c430c MD5 | raw file
 1/* $FreeBSD$ */
 2
 3#ifndef GLUE_H
 4#define GLUE_H
 5
 6#include <limits.h>
 7#undef RE_DUP_MAX
 8#include <regex.h>
 9#include <stdio.h>
10#include <stdlib.h>
11
12#define TRE_WCHAR			1
13#define TRE_MULTIBYTE			1
14#define HAVE_MBSTATE_T			1
15
16#define TRE_CHAR(n) L##n
17#define CHF "%lc"
18
19#define tre_char_t			wchar_t
20#define tre_mbrtowc(pwc, s, n, ps)	(mbrtowc((pwc), (s), (n), (ps)))
21#define tre_strlen			wcslen
22#define tre_isspace			iswspace
23#define tre_isalnum			iswalnum
24
25#define REG_OK				0
26#define REG_LITERAL			0020
27#define REG_WORD			0100
28#define REG_GNU				0400
29
30#define TRE_MB_CUR_MAX			MB_CUR_MAX
31
32#ifndef _GREP_DEBUG
33#define DPRINT(msg)
34#else			
35#define DPRINT(msg) do {printf msg; fflush(stdout);} while(/*CONSTCOND*/0)
36#endif
37
38#define MIN(a,b)			((a > b) ? (b) : (a))
39#define MAX(a,b)			((a > b) ? (a) : (b))
40
41typedef enum { STR_WIDE, STR_BYTE, STR_MBS, STR_USER } tre_str_type_t;
42
43#define CALL_WITH_OFFSET(fn)						\
44  do									\
45    {									\
46      size_t slen = (size_t)(pmatch[0].rm_eo - pmatch[0].rm_so);	\
47      size_t offset = pmatch[0].rm_so;					\
48      int ret;								\
49									\
50      if ((long long)pmatch[0].rm_eo - pmatch[0].rm_so < 0)		\
51	return REG_NOMATCH;						\
52      ret = fn;								\
53      for (unsigned i = 0; (!(eflags & REG_NOSUB) && (i < nmatch)); i++)\
54	{								\
55	  pmatch[i].rm_so += offset;					\
56	  pmatch[i].rm_eo += offset;					\
57	}								\
58      return ret;							\
59    } while (0 /*CONSTCOND*/)
60
61int
62tre_convert_pattern(const char *regex, size_t n, tre_char_t **w,
63    size_t *wn);
64
65void
66tre_free_pattern(tre_char_t *wregex);
67#endif