OASIS
Open Algebra Software
Loading...
Searching...
No Matches
Expression.hpp File Reference
#include <memory>
#include <vector>
#include "Concepts.hpp"
Include dependency graph for Expression.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  Oasis::Expression
 An expression. More...
 

Namespaces

namespace  Oasis
 

Macros

#define EXPRESSION_TYPE(type)
 
#define EXPRESSION_CATEGORY(category)
 
#define DECL_SPECIALIZE(type)
 

Enumerations

enum class  Oasis::ExpressionType {
  Oasis::None , Oasis::Real , Oasis::Imaginary , Oasis::Variable ,
  Oasis::Add , Oasis::Subtract , Oasis::Multiply , Oasis::Divide ,
  Oasis::Exponent , Oasis::Log , Oasis::Integral , Oasis::Limit ,
  Oasis::Derivative , Oasis::Negate , Oasis::Sqrt , Oasis::Matrix ,
  Oasis::Pi , Oasis::EulerNumber , Oasis::Magnitude
}
 The type of an expression. More...
 
enum  Oasis::ExpressionCategory : uint32_t {
  Oasis::None = 0 , Oasis::Associative = 1 , Oasis::Commutative = 1 << 1 , Oasis::BinExp = 1 << 2 ,
  Oasis::UnExp = 1 << 3
}
 The category of an expression. More...
 

Functions

std::unique_ptr< Oasis::Expressionoperator+ (const std::unique_ptr< Oasis::Expression > &lhs, const std::unique_ptr< Oasis::Expression > &rhs)
 
std::unique_ptr< Oasis::Expressionoperator- (const std::unique_ptr< Oasis::Expression > &lhs, const std::unique_ptr< Oasis::Expression > &rhs)
 
std::unique_ptr< Oasis::Expressionoperator* (const std::unique_ptr< Oasis::Expression > &lhs, const std::unique_ptr< Oasis::Expression > &rhs)
 
std::unique_ptr< Oasis::Expressionoperator/ (const std::unique_ptr< Oasis::Expression > &lhs, const std::unique_ptr< Oasis::Expression > &rhs)
 

Macro Definition Documentation

◆ DECL_SPECIALIZE

#define DECL_SPECIALIZE ( type)

◆ EXPRESSION_CATEGORY

#define EXPRESSION_CATEGORY ( category)
Value:
auto GetCategory() const -> uint32_t override \
{ \
return category; \
} \
\
constexpr static auto GetStaticCategory() -> uint32_t \
{ \
return category; \
}

◆ EXPRESSION_TYPE

#define EXPRESSION_TYPE ( type)
Value:
auto GetType() const -> ExpressionType override \
{ \
return ExpressionType::type; \
} \
\
static auto GetStaticType() -> ExpressionType \
{ \
return ExpressionType::type; \
}

Function Documentation

◆ operator*()

◆ operator+()

◆ operator-()

◆ operator/()