Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions include/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ set(Oasis_HEADERS
Oasis/EulerNumber.hpp
Oasis/Exponent.hpp
Oasis/Expression.hpp
Oasis/FwdDecls.hpp
Oasis/Imaginary.hpp
Oasis/Integral.hpp
Oasis/LeafExpression.hpp
Expand Down
2 changes: 2 additions & 0 deletions include/Oasis/Concepts.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@
#ifndef OASIS_CONCEPTS_HPP
#define OASIS_CONCEPTS_HPP

#include <expected>

namespace Oasis {

class Expression;
Expand Down
50 changes: 50 additions & 0 deletions include/Oasis/FwdDecls.hpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
//
// Created by Matthew McCall on 12/9/25.
//

#ifndef OASIS_FWDDECLS_HPP
#define OASIS_FWDDECLS_HPP

#include "Concepts.hpp"

namespace Oasis {
class Real;
class Imaginary;
class Matrix;
class Variable;
class Undefined;
class EulerNumber;
class Pi;

template <IExpression, IExpression>
class Add;

template <IExpression MinuendT, IExpression SubtrahendT>
class Subtract;

template <IExpression MultiplicandT, IExpression MultiplierT>
class Multiply;

template <IExpression DividendT, IExpression DivisorT>
class Divide;

template <IExpression BaseT, IExpression PowerT>
class Exponent;

template <IExpression BaseT, IExpression ArgumentT>
class Log;

template <typename OperandT>
class Negate;

template <typename OperandT>
class Magnitude;

template <IExpression, IExpression>
class Derivative;

template <IExpression Integrand, IExpression Differential>
class Integral;
}

#endif // OASIS_FWDDECLS_HPP
39 changes: 1 addition & 38 deletions include/Oasis/Visit.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -5,48 +5,11 @@
#ifndef OASIS_SERIALIZATION_HPP
#define OASIS_SERIALIZATION_HPP

#include "FwdDecls.hpp"
#include "Expression.hpp"

namespace Oasis {

class Real;
class Imaginary;
class Matrix;
class Variable;
class Undefined;
class EulerNumber;
class Pi;

template <IExpression, IExpression>
class Add;

template <IExpression MinuendT, IExpression SubtrahendT>
class Subtract;

template <IExpression MultiplicandT, IExpression MultiplierT>
class Multiply;

template <IExpression DividendT, IExpression DivisorT>
class Divide;

template <IExpression BaseT, IExpression PowerT>
class Exponent;

template <IExpression BaseT, IExpression ArgumentT>
class Log;

template <typename OperandT>
class Negate;

template <typename OperandT>
class Magnitude;

template <IExpression, IExpression>
class Derivative;

template <IExpression Integrand, IExpression Differential>
class Integral;

class Visitor {
public:
virtual any Visit(const Real& real) = 0;
Expand Down
Loading