#pragma once #include #include namespace state_map { class StateMapLayoutEntry { public: StateMapLayoutEntry(std::string name, size_t stateBitsIndex, size_t stateBitsMask, std::vector resultVars); std::string m_name; size_t m_state_bits_index; size_t m_state_bits_mask; std::vector m_result_vars; }; class StateMapLayoutEntries { public: explicit StateMapLayoutEntries(std::vector entryList); std::vector m_entries; }; class StateMapLayoutVarValue { public: StateMapLayoutVarValue(std::string name, size_t stateBitsMask); std::string m_name; size_t m_state_bits_mask; }; class StateMapLayoutVar { public: StateMapLayoutVar(std::string name, size_t stateBitsIndex, std::vector values); std::string m_name; size_t m_state_bits_index; std::vector m_values; }; class StateMapLayoutVars { public: explicit StateMapLayoutVars(std::vector varList); std::vector m_vars; }; class StateMapLayout { public: StateMapLayout(size_t stateBitsCount, const StateMapLayoutEntries& entryLayout, const StateMapLayoutVars& varLayout); size_t m_state_bits_count; const StateMapLayoutEntries& m_entry_layout; const StateMapLayoutVars& m_var_layout; }; }