<commit_before>#pragma once

#include <iostream>
#include <string>
#include <sstream>
#include <iomanip>

#include "rapidcheck/detail/Traits.h"

namespace rc {
namespace detail {

template<typename TupleT,
         std::size_t I = std::tuple_size<TupleT>::value>
struct TupleHelper;

template<std::size_t I>
struct TupleHelper<std::tuple<>, I>
{
    static void showTuple(const std::tuple<> &tuple, std::ostream &os) {}
};

template<typename TupleT>
struct TupleHelper<TupleT, 1>
{
    static void showTuple(const TupleT &tuple, std::ostream &os)
    { show(std::get<std::tuple_size<TupleT>::value - 1>(tuple), os); }
};

template<typename TupleT, std::size_t I>
struct TupleHelper
{
    static void showTuple(const TupleT &tuple, std::ostream &os)
    {
        show(std::get<std::tuple_size<TupleT>::value - I>(tuple), os);
        os << ", ";
        TupleHelper<TupleT, I - 1>::showTuple(tuple, os);
    }
};

} // namespace detail

void showValue(uint8_t value, std::ostream &os)
{
    os << int(value);
}

template<typename T>
void showValue(T *p, std::ostream &os)
{
    show(*p, os);
    auto flags = os.flags();
    os << " (" << std::hex << std::showbase << p << ")";
    os.flags(flags);
}

template<typename T, typename Deleter>
void showValue(const std::unique_ptr<T, Deleter> &p, std::ostream &os)
{
    show(p.get(), os);
}

template<typename T>
void showValue(const std::shared_ptr<T> &p, std::ostream &os)
{
    show(p.get(), os);
}

//! Displays `p.get()`.
template<typename T>
void showValue(const std::shared_ptr<T> &p, std::ostream &os);

template<typename T1, typename T2>
void showValue(const std::pair<T1, T2> &pair, std::ostream &os)
{
    os << "(";
    show(pair.first, os);
    os << ", ";
    show(pair.second, os);
    os << ")";
}

template<typename ...Types>
void showValue(const std::tuple<Types...> &tuple, std::ostream &os)
{
    os << "(";
    detail::TupleHelper<std::tuple<Types...>>::showTuple(tuple, os);
    os << ")";
}

template<typename Collection>
void showCollection(const std::string &prefix,
                    const std::string &suffix,
                    const Collection &collection,
                    std::ostream &os)<commit_msg>Remove useless declaration from Show.hpp<commit_after>#pragma once

#include <iostream>
#include <string>
#include <sstream>
#include <iomanip>

#include "rapidcheck/detail/Traits.h"

namespace rc {
namespace detail {

template<typename TupleT,
         std::size_t I = std::tuple_size<TupleT>::value>
struct TupleHelper;

template<std::size_t I>
struct TupleHelper<std::tuple<>, I>
{
    static void showTuple(const std::tuple<> &tuple, std::ostream &os) {}
};

template<typename TupleT>
struct TupleHelper<TupleT, 1>
{
    static void showTuple(const TupleT &tuple, std::ostream &os)
    { show(std::get<std::tuple_size<TupleT>::value - 1>(tuple), os); }
};

template<typename TupleT, std::size_t I>
struct TupleHelper
{
    static void showTuple(const TupleT &tuple, std::ostream &os)
    {
        show(std::get<std::tuple_size<TupleT>::value - I>(tuple), os);
        os << ", ";
        TupleHelper<TupleT, I - 1>::showTuple(tuple, os);
    }
};

} // namespace detail

void showValue(uint8_t value, std::ostream &os)
{
    os << int(value);
}

template<typename T>
void showValue(T *p, std::ostream &os)
{
    show(*p, os);
    auto flags = os.flags();
    os << " (" << std::hex << std::showbase << p << ")";
    os.flags(flags);
}

template<typename T, typename Deleter>
void showValue(const std::unique_ptr<T, Deleter> &p, std::ostream &os)
{
    show(p.get(), os);
}

template<typename T>
void showValue(const std::shared_ptr<T> &p, std::ostream &os)
{
    show(p.get(), os);
}

template<typename T1, typename T2>
void showValue(const std::pair<T1, T2> &pair, std::ostream &os)
{
    os << "(";
    show(pair.first, os);
    os << ", ";
    show(pair.second, os);
    os << ")";
}

template<typename ...Types>
void showValue(const std::tuple<Types...> &tuple, std::ostream &os)
{
    os << "(";
    detail::TupleHelper<std::tuple<Types...>>::showTuple(tuple, os);
    os << ")";
}

template<typename Collection>
void showCollection(const std::string &prefix,
                    const std::string &suffix,
                    const Collection &collection,
                    std::ostream &os)
{'fraction_non_alphanumeric': 0.17715617715617715, 'fraction_numerical': 0.0037296037296037296, 'mean_word_length': 3.8322072072072073, 'pattern_counts': {'":': 0, '<': 113, '<?xml version=': 0, '>': 65, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '4794190', 'n_tokens_mistral': 1505, 'n_tokens_neox': 1481, 'n_words': 341}