2016-01-18 15:33:29 +00:00
|
|
|
// Copyright (c) 2011-2016 The Cryptonote developers
|
2015-09-18 11:55:31 +00:00
|
|
|
// Distributed under the MIT/X11 software license, see the accompanying
|
|
|
|
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
2015-08-05 13:09:05 +00:00
|
|
|
|
|
|
|
#include "Serialization/SerializationOverloads.h"
|
|
|
|
|
|
|
|
#include <limits>
|
|
|
|
|
|
|
|
namespace CryptoNote {
|
|
|
|
|
|
|
|
void serializeBlockHeight(ISerializer& s, uint32_t& blockHeight, Common::StringView name) {
|
|
|
|
if (s.type() == ISerializer::INPUT) {
|
|
|
|
uint64_t height;
|
|
|
|
s(height, name);
|
|
|
|
|
|
|
|
if (height == std::numeric_limits<uint64_t>::max()) {
|
|
|
|
blockHeight = std::numeric_limits<uint32_t>::max();
|
|
|
|
} else if (height > std::numeric_limits<uint32_t>::max() && height < std::numeric_limits<uint64_t>::max()) {
|
|
|
|
throw std::runtime_error("Deserialization error: wrong value");
|
|
|
|
} else {
|
|
|
|
blockHeight = static_cast<uint32_t>(height);
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
s(blockHeight, name);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
void serializeGlobalOutputIndex(ISerializer& s, uint32_t& globalOutputIndex, Common::StringView name) {
|
|
|
|
serializeBlockHeight(s, globalOutputIndex, name);
|
|
|
|
}
|
|
|
|
|
|
|
|
} //namespace CryptoNote
|