1
/*-------------------------------------------------------------------------
4
* locale compatibility layer for tsearch
6
* Copyright (c) 1998-2009, PostgreSQL Global Development Group
10
*-------------------------------------------------------------------------
12
#ifndef __TSLOCALE_H__
13
#define __TSLOCALE_H__
18
#include "utils/pg_locale.h"
19
#include "mb/pg_wchar.h"
22
* towlower() and friends should be in <wctype.h>, but some pre-C99 systems
23
* declare them in <wchar.h>.
32
/* working state for tsearch_readline (should be a local var in caller) */
39
ErrorContextCallback cb;
40
} tsearch_readline_state;
42
#define TOUCHAR(x) (*((const unsigned char *) (x)))
44
#ifdef USE_WIDE_UPPER_LOWER
46
extern int t_isdigit(const char *ptr);
47
extern int t_isspace(const char *ptr);
48
extern int t_isalpha(const char *ptr);
49
extern int t_isprint(const char *ptr);
51
/* The second argument of t_iseq() must be a plain ASCII character */
52
#define t_iseq(x,c) (TOUCHAR(x) == (unsigned char) (c))
54
#define COPYCHAR(d,s) memcpy(d, s, pg_mblen(s))
55
#else /* not USE_WIDE_UPPER_LOWER */
57
#define t_isdigit(x) isdigit(TOUCHAR(x))
58
#define t_isspace(x) isspace(TOUCHAR(x))
59
#define t_isalpha(x) isalpha(TOUCHAR(x))
60
#define t_isprint(x) isprint(TOUCHAR(x))
61
#define t_iseq(x,c) (TOUCHAR(x) == (unsigned char) (c))
63
#define COPYCHAR(d,s) (*((unsigned char *) (d)) = TOUCHAR(s))
64
#endif /* USE_WIDE_UPPER_LOWER */
66
extern char *lowerstr(const char *str);
67
extern char *lowerstr_with_len(const char *str, int len);
69
extern bool tsearch_readline_begin(tsearch_readline_state *stp,
70
const char *filename);
71
extern char *tsearch_readline(tsearch_readline_state *stp);
72
extern void tsearch_readline_end(tsearch_readline_state *stp);
74
extern char *t_readline(FILE *fp);
76
#endif /* __TSLOCALE_H__ */