SourceForge Logo Tiny Vector Matrix library using Expression Templates Sourceforge Project Page

Public Types | Public Member Functions | Private Member Functions | Private Attributes
tvmet::XprEval< E1, E2, E3 > Class Template Reference

evaluate the expression More...

#include <tvmet/xpr/Eval.h>

Inheritance diagram for tvmet::XprEval< E1, E2, E3 >:
Inheritance graph
[legend]
Collaboration diagram for tvmet::XprEval< E1, E2, E3 >:
Collaboration graph
[legend]

List of all members.

Public Types

enum  { ops_expr1 = E1::ops, ops_expr2 = E2::ops, ops_expr3 = E3::ops, ops = ops_expr1 }
 Complexity Counter. More...
typedef E1 expr1_type
typedef E2 expr2_type
typedef E3 expr3_type
typedef expr2_type::value_type value2_type
typedef expr3_type::value_type value3_type
typedef PromoteTraits
< value2_type, value3_type >
::value_type 
value_type

Public Member Functions

 XprEval (const expr1_type &e1, const expr2_type &e2, const expr3_type &e3)
 Constructor.
value_type operator() (std::size_t i) const
 Copy Constructor.
value_type operator() (std::size_t i, std::size_t j) const
 index operator for matrizes.
void print_xpr (std::ostream &os, std::size_t l=0) const

Private Member Functions

 XprEval ()
XprEvaloperator= (const XprEval< expr1_type, expr2_type, expr3_type > &)

Private Attributes

const expr1_type m_expr1
const expr2_type m_expr2
const expr3_type m_expr3

Detailed Description

template<class E1, class E2, class E3>
class tvmet::XprEval< E1, E2, E3 >

evaluate the expression

Since we can't overwrite the ? operator we have to write a wrapper for expression like return v1>v2 ? true : false


Member Typedef Documentation

template<class E1 , class E2 , class E3 >
typedef E1 tvmet::XprEval< E1, E2, E3 >::expr1_type
template<class E1 , class E2 , class E3 >
typedef E2 tvmet::XprEval< E1, E2, E3 >::expr2_type
template<class E1 , class E2 , class E3 >
typedef E3 tvmet::XprEval< E1, E2, E3 >::expr3_type
template<class E1 , class E2 , class E3 >
typedef expr2_type::value_type tvmet::XprEval< E1, E2, E3 >::value2_type
template<class E1 , class E2 , class E3 >
typedef expr3_type::value_type tvmet::XprEval< E1, E2, E3 >::value3_type
template<class E1 , class E2 , class E3 >
typedef PromoteTraits<value2_type, value3_type>::value_type tvmet::XprEval< E1, E2, E3 >::value_type

Member Enumeration Documentation

template<class E1 , class E2 , class E3 >
anonymous enum

Complexity Counter.

Enumerator:
ops_expr1 
ops_expr2 
ops_expr3 
ops 

Constructor & Destructor Documentation

template<class E1 , class E2 , class E3 >
tvmet::XprEval< E1, E2, E3 >::XprEval ( ) [private]
template<class E1 , class E2 , class E3 >
tvmet::XprEval< E1, E2, E3 >::XprEval ( const expr1_type e1,
const expr2_type e2,
const expr3_type e3 
) [inline, explicit]

Constructor.


Member Function Documentation

template<class E1 , class E2 , class E3 >
value_type tvmet::XprEval< E1, E2, E3 >::operator() ( std::size_t  i) const [inline]

Copy Constructor.

Not explicit! index operator for vectors.

References tvmet::XprEval< E1, E2, E3 >::m_expr1, tvmet::XprEval< E1, E2, E3 >::m_expr2, and tvmet::XprEval< E1, E2, E3 >::m_expr3.

template<class E1 , class E2 , class E3 >
value_type tvmet::XprEval< E1, E2, E3 >::operator() ( std::size_t  i,
std::size_t  j 
) const [inline]
template<class E1 , class E2 , class E3 >
XprEval& tvmet::XprEval< E1, E2, E3 >::operator= ( const XprEval< expr1_type, expr2_type, expr3_type > &  ) [private]
template<class E1 , class E2 , class E3 >
void tvmet::XprEval< E1, E2, E3 >::print_xpr ( std::ostream &  os,
std::size_t  l = 0 
) const [inline]

Member Data Documentation

template<class E1 , class E2 , class E3 >
const expr1_type tvmet::XprEval< E1, E2, E3 >::m_expr1 [private]
template<class E1 , class E2 , class E3 >
const expr2_type tvmet::XprEval< E1, E2, E3 >::m_expr2 [private]
template<class E1 , class E2 , class E3 >
const expr3_type tvmet::XprEval< E1, E2, E3 >::m_expr3 [private]
 All Classes Namespaces Files Functions Variables Typedefs Enumerator Friends Defines

Author: