// Copyright Szabolcs Toth (thszabi@gmail.com) 2016. // Copyright Abel Sinkovics (abel@sinkovics.hu) 2016. // 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) #include template struct to_upper_char; template <> struct to_upper_char<-128> : boost::mpl::char_<95> {}; template <> struct to_upper_char<-127> : boost::mpl::char_<96> {}; template <> struct to_upper_char<-126> : boost::mpl::char_<97> {}; template <> struct to_upper_char<-125> : boost::mpl::char_<98> {}; template <> struct to_upper_char<-124> : boost::mpl::char_<99> {}; template <> struct to_upper_char<-123> : boost::mpl::char_<100> {}; template <> struct to_upper_char<-122> : boost::mpl::char_<101> {}; template <> struct to_upper_char<-121> : boost::mpl::char_<102> {}; template <> struct to_upper_char<-120> : boost::mpl::char_<103> {}; template <> struct to_upper_char<-119> : boost::mpl::char_<104> {}; template <> struct to_upper_char<-118> : boost::mpl::char_<105> {}; template <> struct to_upper_char<-117> : boost::mpl::char_<106> {}; template <> struct to_upper_char<-116> : boost::mpl::char_<107> {}; template <> struct to_upper_char<-115> : boost::mpl::char_<108> {}; template <> struct to_upper_char<-114> : boost::mpl::char_<109> {}; template <> struct to_upper_char<-113> : boost::mpl::char_<110> {}; template <> struct to_upper_char<-112> : boost::mpl::char_<111> {}; template <> struct to_upper_char<-111> : boost::mpl::char_<112> {}; template <> struct to_upper_char<-110> : boost::mpl::char_<113> {}; template <> struct to_upper_char<-109> : boost::mpl::char_<114> {}; template <> struct to_upper_char<-108> : boost::mpl::char_<115> {}; template <> struct to_upper_char<-107> : boost::mpl::char_<116> {}; template <> struct to_upper_char<-106> : boost::mpl::char_<117> {}; template <> struct to_upper_char<-105> : boost::mpl::char_<118> {}; template <> struct to_upper_char<-104> : boost::mpl::char_<119> {}; template <> struct to_upper_char<-103> : boost::mpl::char_<120> {}; template <> struct to_upper_char<-102> : boost::mpl::char_<121> {}; template <> struct to_upper_char<-101> : boost::mpl::char_<122> {}; template <> struct to_upper_char<-100> : boost::mpl::char_<123> {}; template <> struct to_upper_char<-99> : boost::mpl::char_<124> {}; template <> struct to_upper_char<-98> : boost::mpl::char_<125> {}; template <> struct to_upper_char<-97> : boost::mpl::char_<126> {}; template <> struct to_upper_char<-96> : boost::mpl::char_<127> {}; template <> struct to_upper_char<-95> : boost::mpl::char_<-127> {}; template <> struct to_upper_char<-94> : boost::mpl::char_<-126> {}; template <> struct to_upper_char<-93> : boost::mpl::char_<-125> {}; template <> struct to_upper_char<-92> : boost::mpl::char_<-124> {}; template <> struct to_upper_char<-91> : boost::mpl::char_<-123> {}; template <> struct to_upper_char<-90> : boost::mpl::char_<-122> {}; template <> struct to_upper_char<-89> : boost::mpl::char_<-121> {}; template <> struct to_upper_char<-88> : boost::mpl::char_<-120> {}; template <> struct to_upper_char<-87> : boost::mpl::char_<-119> {}; template <> struct to_upper_char<-86> : boost::mpl::char_<-118> {}; template <> struct to_upper_char<-85> : boost::mpl::char_<-117> {}; template <> struct to_upper_char<-84> : boost::mpl::char_<-116> {}; template <> struct to_upper_char<-83> : boost::mpl::char_<-115> {}; template <> struct to_upper_char<-82> : boost::mpl::char_<-114> {}; template <> struct to_upper_char<-81> : boost::mpl::char_<-113> {}; template <> struct to_upper_char<-80> : boost::mpl::char_<-112> {}; template <> struct to_upper_char<-79> : boost::mpl::char_<-111> {}; template <> struct to_upper_char<-78> : boost::mpl::char_<-110> {}; template <> struct to_upper_char<-77> : boost::mpl::char_<-109> {}; template <> struct to_upper_char<-76> : boost::mpl::char_<-108> {}; template <> struct to_upper_char<-75> : boost::mpl::char_<-107> {}; template <> struct to_upper_char<-74> : boost::mpl::char_<-106> {}; template <> struct to_upper_char<-73> : boost::mpl::char_<-105> {}; template <> struct to_upper_char<-72> : boost::mpl::char_<-104> {}; template <> struct to_upper_char<-71> : boost::mpl::char_<-103> {}; template <> struct to_upper_char<-70> : boost::mpl::char_<-102> {}; template <> struct to_upper_char<-69> : boost::mpl::char_<-101> {}; template <> struct to_upper_char<-68> : boost::mpl::char_<-100> {}; template <> struct to_upper_char<-67> : boost::mpl::char_<-99> {}; template <> struct to_upper_char<-66> : boost::mpl::char_<-98> {}; template <> struct to_upper_char<-65> : boost::mpl::char_<-97> {}; template <> struct to_upper_char<-64> : boost::mpl::char_<-96> {}; template <> struct to_upper_char<-63> : boost::mpl::char_<-95> {}; template <> struct to_upper_char<-62> : boost::mpl::char_<-94> {}; template <> struct to_upper_char<-61> : boost::mpl::char_<-93> {}; template <> struct to_upper_char<-60> : boost::mpl::char_<-92> {}; template <> struct to_upper_char<-59> : boost::mpl::char_<-91> {}; template <> struct to_upper_char<-58> : boost::mpl::char_<-90> {}; template <> struct to_upper_char<-57> : boost::mpl::char_<-89> {}; template <> struct to_upper_char<-56> : boost::mpl::char_<-88> {}; template <> struct to_upper_char<-55> : boost::mpl::char_<-87> {}; template <> struct to_upper_char<-54> : boost::mpl::char_<-86> {}; template <> struct to_upper_char<-53> : boost::mpl::char_<-85> {}; template <> struct to_upper_char<-52> : boost::mpl::char_<-84> {}; template <> struct to_upper_char<-51> : boost::mpl::char_<-83> {}; template <> struct to_upper_char<-50> : boost::mpl::char_<-82> {}; template <> struct to_upper_char<-49> : boost::mpl::char_<-81> {}; template <> struct to_upper_char<-48> : boost::mpl::char_<-80> {}; template <> struct to_upper_char<-47> : boost::mpl::char_<-79> {}; template <> struct to_upper_char<-46> : boost::mpl::char_<-78> {}; template <> struct to_upper_char<-45> : boost::mpl::char_<-77> {}; template <> struct to_upper_char<-44> : boost::mpl::char_<-76> {}; template <> struct to_upper_char<-43> : boost::mpl::char_<-75> {}; template <> struct to_upper_char<-42> : boost::mpl::char_<-74> {}; template <> struct to_upper_char<-41> : boost::mpl::char_<-73> {}; template <> struct to_upper_char<-40> : boost::mpl::char_<-72> {}; template <> struct to_upper_char<-39> : boost::mpl::char_<-71> {}; template <> struct to_upper_char<-38> : boost::mpl::char_<-70> {}; template <> struct to_upper_char<-37> : boost::mpl::char_<-69> {}; template <> struct to_upper_char<-36> : boost::mpl::char_<-68> {}; template <> struct to_upper_char<-35> : boost::mpl::char_<-67> {}; template <> struct to_upper_char<-34> : boost::mpl::char_<-66> {}; template <> struct to_upper_char<-33> : boost::mpl::char_<-65> {}; template <> struct to_upper_char<-32> : boost::mpl::char_<-64> {}; template <> struct to_upper_char<-31> : boost::mpl::char_<-63> {}; template <> struct to_upper_char<-30> : boost::mpl::char_<-62> {}; template <> struct to_upper_char<-29> : boost::mpl::char_<-61> {}; template <> struct to_upper_char<-28> : boost::mpl::char_<-60> {}; template <> struct to_upper_char<-27> : boost::mpl::char_<-59> {}; template <> struct to_upper_char<-26> : boost::mpl::char_<-58> {}; template <> struct to_upper_char<-25> : boost::mpl::char_<-57> {}; template <> struct to_upper_char<-24> : boost::mpl::char_<-56> {}; template <> struct to_upper_char<-23> : boost::mpl::char_<-55> {}; template <> struct to_upper_char<-22> : boost::mpl::char_<-54> {}; template <> struct to_upper_char<-21> : boost::mpl::char_<-53> {}; template <> struct to_upper_char<-20> : boost::mpl::char_<-52> {}; template <> struct to_upper_char<-19> : boost::mpl::char_<-51> {}; template <> struct to_upper_char<-18> : boost::mpl::char_<-50> {}; template <> struct to_upper_char<-17> : boost::mpl::char_<-49> {}; template <> struct to_upper_char<-16> : boost::mpl::char_<-48> {}; template <> struct to_upper_char<-15> : boost::mpl::char_<-47> {}; template <> struct to_upper_char<-14> : boost::mpl::char_<-46> {}; template <> struct to_upper_char<-13> : boost::mpl::char_<-45> {}; template <> struct to_upper_char<-12> : boost::mpl::char_<-44> {}; template <> struct to_upper_char<-11> : boost::mpl::char_<-43> {}; template <> struct to_upper_char<-10> : boost::mpl::char_<-42> {}; template <> struct to_upper_char<-9> : boost::mpl::char_<-41> {}; template <> struct to_upper_char<-8> : boost::mpl::char_<-40> {}; template <> struct to_upper_char<-7> : boost::mpl::char_<-39> {}; template <> struct to_upper_char<-6> : boost::mpl::char_<-38> {}; template <> struct to_upper_char<-5> : boost::mpl::char_<-37> {}; template <> struct to_upper_char<-4> : boost::mpl::char_<-36> {}; template <> struct to_upper_char<-3> : boost::mpl::char_<-35> {}; template <> struct to_upper_char<-2> : boost::mpl::char_<-34> {}; template <> struct to_upper_char<-1> : boost::mpl::char_<-33> {}; template <> struct to_upper_char<0> : boost::mpl::char_<-32> {}; template <> struct to_upper_char<1> : boost::mpl::char_<-31> {}; template <> struct to_upper_char<2> : boost::mpl::char_<-30> {}; template <> struct to_upper_char<3> : boost::mpl::char_<-29> {}; template <> struct to_upper_char<4> : boost::mpl::char_<-28> {}; template <> struct to_upper_char<5> : boost::mpl::char_<-27> {}; template <> struct to_upper_char<6> : boost::mpl::char_<-26> {}; template <> struct to_upper_char<7> : boost::mpl::char_<-25> {}; template <> struct to_upper_char<8> : boost::mpl::char_<-24> {}; template <> struct to_upper_char<9> : boost::mpl::char_<-23> {}; template <> struct to_upper_char<10> : boost::mpl::char_<-22> {}; template <> struct to_upper_char<11> : boost::mpl::char_<-21> {}; template <> struct to_upper_char<12> : boost::mpl::char_<-20> {}; template <> struct to_upper_char<13> : boost::mpl::char_<-19> {}; template <> struct to_upper_char<14> : boost::mpl::char_<-18> {}; template <> struct to_upper_char<15> : boost::mpl::char_<-17> {}; template <> struct to_upper_char<16> : boost::mpl::char_<-16> {}; template <> struct to_upper_char<17> : boost::mpl::char_<-15> {}; template <> struct to_upper_char<18> : boost::mpl::char_<-14> {}; template <> struct to_upper_char<19> : boost::mpl::char_<-13> {}; template <> struct to_upper_char<20> : boost::mpl::char_<-12> {}; template <> struct to_upper_char<21> : boost::mpl::char_<-11> {}; template <> struct to_upper_char<22> : boost::mpl::char_<-10> {}; template <> struct to_upper_char<23> : boost::mpl::char_<-9> {}; template <> struct to_upper_char<24> : boost::mpl::char_<-8> {}; template <> struct to_upper_char<25> : boost::mpl::char_<-7> {}; template <> struct to_upper_char<26> : boost::mpl::char_<-6> {}; template <> struct to_upper_char<27> : boost::mpl::char_<-5> {}; template <> struct to_upper_char<28> : boost::mpl::char_<-4> {}; template <> struct to_upper_char<29> : boost::mpl::char_<-3> {}; template <> struct to_upper_char<30> : boost::mpl::char_<-2> {}; template <> struct to_upper_char<31> : boost::mpl::char_<-1> {}; template <> struct to_upper_char<32> : boost::mpl::char_<0> {}; template <> struct to_upper_char<33> : boost::mpl::char_<1> {}; template <> struct to_upper_char<34> : boost::mpl::char_<2> {}; template <> struct to_upper_char<35> : boost::mpl::char_<3> {}; template <> struct to_upper_char<36> : boost::mpl::char_<4> {}; template <> struct to_upper_char<37> : boost::mpl::char_<5> {}; template <> struct to_upper_char<38> : boost::mpl::char_<6> {}; template <> struct to_upper_char<39> : boost::mpl::char_<7> {}; template <> struct to_upper_char<40> : boost::mpl::char_<8> {}; template <> struct to_upper_char<41> : boost::mpl::char_<9> {}; template <> struct to_upper_char<42> : boost::mpl::char_<10> {}; template <> struct to_upper_char<43> : boost::mpl::char_<11> {}; template <> struct to_upper_char<44> : boost::mpl::char_<12> {}; template <> struct to_upper_char<45> : boost::mpl::char_<13> {}; template <> struct to_upper_char<46> : boost::mpl::char_<14> {}; template <> struct to_upper_char<47> : boost::mpl::char_<15> {}; template <> struct to_upper_char<48> : boost::mpl::char_<16> {}; template <> struct to_upper_char<49> : boost::mpl::char_<17> {}; template <> struct to_upper_char<50> : boost::mpl::char_<18> {}; template <> struct to_upper_char<51> : boost::mpl::char_<19> {}; template <> struct to_upper_char<52> : boost::mpl::char_<20> {}; template <> struct to_upper_char<53> : boost::mpl::char_<21> {}; template <> struct to_upper_char<54> : boost::mpl::char_<22> {}; template <> struct to_upper_char<55> : boost::mpl::char_<23> {}; template <> struct to_upper_char<56> : boost::mpl::char_<24> {}; template <> struct to_upper_char<57> : boost::mpl::char_<25> {}; template <> struct to_upper_char<58> : boost::mpl::char_<26> {}; template <> struct to_upper_char<59> : boost::mpl::char_<27> {}; template <> struct to_upper_char<60> : boost::mpl::char_<28> {}; template <> struct to_upper_char<61> : boost::mpl::char_<29> {}; template <> struct to_upper_char<62> : boost::mpl::char_<30> {}; template <> struct to_upper_char<63> : boost::mpl::char_<31> {}; template <> struct to_upper_char<64> : boost::mpl::char_<32> {}; template <> struct to_upper_char<65> : boost::mpl::char_<33> {}; template <> struct to_upper_char<66> : boost::mpl::char_<34> {}; template <> struct to_upper_char<67> : boost::mpl::char_<35> {}; template <> struct to_upper_char<68> : boost::mpl::char_<36> {}; template <> struct to_upper_char<69> : boost::mpl::char_<37> {}; template <> struct to_upper_char<70> : boost::mpl::char_<38> {}; template <> struct to_upper_char<71> : boost::mpl::char_<39> {}; template <> struct to_upper_char<72> : boost::mpl::char_<40> {}; template <> struct to_upper_char<73> : boost::mpl::char_<41> {}; template <> struct to_upper_char<74> : boost::mpl::char_<42> {}; template <> struct to_upper_char<75> : boost::mpl::char_<43> {}; template <> struct to_upper_char<76> : boost::mpl::char_<44> {}; template <> struct to_upper_char<77> : boost::mpl::char_<45> {}; template <> struct to_upper_char<78> : boost::mpl::char_<46> {}; template <> struct to_upper_char<79> : boost::mpl::char_<47> {}; template <> struct to_upper_char<80> : boost::mpl::char_<48> {}; template <> struct to_upper_char<81> : boost::mpl::char_<49> {}; template <> struct to_upper_char<82> : boost::mpl::char_<50> {}; template <> struct to_upper_char<83> : boost::mpl::char_<51> {}; template <> struct to_upper_char<84> : boost::mpl::char_<52> {}; template <> struct to_upper_char<85> : boost::mpl::char_<53> {}; template <> struct to_upper_char<86> : boost::mpl::char_<54> {}; template <> struct to_upper_char<87> : boost::mpl::char_<55> {}; template <> struct to_upper_char<88> : boost::mpl::char_<56> {}; template <> struct to_upper_char<89> : boost::mpl::char_<57> {}; template <> struct to_upper_char<90> : boost::mpl::char_<58> {}; template <> struct to_upper_char<91> : boost::mpl::char_<59> {}; template <> struct to_upper_char<92> : boost::mpl::char_<60> {}; template <> struct to_upper_char<93> : boost::mpl::char_<61> {}; template <> struct to_upper_char<94> : boost::mpl::char_<62> {}; template <> struct to_upper_char<95> : boost::mpl::char_<63> {}; template <> struct to_upper_char<96> : boost::mpl::char_<64> {}; template <> struct to_upper_char<97> : boost::mpl::char_<65> {}; template <> struct to_upper_char<98> : boost::mpl::char_<66> {}; template <> struct to_upper_char<99> : boost::mpl::char_<67> {}; template <> struct to_upper_char<100> : boost::mpl::char_<68> {}; template <> struct to_upper_char<101> : boost::mpl::char_<69> {}; template <> struct to_upper_char<102> : boost::mpl::char_<70> {}; template <> struct to_upper_char<103> : boost::mpl::char_<71> {}; template <> struct to_upper_char<104> : boost::mpl::char_<72> {}; template <> struct to_upper_char<105> : boost::mpl::char_<73> {}; template <> struct to_upper_char<106> : boost::mpl::char_<74> {}; template <> struct to_upper_char<107> : boost::mpl::char_<75> {}; template <> struct to_upper_char<108> : boost::mpl::char_<76> {}; template <> struct to_upper_char<109> : boost::mpl::char_<77> {}; template <> struct to_upper_char<110> : boost::mpl::char_<78> {}; template <> struct to_upper_char<111> : boost::mpl::char_<79> {}; template <> struct to_upper_char<112> : boost::mpl::char_<80> {}; template <> struct to_upper_char<113> : boost::mpl::char_<81> {}; template <> struct to_upper_char<114> : boost::mpl::char_<82> {}; template <> struct to_upper_char<115> : boost::mpl::char_<83> {}; template <> struct to_upper_char<116> : boost::mpl::char_<84> {}; template <> struct to_upper_char<117> : boost::mpl::char_<85> {}; template <> struct to_upper_char<118> : boost::mpl::char_<86> {}; template <> struct to_upper_char<119> : boost::mpl::char_<87> {}; template <> struct to_upper_char<120> : boost::mpl::char_<88> {}; template <> struct to_upper_char<121> : boost::mpl::char_<89> {}; template <> struct to_upper_char<122> : boost::mpl::char_<90> {}; template <> struct to_upper_char<123> : boost::mpl::char_<91> {}; template <> struct to_upper_char<124> : boost::mpl::char_<92> {}; template <> struct to_upper_char<125> : boost::mpl::char_<93> {}; template <> struct to_upper_char<126> : boost::mpl::char_<94> {}; template <> struct to_upper_char<127> : boost::mpl::char_<95> {}; template struct to_upper; template struct to_upper> : boost::metaparse::string::value...> {}; #define CAT_IMPL(a, b) a ## b #define CAT(a, b) CAT_IMPL(a, b) #define TEST_STRING(...) to_upper< __VA_ARGS__ >::type CAT(v, __LINE__);