cttl_impl::xst_translator< LambdaT, TranslatorT > Struct Template Reference

Placeholder for higher-order-function expression. More...

#include <xst_translator.h>

List of all members.

Public Types

enum  { const_value_ = LambdaT::const_value_, depth_ = LambdaT::depth_, capacity_ = LambdaT::capacity_, primitive_id_ = primitive_id_translator }
typedef
LambdaT::dereferenced_value_T 
dereferenced_value_T
 Defines type of dereferenced object encapsulated by lambda primitive.
typedef LambdaT lambda_T
 Defines C++ type of lambda primitive.
typedef xst_translator
< LambdaT, TranslatorT > 
left_T
 Defines type of left scalar primitive of lambda compound.
typedef xst_translator
< LambdaT, TranslatorT > 
reference_T
 Defines lambda reference type for this primitive.
typedef xst_translator
< LambdaT, TranslatorT > 
right_T
 Defines type of right scalar primitive of lambda compound.
typedef TranslatorT translator_T
 Defines the type of the translator function or functor.
typedef LambdaT::value_T value_T
 Defines C++ type of object encapsulated by lambda primitive.

Public Member Functions

template<int LocationT>
dereferenced_value_Tdereferenced_value (xst_lambda_wrap< xst_const_scalar< LocationT > > subscript_)
 Dereferenced value of the lambda compound node.
left_T const & left_lambda () const
 Direct constant access to the left-hand-side lambda compound nodes.
left_Tleft_lambda ()
 Direct mutable access to the left-hand-side lambda compound nodes.
reference_T make_reference () const
 Manufactures lambda reference for this translator.
template<typename SubscriptLambdaT >
void pop (SubscriptLambdaT subscript_)
 Pop data from specified lambda compound location.
template<typename SubscriptLambdaT , typename InputValueT >
void push (SubscriptLambdaT subscript_, InputValueT const &data_)
 Push data at specified lambda compound location.
right_T const & right_lambda () const
 Direct constant access to the right-hand-side lambda compound nodes.
right_Tright_lambda ()
 Direct mutable access to the right-hand-side lambda compound nodes.
template<typename SubscriptLambdaT >
size_t size (SubscriptLambdaT subscript_) const
 Get size of stack at specified lambda compound location.
template<typename SubscriptLambdaT >
std::stack< value_T > const * stack_ptr (SubscriptLambdaT subscript_) const
 Get constant stack pointer at specified lambda compound location.
template<typename SubscriptLambdaT >
std::stack< value_T > * stack_ptr (SubscriptLambdaT subscript_)
 Get stack pointer at specified lambda compound location.
template<typename FunctorT >
void subscript_bottom_up (FunctorT &functor_) const
 Subscript bottom-up traversal algorithm.
template<typename FunctorT >
void subscript_top_down (FunctorT &functor_) const
 Lambda compound top-down subscript traversal algorithm.
template<typename SubscriptLambdaT >
value_Ttop (SubscriptLambdaT subscript_)
 Mutable access to data at specified lambda compound location.
template<typename SubscriptLambdaT >
value_T const & top (SubscriptLambdaT subscript_) const
 Constant access to data at specified lambda compound location.
template<typename FunctorT >
void traverse_bottom_up (FunctorT &functor_) const
 Lambda compound bottom up traversal algorithm with constant access to terminal nodes.
template<typename FunctorT >
void traverse_bottom_up (FunctorT &functor_)
 Lambda compound bottom up traversal algorithm with mutable access to terminal nodes.
template<typename FunctorT >
void traverse_top_down (FunctorT &functor_) const
 Lambda compound top-down traversal algorithm with constant access to terminal nodes.
template<typename FunctorT >
void traverse_top_down (FunctorT &functor_)
 Lambda compound top-down traversal algorithm with mutable access to terminal nodes.
 xst_translator (xst_translator< LambdaT, TranslatorT > const &other_)
 Copy constructor.
 xst_translator (LambdaT const &lambda_, TranslatorT const &translator_)
 Constructs translator object.

Friends

struct xst_lambda_wrap
struct xst_translator


