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