00001 #ifndef __J2K__JString_Morph_INL__ 00002 #define __J2K__JString_Morph_INL__ 00003 00004 #include <j2k/Fred/String/String.hpp> 00005 #include <j2k/Fred/String/Str-fn.hpp> 00006 00007 // ALWAYS use CopyBeforeWrite to avoid problems with LOCK functions ! 00008 // Used CopyBeforeWrite(); external function ONLY 00009 00010 // Every function is inlined. 00011 00012 /// Aliases 00013 inline void JString::UCase() { 00014 MakeUpper(); 00015 } 00016 00017 inline void JString::LCase() { 00018 MakeLower(); 00019 } 00020 00021 inline void JString::Reverse() { 00022 MakeReverse(); 00023 } 00024 00025 inline void JString::MakeUpper() { 00026 CopyBeforeWrite(); 00027 strupr(pData->data); 00028 } 00029 00030 inline void JString::MakeLower() { 00031 CopyBeforeWrite(); 00032 strlwr(pData->data); 00033 } 00034 00035 inline void JString::MakeReverse() { 00036 CopyBeforeWrite(); 00037 strrev(pData->data); 00038 } 00039 00040 inline char* JString::getUpper() { 00041 return strupr( strdup( pData->data ) ); 00042 } 00043 00044 inline char* JString::getLower() { 00045 return strlwr( strdup( pData->data ) ); 00046 } 00047 00048 inline char* JString::getReverse() { 00049 return strrev( strdup( pData->data ) ); 00050 } 00051 00052 inline JString& JString::setUpper() { 00053 MakeUpper(); 00054 return *this; 00055 } 00056 00057 inline JString& JString::setLower() { 00058 MakeLower(); 00059 return *this; 00060 } 00061 00062 inline JString& JString::setReverse() { 00063 MakeReverse(); 00064 return *this; 00065 } 00066 00067 // Parsing Stuff 00068 00069 inline int JString::parseInt() const { 00070 return atoi( pData->data ); 00071 } 00072 00073 inline long JString::parseLong() const { 00074 return atol( pData->data ); 00075 } 00076 00077 inline double JString::parseDouble() const { 00078 return atof( pData->data ); 00079 } 00080 00081 inline char* JString::parseString() const { 00082 if ( pData == strNull ) { 00083 return ""; 00084 } else { 00085 return strdup( pData->data ); 00086 } 00087 } 00088 00089 inline char* JString::toString() const { 00090 return parseString(); 00091 } 00092 00093 inline char* JString::getText() const { 00094 return parseString(); 00095 } 00096 00097 //////////////////////////////////////////////////////////////////////////// 00098 /// Same as Parsing, but using Casting (BE CAREFUL !) /// 00099 //////////////////////////////////////////////////////////////////////////// 00100 inline JString::operator char*() const { 00101 return parseString(); 00102 } 00103 00104 inline JString::operator int() const { 00105 return parseInt(); 00106 } 00107 00108 inline JString::operator long() const { 00109 return parseLong(); 00110 } 00111 00112 inline JString::operator double() const { 00113 return parseDouble(); 00114 } 00115 00116 #endif