Detailed Description

template<typename LambdaT, typename TranslatorT>
struct cttl_impl::xst_translator< LambdaT, TranslatorT >

Placeholder for higher-order-function expression.

Higher-order-function expression permits data transformations of different types by conversion function f():

    D ^ f 
This compile-time expression is equivalent to run-time expression
    D.push( f( x ) )
where x is the input value. Since higher-order-function behaves exactly as lambda primitive, transformation functions can be nested:
    D ^ f ^ g ^ ... ^ k
This type of transformation is known as functional composition.

Template Parameters:
LambdaT specifies type of lambda primitive.
TranslatorT specifies type of nested function or function object.

Definition at line 72 of file xst_translator.h.


Member Typedef Documentation

template<typename LambdaT, typename TranslatorT>
typedef LambdaT::dereferenced_value_T cttl_impl::xst_translator< LambdaT, TranslatorT >::dereferenced_value_T

Defines type of dereferenced object encapsulated by lambda primitive.

Definition at line 104 of file xst_translator.h.

template<typename LambdaT, typename TranslatorT>
typedef LambdaT cttl_impl::xst_translator< LambdaT, TranslatorT >::lambda_T

Defines C++ type of lambda primitive.

Definition at line 95 of file xst_translator.h.

template<typename LambdaT, typename TranslatorT>
typedef xst_translator< LambdaT, TranslatorT > cttl_impl::xst_translator< LambdaT, TranslatorT >::left_T

Defines type of left scalar primitive of lambda compound.

Definition at line 107 of file xst_translator.h.

template<typename LambdaT, typename TranslatorT>
typedef xst_translator< LambdaT, TranslatorT > cttl_impl::xst_translator< LambdaT, TranslatorT >::reference_T

Defines lambda reference type for this primitive.

Definition at line 113 of file xst_translator.h.

template<typename LambdaT, typename TranslatorT>
typedef xst_translator< LambdaT, TranslatorT > cttl_impl::xst_translator< LambdaT, TranslatorT >::right_T

Defines type of right scalar primitive of lambda compound.

Definition at line 110 of file xst_translator.h.

template<typename LambdaT, typename TranslatorT>
typedef TranslatorT cttl_impl::xst_translator< LambdaT, TranslatorT >::translator_T

Defines the type of the translator function or functor.

Definition at line 98 of file xst_translator.h.

template<typename LambdaT, typename TranslatorT>
typedef LambdaT::value_T cttl_impl::xst_translator< LambdaT, TranslatorT >::value_T

Defines C++ type of object encapsulated by lambda primitive.

Definition at line 101 of file xst_translator.h.


Member Enumeration Documentation

template<typename LambdaT, typename TranslatorT>
anonymous enum

Enumerator:
const_value_  Constant required to compile algorithms for subscript-based access to lambda compound.

depth_  Number of nodes at current level of subtree.

capacity_  Cumulative capacity of lambda primitive.

primitive_id_  Unique identifier of lambda primitive type for template resolution.

Definition at line 80 of file xst_translator.h.

00080          {
00082         const_value_ = LambdaT::const_value_,
00083 
00085         depth_ = LambdaT::depth_,
00086 
00088         capacity_ = LambdaT::capacity_,
00089 
00091         primitive_id_ = primitive_id_translator
00092     };


Constructor & Destructor Documentation

template<typename LambdaT, typename TranslatorT>
cttl_impl::xst_translator< LambdaT, TranslatorT >::xst_translator ( LambdaT const &  lambda_,
TranslatorT const &  translator_ 
)

Constructs translator object.

Definition at line 116 of file xst_translator.h.

00117     :
00118     m_lambda( lambda_ ),
00119     m_translator( translator_ )
00120     {
00121     }

template<typename LambdaT, typename TranslatorT>
cttl_impl::xst_translator< LambdaT, TranslatorT >::xst_translator ( xst_translator< LambdaT, TranslatorT > const &  other_  ) 

Copy constructor.

Definition at line 124 of file xst_translator.h.

