/src/CMake/Source/cmSbomSerializer.h
Line | Count | Source |
1 | | /* Distributed under the OSI-approved BSD 3-Clause License. See accompanying |
2 | | file LICENSE.rst or https://cmake.org/licensing for details. */ |
3 | | #pragma once |
4 | | |
5 | | #include <string> |
6 | | #include <vector> |
7 | | |
8 | | #include <cm/optional> |
9 | | |
10 | | class cmSbomObject; |
11 | | class cmSbomSerializer |
12 | | { |
13 | | public: |
14 | 0 | cmSbomSerializer() = default; |
15 | | cmSbomSerializer(cmSbomSerializer const&) = default; |
16 | | cmSbomSerializer(cmSbomSerializer&&) = default; |
17 | | cmSbomSerializer& operator=(cmSbomSerializer const&) = default; |
18 | | cmSbomSerializer& operator=(cmSbomSerializer&&) = default; |
19 | | |
20 | 0 | virtual void BeginObject() {} |
21 | 0 | virtual void EndObject() {} |
22 | 0 | virtual void BeginArray() {} |
23 | 0 | virtual void EndArray() {} |
24 | | |
25 | | virtual void AddReference(std::string const& id) = 0; |
26 | | |
27 | | virtual void AddString(std::string const& key, std::string const& value) = 0; |
28 | | virtual void AddVisitable(std::string const& key, |
29 | | cmSbomObject const& visitable) = 0; |
30 | | |
31 | | virtual void AddVectorIfPresent(std::string const& key, |
32 | | std::vector<cmSbomObject> const& vec) = 0; |
33 | | virtual void AddVectorIfPresent(std::string const& key, |
34 | | std::vector<std::string> const& vec) = 0; |
35 | | |
36 | | virtual bool WriteSbom(std::ostream& os, cmSbomObject const& document) = 0; |
37 | 0 | virtual ~cmSbomSerializer() = default; |
38 | | }; |