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 | ||