1/*------------------------------------------------------------------------------
2* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
3*
4* Distributable under the terms of either the Apache License (Version 2.0) or
5* the GNU Lesser General Public License, as specified in the COPYING file.
6------------------------------------------------------------------------------*/
7#ifndef _lucene_repl_wchar_h
8#define _lucene_repl_wchar_h
9
10#ifdef _UCS2
11
12#ifndef _CL_HAVE_WCSCPY
13 //copy a string to another string
14 #error wcscpy is not defined, and a licensed replacement has not been written yet
15#endif
16
17#ifndef _CL_HAVE_WCSNCPY
18 //copy a specified amount of one string to another string.
19 #error wcsncpy is not defined, and a licensed replacement has not been written yet
20#endif
21
22#ifndef _CL_HAVE_WCSCAT
23 //copy a string onto the end of the other string
24 #error wcscat is not defined, and a licensed replacement has not been written yet
25#endif
26
27#ifndef _CL_HAVE_WCSCHR
28 //find location of one character
29 #error wcschr is not defined, and a licensed replacement has not been written yet
30#endif
31
32#ifndef _CL_HAVE_WCSSTR
33 //find location of a string
34 #error wcspy is not defined, and a licensed replacement has not been written yet
35#endif
36
37#ifndef _CL_HAVE_WCSLEN
38 //get length of a string
39 #error wcslen is not defined, and a licensed replacement has not been written yet
40#endif
41
42#ifndef _CL_HAVE_WCSCMP
43 //case sensitive compare two strings
44 #error wcscmp is not defined, and a licensed replacement has not been written yet
45#endif
46
47#ifndef _CL_HAVE_WCSNCMP
48 //case sensitive compare two strings of a specified length
49 #error wcsncmp is not defined, and a licensed replacement has not been written yet
50#endif
51
52#ifndef _CL_HAVE_WCSCSPN
53 //Return the length of the maximum initial segment
54 //of WCS which contains only wide-characters not in REJECT.
55 #error wcscspn is not defined, and a licensed replacement has not been written yet
56#endif
57
58#endif //_UCS2
59
60//string function replacements
61#if defined(LUCENE_USE_INTERNAL_CHAR_FUNCTIONS) || (defined(_UCS2) && !defined(_CL_HAVE_WCSCASECMP)) || (defined(_ASCII) && !defined(_CL_HAVE_STRCASECMP))
62 int lucene_tcscasecmp(const TCHAR *, const TCHAR *);
63 #undef _tcsicmp
64 #define _tcsicmp lucene_tcscasecmp
65#endif
66#if defined(LUCENE_USE_INTERNAL_CHAR_FUNCTIONS) || (defined(_UCS2) && !defined(_CL_HAVE_WCSLWR)) || (defined(_ASCII) && !defined(_CL_HAVE_STRLWR))
67 TCHAR* lucene_tcslwr( TCHAR* str );
68 #undef _tcslwr
69 #define _tcslwr lucene_tcslwr
70#endif
71
72//conversion functions
73#if (defined(_ASCII) && !defined(_CL_HAVE_LLTOA)) || (defined(_UCS2) && !defined(_CL_HAVE_LLTOW))
74 TCHAR* lucene_i64tot( int64_t value, TCHAR* str, int radix);
75 #undef _i64tot
76 #define _i64tot lucene_i64tot
77#endif
78#if (defined(_UCS2) && !defined(_CL_HAVE_WCSTOLL)) || (defined(_ASCII) && !defined(_CL_HAVE_STRTOLL))
79 int64_t lucene_tcstoi64(const TCHAR* str, TCHAR**end, int radix);
80 #undef _tcstoi64
81 #define _tcstoi64 lucene_tcstoi64
82#endif
83#if defined(_UCS2) && !defined(_CL_HAVE_WCSTOD)
84 double lucene_tcstod(const TCHAR *value, TCHAR **end);
85 #undef _tcstod
86 #define _tcstod lucene_tcstod
87#endif
88
89//printf functions
90#if defined(_UCS2) && (!defined(_CL_HAVE_SNWPRINTF) || defined(_CL_HAVE_SWPRINTF_BUG) )
91 #undef _sntprintf
92 #define _sntprintf lucene_snwprintf
93 int lucene_snwprintf(wchar_t* strbuf, size_t count, const wchar_t * format, ...);
94
95 #ifndef __CL_INCLUDE_TPRINTF
96 #define __CL_INCLUDE_TPRINTF
97 #endif
98#endif
99#if defined(_UCS2) && !defined(_CL_HAVE_WPRINTF)
100 #undef _tprintf
101 #define _tprintf lucene_wprintf
102 void lucene_wprintf(const wchar_t * format, ...);
103
104 #ifndef __CL_INCLUDE_TPRINTF
105 #define __CL_INCLUDE_TPRINTF
106 #endif
107#endif
108#if defined(_UCS2) && (!defined(_CL_HAVE_VSNWPRINTF) || defined(_CL_HAVE_SWPRINTF_BUG) )
109 #undef _vsntprintf
110 #define _vsntprintf lucene_vsnwprintf
111 int lucene_vsnwprintf(wchar_t * strbuf, size_t count, const wchar_t * format, va_list& ap);
112
113 #ifndef __CL_INCLUDE_TPRINTF
114 #define __CL_INCLUDE_TPRINTF
115 #endif
116#endif
117
118//todo: if _CL_HAVE_SNPRINTF_BUG fails(snprintf overflow),we should use our own
119//function. but we don't have it currently, and our functions are dubious anyway...
120
121#endif //end of _lucene_repl_wchar_h
122