00125     :
00126     m_lambda( other_.m_lambda ),
00127     m_translator( other_.m_translator )
00128     {
00129     }


Member Function Documentation

template<typename LambdaT, typename TranslatorT>
template<int LocationT>
dereferenced_value_T& cttl_impl::xst_translator< LambdaT, TranslatorT >::dereferenced_value ( xst_lambda_wrap< xst_const_scalar< LocationT > >  subscript_  ) 

Dereferenced value of the lambda compound node.

Definition at line 141 of file xst_translator.h.

00142     {
00143         return m_lambda.dereferenced_value( subscript_ );
00144     }

template<typename LambdaT, typename TranslatorT>
left_T const& cttl_impl::xst_translator< LambdaT, TranslatorT >::left_lambda (  )  const

Direct constant access to the left-hand-side lambda compound nodes.

Definition at line 153 of file xst_translator.h.

00154     {
00155         return *this; //m_lambda; //DEBUG//.left_lambda();
00156     }

template<typename LambdaT, typename TranslatorT>
left_T& cttl_impl::xst_translator< LambdaT, TranslatorT >::left_lambda (  ) 

Direct mutable access to the left-hand-side lambda compound nodes.

Definition at line 147 of file xst_translator.h.

00148     {
00149         return *this; //m_lambda; //DEBUG//.left_lambda();
00150     }

template<typename LambdaT, typename TranslatorT>
reference_T cttl_impl::xst_translator< LambdaT, TranslatorT >::make_reference (  )  const

Manufactures lambda reference for this translator.

Definition at line 132 of file xst_translator.h.

00133     {
00134         return *this;
00135     }

template<typename LambdaT, typename TranslatorT>
template<typename SubscriptLambdaT >
void cttl_impl::xst_translator< LambdaT, TranslatorT >::pop ( SubscriptLambdaT  subscript_  ) 

Pop data from specified lambda compound location.

Definition at line 229 of file xst_translator.h.

00230     {
00231         m_lambda.pop( subscript_ );
00232     }

template<typename LambdaT, typename TranslatorT>
template<typename SubscriptLambdaT , typename InputValueT >
void cttl_impl::xst_translator< LambdaT, TranslatorT >::push ( SubscriptLambdaT  subscript_,
InputValueT const &  data_ 
)

Push data at specified lambda compound location.

Definition at line 222 of file xst_translator.h.

00223     {
00224         m_lambda.push( subscript_, m_translator( data_ ) );
00225     }

template<typename LambdaT, typename TranslatorT>
right_T const& cttl_impl::xst_translator< LambdaT, TranslatorT >::right_lambda (  )  const

Direct constant access to the right-hand-side lambda compound nodes.

Definition at line 165 of file xst_translator.h.

00166     {
00167         return *this; //m_lambda; //DEBUG//.right_lambda();
00168     }

template<typename LambdaT, typename TranslatorT>
right_T& cttl_impl::xst_translator< LambdaT, TranslatorT >::right_lambda (  ) 

Direct mutable access to the right-hand-side lambda compound nodes.

Definition at line 159 of file xst_translator.h.

00160     {
00161         return *this; //m_lambda; //DEBUG//.right_lambda();
00162     }

template<typename LambdaT, typename TranslatorT>
template<typename SubscriptLambdaT >
size_t cttl_impl::xst_translator< LambdaT, TranslatorT >::size ( SubscriptLambdaT  subscript_  )  const

Get size of stack at specified lambda compound location.

Definition at line 250 of file xst_translator.h.

00251     {
00252         return m_lambda.size( subscript_ );
00253     }

template<typename LambdaT, typename TranslatorT>
template<typename SubscriptLambdaT >
std::stack< value_T > const* cttl_impl::xst_translator< LambdaT, TranslatorT >::stack_ptr ( SubscriptLambdaT  subscript_  )  const

Get constant stack pointer at specified lambda compound location.

Definition at line 264 of file xst_translator.h.

00265     {
00266         return m_lambda.stack_ptr( subscript_ );
00267     }

