mirror of
https://github.com/OpenSpace/OpenSpace.git
synced 2026-02-06 19:49:36 -06:00
Added save session feature in the Software Integration module
This commit is contained in:
@@ -43,6 +43,9 @@ public:
|
||||
template <typename T>
|
||||
void encode(const T& v);
|
||||
|
||||
template <typename T>
|
||||
void encode(std::vector<T>& value);
|
||||
|
||||
std::string decode();
|
||||
|
||||
template <typename T>
|
||||
@@ -57,6 +60,9 @@ public:
|
||||
template <typename T>
|
||||
void decode(T& value);
|
||||
|
||||
template <typename T>
|
||||
void decode(std::vector<T>& value);
|
||||
|
||||
void reset();
|
||||
|
||||
//void write();
|
||||
|
||||
@@ -41,6 +41,21 @@ void SyncBuffer::encode(const T& v) {
|
||||
_encodeOffset += size;
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
void SyncBuffer::encode(std::vector<T>& value) {
|
||||
const size_t size = sizeof(T) * value.size();
|
||||
|
||||
encode(static_cast<uint32_t>(value.size()));
|
||||
|
||||
size_t anticpatedBufferSize = _encodeOffset + size;
|
||||
if (anticpatedBufferSize >= _n) {
|
||||
_dataStream.resize(anticpatedBufferSize);
|
||||
}
|
||||
|
||||
std::memcpy(_dataStream.data() + _encodeOffset, value.data(), size);
|
||||
_encodeOffset += size;
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
T SyncBuffer::decode() {
|
||||
const size_t size = sizeof(T);
|
||||
@@ -59,4 +74,16 @@ void SyncBuffer::decode(T& value) {
|
||||
_decodeOffset += size;
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
void SyncBuffer::decode(std::vector<T>& value) {
|
||||
uint32_t size;
|
||||
decode(size);
|
||||
value.resize(size);
|
||||
const size_t sizeInBytes = sizeof(T) * size;
|
||||
ghoul_assert(_decodeOffset + sizeInBytes < _n, "");
|
||||
std::memcpy(value.data(), _dataStream.data() + _decodeOffset, sizeInBytes);
|
||||
_decodeOffset += sizeInBytes;
|
||||
}
|
||||
|
||||
|
||||
} // namespace openspace
|
||||
|
||||
Reference in New Issue
Block a user