<commit_before>//#####################################################################
// Header utility/forward
//#####################################################################
#pragma once

#include <geode/utility/config.h>
namespace boost {
template<class T> class shared_ptr;
}
namespace geode {

struct Hasher;
template<class T> class Ptr;
template<class T> class Ref;
template<class I,class Enable=void> struct Range;

// Convenience struct for marking that function semantics have changed
struct Mark {};

// Convenience utility for hiding a type from use in overload resolution
template<class T> struct Hide {
  typedef T type;
};

// Return the first type given (for use in SFINAE)
#ifdef GEODE_VARIADIC
template<class A0,class... Rest> struct First {
  typedef A0 type;
};
#else
template<class A0,class A1=void,class A2=void,class A3=void,class A4=void,class A5=void,class A6=void,class A7=void,class A8=void,class A9=void> struct First {
  typedef A0 type;
};
#endif

// A list of types
#ifdef GEODE_VARIADIC
template<class... Args> struct Types {
  typedef Types type;
};
#else
template<class A0=void,class A1=void,class A2=void,class A3=void,class A4=void,class A5=void,class A6=void,class A7=void,class A8=void,class A9=void> struct Types {
  typedef Types type;
};
#endif

// Null pointer convenience class
struct null {
  template<class T> operator Ptr<T>() {
    return Ptr<T>();
  }

  template<typename T> operator boost::shared_ptr<T>() {
    return boost::shared_ptr<T>();
  }
};

// Marker for special uninitialized constructors
struct Uninit {};
static const Uninit uninit = Uninit();

// GEODE_REMOVE_PARENS((a,b,c)) = a,b,c
#define GEODE_REMOVE_PARENS_HELPER(...) __VA_ARGS__
#define GEODE_REMOVE_PARENS(arg) GEODE_REMOVE_PARENS_HELPER arg

// Print a type at compile time
#define GEODE_PRINT_TYPE(...) typedef typename geode::Types<__VA_ARGS__>::_print _print;

}<commit_msg>Add size field to Types<...><commit_after>//#####################################################################
// Header utility/forward
//#####################################################################
#pragma once

#include <geode/utility/config.h>
namespace boost {
template<class T> class shared_ptr;
}
namespace geode {

struct Hasher;
template<class T> class Ptr;
template<class T> class Ref;
template<class I,class Enable=void> struct Range;

// Convenience struct for marking that function semantics have changed
struct Mark {};

// Convenience utility for hiding a type from use in overload resolution
template<class T> struct Hide {
  typedef T type;
};

// Return the first type given (for use in SFINAE)
#ifdef GEODE_VARIADIC
template<class A0,class... Rest> struct First {
  typedef A0 type;
};
#else
template<class A0,class A1=void,class A2=void,class A3=void,class A4=void,class A5=void,class A6=void,class A7=void,class A8=void,class A9=void> struct First {
  typedef A0 type;
};
#endif

// A list of types
#ifdef GEODE_VARIADIC
template<class... Args> struct Types {
  static const int size = sizeof...(Args);
  typedef Types type;
};
template<class... Args> const int Types<Args...>::size;
#else
template<class A0=void,class A1=void,class A2=void,class A3=void,class A4=void,class A5=void,class A6=void,class A7=void,class A8=void,class A9=void> struct Types {
  typedef Types type;
};
#endif

// Null pointer convenience class
struct null {
  template<class T> operator Ptr<T>() {
    return Ptr<T>();
  }

  template<typename T> operator boost::shared_ptr<T>() {
    return boost::shared_ptr<T>();
  }
};

// Marker for special uninitialized constructors
struct Uninit {};
static const Uninit uninit = Uninit();

// GEODE_REMOVE_PARENS((a,b,c)) = a,b,c
#define GEODE_REMOVE_PARENS_HELPER(...) __VA_ARGS__
#define GEODE_REMOVE_PARENS(arg) GEODE_REMOVE_PARENS_HELPER arg

// Print a type at compile time
#define GEODE_PRINT_TYPE(...) typedef typename geode::Types<__VA_ARGS__>::_print _print;

}
{'fraction_non_alphanumeric': 0.18244274809160305, 'fraction_numerical': 0.011704834605597965, 'mean_word_length': 5.508278145695364, 'pattern_counts': {'":': 0, '<': 40, '<?xml version=': 0, '>': 40, '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': '3792185', 'n_tokens_mistral': 1297, 'n_tokens_neox': 1262, 'n_words': 370}