blob: 63705107b1bf1bea5d96e661c113ad22fd75504b [file] [log] [blame]
// Copyright 2017 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef PERIDOT_BIN_LEDGER_STORAGE_IMPL_DATA_SERIALIZATION_H_
#define PERIDOT_BIN_LEDGER_STORAGE_IMPL_DATA_SERIALIZATION_H_
#include <lib/fxl/strings/string_view.h>
namespace storage {
template <typename I>
I DeserializeData(fxl::StringView value) {
static_assert(std::is_trivially_copyable<I>::value,
"The return type must be trivially copyable.");
FXL_DCHECK(value.size() == sizeof(I));
I result;
memcpy(&result, value.data(), sizeof(I));
return result;
}
template <typename I>
fxl::StringView SerializeData(const I& value) {
static_assert(std::is_trivially_copyable<I>::value,
"The parameter type must be trivially copyable.");
return fxl::StringView(reinterpret_cast<const char*>(&value), sizeof(I));
}
} // namespace storage
#endif // PERIDOT_BIN_LEDGER_STORAGE_IMPL_DATA_SERIALIZATION_H_