<commit_before>/**
 * @file
 */
#pragma once

#include "libbirch/external.hpp"
#include "libbirch/internal.hpp"
#include "libbirch/type.hpp"

#include <numbirch.hpp>

namespace libbirch {
/**
 * @internal
 * 
 * Visitor implementing the second pass of bridge finding.
 */
class Bridger {
public:
  static constexpr int MAX = std::numeric_limits<int>::max();

  std::tuple<int,int,int,int> visit(const int j, const int k) {
    return std::make_tuple(MAX, 0, 0, 0);
  }

  template<class T, std::enable_if_t<
      is_visitable<T,Bridger>::value,int> = 0>
  std::tuple<int,int,int,int> visit(const int j, const int k, T& o) {
    return o.accept_(*this, j, k);
  }

  template<class T, std::enable_if_t<
      !is_visitable<T,Bridger>::value &&
      is_iterable<T>::value,int> = 0>
  std::tuple<int,int,int,int> visit(const int j, const int k, T& o) {
    int l = MAX, h = 0, m = 0, n = 0, l1, h1, m1, n1;
    if (!std::is_trivial<typename T::value_type>::value) {
      auto iter = o.begin();
      auto last = o.end();
      for (; iter != last; ++iter) {
        std::tie(l1, h1, m1, n1) = visit(j + m, k + n, *iter);<commit_msg>Removed #include of numbirch.hpp.<commit_after>/**
 * @file
 */
#pragma once

#include "libbirch/external.hpp"
#include "libbirch/internal.hpp"
#include "libbirch/type.hpp"

namespace libbirch {
/**
 * @internal
 * 
 * Visitor implementing the second pass of bridge finding.
 */
class Bridger {
public:
  static constexpr int MAX = std::numeric_limits<int>::max();

  std::tuple<int,int,int,int> visit(const int j, const int k) {
    return std::make_tuple(MAX, 0, 0, 0);
  }

  template<class T, std::enable_if_t<
      is_visitable<T,Bridger>::value,int> = 0>
  std::tuple<int,int,int,int> visit(const int j, const int k, T& o) {
    return o.accept_(*this, j, k);
  }

  template<class T, std::enable_if_t<
      !is_visitable<T,Bridger>::value &&
      is_iterable<T>::value,int> = 0>
  std::tuple<int,int,int,int> visit(const int j, const int k, T& o) {
    int l = MAX, h = 0, m = 0, n = 0, l1, h1, m1, n1;
    if (!std::is_trivial<typename T::value_type>::value) {
      auto iter = o.begin();
      auto last = o.end();
      for (; iter != last; ++iter) {
        std::tie(l1, h1, m1, n1) = visit(j + m, k + n, *iter);
{'fraction_non_alphanumeric': 0.17751217352810977, 'fraction_numerical': 0.01416555998229305, 'mean_word_length': 3.5934959349593494, 'pattern_counts': {'":': 0, '<': 28, '<?xml version=': 0, '>': 28, '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': '4306578', 'n_tokens_mistral': 915, 'n_tokens_neox': 879, 'n_words': 222}