expr.h File Reference

This file defines expression template parse tree nodes and macors for creating global unary and binary operators/functions. More...

Classes

Namespaces

Defines



Functions


Detailed Description

This file defines expression template parse tree nodes and macors for creating global unary and binary operators/functions.


Define Documentation

#define BINOP_AE ( operator,
op   ) 
Value:
template<typename T1, typename T2, int N>                                           \
inline ExprNode<ExprBinopNode<typename MArray<T1,N>::ConstIterator,                 \
                              ExprNode<T2,N>,                                       \
                              op<T1, typename T2::value_type>,                      \
                              N>,                                                   \
                   N>                                                               \
operator(const MArray<T1,N>& a, const ExprNode<T2,N>& b)                            \
{                                                                                   \
   typedef ExprBinopNode<typename MArray<T1,N>::ConstIterator,                      \
                         ExprNode<T2,N>,                                            \
                         op<T1, typename T2::value_type>,                           \
                         N>                                                         \
     ExprT;                                                                         \
   return ExprNode<ExprT,N>( ExprT(a.begin(), b) );                                 \
}
#define BINOP_EA ( operator,
op   ) 
Value:
template<typename T1, typename T2, int N>                                           \
inline ExprNode<ExprBinopNode<ExprNode<T1,N>,                                       \
                              typename MArray<T2,N>::ConstIterator,                 \
                              op<typename T1::value_type, T2>,                      \
                              N>,                                                   \
                   N>                                                               \
operator(const ExprNode<T1,N>& a, const MArray<T2,N>& b)                            \
{                                                                                   \
   typedef ExprBinopNode<ExprNode<T1,N>,                                            \
                         typename MArray<T2,N>::ConstIterator,                      \
                         op<typename T1::value_type, T2>,                           \
                         N>                                                         \
     ExprT;                                                                         \
   return ExprNode<ExprT,N>( ExprT(a, b.begin()) );                                 \
}
#define BINOP_AL ( operator,
op   ) 
Value:
template<typename T1, typename T2, int N>                                           \
inline ExprNode<ExprBinopNode<typename MArray<T1,N>::ConstIterator,                 \
                              ExprLiteralNode<T2>,                                  \
                              op<T1, T2>,                                           \
                              N>,                                                   \
                   N>                                                               \
operator(const MArray<T1,N>& a, const T2& b)                                        \
{                                                                                   \
   typedef ExprBinopNode<typename MArray<T1,N>::ConstIterator,                      \
                         ExprLiteralNode<T2>,                                       \
                         op<T1, T2>,                                                \
                         N>                                                         \
     ExprT;                                                                         \
   return ExprNode<ExprT,N>( ExprT(a.begin(), ExprLiteralNode<T2>(b)) );            \
}
#define BINOP_LA ( operator,
op   ) 
Value:
template<typename T1, typename T2, int N>                                           \
inline ExprNode<ExprBinopNode<ExprLiteralNode<T1>,                                  \
                              typename MArray<T2,N>::ConstIterator,                 \
                              op<T1, T2>,                                           \
                              N>,                                                   \
                   N>                                                               \
operator(const T1& a, const MArray<T2,N>& b)                                        \
{                                                                                   \
   typedef ExprBinopNode<ExprLiteralNode<T1>,                                       \
                         typename MArray<T2,N>::ConstIterator,                      \
                         op<T1, T2>,                                                \
                         N>                                                         \
     ExprT;                                                                         \
   return ExprNode<ExprT,N>( ExprT(ExprLiteralNode<T1>(a), b.begin()) );            \
}
#define BINOP_EE ( operator,
op   ) 
Value:
template<typename T1, typename T2, int N>                                           \
inline ExprNode<ExprBinopNode<ExprNode<T1,N>,                                       \
                              ExprNode<T2,N>,                                       \
                              op<typename T1::value_type, typename T2::value_type>, \
                              N>,                                                   \
                   N>                                                               \
operator(const ExprNode<T1,N>& a, const ExprNode<T2,N>& b)                          \
{                                                                                   \
   typedef ExprBinopNode<ExprNode<T1,N>,                                            \
                         ExprNode<T2,N>,                                            \
                         op<typename T1::value_type, typename T2::value_type>,      \
                         N>                                                         \
     ExprT;                                                                         \
   return ExprNode<ExprT,N>( ExprT(a, b) );                                         \
}
#define BINOP_EL ( operator,
op   ) 
Value:
template<typename T1, typename T2, int N>                                           \
inline ExprNode<ExprBinopNode<ExprNode<T1,N>,                                       \
                              ExprLiteralNode<T2>,                                  \
                              op<typename T1::value_type, T2>,                      \
                              N>,                                                   \
                   N>                                                               \
operator(const ExprNode<T1,N>& a, const T2& b)                                      \
{                                                                                   \
   typedef ExprBinopNode<ExprNode<T1,N>,                                            \
                         ExprLiteralNode<T2>,                                       \
                         op<typename T1::value_type, T2>,                           \
                         N>                                                         \
     ExprT;                                                                         \
   return ExprNode<ExprT,N>( ExprT(a, ExprLiteralNode<T2>(b)) );                    \
}
#define BINOP_LE ( operator,
op   ) 
Value:
template<typename T1, typename T2, int N>                                           \
inline ExprNode<ExprBinopNode<ExprLiteralNode<T1>,                                  \
                              ExprNode<T2,N>,                                       \
                              op<T1, typename T2::value_type>,                      \
                              N>,                                                   \
                   N>                                                               \
operator(const T1& a, const ExprNode<T2,N>& b)                                      \
{                                                                                   \
   typedef ExprBinopNode<ExprLiteralNode<T1>,                                       \
                         ExprNode<T2,N>,                                            \
                         op<T1, typename T2::value_type>,                           \
                         N>                                                         \
     ExprT;                                                                         \
   return ExprNode<ExprT,N>( ExprT(ExprLiteralNode<T1>(a), b) );                    \
}

Generated on 19 Feb 2015 for LTL by  doxygen 1.6.1