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. |
Contains forward declarations and definition of small classes/metafunctions required to be defined at an early stage.