diff options
| author | Sam Varshavchik | 2015-07-28 08:31:30 -0400 | 
|---|---|---|
| committer | Sam Varshavchik | 2015-07-28 08:31:30 -0400 | 
| commit | f9e2606abe105d7183b69e50da8a156a547d65e0 (patch) | |
| tree | f0856138b2cdb568c56bd14f282476cc43556687 /unicode/unicodecpp.C | |
| parent | bc4028bbe7b3692bd0d8d5309cc425abe57fb9c0 (diff) | |
| download | courier-libs-f9e2606abe105d7183b69e50da8a156a547d65e0.tar.bz2 | |
Add additional tolower/toupper overloads, unicode_locale_charset().
Diffstat (limited to 'unicode/unicodecpp.C')
| -rw-r--r-- | unicode/unicodecpp.C | 45 | 
1 files changed, 43 insertions, 2 deletions
| diff --git a/unicode/unicodecpp.C b/unicode/unicodecpp.C index e6b31bd..214eb5d 100644 --- a/unicode/unicodecpp.C +++ b/unicode/unicodecpp.C @@ -57,6 +57,21 @@ const char unicode::utf_8[]="utf-8";  const char unicode::iso_8859_1[]="iso-8859-1"; +// Initialize unicode_default_chset() at thread startup. + +namespace unicode { + +	class init_chset { +	public: +		init_chset(); +	}; +}; + +unicode::init_chset::init_chset() +{ +	unicode_default_chset(); +} +  size_t unicode_wcwidth(const std::vector<unicode_char> &uc)  {  	size_t w=0; @@ -505,11 +520,24 @@ std::string unicode::tolower(const std::string &string,  	unicode::iconvert::convert(string, charset, uc); -	std::transform(uc.begin(), uc.end(), uc.begin(), unicode_lc); +	tolower(uc);  	return unicode::iconvert::convert(uc, charset);  } +std::vector<unicode_char> unicode::tolower(const std::vector<unicode_char> &u) +{ +	std::vector<unicode_char> copy=u; + +	tolower(copy); +	return copy; +} + +void unicode::tolower(std::vector<unicode_char> &uc) +{ +	std::transform(uc.begin(), uc.end(), uc.begin(), unicode_lc); +} +  std::string unicode::toupper(const std::string &string)  {  	return toupper(string, unicode_default_chset()); @@ -522,7 +550,20 @@ std::string unicode::toupper(const std::string &string,  	unicode::iconvert::convert(string, charset, uc); -	std::transform(uc.begin(), uc.end(), uc.begin(), unicode_uc); +	toupper(uc);  	return unicode::iconvert::convert(uc, charset);  } + +std::vector<unicode_char> unicode::toupper(const std::vector<unicode_char> &u) +{ +	std::vector<unicode_char> copy=u; + +	toupper(copy); +	return copy; +} + +void unicode::toupper(std::vector<unicode_char> &uc) +{ +	std::transform(uc.begin(), uc.end(), uc.begin(), unicode_uc); +} | 
