<commit_before>#pragma once

// C++ Standard Library
#include <cstdlib>

// Armadillo
#include <armadillo>

namespace hop {
  // Calculates a hash value for custom types.
  class CacheHasher {
    public:
      explicit CacheHasher() = default;


      CacheHasher(const CacheHasher&) = delete;
      CacheHasher& operator=(const CacheHasher&) = delete;

      // Returns a hash value for column vectors.
      // Note: This is adapted from the Boost library (boost::hash_combine).
      std::size_t operator() (
          const arma::Col<double>& key) const;
  };

  // Checks whether two keys of a custom type are equal.
  class CacheKeyEqual {
    public:
      explicit CacheKeyEqual() = default;

      CacheKeyEqual(const CacheKeyEqual&) = delete;
      CacheKeyEqual& operator=(const CacheKeyEqual&) = delete;

      // Returns true if all values of both column vectors are equal.
      bool operator() (
          const arma::Col<double>& firstKey,
          const arma::Col<double>& secondKey) const;
  };
}<commit_msg>fix: Revert deletion of copy costructor<commit_after>#pragma once

// C++ Standard Library
#include <cstdlib>

// Armadillo
#include <armadillo>

namespace hop {
  // Calculates a hash value for custom types.
  class CacheHasher {
    public:
      explicit CacheHasher() = default;

      CacheHasher(const CacheHasher&) = default;

      CacheHasher& operator=(const CacheHasher&) = delete;

      // Returns a hash value for column vectors.
      // Note: This is adapted from the Boost library (boost::hash_combine).
      std::size_t operator() (
          const arma::Col<double>& key) const;
  };

  // Checks whether two keys of a custom type are equal.
  class CacheKeyEqual {
    public:
      explicit CacheKeyEqual() = default;

      CacheKeyEqual(const CacheKeyEqual&) = default;

      CacheKeyEqual& operator=(const CacheKeyEqual&) = delete;

      // Returns true if all values of both column vectors are equal.
      bool operator() (
          const arma::Col<double>& firstKey,
          const arma::Col<double>& secondKey) const;
  };
}
{'fraction_non_alphanumeric': 0.10215827338129496, 'fraction_numerical': 0.0, 'mean_word_length': 2.943289224952741, 'pattern_counts': {'":': 0, '<': 13, '<?xml version=': 0, '>': 13, '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': '907869', 'n_tokens_mistral': 608, 'n_tokens_neox': 593, 'n_words': 199}