#ifndef TYCHE_STACK_HH #define TYCHE_STACK_HH #include #include #include "value.hh" namespace tyche::vm { class Stack { public: Stack(); void push(Value const& value); Value pop(); [[nodiscard]] Value peek() const; [[nodiscard]] Value at(int pos) const; [[nodiscard]] size_t size() const; void set(int pos, Value const& val); void push_fp(); void pop_fp(); [[nodiscard]] size_t fp_level() const { return fps_.size(); } [[nodiscard]] std::string debug() const; private: std::vector stack_; std::stack fps_; }; } // tyche #endif //TYCHE_STACK_HH