EVOLUTION-MANAGER
Edit File: upper_lower_case.hpp
// Copyright (c) 2001-2011 Hartmut Kaiser // Copyright (c) 2001-2011 Joel de Guzman // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) #if !defined(SPIRIT_UPPER_LOWER_CASE_JANUARY_19_2009_1142AM) #define SPIRIT_UPPER_LOWER_CASE_JANUARY_19_2009_1142AM #if defined(_MSC_VER) #pragma once #endif #include <boost/spirit/home/support/common_terminals.hpp> #include <boost/spirit/home/support/modify.hpp> #include <boost/spirit/home/karma/domain.hpp> #include <boost/spirit/home/karma/meta_compiler.hpp> namespace boost { namespace spirit { /////////////////////////////////////////////////////////////////////////// // Enablers /////////////////////////////////////////////////////////////////////////// template <typename CharEncoding> struct use_directive< karma::domain, tag::char_code<tag::upper, CharEncoding> > // enables upper : mpl::true_ {}; template <typename CharEncoding> struct use_directive< karma::domain, tag::char_code<tag::lower, CharEncoding> > // enables lower : mpl::true_ {}; /////////////////////////////////////////////////////////////////////////// template <typename CharEncoding> struct is_modifier_directive<karma::domain , tag::char_code<tag::upper, CharEncoding> > : mpl::true_ {}; template <typename CharEncoding> struct is_modifier_directive<karma::domain , tag::char_code<tag::lower, CharEncoding> > : mpl::true_ {}; /////////////////////////////////////////////////////////////////////////// // Don't add tag::upper or tag::lower if there is already one of those in // the modifier list template <typename Current, typename CharEncoding> struct compound_modifier< Current , tag::char_code<tag::upper, CharEncoding> , typename enable_if< has_modifier<Current, tag::char_code<tag::lower, CharEncoding> > >::type > : Current { compound_modifier() : Current() {} compound_modifier(Current const& current, tag::char_code<tag::upper, CharEncoding> const&) : Current(current) {} }; template <typename Current, typename CharEncoding> struct compound_modifier< Current , tag::char_code<tag::lower, CharEncoding> , typename enable_if< has_modifier<Current, tag::char_code<tag::upper, CharEncoding> > >::type > : Current { compound_modifier() : Current() {} compound_modifier(Current const& current, tag::char_code<tag::lower, CharEncoding> const&) : Current(current) {} }; }} #endif