diff options
| author | Mike Buland <eichlan@xagasoft.com> | 2020-02-06 11:58:11 -0800 |
|---|---|---|
| committer | Mike Buland <eichlan@xagasoft.com> | 2020-02-06 11:58:11 -0800 |
| commit | 59be1eca587eb3da14c2e924a186396f321f5a58 (patch) | |
| tree | fba9cfc643833946211ccf219c66bc50320491a5 /src | |
| parent | 18648763146dace4e53692c40f074b75486a9638 (diff) | |
| download | libbu++-59be1eca587eb3da14c2e924a186396f321f5a58.tar.gz libbu++-59be1eca587eb3da14c2e924a186396f321f5a58.tar.bz2 libbu++-59be1eca587eb3da14c2e924a186396f321f5a58.tar.xz libbu++-59be1eca587eb3da14c2e924a186396f321f5a58.zip | |
Closer on the TextBuilder.
Codecs are next.
Diffstat (limited to '')
| -rw-r--r-- | src/unstable/textbuilder.cpp | 19 | ||||
| -rw-r--r-- | src/unstable/textbuilder.h | 2 |
2 files changed, 17 insertions, 4 deletions
diff --git a/src/unstable/textbuilder.cpp b/src/unstable/textbuilder.cpp index 26b46f5..acd3501 100644 --- a/src/unstable/textbuilder.cpp +++ b/src/unstable/textbuilder.cpp | |||
| @@ -196,8 +196,15 @@ void Bu::TextBuilderCore::copyTo( void *pDestRaw, int32_t iLength ) | |||
| 196 | Chunk *pCur = pFirst; | 196 | Chunk *pCur = pFirst; |
| 197 | while( pCur && iLength ) | 197 | while( pCur && iLength ) |
| 198 | { | 198 | { |
| 199 | int32_t iChunkLun = pCur->iLength; | 199 | int32_t iChunkLen = pCur->iLength; |
| 200 | if( iChunkLen > iLength ) | ||
| 201 | iChunkLen = iLength; | ||
| 200 | 202 | ||
| 203 | memcpy( pDest, pCur->pData, iChunkLen*sizeof(CodePoint) ); | ||
| 204 | pDest += iChunkLen; | ||
| 205 | iLength -= iChunkLen; | ||
| 206 | |||
| 207 | pCur = pCur->pNext; | ||
| 201 | } | 208 | } |
| 202 | } | 209 | } |
| 203 | 210 | ||
| @@ -225,6 +232,7 @@ Bu::TextBuilder::TextBuilder() | |||
| 225 | 232 | ||
| 226 | Bu::TextBuilder::TextBuilder( const Text &rSrc ) | 233 | Bu::TextBuilder::TextBuilder( const Text &rSrc ) |
| 227 | { | 234 | { |
| 235 | core->append( rSrc.getData(), rSrc.getSize() ); | ||
| 228 | } | 236 | } |
| 229 | 237 | ||
| 230 | Bu::TextBuilder::TextBuilder( const TextBuilder &rSrc ) : | 238 | Bu::TextBuilder::TextBuilder( const TextBuilder &rSrc ) : |
| @@ -245,26 +253,31 @@ void Bu::TextBuilder::set( const Text &rSrc ) | |||
| 245 | void Bu::TextBuilder::append( const Text &rSrc ) | 253 | void Bu::TextBuilder::append( const Text &rSrc ) |
| 246 | { | 254 | { |
| 247 | _hardCopy(); | 255 | _hardCopy(); |
| 256 | core->append( rSrc.getData(), rSrc.getSize() ); | ||
| 248 | } | 257 | } |
| 249 | 258 | ||
| 250 | void Bu::TextBuilder::append( const CodePoint *pSrc, int32_t iLength ) | 259 | void Bu::TextBuilder::append( const CodePoint *pSrc, int32_t iLength ) |
| 251 | { | 260 | { |
| 252 | _hardCopy(); | 261 | _hardCopy(); |
| 262 | core->append( pSrc, iLength ); | ||
| 253 | } | 263 | } |
| 254 | 264 | ||
| 255 | void Bu::TextBuilder::prepend( const Text &rSrc ) | 265 | void Bu::TextBuilder::prepend( const Text &rSrc ) |
| 256 | { | 266 | { |
| 257 | _hardCopy(); | 267 | _hardCopy(); |
| 268 | core->prepend( rSrc.getData(), rSrc.getSize() ); | ||
| 258 | } | 269 | } |
| 259 | 270 | ||
| 260 | void Bu::TextBuilder::insert( const Text &rSrc ) | 271 | void Bu::TextBuilder::insert( int32_t iBefore, const Text &rSrc ) |
| 261 | { | 272 | { |
| 262 | _hardCopy(); | 273 | _hardCopy(); |
| 274 | core->insert( iBefore, rSrc.getData(), rSrc.getSize() ); | ||
| 263 | } | 275 | } |
| 264 | 276 | ||
| 265 | void Bu::TextBuilder::clear() | 277 | void Bu::TextBuilder::clear() |
| 266 | { | 278 | { |
| 267 | _hardCopy(); | 279 | _hardCopy(); |
| 280 | core->clear(); | ||
| 268 | } | 281 | } |
| 269 | 282 | ||
| 270 | int32_t Bu::TextBuilder::getSize() const | 283 | int32_t Bu::TextBuilder::getSize() const |
| @@ -295,7 +308,7 @@ Bu::TextBuilder &Bu::TextBuilder::operator=( const Text &rSrc ) | |||
| 295 | 308 | ||
| 296 | Bu::TextBuilder &Bu::TextBuilder::operator==( const Text &rSrc ) | 309 | Bu::TextBuilder &Bu::TextBuilder::operator==( const Text &rSrc ) |
| 297 | { | 310 | { |
| 298 | set( pSrc ); | 311 | |
| 299 | return *this; | 312 | return *this; |
| 300 | } | 313 | } |
| 301 | 314 | ||
diff --git a/src/unstable/textbuilder.h b/src/unstable/textbuilder.h index f0dee8c..8c49f2a 100644 --- a/src/unstable/textbuilder.h +++ b/src/unstable/textbuilder.h | |||
| @@ -70,7 +70,7 @@ namespace Bu | |||
| 70 | void append( const Text &rSrc ); | 70 | void append( const Text &rSrc ); |
| 71 | void append( const CodePoint *pSrc, int32_t iLength ); | 71 | void append( const CodePoint *pSrc, int32_t iLength ); |
| 72 | void prepend( const Text &rSrc ); | 72 | void prepend( const Text &rSrc ); |
| 73 | void insert( const Text &rSrc ); | 73 | void insert( int32_t iBefore, const Text &rSrc ); |
| 74 | void clear(); | 74 | void clear(); |
| 75 | 75 | ||
| 76 | int32_t getSize() const; | 76 | int32_t getSize() const; |
