Data Structures | Namespaces | Typedefs | Functions

/export/development/ViennaMath/viennamath/forwards.h File Reference

Contains forward declarations and definition of small classes/metafunctions required to be defined at an early stage. More...

#include <string>
#include <vector>
#include <exception>
#include <sstream>
#include <memory>

Go to the source code of this file.

Data Structures

struct  enable_if< b, T >
 Simple enable-if variant that uses the SFINAE pattern. More...
struct  enable_if< false, T >
struct  cartesian< dim >
 A tag representing a Cartesian coordinate system in arbitrary dimensions. More...
class  numeric_type_proxy< NumericT >
 A proxy object which allows for the use of plain default_numeric_type with template operator+, operator-, operator*, operator/ without running into problems with ambiguity. With the proxy object, one additional conversion is required, thus resolving the ambiguity. More...
struct  ct_index< i >
 Compiletime respresentation of a vector access index. More...
struct  is_viennamath< T >
 A metafunction with value 'true' if the provided argument is a ViennaMath expression type. Otherwise, false is returned. More...
struct  is_viennamath< ct_constant< val > >
 Specialization of the metafunction for a ViennaMath compiletime constant. More...
struct  is_viennamath< ct_variable< id > >
 Specialization of the metafunction for a ViennaMath compiletime variable. More...
struct  is_viennamath< ct_function_symbol< TAG > >
 Specialization of the metafunction for a ViennaMath compiletime function symbol. More...
struct  is_viennamath< ct_binary_expr< LHS, OP, RHS > >
 Specialization of the metafunction for a ViennaMath compiletime binary expression. More...
struct  is_viennamath< ct_unary_expr< LHS, OP > >
 Specialization of the metafunction for a ViennaMath compiletime unary expression. More...
struct  is_viennamath< rt_constant< NumericType, InterfaceType > >
 Specialization of the metafunction for a ViennaMath runtime constant. More...
struct  is_viennamath< rt_variable< InterfaceType > >
 Specialization of the metafunction for a ViennaMath runtime variable. More...
struct  is_viennamath< rt_function_symbol< InterfaceType > >
 Specialization of the metafunction for a ViennaMath runtime function symbol. More...
struct  is_viennamath< rt_unary_expr< InterfaceType > >
 Specialization of the metafunction for a ViennaMath runtime unary expression. More...
struct  is_viennamath< rt_binary_expr< InterfaceType > >
 Specialization of the metafunction for a ViennaMath runtime binary expression. More...
struct  is_viennamath< rt_expr< InterfaceType > >
 Specialization of the metafunction for a ViennaMath runtime expression. More...
struct  is_compiletime< T >
 A metafunction returning a value 'true' if the provided argument is a ViennaMath compiletime expression type. Otherwise, false is returned. More...
struct  is_compiletime< ct_constant< val > >
 Specialization of the metafunction for a ViennaMath compiletime constant. More...
struct  is_compiletime< ct_variable< id > >
 Specialization of the metafunction for a ViennaMath compiletime variable. More...
struct  is_compiletime< ct_function_symbol< TAG > >
 Specialization of the metafunction for a ViennaMath compiletime function symbol. More...
struct  is_compiletime< ct_binary_expr< LHS, OP, RHS > >
 Specialization of the metafunction for a ViennaMath compiletime binary expression. More...
struct  is_compiletime< ct_unary_expr< LHS, OP > >
 Specialization of the metafunction for a ViennaMath compiletime unary expression. More...
struct  interface< LHS, RHS >
 A metafunction deducing the ViennaMath runtime expression interface (base class) from two types. The first argument has priority. More...
struct  interface< rt_constant< T, U >, RHS >
 Specialization of the runtime expression interface deduction for a ViennaMath runtime constant. More...
struct  interface< rt_variable< T >, RHS >
 Specialization of the runtime expression interface deduction for a ViennaMath runtime variable. More...
struct  interface< default_numeric_type, rt_variable< T > >
 Specialization of the runtime expression interface deduction for a ViennaMath runtime variable. More...
struct  interface< rt_binary_expr< T >, RHS >
 Specialization of the runtime expression interface deduction for a ViennaMath runtime binary expression. More...
