| /* Distributed under the OSI-approved BSD 3-Clause License. See accompanying |
| file LICENSE.rst or https://cmake.org/licensing for details. */ |
| #pragma once |
| |
| #include <string> |
| #include <vector> |
| |
| #include <cm/optional> |
| |
| 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<cmSbomObject> const& vec) = 0; |
| virtual void AddVectorIfPresent(std::string const& key, |
| std::vector<std::string> const& vec) = 0; |
| |
| virtual bool WriteSbom(std::ostream& os, cmSbomObject const& document) = 0; |
| virtual ~cmSbomSerializer() = default; |
| }; |