Main Page   Packages   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members   Search  

C:/temp/src/j2k/Deprecated/old_18mar_diff/Str14dec/StrANSI.cpp

Go to the documentation of this file.
00001 #ifndef __J2K__JString_ANSI_CPP__
00002 #define __J2K__JString_ANSI_CPP__
00003 
00004 #include <j2k/Fred/String/String.hpp>
00005 #include <j2k/Fred/String/Str-fn.hpp>
00006 
00007 char* JString::getConcatenate( const char* src )
00008 {
00009   ULONG newLen = pData->length + strlen( src ) + 1;
00010   char* buffer = new char[ newLen ];
00011   strcpy( buffer, pData->data );
00012   strcat( buffer, src );
00013   buffer[ newLen ] = '\0';       // Safety Net.
00014   return buffer;
00015 }
00016 
00017 JString& JString::setConcatenate( const char* src )
00018 {
00019   if ( src == NULL ) return *this;
00020   ULONG newLen = pData->length + strlen(src);
00021   JStringData* sd = new JStringData( pData->data, newLen );
00022   JStringData* bsd = pData;      // Late delete
00023   pData = sd;
00024   strcat( pData->data, src );
00025   pData->data[ newLen ] = '\0';  // Safety Net.
00026   pData->length = strlen( sd->data );
00027   bsd->Dec();
00028   return ( *this );
00029 }
00030 
00031 long JString::firstCharFound( const int c ) {
00032   if ( pData->data == NULL ) return (-1);
00033   // Direct (Forward search)
00034   char* where = strchr( pData->data, c );
00035   if ( where == NULL ) return (-1);
00036 
00037   // e.g. 0xfff10 -= 0xfff00 => position 0x10
00038   long w = (long)where;
00039   w -= (long)pData->data;
00040   return w;
00041 }
00042 
00043 long JString::lastCharFound( const int c ) {
00044   if ( pData->data == NULL) return (-1);
00045   // Reverse (Backward search)
00046   char* where = strrchr( pData->data, c );
00047   if ( where == NULL ) return (-1);
00048 
00049   // e.g. 0xfff10 -= 0xfff00 => position 0x10
00050   long w = (long)where;
00051   w -= (long)pData->data;
00052   return w;
00053 }
00054 
00055 int JString::compare( const char* src ) {
00056   return strcmp( pData->data, src );
00057 }
00058 
00059 int JString::compareIgnoreCase( const char* src ) {
00060 
00061 #if defined(__sun) || defined(__SUN__)
00062   return strcasecmp( pData->data, src );
00063 #else 
00064    return strcmpi( pData->data, src );
00065 #endif
00066 
00067    // return stricmp( pData->data, src );
00068 }
00069 
00070 int JString::compareUsingLocaleCollate( const char* src ) {
00071   return strcoll( pData->data, src );  // Useless, if extern "C" or "C++"
00072 }
00073 
00074 char* JString::copy() {
00075   char* dst = new char[ pData->length + 1 ];
00076   return strcpy( dst, pData->data );
00077 }
00078 
00079 JString JString::getCopy() {
00080   JStringData* sd = new JStringData( pData->length );
00081   strcpy( sd->data, pData->data );
00082   return JString( sd );
00083 }
00084 
00085 ULONG JString::getNbCharNotFromCharSet( const char* charset ) {
00086   return strcspn( pData->data, charset );
00087 }
00088 
00089 JString JString::getDate() {  // MM/DD/YY format (not Y2K complient !)
00090    JStringData* sd = new JStringData( 9 );
00091    _strdate( sd->data );
00092    return JString( sd );
00093 }
00094 
00095 JString& JString::setDate() {  // MM/DD/YY format (not Y2K complient !)
00096    JStringData* sd = new JStringData( 9 );
00097    _strdate( sd->data );
00098    pData->Dec();
00099    pData = sd;
00100    return ( *this );
00101 }
00102 
00103 JString& JString::setTime( ULONG maxSize, const char* format,
00104                   const struct tm* currTime )
00105 {
00106    JStringData* sd = new JStringData( maxSize );
00107    strftime( sd->data, maxSize, format, currTime );
00108    pData->Dec();
00109    pData = sd;
00110    return ( *this );
00111 }
00112 
00113 char* JString::duplicate() {
00114    return strdup( pData->data );
00115 }
00116 
00117 JString JString::duplicateString() {
00118    return JString( strdup( pData->data ) );
00119 }
00120 
00121 JString JString::getError( int errnb ) {
00122    char* err = strerror( errnb );
00123    return JString( err );
00124 }
00125 
00126 JString& JString::setError( int errnb ) {
00127    char* err = strerror( errnb );
00128 // this = new JString( err );  // To Be FIXED
00129    return ( *this );
00130 }
00131 
00132 JString JString::getTimeFormat( ULONG maxSize, const char* format, const struct tm* currTime )
00133 {
00134    JStringData* sd = new JStringData( maxSize );
00135    strftime( sd->data, maxSize, format, currTime );
00136    return JString( sd );
00137 }
00138 
00139 JString& JString::setTimeFormat( ULONG maxSize, const char* format, const struct tm* currTime )
00140 {
00141    JStringData* sd = new JStringData( maxSize );
00142    strftime( sd->data, maxSize, format, currTime );
00143    pData->Dec();
00144    pData = sd;
00145    return ( *this );
00146 }
00147 
00148 JString JString::getTime() {  // HH:MM:SS  (24h)
00149    JStringData* sd = new JStringData( 8 );
00150    _strtime( sd->data );
00151    return JString( sd );
00152 }
00153 
00154 JString& JString::setTime() {  // HH:MM:SS  (24h)
00155    JStringData* sd = new JStringData( 8 );
00156    _strtime( sd->data );
00157    pData->Dec();
00158    pData = sd;
00159    return ( *this );
00160 }
00161 
00162 char* JString::getConcatenateWithLimits( const char* src, ULONG n ) {
00163   ULONG newLen = pData->length + n + 1;
00164   char* buffer = new char[ newLen ];
00165   strcpy( buffer, pData->data );
00166   strncat( buffer, src, n );
00167   buffer[ newLen ] = '\0';  // Safety Net.
00168   return buffer;
00169 }
00170 
00171 JString& JString::setConcatenateWithLimits( const char* src, ULONG n ) {
00172   if ( src == NULL ) return *this;
00173   ULONG newLen = pData->length + n;
00174   JStringData* sd = new JStringData( pData->data, newLen );
00175   pData->Dec();
00176   pData = sd;
00177   strncat( pData->data, src, n );
00178   pData->data[ newLen ] = '\0';  // Safety Net.
00179   pData->length = strlen( sd->data );
00180   return ( *this );
00181 }
00182 
00183 int JString::compareWithLimits( const char* src, ULONG n ) {
00184   return strncmp( pData->data, src, n );
00185 }
00186 
00187 int JString::compareIgnoreCaseWithLimits( const char* src, ULONG n ) {
00188 #if defined(__sun) || defined(__SUN__)
00189   return strncasecmp( pData->data, src, n );
00190 #else
00191         return strnicmp( pData->data, src, n );
00192 #endif
00193 }
00194 
00195 char* JString::copyWithLimits( ULONG n ) {
00196   char* dst = new char[ pData->length + 1 ];
00197   return strncpy( dst, pData->data, n );
00198 }
00199 
00200 JString JString::getCopyWithLimits( ULONG n ) {
00201   JStringData* sd = new JStringData( pData->length );
00202   strncpy( sd->data, pData->data, n );
00203   return JString( sd );
00204 }
00205 
00206 char* JString::getFillWithChar( const int ch ) {
00207   return getFillWithChar( ch, pData->length );
00208 } // Same as strset()
00209 
00210 JString& JString::setFillWithChar( const int ch ) {
00211   return setFillWithChar( ch, pData->length );
00212 } // Same as strset()
00213 
00214 // Fill the begin up to n with an ASCII character
00215 char* JString::getFillWithChar( const int ch, ULONG n ) {
00216   ULONG newLen = pData->length + 1;
00217   char* buffer = new char[ newLen ];
00218   strcpy( buffer, pData->data );
00219   strnset( buffer, ch, n );
00220   buffer[ newLen ] = '\0';  // Safety Net.
00221   return buffer;
00222 }
00223 
00224 JString& JString::setFillWithChar( const int ch, ULONG n ) {
00225   ULONG newLen = pData->length;
00226   JStringData* sd = new JStringData( pData->data, newLen );
00227   pData->Dec();
00228   pData = sd;
00229   strnset( pData->data, ch, n );
00230   pData->data[ newLen ] = '\0';  // Safety Net.
00231   pData->length = strlen( sd->data );
00232   return ( *this );
00233 }
00234 
00235 long JString::locateCharSet( const char* charset ) {
00236   return locateCharSet( charset, 0 );
00237 }
00238 
00239 // Return Where is the first charset in String
00240 long JString::locateCharSet( const char* charset, ULONG startAt ) {
00241   if ( startAt >= pData->length ) return -1;
00242   char* p = pData->data + startAt;
00243   char* f = strpbrk( p, charset );
00244   return (long)( f - pData->data );
00245 }
00246 
00247 ULONG JString::findCharset( const char* charset ) {
00248   return findCharset( charset, 0 );
00249 }
00250 
00251 // Return How much of charset in String
00252 ULONG JString::findCharset( const char* charset, ULONG startAt ) {
00253   if ( startAt >= pData->length ) return 0;
00254   char* p = pData->data + startAt;
00255   return strspn( p, charset );
00256 }
00257 
00258 long JString::findString( const char* s ) {
00259   return findString( s, 0 );
00260 }
00261 
00262 // Return Where is the first String given in String
00263 long JString::findString( const char* s, ULONG startAt ) {
00264   if ( startAt >= pData->length ) return 0;
00265   char* p = pData->data + startAt;
00266   char* f = strstr( p, s );
00267   return (long)( f - pData->data );
00268 }
00269 
00270 double JString::toDouble() {
00271   return toDouble( 0 );
00272 }
00273 
00274 double JString::toDouble( ULONG startAt ) {
00275   if ( startAt >= pData->length ) return 0;
00276   char* p = pData->data + startAt;
00277   return strtod( p, NULL );
00278 }
00279 
00280 long JString::toLong() {
00281   return toLong( 0, 10 );  // No OffSet, Decimal
00282 }
00283 
00284 long JString::toLong( ULONG base ) {
00285   return toLong( 0, base );  // No OffSet, Base chosen
00286 }
00287 
00288 long JString::toLong( ULONG startAt, ULONG base ) {
00289   if ( startAt >= pData->length ) return 0;
00290   char* p = pData->data + startAt;
00291   return strtol( p, NULL, base );
00292 }
00293 
00294 ULONG JString::toULONG() {
00295   return toULONG( 0, 10 );  // No OffSet, Decimal
00296 }
00297 
00298 ULONG JString::toULONG( ULONG base ) {
00299   return toULONG( 0, base );  // No OffSet, Base chosen
00300 }
00301 
00302 ULONG JString::toULONG( ULONG startAt, ULONG base ) {
00303   if ( startAt >= pData->length ) return 0;
00304   char* p = pData->data + startAt;
00305   return strtoul( p, NULL, base );
00306 }
00307 
00308 char* JString::getTransform( const char* src, ULONG n )
00309 {
00310   ULONG newLen = pData->length + n + 1;
00311   char* buffer = new char[ newLen ];
00312   strcpy( buffer, pData->data );
00313   strxfrm( buffer, src, n );
00314   buffer[ newLen ] = '\0';  // Safety Net.
00315   return buffer;
00316 }
00317 
00318 JString& JString::setTransform( const char* src, ULONG n )
00319 {
00320   ULONG newLen = pData->length + n;
00321   JStringData* sd = new JStringData( pData->data, newLen );
00322   pData->Dec();
00323   pData = sd;
00324   strxfrm( pData->data, src, n );
00325   pData->data[ newLen ] = '\0';  // Safety Net.
00326   pData->length = strlen( sd->data );
00327   return ( *this );
00328 }
00329 
00330 char* JString::getTokens( const char* delims, ULONG startAt )
00331 {
00332   if ( startAt >= pData->length ) return NULL;
00333   char* p = pData->data + startAt;
00334   char* buffer = strdup( p );
00335   char* f = strtok( buffer, delims );
00336   return f;
00337 }
00338 
00339 char* JString::getMoreTokens( const char* delims ) {
00340   return strtok( NULL, delims );
00341 }
00342 
00343 JString JString::getStringTokens( const char* delims, ULONG startAt )
00344 {
00345   if ( startAt >= pData->length ) return JString();
00346   char* p = pData->data + startAt;
00347   char* buffer = strdup( p );
00348   char* f = strtok( buffer, delims );
00349   return JString( f );
00350 }
00351 
00352 JString JString::getMoreStringTokens( const char* delims ) {
00353   return JString( strtok( NULL, delims ) );
00354 }
00355 
00356 #endif

Generated on Sun Oct 14 18:46:27 2001 for Standard J2K Library by doxygen1.2.11.1 written by Dimitri van Heesch, © 1997-2001