<commit_before>#pragma once

#include "kl/type_traits.hpp"
#include "kl/ctti.hpp"
#include "kl/enum_reflector.hpp"
#include "kl/enum_set.hpp"
#include "kl/tuple.hpp"
#include "kl/utility.hpp"

#include <rapidjson/document.h>
#include <rapidjson/error/en.h>
#include <rapidjson/stringbuffer.h>
#include <rapidjson/writer.h>

#include <optional>
#include <exception>
#include <string>
#include <string_view>

#if defined(GetObject)
#undef GetObject
#endif

namespace rapidjson {

KL_DESCRIBE_ENUM(Type, kNullType, kFalseType, kTrueType, kObjectType,
                 kArrayType, kStringType, kNumberType)
} // namespace rapidjson

namespace kl {
namespace json {

template <typename T>
struct encoder;<commit_msg>Move undef directive before including rapidjson files<commit_after>#pragma once

#include "kl/type_traits.hpp"
#include "kl/ctti.hpp"
#include "kl/enum_reflector.hpp"
#include "kl/enum_set.hpp"
#include "kl/tuple.hpp"
#include "kl/utility.hpp"

// Undefine Win32 macro
#if defined(GetObject)
#undef GetObject
#endif

#include <rapidjson/document.h>
#include <rapidjson/error/en.h>
#include <rapidjson/stringbuffer.h>
#include <rapidjson/writer.h>

#include <optional>
#include <exception>
#include <string>
#include <string_view>

namespace rapidjson {

KL_DESCRIBE_ENUM(Type, kNullType, kFalseType, kTrueType, kObjectType,
                 kArrayType, kStringType, kNumberType)
} // namespace rapidjson

namespace kl {
namespace json {

template <typename T>
struct encoder;
{'fraction_non_alphanumeric': 0.1224764468371467, 'fraction_numerical': 0.0013458950201884253, 'mean_word_length': 5.493449781659389, 'pattern_counts': {'":': 0, '<': 21, '<?xml version=': 0, '>': 21, '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': '6301176', 'n_tokens_mistral': 529, 'n_tokens_neox': 519, 'n_words': 120}