Files
UnrealEngine/Engine/Source/ThirdParty/FakeIt/2.0.2/include/mockutils/TuplePrinter.hpp
2025-05-18 13:04:45 +08:00

53 lines
1.4 KiB
C++

/*
* Copyright (c) 2014 Eran Pe'er.
*
* This program is made available under the terms of the MIT License.
*
* Created on Mar 10, 2014
*/
#pragma once
#include <iosfwd>
#include <tuple>
#include <string>
#include <sstream>
#include "mockutils/Formatter.hpp"
namespace fakeit {
// helper function to print a tuple of Any size
template<class Tuple, std::size_t N>
struct TuplePrinter {
static void print(std::ostream &strm, const Tuple &t) {
TuplePrinter<Tuple, N - 1>::print(strm, t);
strm << ", " << fakeit::Formatter<decltype(std::get<N - 1>(t))>::format(std::get<N - 1>(t));
}
};
template<class Tuple>
struct TuplePrinter<Tuple, 1> {
static void print(std::ostream &strm, const Tuple &t) {
strm << fakeit::Formatter<decltype(std::get<0>(t))>::format(std::get<0>(t));
}
};
template<class Tuple>
struct TuplePrinter<Tuple, 0> {
static void print(std::ostream &, const Tuple &) {
}
};
template<class ... Args>
void print(std::ostream &strm, const std::tuple<Args...> &t) {
strm << "(";
TuplePrinter<decltype(t), sizeof...(Args)>::print(strm, t);
strm << ")";
}
template<class ... Args>
std::ostream &operator<<(std::ostream &strm, const std::tuple<Args...> &t) {
print(strm, t);
return strm;
}
}