00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00023
00033
00034
00035 #ifndef _CTTL_COREUTILS_H_INCLUDED_
00036 #define _CTTL_COREUTILS_H_INCLUDED_
00037
00038 #include <cassert>
00039 #include <algorithm>
00040
00041 namespace cttl {
00042
00044 template< typename StringT >
00045 inline void
00046 string_toupper( StringT& str_ )
00047 {
00048 std::transform( str_.begin(), str_.end(), str_.begin(), toupper );
00049 }
00050
00052 template< typename StringT >
00053 inline void
00054 string_tolower( StringT& str_ )
00055 {
00056 std::transform( str_.begin(), str_.end(), str_.begin(), tolower );
00057
00058 }
00059
00076 template< typename StringT, typename CharT >
00077 inline void
00078 string_array2string( StringT& str_, CharT* array_[] )
00079 {
00080 static const CharT delimiter[] = { '\t', 0x00 };
00081 string_array2string( str_, array_, delimiter );
00082 }
00083
00106 template< typename StringT, typename CharT >
00107 inline void
00108 string_array2string( StringT& str_, CharT* array_[], CharT delimiter_ )
00109 {
00110 const CharT delimiter[] = { delimiter_, 0x00 };
00111 string_array2string( str_, array_, delimiter );
00112 }
00113
00136 template< typename StringT, typename CharT >
00137 inline void
00138 string_array2string( StringT& str_, CharT* array_[], CharT const* delimiter_ )
00139 {
00140 assert( array_ );
00141 if ( !*array_ ) {
00142 str_.clear();
00143 return;
00144 }
00145 str_ = *array_++;
00146
00147 while ( *array_ ) {
00148 if ( delimiter_ )
00149 str_ += delimiter_;
00150 str_ += *array_++;
00151 }
00152 }
00153
00154
00155 }
00156
00157
00158 #endif //_CTTL_COREUTILS_H_INCLUDED_