| // char_traits.hpp |
| // Copyright (c) 2007-2009 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 BOOST_LEXER_CHAR_TRAITS_H |
| #define BOOST_LEXER_CHAR_TRAITS_H |
| |
| // Make sure wchar_t is defined |
| #include <string> |
| |
| namespace boost |
| { |
| namespace lexer |
| { |
| template<typename CharT> |
| struct char_traits |
| { |
| typedef CharT char_type; |
| typedef CharT index_type; |
| |
| static index_type call (CharT ch) |
| { |
| return ch; |
| } |
| }; |
| |
| template<> |
| struct char_traits<char> |
| { |
| typedef char char_type; |
| typedef unsigned char index_type; |
| |
| static index_type call (char ch) |
| { |
| return static_cast<index_type>(ch); |
| } |
| }; |
| |
| template<> |
| struct char_traits<wchar_t> |
| { |
| typedef wchar_t char_type; |
| typedef wchar_t index_type; |
| |
| static index_type call (wchar_t ch) |
| { |
| return ch; |
| } |
| }; |
| } |
| } |
| |
| #endif |