metaSMT 2
metaSMT/support/SMT_Graph.hpp
Go to the documentation of this file.
00001 #pragma once
00002 
00003 #include "metaSMT/tags/Logics.hpp"
00004 
00005 #define _BACKWARD_BACKWARD_WARNING_H
00006 #include <boost/graph/graph_traits.hpp>
00007 #include <boost/graph/adjacency_list.hpp>
00008 #undef _BACKWARD_BACKWARD_WARNING_H
00009 #include <boost/function.hpp>
00010 #include <boost/any.hpp>
00011 
00012 namespace boost {
00013   enum edge_input_t { edge_input };
00014   BOOST_INSTALL_PROPERTY (edge, input);
00015 
00016   enum vertex_tag_t { vertex_tag };
00017   BOOST_INSTALL_PROPERTY (vertex, tag);
00018 
00019   enum vertex_arg_t { vertex_arg };
00020   BOOST_INSTALL_PROPERTY (vertex, arg);
00021 }
00022 
00023 namespace metaSMT {
00024   
00025   /* define properties on edges */
00026   typedef boost::property <boost::edge_input_t, size_t> edge_input_property;
00027   typedef edge_input_property SMT_Edge_t;
00028 
00029   /* define properties on Vertices */
00030   typedef boost::property <boost::vertex_arg_t, boost::any > vertex_arg_property;
00031   typedef boost::property <boost::vertex_tag_t, metaSMT::Tag, vertex_arg_property> vertex_tag_property;
00032   typedef vertex_tag_property SMT_Vertex_t;
00033 
00034   typedef boost::adjacency_list<boost::vecS, boost::vecS, boost::directedS
00035                               , SMT_Vertex_t
00036                               , SMT_Edge_t
00037                               > SMT_Graph  ;
00038 
00039   typedef boost::graph_traits<SMT_Graph >::vertex_descriptor SMT_Expression;
00040   typedef boost::graph_traits<SMT_Graph >::edge_descriptor   SMT_Edge;
00041 
00042   
00043 } /* namespace metaSMT */
00044 
00045 //  vim: ft=cpp:ts=2:sw=2:expandtab
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines