#ifndef FUZZTEST_FUZZTEST_INTERNAL_DOMAINS_SERIALIZATION_HELPERS_H_
#define FUZZTEST_FUZZTEST_INTERNAL_DOMAINS_SERIALIZATION_HELPERS_H_
#include <cstddef>
#include <optional>
#include <tuple>
#include <utility>
#include <variant>
#include <vector>
#include "absl/types/span.h"
#include "./fuzztest/internal/domains/domain.h"
#include "./fuzztest/internal/meta.h"
#include "./fuzztest/internal/serialization.h"
namespace fuzztest::internal {
template <typename... Domain>
IRObject SerializeWithDomainVariant(
const std::tuple<Domain...>& domains,
const std::variant<corpus_type_t<Domain>...>& v) { … }
template <typename... Domain,
typename ReturnT = std::variant<corpus_type_t<Domain>...>>
std::optional<ReturnT> ParseWithDomainVariant(
const std::tuple<Domain...>& domains, const IRObject& obj) { … }
template <typename T>
auto SerializeWithDomainOptional(
const Domain<T>& domain,
const std::variant<std::monostate, GenericDomainCorpusType>& v) { … }
template <typename T, typename ReturnT =
std::variant<std::monostate, GenericDomainCorpusType>>
std::optional<ReturnT> ParseWithDomainOptional(const Domain<T>& domain,
const IRObject& obj) { … }
template <typename... Domain>
auto SerializeWithDomainTuple(
const std::tuple<Domain...>& domains,
const std::tuple<corpus_type_t<Domain>...>& corpus) { … }
template <typename... Domain>
std::optional<std::tuple<corpus_type_t<Domain>...>> ParseWithDomainTuple(
const std::tuple<Domain...>& domains, const IRObject& obj, int skip = 0) { … }
}
#endif