/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying file LICENSE.rst or https://cmake.org/licensing for details. */ #pragma once #include #include #include class cmSbomObject; class cmSbomSerializer { public: cmSbomSerializer() = default; cmSbomSerializer(cmSbomSerializer const&) = default; cmSbomSerializer(cmSbomSerializer&&) = default; cmSbomSerializer& operator=(cmSbomSerializer const&) = default; cmSbomSerializer& operator=(cmSbomSerializer&&) = default; virtual void BeginObject() {} virtual void EndObject() {} virtual void BeginArray() {} virtual void EndArray() {} virtual void AddReference(std::string const& id) = 0; virtual void AddString(std::string const& key, std::string const& value) = 0; virtual void AddVisitable(std::string const& key, cmSbomObject const& visitable) = 0; virtual void AddVectorIfPresent(std::string const& key, std::vector const& vec) = 0; virtual void AddVectorIfPresent(std::string const& key, std::vector const& vec) = 0; virtual bool WriteSbom(std::ostream& os, cmSbomObject const& document) = 0; virtual ~cmSbomSerializer() = default; };