50 lines
1.5 KiB
C++
Executable File
50 lines
1.5 KiB
C++
Executable File
/*=============================================================================
|
|
Copyright (c) 2001-2007 Joel de Guzman
|
|
|
|
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_ATTRIBUTE_OF_JAN_29_2007_0954AM)
|
|
#define BOOST_SPIRIT_ATTRIBUTE_OF_JAN_29_2007_0954AM
|
|
|
|
#include <boost/spirit/home/support/component.hpp>
|
|
#include <boost/spirit/home/support/unused.hpp>
|
|
|
|
namespace boost { namespace spirit { namespace traits
|
|
{
|
|
template <
|
|
typename Domain, typename T
|
|
, typename Context, typename Iterator = unused_type>
|
|
struct attribute_of :
|
|
attribute_of<
|
|
Domain
|
|
, typename result_of::as_component<Domain, T>::type
|
|
, Context
|
|
, Iterator
|
|
>
|
|
{
|
|
};
|
|
|
|
template <
|
|
typename Domain, typename Director, typename Elements
|
|
, typename Context, typename Iterator>
|
|
struct attribute_of<
|
|
Domain
|
|
, component<Domain, Director, Elements>
|
|
, Context
|
|
, Iterator
|
|
>
|
|
{
|
|
typedef
|
|
component<Domain, Director, Elements>
|
|
component_type;
|
|
|
|
typedef typename Director::template
|
|
attribute<component_type, Context, Iterator>::type
|
|
type;
|
|
};
|
|
|
|
}}}
|
|
|
|
#endif
|