<commit_before>#ifndef SILICIUM_C_STRING_HPP
#define SILICIUM_C_STRING_HPP

#include <cassert>
#include <silicium/is_handle.hpp>

namespace Si
{
	template <class Char>
	struct basic_c_string
	{
		typedef Char char_type;

		basic_c_string() BOOST_NOEXCEPT : m_begin(nullptr)
		{
		}

		explicit basic_c_string(char_type const *begin)
		    : m_begin(begin)
		{
			assert(m_begin);
		}

		template <size_t N>
		basic_c_string(char_type const(&literal)[N])
		    : m_begin(&literal[0])
		{
		}

		SILICIUM_USE_RESULT
		bool is_set() const BOOST_NOEXCEPT
		{
			return m_begin != nullptr;
		}

		SILICIUM_USE_RESULT
		bool empty() const BOOST_NOEXCEPT
		{
			assert(is_set());
			return (*m_begin == '\0');
		}

		SILICIUM_USE_RESULT
		char_type const *c_str() const BOOST_NOEXCEPT
		{
			assert(is_set());
			return m_begin;
		}

	private:
		char_type const *m_begin;
	};

	typedef basic_c_string<char> c_string;
	typedef basic_c_string<wchar_t> cw_string;

	BOOST_STATIC_ASSERT(is_handle<c_string>::value);
	BOOST_STATIC_ASSERT(is_handle<cw_string>::value);

	typedef
#ifdef _WIN32
	    cw_string
#else
	    c_string
#endif
	        os_c_string;

	typedef os_c_string native_path_string;

#ifdef _WIN32
#define SILICIUM_SYSTEM_LITERAL(x) L##x
#else
#define SILICIUM_SYSTEM_LITERAL(x) x
#endif
}

#endif<commit_msg>add SILICIUM_OS_STR to replace SILICIUM_SYSTEM_LITERAL<commit_after>#ifndef SILICIUM_C_STRING_HPP
#define SILICIUM_C_STRING_HPP

#include <cassert>
#include <silicium/is_handle.hpp>

namespace Si
{
	template <class Char>
	struct basic_c_string
	{
		typedef Char char_type;

		basic_c_string() BOOST_NOEXCEPT : m_begin(nullptr)
		{
		}

		explicit basic_c_string(char_type const *begin)
		    : m_begin(begin)
		{
			assert(m_begin);
		}

		template <size_t N>
		basic_c_string(char_type const(&literal)[N])
		    : m_begin(&literal[0])
		{
		}

		SILICIUM_USE_RESULT
		bool is_set() const BOOST_NOEXCEPT
		{
			return m_begin != nullptr;
		}

		SILICIUM_USE_RESULT
		bool empty() const BOOST_NOEXCEPT
		{
			assert(is_set());
			return (*m_begin == '\0');
		}

		SILICIUM_USE_RESULT
		char_type const *c_str() const BOOST_NOEXCEPT
		{
			assert(is_set());
			return m_begin;
		}

	private:
		char_type const *m_begin;
	};

	typedef basic_c_string<char> c_string;
	typedef basic_c_string<wchar_t> cw_string;

	BOOST_STATIC_ASSERT(is_handle<c_string>::value);
	BOOST_STATIC_ASSERT(is_handle<cw_string>::value);

	typedef
#ifdef _WIN32
	    cw_string
#else
	    c_string
#endif
	        os_c_string;

	typedef os_c_string native_path_string;

#ifdef _WIN32
#define SILICIUM_OS_STR(x) L##x
#else
#define SILICIUM_OS_STR(x) x
#endif

///this macro is deprecated, use SILICIUM_OS_STR directly instead
#define SILICIUM_SYSTEM_LITERAL SILICIUM_OS_STR
}

#endif
{'fraction_non_alphanumeric': 0.09732272069464544, 'fraction_numerical': 0.004341534008683068, 'mean_word_length': 4.552208835341365, 'pattern_counts': {'":': 0, '<': 19, '<?xml version=': 0, '>': 19, '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': '3475545', 'n_tokens_mistral': 1269, 'n_tokens_neox': 1109, 'n_words': 200}