MACE  1.0.0
 All Classes Namespaces Files Functions Variables Enumerations Defines
libs/rpc/include/mace/rpc/json/named_parameters.hpp
00001 #ifndef __MACE_RPC_JSON_NAMED_PARAMETERS_HPP_
00002 #define __MACE_RPC_JSON_NAMED_PARAMETERS_HPP_
00003 #include <boost/mpl/if.hpp>
00004 #include <boost/fusion/include/mpl.hpp>
00005 #include <boost/fusion/adapted/mpl.hpp>
00006 #include <boost/fusion/include/make_vector.hpp>
00007 #include <boost/function_types/parameter_types.hpp>
00008 #include <boost/function_types/result_type.hpp>
00009 
00010 namespace mace { namespace rpc { namespace json {
00011   struct named_parameters{};
00012   // namespace detail
00017   template<typename Seq>
00018   struct has_named_params : 
00019      public boost::mpl::if_c<
00020               (boost::is_base_of<named_parameters, 
00021                                  typename boost::fusion::traits::deduce<
00022                                      typename boost::fusion::result_of::front<Seq>::type >::type>::value 
00023               && (1 ==  boost::fusion::result_of::size<Seq>::value))
00024      , boost::true_type, boost::false_type>::type 
00025   { };
00026 
00027 } } }
00028 
00029 #endif // __MACE_RPC_JSON_NAMED_PARAMETERS_HPP_