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/SubString.cpp

Go to the documentation of this file.
00001 #ifndef __J2K__JSubString_CPP__
00002 #define __J2K__JSubString_CPP__
00003 
00004 #include <j2k/Fred/String/String.hpp>
00005 #include <j2k/Fred/String/SubString.hpp>
00006 
00007 class JString;
00008 
00009 class JSubString {
00010 private:
00011   JSubString()
00012     : startpos( 0 ), length( 0 ), pData( strNull ) { }
00013 
00014   JSubString( JString* p )
00015     : startpos( 0 ), length( 0 ), pData( strNull )
00016   {
00017     if ( p != NULL ) {
00018       pData  = p;
00019       pData->Inc();
00020       length = p->length;
00021     }
00022   }
00023 
00024   JSubString( JString* p, ULONG start )
00025     : startpos( 0 ), length( 0 ), pData( strNull )
00026   {
00027     if ( p != NULL ) {
00028       pData    = p;
00029       pData->Inc();
00030       length   = p->length;
00031       startpos = start;
00032     }
00033   }
00034 
00035   JSubString( JString* p, ULONG start, ULONG len )
00036     : startpos( 0 ), length( 0 ), pData( strNull )
00037   {
00038     if ( p != NULL ) {
00039       pData    = p;
00040       pData->Inc();
00041       startpos = start;
00042 
00043       ULONG l = p->length;
00044       if ( l >= len ) {
00045         length = len;
00046       } else {
00047         length = l;
00048       }
00049     }
00050   }
00051 
00052   JSubString( const JSubString& src )
00053     : pData( src.pData ), startpos( src.startpos ), length( src.length )
00054   {
00055     pData->Inc();
00056   }
00057 
00058 public:
00059 
00060   // We want to modify JSubString !
00061   const JSubString& JSubString::operator=( const JString& src )
00062   {
00063   }
00064 
00065   JString JSubString::operator=( const JSubString& src )
00066   {
00067     ULONG sz = src.length + pData->length;
00068     JStringData* sd = pData;
00069 
00070     pData = new JStringData( sd->data, sz );
00071 
00072     char* d =     pData->data +     startpos;
00073     char* s = src.pData->data + src.startpos;
00074 
00075     memcpy( d, s, src.length );
00076 
00077     d += src.length;
00078     s =  sd->data + startpos + length;
00079     
00080 
00081     memcpy( d, s, 
00082 
00083     sd->Dec();
00084   }
00085 
00086   JString operator JString ()
00087   {
00088     return JString( pData );
00089   }
00090 
00091 private:
00092   JStringData*  pData;
00093   ULONG         startpos;
00094   ULONG         length;
00095 
00096   friend JString;
00097 };
00098 
00099 #endif

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