Fix RunLengthEncoding for older compilers

This commit is contained in:
Sebastian Messmer 2015-12-14 18:14:03 +01:00
parent b8a017b09c
commit 64b8862652
2 changed files with 5 additions and 7 deletions

View File

@ -91,7 +91,8 @@ namespace blockstore {
}
Data RunLengthEncoding::Decompress(const void *data, size_t size) {
istringstream stream = _parseData((uint8_t*)data, size);
istringstream stream;
_parseData((uint8_t*)data, size, &stream);
ostringstream decompressed;
while(_hasData(&stream)) {
_decodeArbitraryWords(&stream, &decompressed);
@ -108,11 +109,8 @@ namespace blockstore {
return !str->eof();
}
istringstream RunLengthEncoding::_parseData(const uint8_t *data, size_t size) {
string str((const char*)data, size);
istringstream result;
result.str(str);
return result;
void RunLengthEncoding::_parseData(const uint8_t *data, size_t size, istringstream *result) {
result->str(string((const char*)data, size));
}
void RunLengthEncoding::_decodeArbitraryWords(istringstream *stream, ostringstream *decompressed) {

View File

@ -19,7 +19,7 @@ namespace blockstore {
static uint16_t _countIdenticalBytes(uint8_t *start, uint8_t *end);
static bool _hasData(std::istringstream *stream);
static cpputils::Data _extractData(std::ostringstream *stream);
static std::istringstream _parseData(const uint8_t *data, size_t size);
static void _parseData(const uint8_t *data, size_t size, std::istringstream *result);
static void _decodeArbitraryWords(std::istringstream *stream, std::ostringstream *decompressed);
static void _decodeIdenticalWords(std::istringstream *stream, std::ostringstream *decompressed);
};