An tweaked auto_ptr for run time rt_expr types. More...
#include <vector_expr.hpp>
Public Types | |
| typedef InterfaceType::numeric_type | numeric_type |
| typedef InterfaceType | interface_type |
| typedef BaseType::size_type | size_type |
Public Member Functions | |
| rt_vector_expr (size_type num) | |
| Constructor for initializing the vector expression with the supplied number of elements. Similar to the C++ STL, all-zero entries are created by default. | |
| self_type | operator+ (self_type const &other) const |
| Operator overload for adding a vector expression from another vector expression. | |
| self_type | operator- (self_type const &other) const |
| Operator overload for subtracting a vector expression from another vector expression. | |
| InterfaceType * | clone () const |
| Returns a copy of the vector expression. The returned pointer is not automatically deleted, thus the caller needs to ensure deletion. | |
| std::string | deep_str () const |
| Returns a detailed string describing objects of this type. Acts recursively on the expression. | |
| std::string | shallow_str () const |
| Returns a short string describing objects of this type. Does not act recursively. | |
| numeric_type | eval (std::vector< double > const &v) const |
| Interface function for evaluating the expression. Since an rt_vector_expr cannot be evaluated, an expression_not_evaluable_exception is thrown. | |
| numeric_type | eval (numeric_type val) const |
| Interface function for evaluating the expression. Since an rt_vector_expr cannot be evaluated, an expression_not_evaluable_exception is thrown. | |
| numeric_type | unwrap () const |
| Unwraps the expression, i.e. returns the numerical value represented by the expression. Throws an expression_not_unwrappable_exception, since rt_vector_expr cannot be reduced to a constant. | |
| bool | deep_equal (const InterfaceType *other) const |
| Returns 'true' if 'other' is strictly the same as this class. Also checks for identical IDs, etc. | |
| bool | shallow_equal (const InterfaceType *other) const |
| Returns 'true' if 'other' is of the same type as this class. Does not perform a 'deep' inspection including a check for IDs and the like. | |
| InterfaceType * | substitute (const InterfaceType *e, const InterfaceType *repl) const |
| Recursively substititues the expression 'e' by 'repl'. Returns a copy of the expression if 'e' is not found. | |
| InterfaceType * | substitute (std::vector< const InterfaceType * > const &e, std::vector< const InterfaceType * > const &repl) const |
| Recursively substititues any of the expressions from 'e' by the corresponding replacement in 'repl'. | |
| InterfaceType * | optimize () const |
| Returns the optimized expression (constants collected, trivial operations removed, etc.). | |
| bool | optimizable () const |
| Returns true if the expression can be simplified by collecting constants, removing trivial operations, etc. | |
| InterfaceType * | diff (const InterfaceType *diff_var) const |
| Returns the differentiated expression. Note that the returned pointer is not automatically deleted, thus the caller is responsible for proper deletion. | |
An tweaked auto_ptr for run time rt_expr types.
Additionally provides the basic user-interface for evaluation using operator().
| InterfaceType | The expression runtime interface to inherit from. Usually rt_expression_interface, but extensions are possible. |
| typedef InterfaceType interface_type |
| typedef InterfaceType::numeric_type numeric_type |
| typedef BaseType::size_type size_type |
| rt_vector_expr | ( | size_type | num | ) | [inline, explicit] |
Constructor for initializing the vector expression with the supplied number of elements. Similar to the C++ STL, all-zero entries are created by default.
| InterfaceType* clone | ( | ) | const [inline] |
Returns a copy of the vector expression. The returned pointer is not automatically deleted, thus the caller needs to ensure deletion.
| bool deep_equal | ( | const InterfaceType * | other | ) | const [inline] |
Returns 'true' if 'other' is strictly the same as this class. Also checks for identical IDs, etc.
| std::string deep_str | ( | ) | const [inline] |
Returns a detailed string describing objects of this type. Acts recursively on the expression.
| InterfaceType* diff | ( | const InterfaceType * | diff_var | ) | const [inline] |
Returns the differentiated expression. Note that the returned pointer is not automatically deleted, thus the caller is responsible for proper deletion.
| numeric_type eval | ( | numeric_type | val | ) | const [inline] |
Interface function for evaluating the expression. Since an rt_vector_expr cannot be evaluated, an expression_not_evaluable_exception is thrown.
| numeric_type eval | ( | std::vector< double > const & | v | ) | const [inline] |
Interface function for evaluating the expression. Since an rt_vector_expr cannot be evaluated, an expression_not_evaluable_exception is thrown.
Operator overload for adding a vector expression from another vector expression.
Operator overload for subtracting a vector expression from another vector expression.
| bool optimizable | ( | ) | const [inline] |
Returns true if the expression can be simplified by collecting constants, removing trivial operations, etc.
| InterfaceType* optimize | ( | ) | const [inline] |
Returns the optimized expression (constants collected, trivial operations removed, etc.).
| bool shallow_equal | ( | const InterfaceType * | other | ) | const [inline] |
Returns 'true' if 'other' is of the same type as this class. Does not perform a 'deep' inspection including a check for IDs and the like.
| std::string shallow_str | ( | ) | const [inline] |
Returns a short string describing objects of this type. Does not act recursively.
| InterfaceType* substitute | ( | std::vector< const InterfaceType * > const & | e, | |
| std::vector< const InterfaceType * > const & | repl | |||
| ) | const [inline] |
Recursively substititues any of the expressions from 'e' by the corresponding replacement in 'repl'.
| InterfaceType* substitute | ( | const InterfaceType * | e, | |
| const InterfaceType * | repl | |||
| ) | const [inline] |
Recursively substititues the expression 'e' by 'repl'. Returns a copy of the expression if 'e' is not found.
| numeric_type unwrap | ( | ) | const [inline] |
Unwraps the expression, i.e. returns the numerical value represented by the expression. Throws an expression_not_unwrappable_exception, since rt_vector_expr cannot be reduced to a constant.
1.7.1