33 #include "util/base/exception.h"
34 #include "util/log/logger.h"
39 static Logger _log(LM_VFS);
41 RawData::RawData(RawDataSource* datasource) : m_datasource(datasource), m_index_current(0) {
50 std::vector<uint8_t> target;
52 uint8_t* array =
new uint8_t[size];
54 for (uint32_t i = 0; i < size; i++) {
55 target.push_back(array[i]);
62 std::vector<std::string> target;
66 target.push_back(line);
76 return m_index_current;
81 throw IndexOverflow(__FUNCTION__);
83 m_index_current = index;
92 FL_LOG(_log,
LMsg(
"RawData") << m_index_current <<
" : " << len <<
" : " <<
getDataLength());
93 throw IndexOverflow(__FUNCTION__);
96 m_datasource->
readInto(buffer, m_index_current, len);
97 m_index_current += len;
101 return readSingle<uint8_t>();
105 uint16_t val = readSingle<uint16_t>();
106 return littleToHost(val);
110 uint32_t val = readSingle<uint32_t>();
111 return littleToHost(val);
115 uint16_t val = readSingle<uint16_t>();
116 return bigToHost(val);
120 uint32_t val = readSingle<uint32_t>();
121 return bigToHost(val);
125 char* str =
new char[len+1];
126 readInto(reinterpret_cast<uint8_t*>(str), len);
128 std::string ret = str;
134 if ((size < 0) || ((size + m_index_current + 1) >
getDataLength())) {
141 uint8_t* array =
new uint8_t[size + 1];
142 m_datasource->
readInto(array, m_index_current, size);
144 outbuffer =
reinterpret_cast<char*
>(array);
146 m_index_current += size;
162 bool RawData::littleEndian() {
163 static int endian = 2;
165 uint32_t value = 0x01;
166 endian =
reinterpret_cast<uint8_t*
>(&value)[0];
167 FL_LOG(_log,
LMsg(
"RawData") <<
"we are on a " << (endian == 1 ?
"little endian" :
"big endian") <<
" machine");