diff options
| author | Sam Varshavchik | 2015-07-27 08:33:57 -0400 | 
|---|---|---|
| committer | Sam Varshavchik | 2015-07-27 08:33:57 -0400 | 
| commit | bc4028bbe7b3692bd0d8d5309cc425abe57fb9c0 (patch) | |
| tree | 50e5120dc3f531986191cae69921925d3323fdea /unicode/unicodecpp.C | |
| parent | 9827d1dcf469fd4d715ad115a573c7c00218dd01 (diff) | |
| download | courier-libs-bc4028bbe7b3692bd0d8d5309cc425abe57fb9c0.tar.bz2 | |
Add tolower, toupper.
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); +} | 
