| #pragma once |
|
|
| #include <c10/macros/Macros.h> |
| #include <c10/util/Exception.h> |
| #include <c10/util/intrusive_ptr.h> |
| #include <memory> |
| #include <mutex> |
| #include <vector> |
|
|
| namespace c10 { |
|
|
| class SymIntNodeImpl; |
| using SymIntNode = c10::intrusive_ptr<SymIntNodeImpl>; |
|
|
| class SymFloat; |
| class SymFloatNodeImpl; |
| using SymFloatNode = c10::intrusive_ptr<SymFloatNodeImpl>; |
|
|
| class C10_API SymFloatNodeImpl : public c10::intrusive_ptr_target { |
| public: |
| c10::SymFloat toSymFloat(); |
| virtual ~SymFloatNodeImpl(){}; |
|
|
| template <typename T> |
| c10::intrusive_ptr<T> dyn_cast() const { |
| return c10::intrusive_ptr<T>::reclaim_copy(dynamic_cast<T*>(this)); |
| } |
|
|
| virtual SymFloatNode wrap(double num) { |
| TORCH_CHECK(false, "NYI"); |
| }; |
| virtual SymFloatNode add(const SymFloatNode& other) { |
| TORCH_CHECK(false, "NYI"); |
| } |
| virtual SymFloatNode sub(const SymFloatNode& other) { |
| TORCH_CHECK(false, "NYI"); |
| } |
| virtual SymFloatNode mul(const SymFloatNode& other) { |
| TORCH_CHECK(false, "NYI"); |
| } |
| virtual SymFloatNode truediv(const SymFloatNode& other) { |
| TORCH_CHECK(false, "NYI"); |
| } |
| virtual SymFloatNode eq(const SymFloatNode& other) { |
| TORCH_CHECK(false, "NYI"); |
| }; |
| virtual SymFloatNode ne(const SymFloatNode& other) { |
| TORCH_CHECK(false, "NYI"); |
| }; |
| virtual SymFloatNode gt(const SymFloatNode& other) { |
| TORCH_CHECK(false, "NYI"); |
| }; |
| virtual SymFloatNode lt(const SymFloatNode& other) { |
| TORCH_CHECK(false, "NYI"); |
| }; |
| virtual SymFloatNode le(const SymFloatNode& other) { |
| TORCH_CHECK(false, "NYI"); |
| }; |
| virtual SymFloatNode ge(const SymFloatNode& other) { |
| TORCH_CHECK(false, "NYI"); |
| }; |
| virtual SymIntNode ceil(); |
| virtual std::string str() { |
| TORCH_CHECK(false, "NYI"); |
| }; |
| std::ostream& operator<<(std::ostream& os) { |
| os << str(); |
| return os; |
| }; |
| }; |
|
|
| } |
|
|