#pragma once #include #include #include "arctyx/compiler/StackParam.h" #include "arctyx/compiler/StackItem.h" class Stack { private: ehs::Array inputs; ehs::Array outputs; ehs::UInt_64 offset; ehs::Vector items; public: Stack(); Stack(const ehs::UInt_64 &offset); Stack(Stack &&other) noexcept; Stack(const Stack &other); Stack &operator=(Stack &&other) noexcept; Stack &operator=(const Stack &other); ehs::UInt_64 GetOffset() const; bool HasItem(const ehs::UInt_64 &id) const; bool HasItem(const ehs::Str_8 &name) const; bool AddItem(StackItem item); StackItem *GetItem(const ehs::UInt_64 &id) const; StackItem *GetItem(const ehs::Str_8 &name) const; };