mirror of
https://github.com/Kitware/CMake.git
synced 2026-01-01 11:22:21 -06:00
Adds definitions for representing software bill of materials (SBOM) information and generating SPDX SBOMs. Issue: #26719 Issue: #27001
39 lines
1.3 KiB
C++
39 lines
1.3 KiB
C++
/* 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;
|
|
};
|