// Squawk messenger. // Copyright (C) 2019 Yury Gubich // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program. If not, see . #include "serializer.h" template Core::DataBase::Serializer::Serializer() : bytes(), buffer(&bytes), stream(&buffer) { buffer.open(QIODevice::WriteOnly); } template Core::DataBase::Serializer::Serializer(const T& value) : bytes(), buffer(&bytes), stream(&buffer) { buffer.open(QIODevice::WriteOnly); _setValue(value); } template Core::DataBase::Serializer::~Serializer() { buffer.close(); } template MDB_val Core::DataBase::Serializer::setData(const T& value) { clear(); _setValue(value); return getValue(); } template void Core::DataBase::Serializer::_setData(const T& value) { stream << value; } template void Core::DataBase::Serializer::clear() { if (buffer.pos() > 0) { buffer.seek(0); } } template MDB_val Core::DataBase::Serializer::getData() { MDB_val val; val.mv_size = buffer.pos(); val.mv_data = (uint8_t*)bytes.data(); return val; }