llvm/llvm/include/llvm/ProfileData/Coverage/MCDCTypes.h

//===- MCDCTypes.h - Types related to MC/DC Coverage ------------*- C++ -*-===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//
//
// Types related to MC/DC Coverage.
//
//===----------------------------------------------------------------------===//

#ifndef LLVM_PROFILEDATA_COVERAGE_MCDCTYPES_H
#define LLVM_PROFILEDATA_COVERAGE_MCDCTYPES_H

#include <array>
#include <cassert>
#include <type_traits>
#include <variant>

namespace llvm::coverage::mcdc {

/// The ID for MCDCBranch.
ConditionID;
ConditionIDs;

struct DecisionParameters {};

struct BranchParameters {};

/// The type of MC/DC-specific parameters.
Parameters;

/// Check and get underlying params in MCDCParams.
/// \tparam MaybeConstInnerParameters Type to get. May be const.
/// \tparam MaybeConstMCDCParameters Expected inferred. May be const.
/// \param MCDCParams May be const.
template <class MaybeConstInnerParameters, class MaybeConstMCDCParameters>
static auto &getParams(MaybeConstMCDCParameters &MCDCParams) {}

} // namespace llvm::coverage::mcdc

#endif // LLVM_PROFILEDATA_COVERAGE_MCDCTYPES_H