Chris@16: // Copyright (c) 2001-2011 Hartmut Kaiser Chris@16: // Copyright (c) 2001-2011 Joel de Guzman Chris@16: // Chris@16: // Distributed under the Boost Software License, Version 1.0. (See accompanying Chris@16: // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) Chris@16: Chris@16: #if !defined(SPIRIT_KARMA_SEQUENCE_FEB_28_2007_0249PM) Chris@16: #define SPIRIT_KARMA_SEQUENCE_FEB_28_2007_0249PM Chris@16: Chris@16: #if defined(_MSC_VER) Chris@16: #pragma once Chris@16: #endif Chris@16: Chris@16: #include Chris@16: #include Chris@16: Chris@16: namespace boost { namespace spirit { namespace karma { namespace detail Chris@16: { Chris@16: template Chris@16: struct fail_function Chris@16: { Chris@16: typedef Context context_type; Chris@16: Chris@16: fail_function(OutputIterator& sink_, Context& context_ Chris@16: , Delimiter const& delim_) Chris@16: : sink(sink_), ctx(context_), delim(delim_) Chris@16: {} Chris@16: Chris@16: template Chris@16: bool operator()(Component const& component, Attribute const& attr) const Chris@16: { Chris@16: #if BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1600)) Chris@16: component; // suppresses warning: C4100: 'component' : unreferenced formal parameter Chris@16: #endif Chris@16: // return true if any of the generators fail Chris@16: return !component.generate(sink, ctx, delim, attr); Chris@16: } Chris@16: Chris@16: template Chris@16: bool operator()(Component const& component) const Chris@16: { Chris@16: #if BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1600)) Chris@16: component; // suppresses warning: C4100: 'component' : unreferenced formal parameter Chris@16: #endif Chris@16: // return true if any of the generators fail Chris@16: return !component.generate(sink, ctx, delim, unused); Chris@16: } Chris@16: Chris@16: OutputIterator& sink; Chris@16: Context& ctx; Chris@16: Delimiter const& delim; Chris@16: Chris@16: private: Chris@16: // silence MSVC warning C4512: assignment operator could not be generated Chris@16: fail_function& operator= (fail_function const&); Chris@16: }; Chris@16: Chris@16: }}}} Chris@16: Chris@16: #endif