blocxx
UTF8Utils.hpp
Go to the documentation of this file.
1 /*******************************************************************************
2 * Copyright (C) 2005, Vintela, Inc. All rights reserved.
3 * Copyright (C) 2006, Novell, Inc. All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are met:
7 *
8 * * Redistributions of source code must retain the above copyright notice,
9 * this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above copyright
11 * notice, this list of conditions and the following disclaimer in the
12 * documentation and/or other materials provided with the distribution.
13 * * Neither the name of
14 * Vintela, Inc.,
15 * nor Novell, Inc.,
16 * nor the names of its contributors or employees may be used to
17 * endorse or promote products derived from this software without
18 * specific prior written permission.
19 *
20 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
24 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
25 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
26 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
27 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
28 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
29 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
30 * POSSIBILITY OF SUCH DAMAGE.
31 *******************************************************************************/
32 
33 
38 #ifndef BLOCXX_UTF8_UTILS_HPP_INCLUDE_GUARD_
39 #define BLOCXX_UTF8_UTILS_HPP_INCLUDE_GUARD_
40 #include "blocxx/BLOCXX_config.h"
41 #include "blocxx/Types.hpp"
42 #include "blocxx/ArrayFwd.hpp"
43 #include "blocxx/Exception.hpp"
44 #include "blocxx/CommonFwd.hpp"
45 
46 namespace BLOCXX_NAMESPACE
47 {
48 
49 BLOCXX_DECLARE_APIEXCEPTION(InvalidUTF8, BLOCXX_COMMON_API);
50 
51 namespace UTF8Utils
52 {
60 BLOCXX_COMMON_API size_t charCount(const char* utf8str);
68 BLOCXX_COMMON_API UInt16 UTF8toUCS2(const char* utf8char);
74 BLOCXX_COMMON_API String UCS2toUTF8(UInt16 ucs2char);
81 BLOCXX_COMMON_API UInt32 UTF8toUCS4(const char* utf8char);
87 BLOCXX_COMMON_API String UCS4toUTF8(UInt32 ucs4char);
95 BLOCXX_COMMON_API void UCS4toUTF8(UInt32 ucs4char, StringBuffer& sb);
96 
105 BLOCXX_COMMON_API int compareToIgnoreCase(const char* str1, const char* str2);
112 BLOCXX_COMMON_API Array<UInt16> StringToUCS2(const String& input);
113 
120 BLOCXX_COMMON_API Array<UInt16> StringToUCS2ReplaceInvalid(const String& input);
121 
127 BLOCXX_COMMON_API String UCS2ToString(const Array<UInt16>& input);
133 BLOCXX_COMMON_API String UCS2ToString(const Array<char>& input);
140 BLOCXX_COMMON_API String UCS2ToString(const void* input, size_t inputLength);
141 
152 BLOCXX_COMMON_API bool toUpperCaseInPlace(char* input);
153 
157 BLOCXX_COMMON_API String toUpperCase(const char* input);
158 
169 BLOCXX_COMMON_API bool toLowerCaseInPlace(char* input);
170 
174 BLOCXX_COMMON_API String toLowerCase(const char* input);
175 
176 } // end namespace UTF8Utils
177 
178 } // end namespace BLOCXX_NAMESPACE
179 
180 #endif
Array<> wraps std::vector<> in COWReference<> adding ref counting and copy on write capability.
Definition: Array.hpp:65
Taken from RFC 1321.
size_t charCount(const char *utf8str)
Count the number of UTF-8 chars in the string.
Definition: UTF8Utils.cpp:104
UInt32 UTF8toUCS4(const char *utf8char)
Convert one UTF-8 char (possibly multiple bytes) into a UCS4 32-bit char.
Definition: UTF8Utils.cpp:141
UInt16 UTF8toUCS2(const char *utf8char)
Convert one UTF-8 char (possibly multiple bytes) into a UCS2 16-bit char.
Definition: UTF8Utils.cpp:122
bool toLowerCaseInPlace(char *input)
Convert the UTF-8 string to lower case.
Definition: UTF8Utils.cpp:2087
This String class is an abstract data type that represents as NULL terminated string of characters.
Definition: String.hpp:66
bool toUpperCaseInPlace(char *input)
Convert the UTF-8 string to upper case.
Definition: UTF8Utils.cpp:2075
String toUpperCase(const char *input)
Convert the UTF-8 string to upper case and return the result.
Definition: UTF8Utils.cpp:2081
String UCS4toUTF8(UInt32 ucs4char)
Convert one UCS4 32-bit char into a UTF-8 char (possibly multiple bytes)
Definition: UTF8Utils.cpp:199
Array< UInt16 > StringToUCS2(const String &input)
Convert a UTF-8 (or ASCII) string into a UCS2 string.
Definition: UTF8Utils.cpp:373
Array< UInt16 > StringToUCS2ReplaceInvalid(const String &input)
Convert a UTF-8 (or ASCII) string into a UCS2 string.
Definition: UTF8Utils.cpp:367
String UCS2ToString(const void *input, size_t inputLength)
Convert a UCS2 string into a UTF-8 (or ASCII) string.
Definition: UTF8Utils.cpp:379
String UCS2toUTF8(UInt16 ucs2char)
Convert one UCS2 16-bit char into a UTF-8 char (possibly multiple bytes)
Definition: UTF8Utils.cpp:135
#define BLOCXX_DECLARE_APIEXCEPTION(NAME, LINKAGE_SPEC)
Declare a new exception class named <NAME>Exception that derives from Exception This macro is typical...
Definition: Exception.hpp:396
String toLowerCase(const char *input)
Convert the UTF-8 string to lower case and return the result.
Definition: UTF8Utils.cpp:2093
BLOCXX_COMMON_API int compareToIgnoreCase(const char *str1, const char *str2)
Compares 2 UTF-8 strings, ignoring any case differences as defined by the Unicode spec CaseFolding....