2021-10-10 20:26:30 +00:00
|
|
|
#pragma once
|
|
|
|
|
|
|
|
#include <cstdint>
|
2021-10-18 10:54:01 +00:00
|
|
|
|
2021-10-20 20:44:43 +00:00
|
|
|
#include "simdjson/simdjson.h"
|
2021-10-11 18:13:05 +00:00
|
|
|
|
2021-10-18 12:12:22 +00:00
|
|
|
#include "ram_t.h"
|
|
|
|
|
2021-10-13 22:33:08 +00:00
|
|
|
class state_t final {
|
2021-10-10 20:26:30 +00:00
|
|
|
private:
|
2021-10-20 22:06:42 +00:00
|
|
|
const simdjson::dom::element m_raw;
|
2021-10-11 18:13:05 +00:00
|
|
|
|
2021-10-10 20:26:30 +00:00
|
|
|
public:
|
2021-10-20 22:06:42 +00:00
|
|
|
state_t(simdjson::dom::element input);
|
2021-10-11 18:13:05 +00:00
|
|
|
|
2021-10-20 22:06:42 +00:00
|
|
|
[[nodiscard]] auto pc() const noexcept { return (uint16_t)(int64_t)m_raw["pc"]; }
|
|
|
|
[[nodiscard]] auto s() const noexcept { return (uint8_t)(int64_t)m_raw["s"]; }
|
|
|
|
[[nodiscard]] auto a() const noexcept { return (uint8_t)(int64_t)m_raw["a"]; }
|
|
|
|
[[nodiscard]] auto x() const noexcept { return (uint8_t)(int64_t)m_raw["x"]; }
|
|
|
|
[[nodiscard]] auto y() const noexcept { return (uint8_t)(int64_t)m_raw["y"]; }
|
|
|
|
[[nodiscard]] auto p() const noexcept { return (uint8_t)(int64_t)m_raw["p"]; }
|
|
|
|
[[nodiscard]] const auto ram() const noexcept { return ram_t(m_raw["ram"].get_array()); }
|
2021-10-10 20:26:30 +00:00
|
|
|
};
|