// Copyright 2019 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "serializable.h" #include namespace v8_crdtp { // ============================================================================= // Serializable - An object to be emitted as a sequence of bytes. // ============================================================================= std::vector Serializable::Serialize() const { std::vector out; AppendSerialized(&out); return out; } namespace { class PreSerialized : public Serializable { public: explicit PreSerialized(std::vector bytes) : bytes_(std::move(bytes)) {} void AppendSerialized(std::vector* out) const override { out->insert(out->end(), bytes_.begin(), bytes_.end()); } private: std::vector bytes_; }; } // namespace // static std::unique_ptr Serializable::From(std::vector bytes) { return std::make_unique(std::move(bytes)); } } // namespace v8_crdtp