#pragma once #include "utils.hpp" #include "views/view.hpp" #include "imgui_memory_editor.h" #include "ImGuiFileBrowser.h" #include #include #include #include "lang/pattern_data.hpp" namespace hex { namespace prv { class Provider; } using SearchFunction = std::vector> (*)(prv::Provider* &provider, std::string string); class ViewHexEditor : public View { public: ViewHexEditor(prv::Provider* &dataProvider, std::vector &patternData); ~ViewHexEditor() override; void createView() override; void createMenu() override; bool handleShortcut(int key, int mods) override; private: MemoryEditor m_memoryEditor; imgui_addons::ImGuiFileBrowser m_fileBrowser; prv::Provider* &m_dataProvider; std::vector &m_patternData; char m_searchStringBuffer[0xFFFF] = { 0 }; char m_searchHexBuffer[0xFFFF] = { 0 }; SearchFunction m_searchFunction = nullptr; std::vector> *m_lastSearchBuffer; s64 m_lastSearchIndex = 0; std::vector> m_lastStringSearch; std::vector> m_lastHexSearch; s64 m_gotoAddress = 0; void drawSearchPopup(); void drawGotoPopup(); void openFile(std::string path); enum class Language { C, Cpp, CSharp, Rust, Python, Java, JavaScript }; void copyBytes(); void copyString(); void copyLanguageArray(Language language); void copyHexView(); }; }