// $Id: ParserActions.h,v 1.2 2007/05/24 14:41:21 hmd Exp $ // ============================================================================ // CVS tag $Name: $ // ============================================================================ #ifndef JOBOPTIONSSVC_PARSERACTIONS_H #define JOBOPTIONSSVC_PARSERACTIONS_H 1 // ============================================================================ // Include files // ============================================================================ // STD & STL // ============================================================================ #include // ============================================================================ // Boost.Spirit.Phoenix // ============================================================================ #include #if BOOST_VERSION >= 103800 // FIXME: Move to the new boost::spirit::classic namespace #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE) #define BOOST_SPIRIT_USE_OLD_NAMESPACE #endif #include #else #include #endif // ============================================================================ // Boost.conversion // ============================================================================ #include // ============================================================================ namespace Gaudi { namespace Parsers { template class PushBackImpl { T&data; public: PushBackImpl(T &x):data(x){} template struct result{ typedef void type; }; template void eval(const Arg &x)const{ data().push_back(x[phoenix::tuple_index<0>()]); } }; template class PushBackRefImpl { T& data; IT item; public: PushBackRefImpl(T &x,IT it):data(x),item(it){} template struct result{ typedef void type; }; template void eval(const Arg & /*x*/ )const{ data().push_back(item); } }; template class AssignBoolToStringImpl { T &data; public: AssignBoolToStringImpl(T &x):data(x){} template struct result{ typedef void type; }; template void eval(const Arg &x)const{ data() = x[phoenix::tuple_index<0>()]?"1":"0"; } }; template inline typename phoenix::actor > PushBack(T &x) { return PushBackImpl (x); } template inline typename phoenix::actor > PushBack(T &x,IT it) { return PushBackRefImpl (x,it); } template inline typename phoenix::actor > AssignBoolToString(T &x){ return AssignBoolToStringImpl (x); } } // end of namespace Parsers } // end of namespace Gaudi // ============================================================================ // The END // ============================================================================ #endif // JOBOPTIONSSVC_PARSERACTIONS_H // ============================================================================