struct  interface< default_numeric_type, rt_binary_expr< T > >
 Specialization of the runtime expression interface deduction for a ViennaMath runtime binary expression. More...
struct  interface< rt_unary_expr< T >, RHS >
 Specialization of the runtime expression interface deduction for a ViennaMath runtime unary expression. More...
struct  interface< rt_expr< T >, RHS >
 Specialization of the runtime expression interface deduction for the ViennaMath runtime expression wrapper. More...
struct  interface< double, rt_expr< T > >
 Specialization of the runtime expression interface deduction for the ViennaMath runtime expression wrapper. More...
struct  gcd< a, b >
 Helper metafunction for computing the greatest common divisor of two numbers. More...
struct  gcd< a, 0 >
 Specialization for the computation of the greatest common divisor of a and 0, which is a. More...
struct  gcd< 0, 0 >
 Specialization forcing a compile time error, since the greatest common divisor of 0 and 0 is not defined. More...
struct  expression_traits< T >
 A traits system for expressions. For now provides a deduction of the const reference type only. More...
struct  expression_traits< ct_constant< value > >
 Specialization of the expression traits system: A compiletime constant can be copied with no extra cost, thus no need for const reference. More...
struct  expression_traits< rt_constant< T, InterfaceType > >
 Specialization of the expression traits system: A runtime constant does not allow for copying, otherwise one runs into problems with tempories. More...

Namespaces

namespace  viennamath
 

The main ViennaMath namespace. All types and functions for the user reside here.


namespace  viennamath::result_of
 

The namespace containing a set of metafunctions which can be used by the ViennaMath library user.


Typedefs

typedef double default_numeric_type
 The underlying floating point type to be used in case of doubt (e.g. when new constants are created during manipulation).
typedef unsigned long id_type
 Type used for any kind of IDs (variable, etc.).
typedef
rt_expression_interface
< default_numeric_type > 
default_interface_type
 Convenience type definition for the default expression interface.
typedef rt_variable variable
typedef rt_constant constant
typedef rt_binary_expr binary_expr
typedef rt_unary_expr unary_expr
typedef rt_expr expr
typedef rt_vector_expr vector_expr
typedef rt_function_symbol function_symbol
typedef rt_equation equation
typedef rt_interval interval
typedef rt_symbolic_interval symbolic_interval

Functions

template<typename LHS , typename RHS >
enable_if
< result_of::is_viennamath
< LHS >::value||result_of::is_viennamath
< RHS >::value, typename
result_of::add< LHS, RHS >
::type >::type 
operator+ (LHS const &lhs, RHS const &rhs)
 Generic overload of the addition operator for ViennaMath types. Uses SFINAE to control the scope, otherwise one may run into very tricky problems with operator+ being considered outside the viennamath namespace.
template<typename LHS , typename RHS >
enable_if
< result_of::is_viennamath
< LHS >::value||result_of::is_viennamath
< RHS >::value, typename
result_of::subtract< LHS, RHS >
::type >::type 
operator- (LHS const &lhs, RHS const &rhs)
 Generic overload of the subtraction operator for ViennaMath types. Uses SFINAE to control the scope, otherwise one may run into very tricky problems with operator- being considered outside the viennamath namespace.
template<typename LHS , typename RHS >
enable_if
< result_of::is_viennamath
< LHS >::value||result_of::is_viennamath
< RHS >::value, typename
result_of::mult< LHS, RHS >
::type >::type 
operator* (LHS const &lhs, RHS const &rhs)
 Generic overload of the multiplication operator for ViennaMath types. Uses SFINAE to control the scope, otherwise one may run into very tricky problems with operator* being considered outside the viennamath namespace.
template<typename LHS , typename RHS >
enable_if
< result_of::is_viennamath
< LHS >::value||result_of::is_viennamath
< RHS >::value, typename
result_of::div< LHS, RHS >
::type >::type 
operator/ (LHS const &lhs, RHS const &rhs)
 Generic overload of the division operator for ViennaMath types. Uses SFINAE to control the scope, otherwise one may run into very tricky problems with operator/ being considered outside the viennamath namespace.

Detailed Description

Contains forward declarations and definition of small classes/metafunctions required to be defined at an early stage.