mirror of
https://github.com/YACReader/yacreader
synced 2025-05-28 03:10:27 -04:00
46 lines
899 B
C++
46 lines
899 B
C++
// char_traits.hpp
|
|
// Copyright (c) 2005-2018 Ben Hanson (http://www.benhanson.net/)
|
|
//
|
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
|
// file licence_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
|
|
|
#ifndef LEXERTL_CHAR_TRAITS_HPP
|
|
#define LEXERTL_CHAR_TRAITS_HPP
|
|
|
|
#include <cstddef>
|
|
|
|
namespace lexertl
|
|
{
|
|
template<typename ch_type>
|
|
struct basic_char_traits
|
|
{
|
|
using char_type = ch_type;
|
|
using index_type = ch_type;
|
|
|
|
static index_type max_val()
|
|
{
|
|
const std::uint32_t max_ = 0x10ffff;
|
|
|
|
return sizeof(char_type) > 2 ?
|
|
max_ : (max_ & 0xffff);
|
|
}
|
|
};
|
|
|
|
template<>
|
|
struct basic_char_traits<char>
|
|
{
|
|
using char_type = char;
|
|
using index_type = unsigned char;
|
|
|
|
static index_type max_val()
|
|
{
|
|
// Prevent annoying warning (VC++)
|
|
index_type zero_ = 0;
|
|
|
|
return ~zero_;
|
|
}
|
|
};
|
|
}
|
|
|
|
#endif
|