diff options
Diffstat (limited to 'src/fbasicstring.h')
| -rw-r--r-- | src/fbasicstring.h | 23 |
1 files changed, 18 insertions, 5 deletions
diff --git a/src/fbasicstring.h b/src/fbasicstring.h index 19853f5..82c5137 100644 --- a/src/fbasicstring.h +++ b/src/fbasicstring.h | |||
| @@ -34,10 +34,19 @@ namespace Bu | |||
| 34 | }; | 34 | }; |
| 35 | 35 | ||
| 36 | #define cpy( dest, src, size ) Bu::memcpy( dest, src, size*sizeof(chr) ) | 36 | #define cpy( dest, src, size ) Bu::memcpy( dest, src, size*sizeof(chr) ) |
| 37 | |||
| 38 | template< typename chr, int nMinSize, typename chralloc, | ||
| 39 | typename chunkalloc> class FBasicString; | ||
| 37 | 40 | ||
| 38 | template<typename chr, int nMinSize, typename chralloc, typename chunkalloc> | 41 | template<typename chr, int nMinSize, typename chralloc, typename chunkalloc> |
| 39 | struct FStringCore | 42 | struct FStringCore |
| 40 | { | 43 | { |
| 44 | friend class FBasicString<chr, nMinSize, chralloc, chunkalloc>; | ||
| 45 | friend class SharedCore< | ||
| 46 | FBasicString<chr, nMinSize, chralloc, chunkalloc>, | ||
| 47 | FStringCore<chr, nMinSize, chralloc, chunkalloc> | ||
| 48 | >; | ||
| 49 | private: | ||
| 41 | typedef struct FStringCore<chr, nMinSize, chralloc, chunkalloc> MyType; | 50 | typedef struct FStringCore<chr, nMinSize, chralloc, chunkalloc> MyType; |
| 42 | typedef struct FStringChunk<chr> Chunk; | 51 | typedef struct FStringChunk<chr> Chunk; |
| 43 | FStringCore() : | 52 | FStringCore() : |
| @@ -174,16 +183,20 @@ namespace Bu | |||
| 174 | *@param chralloc (typename) Memory Allocator for chr | 183 | *@param chralloc (typename) Memory Allocator for chr |
| 175 | *@param chunkalloc (typename) Memory Allocator for chr chunks | 184 | *@param chunkalloc (typename) Memory Allocator for chr chunks |
| 176 | */ | 185 | */ |
| 177 | template< typename chr, int nMinSize=256, typename chralloc=std::allocator<chr>, typename chunkalloc=std::allocator<struct FStringChunk<chr> > > | 186 | template< typename chr, int nMinSize=256, |
| 178 | class FBasicString : public SharedCore< FStringCore<chr, nMinSize, chralloc, chunkalloc> > | 187 | typename chralloc=std::allocator<chr>, |
| 188 | typename chunkalloc=std::allocator<struct FStringChunk<chr> > > | ||
| 189 | class FBasicString : public SharedCore< | ||
| 190 | FBasicString<chr, nMinSize, chralloc, chunkalloc>, | ||
| 191 | FStringCore<chr, nMinSize, chralloc, chunkalloc> > | ||
| 179 | { | 192 | { |
| 180 | protected: | 193 | protected: |
| 181 | typedef struct FStringChunk<chr> Chunk; | 194 | typedef struct FStringChunk<chr> Chunk; |
| 182 | typedef struct FBasicString<chr, nMinSize, chralloc, chunkalloc> MyType; | 195 | typedef struct FBasicString<chr, nMinSize, chralloc, chunkalloc> MyType; |
| 183 | typedef struct FStringCore<chr, nMinSize, chralloc, chunkalloc> Core; | 196 | typedef struct FStringCore<chr, nMinSize, chralloc, chunkalloc> Core; |
| 184 | 197 | ||
| 185 | using SharedCore< Core >::core; | 198 | using SharedCore<MyType, Core >::core; |
| 186 | using SharedCore< Core >::_hardCopy; | 199 | using SharedCore<MyType, Core >::_hardCopy; |
| 187 | 200 | ||
| 188 | public: | 201 | public: |
| 189 | FBasicString() | 202 | FBasicString() |
| @@ -201,7 +214,7 @@ namespace Bu | |||
| 201 | } | 214 | } |
| 202 | 215 | ||
| 203 | FBasicString( const MyType &rSrc ) : | 216 | FBasicString( const MyType &rSrc ) : |
| 204 | SharedCore<Core>( rSrc ) | 217 | SharedCore<MyType, Core>( rSrc ) |
| 205 | { | 218 | { |
| 206 | } | 219 | } |
| 207 | 220 | ||