template<typename LambdaT, typename TranslatorT>
template<typename SubscriptLambdaT >
std::stack< value_T >* cttl_impl::xst_translator< LambdaT, TranslatorT >::stack_ptr ( SubscriptLambdaT  subscript_  ) 

Get stack pointer at specified lambda compound location.

Definition at line 257 of file xst_translator.h.

00258     {
00259         return m_lambda.stack_ptr( subscript_ );
00260     }

template<typename LambdaT, typename TranslatorT>
template<typename FunctorT >
void cttl_impl::xst_translator< LambdaT, TranslatorT >::subscript_bottom_up ( FunctorT &  functor_  )  const

Subscript bottom-up traversal algorithm.

Definition at line 211 of file xst_translator.h.

00212     {
00213         m_lambda.subscript_bottom_up( functor_ );
00214     }

template<typename LambdaT, typename TranslatorT>
template<typename FunctorT >
void cttl_impl::xst_translator< LambdaT, TranslatorT >::subscript_top_down ( FunctorT &  functor_  )  const

Lambda compound top-down subscript traversal algorithm.

Definition at line 204 of file xst_translator.h.

00205     {
00206         m_lambda.subscript_top_down( functor_ );
00207     }

template<typename LambdaT, typename TranslatorT>
template<typename SubscriptLambdaT >
value_T& cttl_impl::xst_translator< LambdaT, TranslatorT >::top ( SubscriptLambdaT  subscript_  ) 

Mutable access to data at specified lambda compound location.

Definition at line 243 of file xst_translator.h.

00244     {
00245         return m_lambda.top( subscript_ );
00246     }

template<typename LambdaT, typename TranslatorT>
template<typename SubscriptLambdaT >
value_T const& cttl_impl::xst_translator< LambdaT, TranslatorT >::top ( SubscriptLambdaT  subscript_  )  const

Constant access to data at specified lambda compound location.

Definition at line 236 of file xst_translator.h.

00237     {
00238         return m_lambda.top( subscript_ );
00239     }

template<typename LambdaT, typename TranslatorT>
template<typename FunctorT >
void cttl_impl::xst_translator< LambdaT, TranslatorT >::traverse_bottom_up ( FunctorT &  functor_  )  const

Lambda compound bottom up traversal algorithm with constant access to terminal nodes.

Definition at line 190 of file xst_translator.h.

00191     {
00192         m_lambda.traverse_bottom_up( functor_ );
00193     }

template<typename LambdaT, typename TranslatorT>
template<typename FunctorT >
void cttl_impl::xst_translator< LambdaT, TranslatorT >::traverse_bottom_up ( FunctorT &  functor_  ) 

Lambda compound bottom up traversal algorithm with mutable access to terminal nodes.

Definition at line 176 of file xst_translator.h.

00177     {
00178         m_lambda.traverse_bottom_up( functor_ );
00179     }

template<typename LambdaT, typename TranslatorT>
template<typename FunctorT >
void cttl_impl::xst_translator< LambdaT, TranslatorT >::traverse_top_down ( FunctorT &  functor_  )  const

Lambda compound top-down traversal algorithm with constant access to terminal nodes.

Definition at line 197 of file xst_translator.h.

00198     {
00199         m_lambda.traverse_top_down( functor_ );
00200     }

template<typename LambdaT, typename TranslatorT>
template<typename FunctorT >
void cttl_impl::xst_translator< LambdaT, TranslatorT >::traverse_top_down ( FunctorT &  functor_  ) 

Lambda compound top-down traversal algorithm with mutable access to terminal nodes.

Definition at line 183 of file xst_translator.h.

00184     {
00185         m_lambda.traverse_top_down( functor_ );
00186     }


Friends And Related Function Documentation

template<typename LambdaT, typename TranslatorT>
friend struct xst_lambda_wrap [friend]

Definition at line 75 of file xst_translator.h.

template<typename LambdaT, typename TranslatorT>
friend struct xst_translator [friend]

Definition at line 78 of file xst_translator.h.


The documentation for this struct was generated from the following file:

Generated on Sun Aug 23 13:44:18 2009 for Common Text Transformation Library by  doxygen 1.5.9