Mercurial > hg > vamp-build-and-test
diff DEPENDENCIES/generic/include/boost/spirit/home/karma/detail/as.hpp @ 16:2665513ce2d3
Add boost headers
author | Chris Cannam |
---|---|
date | Tue, 05 Aug 2014 11:11:38 +0100 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/DEPENDENCIES/generic/include/boost/spirit/home/karma/detail/as.hpp Tue Aug 05 11:11:38 2014 +0100 @@ -0,0 +1,74 @@ +// Copyright (c) 2001-2011 Hartmut Kaiser +// +// Distributed under the Boost Software License, Version 1.0. (See accompanying +// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#if !defined(BOOST_SPIRIT_KARMA_AS_STRING_DEC_18_0644PM) +#define BOOST_SPIRIT_KARMA_AS_STRING_DEC_18_0644PM + +#if defined(_MSC_VER) +#pragma once +#endif + +#include <boost/spirit/home/support/unused.hpp> +#include <boost/spirit/home/support/attributes_fwd.hpp> + +/////////////////////////////////////////////////////////////////////////////// +namespace boost { namespace spirit { namespace traits +{ + /////////////////////////////////////////////////////////////////////////// + // This file contains the attribute to string conversion utility. The + // utility provided also accept spirit's unused_type; all no-ops. Compiler + // optimization will easily strip these away. + /////////////////////////////////////////////////////////////////////////// + + /////////////////////////////////////////////////////////////////////////// + template <typename T, typename Attribute> + inline typename spirit::result_of::attribute_as<T, Attribute>::type + as(Attribute const& attr) + { + return attribute_as<T, Attribute>::call(attr); + } + + template <typename T> + inline unused_type as(unused_type) + { + return unused; + } + + /////////////////////////////////////////////////////////////////////////// + template <typename T, typename Attribute> + inline bool valid_as(Attribute const& attr) + { + return attribute_as<T, Attribute>::is_valid(attr); + } + + template <typename T> + inline bool valid_as(unused_type) + { + return true; + } +}}} + +/////////////////////////////////////////////////////////////////////////////// +namespace boost { namespace spirit { namespace result_of +{ + template <typename T, typename Attribute> + struct attribute_as + : traits::attribute_as<T, Attribute> + {}; + + template <typename T> + struct attribute_as<T, unused_type> + { + typedef unused_type type; + }; + + template <typename T> + struct attribute_as<T, unused_type const> + { + typedef unused_type type; + }; +}}} + +#endif