diff options
Diffstat (limited to 'unicode/unicodecpp.C')
| -rw-r--r-- | unicode/unicodecpp.C | 36 | 
1 files changed, 36 insertions, 0 deletions
| diff --git a/unicode/unicodecpp.C b/unicode/unicodecpp.C index 8894f1e..e6b31bd 100644 --- a/unicode/unicodecpp.C +++ b/unicode/unicodecpp.C @@ -7,6 +7,8 @@  #include	"unicode_config.h"  #include	"courier-unicode.h" +#include <algorithm> +  extern "C" {  	static int iconv_trampoline(const char *str, size_t cnt, void *arg) @@ -490,3 +492,37 @@ size_t unicode::wordbreakscan::finish()  	}  	return n;  } + +std::string unicode::tolower(const std::string &string) +{ +	return tolower(string, unicode_default_chset()); +} + +std::string unicode::tolower(const std::string &string, +			     const std::string &charset) +{ +	std::vector<unicode_char> uc; + +	unicode::iconvert::convert(string, charset, uc); + +	std::transform(uc.begin(), uc.end(), uc.begin(), unicode_lc); + +	return unicode::iconvert::convert(uc, charset); +} + +std::string unicode::toupper(const std::string &string) +{ +	return toupper(string, unicode_default_chset()); +} + +std::string unicode::toupper(const std::string &string, +			     const std::string &charset) +{ +	std::vector<unicode_char> uc; + +	unicode::iconvert::convert(string, charset, uc); + +	std::transform(uc.begin(), uc.end(), uc.begin(), unicode_uc); + +	return unicode::iconvert::convert(uc, charset); +} | 
