metaSMT 2
metaSMT/tags/Logics.hpp
Go to the documentation of this file.
00001 #pragma once
00002 
00003 #include "Logic.hpp"
00004 #include "QF_BV.hpp"
00005 #include "Array.hpp"
00006 
00007 #include <boost/mpl/joint_view.hpp>
00008 #include <boost/mpl/copy.hpp>
00009 #include <boost/mpl/size.hpp>
00010 
00011 namespace metaSMT {
00012 
00013   namespace _all_logic_tags {
00014     typedef boost::mpl::joint_view< 
00015         logic::tag::Predicate_Tags
00016       , logic::QF_BV::tag::QF_BV_Tags 
00017       >::type all_Tags1;
00018 
00019     typedef boost::mpl::joint_view< 
00020         all_Tags1
00021       , logic::Array::tag::Array_Tags 
00022       >::type all_Tags2;
00023 
00024     typedef boost::mpl::copy<
00025        all_Tags2
00026        , boost::mpl::back_inserter< boost::mpl::vector<> >
00027       >::type all_Tags;
00028     //BOOST_MPL_ASSERT_RELATION( boost::mpl::size<allTags>::value, ==, 1 );
00029   }
00030 
00031 
00032   typedef boost::make_variant_over< _all_logic_tags::all_Tags >::type Tag;
00033 
00034 } // namespace metaSMT
00035 
00036 //  vim: ft=cpp:ts=2:sw=2:expandtab
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines