#pragma once #include "../assembler/Assembler.hpp" #include namespace dragon { class DisassemblyTable { public: inline DisassemblyTable(void) { m_initialized = false; } inline DisassemblyTable(const ostd::String& filePath) { init(filePath); } void init(const ostd::String& filePath); inline const std::vector& getCodeTable(void) const { return m_code; } inline const std::vector& getDataTable(void) const { return m_data; } inline const std::vector& getLabelTable(void) const { return m_labels; } inline bool isInitialized(void) const { return m_initialized; } private: void load_data(ostd::ByteStream& stream); private: std::vector m_code; std::vector m_labels; std::vector m_data; bool m_initialized { false }; ostd::String m_filePath { "" }; public: static const DisassemblyTable DefaultObject; }; class DisassemblyLoader { public: static void loadDirectory(const ostd::String& directoryPath); static const DisassemblyTable& loadFile(const ostd::String& filePath); static std::vector getCodeTable(void); static std::vector getDataTable(void); static std::vector getLabelTable(void); private: inline static std::vector m_tables; }; }