Copy disabled (too large)
Download .txt
Showing preview only (15,980K chars total). Download the full file to get everything.
Repository: WerWolv/ImHex
Branch: master
Commit: eca7597acaaa
Files: 1098
Total size: 21.0 MB
Directory structure:
gitextract_ps364jvn/
├── .clang-tidy
├── .dockerignore
├── .gdbinit
├── .gitattributes
├── .github/
│ ├── FUNDING.yml
│ ├── ISSUE_TEMPLATE/
│ │ ├── bug_report.yaml
│ │ └── feature_request.yaml
│ ├── PULL_REQUEST_TEMPLATE.md
│ ├── codecov.yml
│ ├── scripts/
│ │ └── delete-artifact.sh
│ └── workflows/
│ ├── analysis.yml
│ ├── build.yml
│ ├── dl-cache.yml
│ ├── nightly_release.yml
│ ├── release.yml
│ ├── stale_issues.yml
│ └── tests.yml
├── .gitignore
├── .gitmodules
├── CMakeLists.txt
├── CMakePresets.json
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── INSTALL.md
├── LICENSE
├── PLUGINS.md
├── PRIVACY.md
├── README.md
├── SECURITY.md
├── VERSION
├── changelog.md
├── cmake/
│ ├── build_helpers.cmake
│ ├── cmake_uninstall.cmake.in
│ ├── ide_helpers.cmake
│ ├── modules/
│ │ ├── FindBacktrace.cmake
│ │ ├── FindCapstone.cmake
│ │ ├── FindCoreClrEmbed.cmake
│ │ ├── FindGLFW.cmake
│ │ ├── FindLZ4.cmake
│ │ ├── FindMagic.cmake
│ │ ├── FindPackageHandleStandardArgs.cmake
│ │ ├── FindPackageMessage.cmake
│ │ ├── FindYara.cmake
│ │ ├── FindZSTD.cmake
│ │ ├── Findlibssh2.cmake
│ │ ├── FindmbedTLS.cmake
│ │ ├── ImHexPlugin.cmake
│ │ └── PostprocessBundle.cmake
│ └── sdk/
│ ├── CMakeLists.txt
│ └── template/
│ ├── CMakeLists.txt
│ └── source/
│ └── example_plugin.cpp
├── dist/
│ ├── AppImage/
│ │ ├── AppImageBuilder.yml
│ │ └── Dockerfile
│ ├── Arch/
│ │ ├── Dockerfile
│ │ └── PKGBUILD
│ ├── DEBIAN/
│ │ └── control.in
│ ├── ImHex-9999.ebuild
│ ├── cli/
│ │ ├── imhex.bat
│ │ └── imhex.sh
│ ├── compiling/
│ │ ├── docker.md
│ │ ├── linux.md
│ │ ├── macos.md
│ │ ├── macos_nogpu.md
│ │ └── windows.md
│ ├── cppcheck.supp
│ ├── flake.nix
│ ├── flatpak/
│ │ └── net.werwolv.ImHex.yaml
│ ├── fonts/
│ │ ├── move_private_use_area.py
│ │ └── ttf_to_header_file.py
│ ├── gen_release_notes.py
│ ├── get_deps_archlinux.sh
│ ├── get_deps_debian.sh
│ ├── get_deps_fedora.sh
│ ├── get_deps_msys2.sh
│ ├── get_deps_tumbleweed.sh
│ ├── imhex.desktop
│ ├── imhex.mime.xml
│ ├── langtool.py
│ ├── macOS/
│ │ ├── 0001-glfw-SW.patch
│ │ ├── Brewfile
│ │ ├── arm64.Dockerfile
│ │ ├── arm64.crosscompile.Dockerfile
│ │ └── osx_10_15/
│ │ └── x64-osx.cmake
│ ├── msys2/
│ │ └── PKGBUILD
│ ├── net.werwolv.ImHex.metainfo.xml
│ ├── rpm/
│ │ └── imhex.spec
│ ├── snap/
│ │ └── snapcraft.yaml
│ └── web/
│ ├── Dockerfile
│ ├── Host.Dockerfile
│ ├── compose.yml
│ ├── plugin-bundle.cpp.in
│ ├── serve.py
│ └── source/
│ ├── enable-threads.js
│ ├── index.html
│ ├── manifest.json
│ ├── robots.txt
│ ├── sitemap.xml
│ ├── style.css
│ └── wasm-config.js
├── lib/
│ ├── libimhex/
│ │ ├── CMakeLists.txt
│ │ ├── LICENSE
│ │ ├── include/
│ │ │ ├── hex/
│ │ │ │ ├── api/
│ │ │ │ │ ├── achievement_manager.hpp
│ │ │ │ │ ├── content_registry/
│ │ │ │ │ │ ├── background_services.hpp
│ │ │ │ │ │ ├── command_palette.hpp
│ │ │ │ │ │ ├── communication_interface.hpp
│ │ │ │ │ │ ├── data_formatter.hpp
│ │ │ │ │ │ ├── data_information.hpp
│ │ │ │ │ │ ├── data_inspector.hpp
│ │ │ │ │ │ ├── data_processor.hpp
│ │ │ │ │ │ ├── diffing.hpp
│ │ │ │ │ │ ├── disassemblers.hpp
│ │ │ │ │ │ ├── experiments.hpp
│ │ │ │ │ │ ├── file_type_handler.hpp
│ │ │ │ │ │ ├── hashes.hpp
│ │ │ │ │ │ ├── hex_editor.hpp
│ │ │ │ │ │ ├── pattern_language.hpp
│ │ │ │ │ │ ├── provider.hpp
│ │ │ │ │ │ ├── reports.hpp
│ │ │ │ │ │ ├── settings.hpp
│ │ │ │ │ │ ├── tools.hpp
│ │ │ │ │ │ ├── user_interface.hpp
│ │ │ │ │ │ └── views.hpp
│ │ │ │ │ ├── event_manager.hpp
│ │ │ │ │ ├── events/
│ │ │ │ │ │ ├── events_gui.hpp
│ │ │ │ │ │ ├── events_interaction.hpp
│ │ │ │ │ │ ├── events_lifecycle.hpp
│ │ │ │ │ │ ├── events_provider.hpp
│ │ │ │ │ │ ├── requests_gui.hpp
│ │ │ │ │ │ ├── requests_interaction.hpp
│ │ │ │ │ │ ├── requests_lifecycle.hpp
│ │ │ │ │ │ └── requests_provider.hpp
│ │ │ │ │ ├── imhex_api/
│ │ │ │ │ │ ├── bookmarks.hpp
│ │ │ │ │ │ ├── fonts.hpp
│ │ │ │ │ │ ├── hex_editor.hpp
│ │ │ │ │ │ ├── messaging.hpp
│ │ │ │ │ │ ├── provider.hpp
│ │ │ │ │ │ └── system.hpp
│ │ │ │ │ ├── layout_manager.hpp
│ │ │ │ │ ├── localization_manager.hpp
│ │ │ │ │ ├── plugin_manager.hpp
│ │ │ │ │ ├── project_file_manager.hpp
│ │ │ │ │ ├── shortcut_manager.hpp
│ │ │ │ │ ├── task_manager.hpp
│ │ │ │ │ ├── theme_manager.hpp
│ │ │ │ │ ├── tutorial_manager.hpp
│ │ │ │ │ └── workspace_manager.hpp
│ │ │ │ ├── api_urls.hpp
│ │ │ │ ├── data_processor/
│ │ │ │ │ ├── attribute.hpp
│ │ │ │ │ ├── link.hpp
│ │ │ │ │ └── node.hpp
│ │ │ │ ├── helpers/
│ │ │ │ │ ├── auto_reset.hpp
│ │ │ │ │ ├── binary_pattern.hpp
│ │ │ │ │ ├── concepts.hpp
│ │ │ │ │ ├── crypto.hpp
│ │ │ │ │ ├── debugging.hpp
│ │ │ │ │ ├── default_paths.hpp
│ │ │ │ │ ├── encoding_file.hpp
│ │ │ │ │ ├── fmt.hpp
│ │ │ │ │ ├── fs.hpp
│ │ │ │ │ ├── http_requests.hpp
│ │ │ │ │ ├── http_requests_emscripten.hpp
│ │ │ │ │ ├── http_requests_native.hpp
│ │ │ │ │ ├── keys.hpp
│ │ │ │ │ ├── literals.hpp
│ │ │ │ │ ├── logger.hpp
│ │ │ │ │ ├── magic.hpp
│ │ │ │ │ ├── menu_items.hpp
│ │ │ │ │ ├── opengl.hpp
│ │ │ │ │ ├── patches.hpp
│ │ │ │ │ ├── scaling.hpp
│ │ │ │ │ ├── semantic_version.hpp
│ │ │ │ │ ├── tar.hpp
│ │ │ │ │ ├── types.hpp
│ │ │ │ │ ├── udp_server.hpp
│ │ │ │ │ ├── utils.hpp
│ │ │ │ │ ├── utils_linux.hpp
│ │ │ │ │ └── utils_macos.hpp
│ │ │ │ ├── mcp/
│ │ │ │ │ ├── client.hpp
│ │ │ │ │ └── server.hpp
│ │ │ │ ├── plugin.hpp
│ │ │ │ ├── providers/
│ │ │ │ │ ├── buffered_reader.hpp
│ │ │ │ │ ├── cached_provider.hpp
│ │ │ │ │ ├── memory_provider.hpp
│ │ │ │ │ ├── overlay.hpp
│ │ │ │ │ ├── provider.hpp
│ │ │ │ │ ├── provider_data.hpp
│ │ │ │ │ └── undo_redo/
│ │ │ │ │ ├── operations/
│ │ │ │ │ │ ├── operation.hpp
│ │ │ │ │ │ └── operation_group.hpp
│ │ │ │ │ └── stack.hpp
│ │ │ │ ├── subcommands/
│ │ │ │ │ └── subcommands.hpp
│ │ │ │ ├── test/
│ │ │ │ │ ├── test_provider.hpp
│ │ │ │ │ └── tests.hpp
│ │ │ │ └── ui/
│ │ │ │ ├── banner.hpp
│ │ │ │ ├── imgui_imhex_extensions.h
│ │ │ │ ├── popup.hpp
│ │ │ │ ├── toast.hpp
│ │ │ │ ├── view.hpp
│ │ │ │ └── widgets.hpp
│ │ │ ├── hex.cppm
│ │ │ └── hex.hpp
│ │ └── source/
│ │ ├── api/
│ │ │ ├── achievement_manager.cpp
│ │ │ ├── content_registry.cpp
│ │ │ ├── event_manager.cpp
│ │ │ ├── imhex_api.cpp
│ │ │ ├── layout_manager.cpp
│ │ │ ├── localization_manager.cpp
│ │ │ ├── plugin_manager.cpp
│ │ │ ├── project_file_manager.cpp
│ │ │ ├── shortcut_manager.cpp
│ │ │ ├── task_manager.cpp
│ │ │ ├── theme_manager.cpp
│ │ │ ├── tutorial_manager.cpp
│ │ │ └── workspace_manager.cpp
│ │ ├── data_processor/
│ │ │ ├── attribute.cpp
│ │ │ ├── link.cpp
│ │ │ └── node.cpp
│ │ ├── helpers/
│ │ │ ├── binary_pattern.cpp
│ │ │ ├── crypto.cpp
│ │ │ ├── debugging.cpp
│ │ │ ├── default_paths.cpp
│ │ │ ├── encoding_file.cpp
│ │ │ ├── fs.cpp
│ │ │ ├── http_requests.cpp
│ │ │ ├── http_requests_emscripten.cpp
│ │ │ ├── http_requests_native.cpp
│ │ │ ├── imgui_hooks.cpp
│ │ │ ├── keys.cpp
│ │ │ ├── logger.cpp
│ │ │ ├── macos_menu.m
│ │ │ ├── magic.cpp
│ │ │ ├── opengl.cpp
│ │ │ ├── patches.cpp
│ │ │ ├── scaling.cpp
│ │ │ ├── semantic_version.cpp
│ │ │ ├── tar.cpp
│ │ │ ├── udp_server.cpp
│ │ │ ├── utils.cpp
│ │ │ ├── utils_linux.cpp
│ │ │ └── utils_macos.m
│ │ ├── mcp/
│ │ │ ├── client.cpp
│ │ │ └── server.cpp
│ │ ├── providers/
│ │ │ ├── cached_provider.cpp
│ │ │ ├── memory_provider.cpp
│ │ │ ├── provider.cpp
│ │ │ └── undo/
│ │ │ └── stack.cpp
│ │ ├── subcommands/
│ │ │ └── subcommands.cpp
│ │ ├── test/
│ │ │ └── tests.cpp
│ │ └── ui/
│ │ ├── banner.cpp
│ │ ├── imgui_imhex_extensions.cpp
│ │ ├── popup.cpp
│ │ ├── toast.cpp
│ │ └── view.cpp
│ ├── third_party/
│ │ ├── .clang-tidy
│ │ ├── boost/
│ │ │ ├── CMakeLists.txt
│ │ │ └── regex/
│ │ │ ├── CMakeLists.txt
│ │ │ └── include/
│ │ │ └── boost/
│ │ │ ├── cregex.hpp
│ │ │ ├── regex/
│ │ │ │ ├── concepts.hpp
│ │ │ │ ├── config/
│ │ │ │ │ ├── borland.hpp
│ │ │ │ │ └── cwchar.hpp
│ │ │ │ ├── config.hpp
│ │ │ │ ├── icu.hpp
│ │ │ │ ├── mfc.hpp
│ │ │ │ ├── pattern_except.hpp
│ │ │ │ ├── pending/
│ │ │ │ │ ├── object_cache.hpp
│ │ │ │ │ ├── static_mutex.hpp
│ │ │ │ │ └── unicode_iterator.hpp
│ │ │ │ ├── regex_traits.hpp
│ │ │ │ ├── user.hpp
│ │ │ │ ├── v4/
│ │ │ │ │ ├── basic_regex.hpp
│ │ │ │ │ ├── basic_regex_creator.hpp
│ │ │ │ │ ├── basic_regex_parser.hpp
│ │ │ │ │ ├── c_regex_traits.hpp
│ │ │ │ │ ├── char_regex_traits.hpp
│ │ │ │ │ ├── cpp_regex_traits.hpp
│ │ │ │ │ ├── cregex.hpp
│ │ │ │ │ ├── error_type.hpp
│ │ │ │ │ ├── icu.hpp
│ │ │ │ │ ├── indexed_bit_flag.hpp
│ │ │ │ │ ├── iterator_category.hpp
│ │ │ │ │ ├── iterator_traits.hpp
│ │ │ │ │ ├── match_flags.hpp
│ │ │ │ │ ├── match_results.hpp
│ │ │ │ │ ├── mem_block_cache.hpp
│ │ │ │ │ ├── object_cache.hpp
│ │ │ │ │ ├── pattern_except.hpp
│ │ │ │ │ ├── perl_matcher.hpp
│ │ │ │ │ ├── perl_matcher_common.hpp
│ │ │ │ │ ├── perl_matcher_non_recursive.hpp
│ │ │ │ │ ├── perl_matcher_recursive.hpp
│ │ │ │ │ ├── primary_transform.hpp
│ │ │ │ │ ├── protected_call.hpp
│ │ │ │ │ ├── regbase.hpp
│ │ │ │ │ ├── regex.hpp
│ │ │ │ │ ├── regex_format.hpp
│ │ │ │ │ ├── regex_fwd.hpp
│ │ │ │ │ ├── regex_grep.hpp
│ │ │ │ │ ├── regex_iterator.hpp
│ │ │ │ │ ├── regex_match.hpp
│ │ │ │ │ ├── regex_merge.hpp
│ │ │ │ │ ├── regex_raw_buffer.hpp
│ │ │ │ │ ├── regex_replace.hpp
│ │ │ │ │ ├── regex_search.hpp
│ │ │ │ │ ├── regex_split.hpp
│ │ │ │ │ ├── regex_token_iterator.hpp
│ │ │ │ │ ├── regex_traits.hpp
│ │ │ │ │ ├── regex_traits_defaults.hpp
│ │ │ │ │ ├── regex_workaround.hpp
│ │ │ │ │ ├── states.hpp
│ │ │ │ │ ├── sub_match.hpp
│ │ │ │ │ ├── syntax_type.hpp
│ │ │ │ │ ├── u32regex_iterator.hpp
│ │ │ │ │ ├── u32regex_token_iterator.hpp
│ │ │ │ │ ├── unicode_iterator.hpp
│ │ │ │ │ └── w32_regex_traits.hpp
│ │ │ │ └── v5/
│ │ │ │ ├── basic_regex.hpp
│ │ │ │ ├── basic_regex_creator.hpp
│ │ │ │ ├── basic_regex_parser.hpp
│ │ │ │ ├── c_regex_traits.hpp
│ │ │ │ ├── char_regex_traits.hpp
│ │ │ │ ├── cpp_regex_traits.hpp
│ │ │ │ ├── cregex.hpp
│ │ │ │ ├── error_type.hpp
│ │ │ │ ├── icu.hpp
│ │ │ │ ├── iterator_category.hpp
│ │ │ │ ├── iterator_traits.hpp
│ │ │ │ ├── match_flags.hpp
│ │ │ │ ├── match_results.hpp
│ │ │ │ ├── mem_block_cache.hpp
│ │ │ │ ├── object_cache.hpp
│ │ │ │ ├── pattern_except.hpp
│ │ │ │ ├── perl_matcher.hpp
│ │ │ │ ├── perl_matcher_common.hpp
│ │ │ │ ├── perl_matcher_non_recursive.hpp
│ │ │ │ ├── primary_transform.hpp
│ │ │ │ ├── regbase.hpp
│ │ │ │ ├── regex.hpp
│ │ │ │ ├── regex_format.hpp
│ │ │ │ ├── regex_fwd.hpp
│ │ │ │ ├── regex_grep.hpp
│ │ │ │ ├── regex_iterator.hpp
│ │ │ │ ├── regex_match.hpp
│ │ │ │ ├── regex_merge.hpp
│ │ │ │ ├── regex_raw_buffer.hpp
│ │ │ │ ├── regex_replace.hpp
│ │ │ │ ├── regex_search.hpp
│ │ │ │ ├── regex_split.hpp
│ │ │ │ ├── regex_token_iterator.hpp
│ │ │ │ ├── regex_traits.hpp
│ │ │ │ ├── regex_traits_defaults.hpp
│ │ │ │ ├── regex_workaround.hpp
│ │ │ │ ├── states.hpp
│ │ │ │ ├── sub_match.hpp
│ │ │ │ ├── syntax_type.hpp
│ │ │ │ ├── u32regex_iterator.hpp
│ │ │ │ ├── u32regex_token_iterator.hpp
│ │ │ │ ├── unicode_iterator.hpp
│ │ │ │ └── w32_regex_traits.hpp
│ │ │ ├── regex.h
│ │ │ ├── regex.hpp
│ │ │ └── regex_fwd.hpp
│ │ ├── imgui/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── backend/
│ │ │ │ ├── CMakeLists.txt
│ │ │ │ ├── include/
│ │ │ │ │ ├── emscripten_browser_clipboard.h
│ │ │ │ │ ├── imgui_impl_glfw.h
│ │ │ │ │ ├── imgui_impl_opengl3.h
│ │ │ │ │ ├── imgui_impl_opengl3_loader.h
│ │ │ │ │ ├── opengl_support.h
│ │ │ │ │ └── stb_image.h
│ │ │ │ └── source/
│ │ │ │ ├── imgui_impl_glfw.cpp
│ │ │ │ └── imgui_impl_opengl3.cpp
│ │ │ ├── cimgui/
│ │ │ │ ├── CMakeLists.txt
│ │ │ │ ├── include/
│ │ │ │ │ └── cimgui.h
│ │ │ │ └── source/
│ │ │ │ └── cimgui.cpp
│ │ │ ├── imgui/
│ │ │ │ ├── CMakeLists.txt
│ │ │ │ ├── LICENSE.txt
│ │ │ │ ├── README.md
│ │ │ │ ├── include/
│ │ │ │ │ ├── imconfig.h
│ │ │ │ │ ├── imgui.h
│ │ │ │ │ ├── imgui_internal.h
│ │ │ │ │ ├── imstb_rectpack.h
│ │ │ │ │ ├── imstb_textedit.h
│ │ │ │ │ ├── imstb_truetype.h
│ │ │ │ │ └── misc/
│ │ │ │ │ └── freetype/
│ │ │ │ │ └── imgui_freetype.h
│ │ │ │ └── source/
│ │ │ │ ├── imgui.cpp
│ │ │ │ ├── imgui_demo.cpp
│ │ │ │ ├── imgui_draw.cpp
│ │ │ │ ├── imgui_tables.cpp
│ │ │ │ ├── imgui_widgets.cpp
│ │ │ │ └── misc/
│ │ │ │ └── freetype/
│ │ │ │ └── imgui_freetype.cpp
│ │ │ ├── imgui_test_engine/
│ │ │ │ ├── CMakeLists.txt
│ │ │ │ ├── LICENSE.txt
│ │ │ │ ├── README.md
│ │ │ │ ├── include/
│ │ │ │ │ ├── imgui_capture_tool.h
│ │ │ │ │ ├── imgui_te_context.h
│ │ │ │ │ ├── imgui_te_coroutine.h
│ │ │ │ │ ├── imgui_te_engine.h
│ │ │ │ │ ├── imgui_te_exporters.h
│ │ │ │ │ ├── imgui_te_imconfig.h
│ │ │ │ │ ├── imgui_te_internal.h
│ │ │ │ │ ├── imgui_te_perftool.h
│ │ │ │ │ ├── imgui_te_ui.h
│ │ │ │ │ ├── imgui_te_utils.h
│ │ │ │ │ └── thirdparty/
│ │ │ │ │ ├── README.md
│ │ │ │ │ ├── Str/
│ │ │ │ │ │ ├── .editorconfig
│ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ ├── Str.h
│ │ │ │ │ │ └── Str.natvis
│ │ │ │ │ └── stb/
│ │ │ │ │ └── imstb_image_write.h
│ │ │ │ └── source/
│ │ │ │ ├── imgui_capture_tool.cpp
│ │ │ │ ├── imgui_te_context.cpp
│ │ │ │ ├── imgui_te_coroutine.cpp
│ │ │ │ ├── imgui_te_engine.cpp
│ │ │ │ ├── imgui_te_exporters.cpp
│ │ │ │ ├── imgui_te_perftool.cpp
│ │ │ │ ├── imgui_te_ui.cpp
│ │ │ │ └── imgui_te_utils.cpp
│ │ │ ├── imnodes/
│ │ │ │ ├── CMakeLists.txt
│ │ │ │ ├── LICENSE.md
│ │ │ │ ├── README.md
│ │ │ │ ├── include/
│ │ │ │ │ ├── imnodes.h
│ │ │ │ │ └── imnodes_internal.h
│ │ │ │ └── source/
│ │ │ │ └── imnodes.cpp
│ │ │ ├── implot/
│ │ │ │ ├── CMakeLists.txt
│ │ │ │ ├── LICENSE.txt
│ │ │ │ ├── README.md
│ │ │ │ ├── include/
│ │ │ │ │ ├── implot.h
│ │ │ │ │ └── implot_internal.h
│ │ │ │ └── source/
│ │ │ │ ├── implot.cpp
│ │ │ │ ├── implot_demo.cpp
│ │ │ │ └── implot_items.cpp
│ │ │ └── implot3d/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── include/
│ │ │ │ ├── implot3d.h
│ │ │ │ └── implot3d_internal.h
│ │ │ └── source/
│ │ │ ├── implot3d.cpp
│ │ │ ├── implot3d_demo.cpp
│ │ │ ├── implot3d_items.cpp
│ │ │ └── implot3d_meshes.cpp
│ │ ├── llvm-demangle/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── LICENSE.TXT
│ │ │ ├── include/
│ │ │ │ └── llvm/
│ │ │ │ └── Demangle/
│ │ │ │ ├── Demangle.h
│ │ │ │ ├── DemangleConfig.h
│ │ │ │ ├── ItaniumDemangle.h
│ │ │ │ ├── ItaniumNodes.def
│ │ │ │ ├── MicrosoftDemangle.h
│ │ │ │ ├── MicrosoftDemangleNodes.h
│ │ │ │ ├── README.txt
│ │ │ │ ├── StringViewExtras.h
│ │ │ │ └── Utility.h
│ │ │ └── source/
│ │ │ ├── DLangDemangle.cpp
│ │ │ ├── Demangle.cpp
│ │ │ ├── ItaniumDemangle.cpp
│ │ │ ├── MicrosoftDemangle.cpp
│ │ │ ├── MicrosoftDemangleNodes.cpp
│ │ │ └── RustDemangle.cpp
│ │ ├── microtar/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── include/
│ │ │ │ └── microtar.h
│ │ │ └── source/
│ │ │ └── microtar.c
│ │ ├── miniaudio/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── LICENSE
│ │ │ ├── include/
│ │ │ │ └── miniaudio.h
│ │ │ └── source/
│ │ │ └── miniaudio.c
│ │ ├── nlohmann_json/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── LICENSE.MIT
│ │ │ ├── cmake/
│ │ │ │ ├── config.cmake.in
│ │ │ │ ├── nlohmann_jsonConfigVersion.cmake.in
│ │ │ │ └── pkg-config.pc.in
│ │ │ ├── include/
│ │ │ │ └── nlohmann/
│ │ │ │ ├── adl_serializer.hpp
│ │ │ │ ├── byte_container_with_subtype.hpp
│ │ │ │ ├── detail/
│ │ │ │ │ ├── abi_macros.hpp
│ │ │ │ │ ├── conversions/
│ │ │ │ │ │ ├── from_json.hpp
│ │ │ │ │ │ ├── to_chars.hpp
│ │ │ │ │ │ └── to_json.hpp
│ │ │ │ │ ├── exceptions.hpp
│ │ │ │ │ ├── hash.hpp
│ │ │ │ │ ├── input/
│ │ │ │ │ │ ├── binary_reader.hpp
│ │ │ │ │ │ ├── input_adapters.hpp
│ │ │ │ │ │ ├── json_sax.hpp
│ │ │ │ │ │ ├── lexer.hpp
│ │ │ │ │ │ ├── parser.hpp
│ │ │ │ │ │ └── position_t.hpp
│ │ │ │ │ ├── iterators/
│ │ │ │ │ │ ├── internal_iterator.hpp
│ │ │ │ │ │ ├── iter_impl.hpp
│ │ │ │ │ │ ├── iteration_proxy.hpp
│ │ │ │ │ │ ├── iterator_traits.hpp
│ │ │ │ │ │ ├── json_reverse_iterator.hpp
│ │ │ │ │ │ └── primitive_iterator.hpp
│ │ │ │ │ ├── json_custom_base_class.hpp
│ │ │ │ │ ├── json_pointer.hpp
│ │ │ │ │ ├── json_ref.hpp
│ │ │ │ │ ├── macro_scope.hpp
│ │ │ │ │ ├── macro_unscope.hpp
│ │ │ │ │ ├── meta/
│ │ │ │ │ │ ├── call_std/
│ │ │ │ │ │ │ ├── begin.hpp
│ │ │ │ │ │ │ └── end.hpp
│ │ │ │ │ │ ├── cpp_future.hpp
│ │ │ │ │ │ ├── detected.hpp
│ │ │ │ │ │ ├── identity_tag.hpp
│ │ │ │ │ │ ├── is_sax.hpp
│ │ │ │ │ │ ├── std_fs.hpp
│ │ │ │ │ │ ├── type_traits.hpp
│ │ │ │ │ │ └── void_t.hpp
│ │ │ │ │ ├── output/
│ │ │ │ │ │ ├── binary_writer.hpp
│ │ │ │ │ │ ├── output_adapters.hpp
│ │ │ │ │ │ └── serializer.hpp
│ │ │ │ │ ├── string_concat.hpp
│ │ │ │ │ ├── string_escape.hpp
│ │ │ │ │ ├── string_utils.hpp
│ │ │ │ │ └── value_t.hpp
│ │ │ │ ├── json.hpp
│ │ │ │ ├── json_fwd.hpp
│ │ │ │ ├── ordered_map.hpp
│ │ │ │ └── thirdparty/
│ │ │ │ └── hedley/
│ │ │ │ ├── hedley.hpp
│ │ │ │ └── hedley_undef.hpp
│ │ │ ├── nlohmann_json.natvis
│ │ │ └── single_include/
│ │ │ └── nlohmann/
│ │ │ ├── json.hpp
│ │ │ └── json_fwd.hpp
│ │ └── yara/
│ │ ├── CMakeLists.txt
│ │ └── crypto.h
│ └── trace/
│ ├── CMakeLists.txt
│ ├── include/
│ │ └── hex/
│ │ └── trace/
│ │ ├── exceptions.hpp
│ │ └── stacktrace.hpp
│ └── source/
│ ├── exceptions.cpp
│ ├── instr_entry.cpp
│ └── stacktrace.cpp
├── main/
│ ├── CMakeLists.txt
│ ├── forwarder/
│ │ ├── CMakeLists.txt
│ │ └── source/
│ │ └── main.cpp
│ ├── gui/
│ │ ├── CMakeLists.txt
│ │ ├── include/
│ │ │ ├── crash_handlers.hpp
│ │ │ ├── init/
│ │ │ │ ├── run.hpp
│ │ │ │ ├── splash_window.hpp
│ │ │ │ └── tasks.hpp
│ │ │ ├── messaging.hpp
│ │ │ └── window.hpp
│ │ ├── romfs/
│ │ │ └── splash_colors.json
│ │ └── source/
│ │ ├── crash_handlers.cpp
│ │ ├── init/
│ │ │ ├── run/
│ │ │ │ ├── cli.cpp
│ │ │ │ ├── common.cpp
│ │ │ │ ├── desktop.cpp
│ │ │ │ └── web.cpp
│ │ │ ├── splash_window.cpp
│ │ │ └── tasks.cpp
│ │ ├── main.cpp
│ │ ├── messaging/
│ │ │ ├── common.cpp
│ │ │ ├── linux.cpp
│ │ │ ├── macos.cpp
│ │ │ ├── web.cpp
│ │ │ └── windows.cpp
│ │ └── window/
│ │ ├── platform/
│ │ │ ├── linux.cpp
│ │ │ ├── macos.cpp
│ │ │ ├── web.cpp
│ │ │ └── windows.cpp
│ │ └── window.cpp
│ └── updater/
│ ├── CMakeLists.txt
│ └── source/
│ └── main.cpp
├── plugins/
│ ├── builtin/
│ │ ├── CMakeLists.txt
│ │ ├── include/
│ │ │ ├── content/
│ │ │ │ ├── command_line_interface.hpp
│ │ │ │ ├── data_processor_nodes.hpp
│ │ │ │ ├── differing_byte_searcher.hpp
│ │ │ │ ├── export_formatters/
│ │ │ │ │ ├── export_formatter.hpp
│ │ │ │ │ ├── export_formatter_csv.hpp
│ │ │ │ │ ├── export_formatter_json.hpp
│ │ │ │ │ └── export_formatter_tsv.hpp
│ │ │ │ ├── global_actions.hpp
│ │ │ │ ├── helpers/
│ │ │ │ │ ├── constants.hpp
│ │ │ │ │ └── diagrams.hpp
│ │ │ │ ├── popups/
│ │ │ │ │ ├── hex_editor/
│ │ │ │ │ │ ├── popup_hex_editor_base_address.hpp
│ │ │ │ │ │ ├── popup_hex_editor_decoded_string.hpp
│ │ │ │ │ │ ├── popup_hex_editor_fill.hpp
│ │ │ │ │ │ ├── popup_hex_editor_find.hpp
│ │ │ │ │ │ ├── popup_hex_editor_goto.hpp
│ │ │ │ │ │ ├── popup_hex_editor_insert.hpp
│ │ │ │ │ │ ├── popup_hex_editor_page_size.hpp
│ │ │ │ │ │ ├── popup_hex_editor_paste_behaviour.hpp
│ │ │ │ │ │ ├── popup_hex_editor_remove.hpp
│ │ │ │ │ │ ├── popup_hex_editor_resize.hpp
│ │ │ │ │ │ └── popup_hex_editor_select.hpp
│ │ │ │ │ ├── popup_blocking_task.hpp
│ │ │ │ │ ├── popup_crash_recovered.hpp
│ │ │ │ │ ├── popup_docs_question.hpp
│ │ │ │ │ ├── popup_tasks_waiting.hpp
│ │ │ │ │ └── popup_unsaved_changes.hpp
│ │ │ │ ├── providers/
│ │ │ │ │ ├── base64_provider.hpp
│ │ │ │ │ ├── command_provider.hpp
│ │ │ │ │ ├── disk_provider.hpp
│ │ │ │ │ ├── file_provider.hpp
│ │ │ │ │ ├── gdb_provider.hpp
│ │ │ │ │ ├── intel_hex_provider.hpp
│ │ │ │ │ ├── memory_file_provider.hpp
│ │ │ │ │ ├── motorola_srec_provider.hpp
│ │ │ │ │ ├── null_provider.hpp
│ │ │ │ │ ├── process_memory_provider.hpp
│ │ │ │ │ ├── udp_provider.hpp
│ │ │ │ │ ├── undo_operations/
│ │ │ │ │ │ ├── operation_bookmark.hpp
│ │ │ │ │ │ ├── operation_insert.hpp
│ │ │ │ │ │ ├── operation_remove.hpp
│ │ │ │ │ │ └── operation_write.hpp
│ │ │ │ │ └── view_provider.hpp
│ │ │ │ ├── recent.hpp
│ │ │ │ ├── text_highlighting/
│ │ │ │ │ └── pattern_language.hpp
│ │ │ │ ├── tools_entries.hpp
│ │ │ │ └── views/
│ │ │ │ ├── fullscreen/
│ │ │ │ │ ├── view_fullscreen_file_info.hpp
│ │ │ │ │ └── view_fullscreen_save_editor.hpp
│ │ │ │ ├── view_about.hpp
│ │ │ │ ├── view_achievements.hpp
│ │ │ │ ├── view_bookmarks.hpp
│ │ │ │ ├── view_command_palette.hpp
│ │ │ │ ├── view_data_inspector.hpp
│ │ │ │ ├── view_data_processor.hpp
│ │ │ │ ├── view_find.hpp
│ │ │ │ ├── view_hex_editor.hpp
│ │ │ │ ├── view_highlight_rules.hpp
│ │ │ │ ├── view_information.hpp
│ │ │ │ ├── view_logs.hpp
│ │ │ │ ├── view_patches.hpp
│ │ │ │ ├── view_pattern_data.hpp
│ │ │ │ ├── view_pattern_editor.hpp
│ │ │ │ ├── view_provider_settings.hpp
│ │ │ │ ├── view_settings.hpp
│ │ │ │ ├── view_store.hpp
│ │ │ │ ├── view_theme_manager.hpp
│ │ │ │ ├── view_tools.hpp
│ │ │ │ └── view_tutorials.hpp
│ │ │ └── plugin_builtin.hpp
│ │ ├── romfs/
│ │ │ ├── assets/
│ │ │ │ ├── common/
│ │ │ │ │ └── color_names.json
│ │ │ │ └── screenshot_descriptions.json
│ │ │ ├── auto_extract/
│ │ │ │ └── workspaces/
│ │ │ │ ├── default.hexws
│ │ │ │ └── minimal.hexws
│ │ │ ├── lang/
│ │ │ │ ├── de_DE.json
│ │ │ │ ├── en_US.json
│ │ │ │ ├── es_ES.json
│ │ │ │ ├── fr_FR.json
│ │ │ │ ├── hu_HU.json
│ │ │ │ ├── it_IT.json
│ │ │ │ ├── ja_JP.json
│ │ │ │ ├── ko_KR.json
│ │ │ │ ├── languages.json
│ │ │ │ ├── pl_PL.json
│ │ │ │ ├── pt_BR.json
│ │ │ │ ├── ru_RU.json
│ │ │ │ ├── uk_UA.json
│ │ │ │ ├── zh_CN.json
│ │ │ │ └── zh_TW.json
│ │ │ ├── layouts/
│ │ │ │ ├── default.hexlyt
│ │ │ │ └── minimal.hexlyt
│ │ │ ├── licenses/
│ │ │ │ └── LICENSE
│ │ │ ├── logo.ans
│ │ │ ├── mcp/
│ │ │ │ └── tools/
│ │ │ │ ├── execute_pattern_code.json
│ │ │ │ ├── get_pattern_console_content.json
│ │ │ │ ├── get_patterns.json
│ │ │ │ ├── list_open_data_sources.json
│ │ │ │ ├── open_file.json
│ │ │ │ ├── read_data.json
│ │ │ │ └── select_data_source.json
│ │ │ ├── shaders/
│ │ │ │ └── retro/
│ │ │ │ ├── fragment.glsl
│ │ │ │ └── vertex.glsl
│ │ │ ├── themes/
│ │ │ │ ├── classic.json
│ │ │ │ ├── dark.json
│ │ │ │ └── light.json
│ │ │ └── tips.json
│ │ ├── source/
│ │ │ ├── content/
│ │ │ │ ├── achievements.cpp
│ │ │ │ ├── background_services.cpp
│ │ │ │ ├── command_line_interface.cpp
│ │ │ │ ├── command_palette_commands.cpp
│ │ │ │ ├── communication_interface.cpp
│ │ │ │ ├── data_formatters.cpp
│ │ │ │ ├── data_information_sections.cpp
│ │ │ │ ├── data_inspector.cpp
│ │ │ │ ├── data_processor_nodes/
│ │ │ │ │ ├── basic_nodes.cpp
│ │ │ │ │ ├── control_nodes.cpp
│ │ │ │ │ ├── decode_nodes.cpp
│ │ │ │ │ ├── logic_nodes.cpp
│ │ │ │ │ ├── math_nodes.cpp
│ │ │ │ │ ├── other_nodes.cpp
│ │ │ │ │ └── visual_nodes.cpp
│ │ │ │ ├── data_processor_nodes.cpp
│ │ │ │ ├── data_visualizers.cpp
│ │ │ │ ├── differing_byte_searcher.cpp
│ │ │ │ ├── events.cpp
│ │ │ │ ├── file_extraction.cpp
│ │ │ │ ├── file_handlers.cpp
│ │ │ │ ├── global_actions.cpp
│ │ │ │ ├── helpers/
│ │ │ │ │ └── constants.cpp
│ │ │ │ ├── init_tasks.cpp
│ │ │ │ ├── main_menu_items.cpp
│ │ │ │ ├── mcp_tools.cpp
│ │ │ │ ├── minimap_visualizers.cpp
│ │ │ │ ├── out_of_box_experience.cpp
│ │ │ │ ├── pl_builtin_functions.cpp
│ │ │ │ ├── pl_builtin_types.cpp
│ │ │ │ ├── pl_pragmas.cpp
│ │ │ │ ├── pl_visualizers/
│ │ │ │ │ ├── chunk_entropy.cpp
│ │ │ │ │ └── hex_viewer.cpp
│ │ │ │ ├── pl_visualizers.cpp
│ │ │ │ ├── popups/
│ │ │ │ │ └── hex_editor/
│ │ │ │ │ ├── popup_hex_editor_base_address.cpp
│ │ │ │ │ ├── popup_hex_editor_decoded_string.cpp
│ │ │ │ │ ├── popup_hex_editor_fill.cpp
│ │ │ │ │ ├── popup_hex_editor_find.cpp
│ │ │ │ │ ├── popup_hex_editor_goto.cpp
│ │ │ │ │ ├── popup_hex_editor_insert.cpp
│ │ │ │ │ ├── popup_hex_editor_page_size.cpp
│ │ │ │ │ ├── popup_hex_editor_paste_behaviour.cpp
│ │ │ │ │ ├── popup_hex_editor_remove.cpp
│ │ │ │ │ ├── popup_hex_editor_resize.cpp
│ │ │ │ │ └── popup_hex_editor_select.cpp
│ │ │ │ ├── project.cpp
│ │ │ │ ├── providers/
│ │ │ │ │ ├── base64_provider.cpp
│ │ │ │ │ ├── command_provider.cpp
│ │ │ │ │ ├── disk_provider.cpp
│ │ │ │ │ ├── file_provider.cpp
│ │ │ │ │ ├── gdb_provider.cpp
│ │ │ │ │ ├── intel_hex_provider.cpp
│ │ │ │ │ ├── memory_file_provider.cpp
│ │ │ │ │ ├── motorola_srec_provider.cpp
│ │ │ │ │ ├── process_memory_provider.cpp
│ │ │ │ │ ├── udp_provider.cpp
│ │ │ │ │ └── view_provider.cpp
│ │ │ │ ├── providers.cpp
│ │ │ │ ├── recent.cpp
│ │ │ │ ├── report_generators.cpp
│ │ │ │ ├── settings_entries.cpp
│ │ │ │ ├── text_highlighting/
│ │ │ │ │ └── pattern_language.cpp
│ │ │ │ ├── themes.cpp
│ │ │ │ ├── tools/
│ │ │ │ │ ├── ascii_table.cpp
│ │ │ │ │ ├── base_converter.cpp
│ │ │ │ │ ├── byte_swapper.cpp
│ │ │ │ │ ├── color_picker.cpp
│ │ │ │ │ ├── demangler.cpp
│ │ │ │ │ ├── euclidean_alg.cpp
│ │ │ │ │ ├── file_tool_combiner.cpp
│ │ │ │ │ ├── file_tool_shredder.cpp
│ │ │ │ │ ├── file_tool_splitter.cpp
│ │ │ │ │ ├── file_uploader.cpp
│ │ │ │ │ ├── graphing_calc.cpp
│ │ │ │ │ ├── http_requests.cpp
│ │ │ │ │ ├── ieee_decoder.cpp
│ │ │ │ │ ├── math_eval.cpp
│ │ │ │ │ ├── multiplication_decoder.cpp
│ │ │ │ │ ├── perms_calc.cpp
│ │ │ │ │ ├── regex_replacer.cpp
│ │ │ │ │ ├── tcp_client_server.cpp
│ │ │ │ │ └── wiki_explainer.cpp
│ │ │ │ ├── tools_entries.cpp
│ │ │ │ ├── tutorials/
│ │ │ │ │ ├── introduction.cpp
│ │ │ │ │ └── tutorials.cpp
│ │ │ │ ├── ui_items.cpp
│ │ │ │ ├── views/
│ │ │ │ │ ├── fullscreen/
│ │ │ │ │ │ ├── view_fullscreen_file_info.cpp
│ │ │ │ │ │ └── view_fullscreen_save_editor.cpp
│ │ │ │ │ ├── view_about.cpp
│ │ │ │ │ ├── view_achievements.cpp
│ │ │ │ │ ├── view_bookmarks.cpp
│ │ │ │ │ ├── view_command_palette.cpp
│ │ │ │ │ ├── view_data_inspector.cpp
│ │ │ │ │ ├── view_data_processor.cpp
│ │ │ │ │ ├── view_find.cpp
│ │ │ │ │ ├── view_hex_editor.cpp
│ │ │ │ │ ├── view_highlight_rules.cpp
│ │ │ │ │ ├── view_information.cpp
│ │ │ │ │ ├── view_logs.cpp
│ │ │ │ │ ├── view_patches.cpp
│ │ │ │ │ ├── view_pattern_data.cpp
│ │ │ │ │ ├── view_pattern_editor.cpp
│ │ │ │ │ ├── view_provider_settings.cpp
│ │ │ │ │ ├── view_settings.cpp
│ │ │ │ │ ├── view_store.cpp
│ │ │ │ │ ├── view_theme_manager.cpp
│ │ │ │ │ ├── view_tools.cpp
│ │ │ │ │ └── view_tutorials.cpp
│ │ │ │ ├── views.cpp
│ │ │ │ ├── welcome_screen.cpp
│ │ │ │ ├── window_decoration.cpp
│ │ │ │ └── workspaces.cpp
│ │ │ └── plugin_builtin.cpp
│ │ └── tests/
│ │ ├── CMakeLists.txt
│ │ └── source/
│ │ └── main.cpp
│ ├── decompress/
│ │ ├── CMakeLists.txt
│ │ └── source/
│ │ ├── content/
│ │ │ └── pl_functions.cpp
│ │ └── plugin_decompress.cpp
│ ├── diffing/
│ │ ├── CMakeLists.txt
│ │ ├── include/
│ │ │ └── content/
│ │ │ └── views/
│ │ │ └── view_diff.hpp
│ │ ├── romfs/
│ │ │ └── lang/
│ │ │ ├── de_DE.json
│ │ │ ├── en_US.json
│ │ │ ├── es_ES.json
│ │ │ ├── fr_FR.json
│ │ │ ├── hu_HU.json
│ │ │ ├── it_IT.json
│ │ │ ├── ja_JP.json
│ │ │ ├── ko_KR.json
│ │ │ ├── languages.json
│ │ │ ├── pl_PL.json
│ │ │ ├── pt_BR.json
│ │ │ ├── ru_RU.json
│ │ │ ├── uk_UA.json
│ │ │ ├── zh_CN.json
│ │ │ └── zh_TW.json
│ │ └── source/
│ │ ├── content/
│ │ │ ├── diffing_algorithms.cpp
│ │ │ └── views/
│ │ │ └── view_diff.cpp
│ │ └── plugin_diffing.cpp
│ ├── disassembler/
│ │ ├── CMakeLists.txt
│ │ ├── include/
│ │ │ └── content/
│ │ │ ├── helpers/
│ │ │ │ └── capstone.hpp
│ │ │ └── views/
│ │ │ └── view_disassembler.hpp
│ │ ├── romfs/
│ │ │ └── lang/
│ │ │ ├── de_DE.json
│ │ │ ├── en_US.json
│ │ │ ├── es_ES.json
│ │ │ ├── fr_FR.json
│ │ │ ├── hu_HU.json
│ │ │ ├── it_IT.json
│ │ │ ├── ja_JP.json
│ │ │ ├── ko_KR.json
│ │ │ ├── languages.json
│ │ │ ├── pl_PL.json
│ │ │ ├── pt_BR.json
│ │ │ ├── ru_RU.json
│ │ │ ├── uk_UA.json
│ │ │ ├── zh_CN.json
│ │ │ └── zh_TW.json
│ │ └── source/
│ │ ├── content/
│ │ │ ├── disassemblers/
│ │ │ │ ├── capstone_architectures.cpp
│ │ │ │ └── custom_architectures.cpp
│ │ │ ├── pl_builtin_types.cpp
│ │ │ ├── pl_visualizers/
│ │ │ │ └── disassembler.cpp
│ │ │ └── views/
│ │ │ └── view_disassembler.cpp
│ │ └── plugin_disassembler.cpp
│ ├── fonts/
│ │ ├── CMakeLists.txt
│ │ ├── LICENSE
│ │ ├── include/
│ │ │ ├── font_settings.hpp
│ │ │ └── fonts/
│ │ │ ├── blender_icons.hpp
│ │ │ ├── fonts.hpp
│ │ │ ├── tabler_icons.hpp
│ │ │ └── vscode_icons.hpp
│ │ ├── romfs/
│ │ │ ├── BLENDERICONS_LICENSE.txt
│ │ │ ├── JETBRAINS_MONO_LICENSE.txt
│ │ │ ├── TABLERICONS_LICENSE.txt
│ │ │ ├── UNIFONT_LICENSE.txt
│ │ │ ├── VSCODICONS_LICENSE.txt
│ │ │ ├── fonts/
│ │ │ │ └── unifont.otf
│ │ │ └── lang/
│ │ │ ├── de_DE.json
│ │ │ ├── en_US.json
│ │ │ ├── es_ES.json
│ │ │ ├── fr_FR.json
│ │ │ ├── hu_HU.json
│ │ │ ├── it_IT.json
│ │ │ ├── ja_JP.json
│ │ │ ├── ko_KR.json
│ │ │ ├── languages.json
│ │ │ ├── pl_PL.json
│ │ │ ├── pt_BR.json
│ │ │ ├── ru_RU.json
│ │ │ ├── uk_UA.json
│ │ │ ├── zh_CN.json
│ │ │ └── zh_TW.json
│ │ └── source/
│ │ ├── font_loader.cpp
│ │ ├── font_settings.cpp
│ │ ├── fonts.cpp
│ │ └── library_fonts.cpp
│ ├── hashes/
│ │ ├── CMakeLists.txt
│ │ ├── include/
│ │ │ └── content/
│ │ │ └── views/
│ │ │ └── view_hashes.hpp
│ │ ├── romfs/
│ │ │ └── lang/
│ │ │ ├── de_DE.json
│ │ │ ├── en_US.json
│ │ │ ├── es_ES.json
│ │ │ ├── fr_FR.json
│ │ │ ├── hu_HU.json
│ │ │ ├── it_IT.json
│ │ │ ├── ja_JP.json
│ │ │ ├── ko_KR.json
│ │ │ ├── languages.json
│ │ │ ├── pl_PL.json
│ │ │ ├── pt_BR.json
│ │ │ ├── ru_RU.json
│ │ │ ├── uk_UA.json
│ │ │ ├── zh_CN.json
│ │ │ └── zh_TW.json
│ │ └── source/
│ │ ├── content/
│ │ │ ├── hashes.cpp
│ │ │ └── views/
│ │ │ └── view_hashes.cpp
│ │ └── plugin_hashes.cpp
│ ├── remote/
│ │ ├── CMakeLists.txt
│ │ ├── LICENSE
│ │ ├── include/
│ │ │ └── content/
│ │ │ ├── helpers/
│ │ │ │ └── sftp_client.hpp
│ │ │ └── providers/
│ │ │ └── ssh_provider.hpp
│ │ ├── romfs/
│ │ │ └── lang/
│ │ │ ├── de_DE.json
│ │ │ ├── en_US.json
│ │ │ ├── es_ES.json
│ │ │ ├── fr_FR.json
│ │ │ ├── hu_HU.json
│ │ │ ├── it_IT.json
│ │ │ ├── ja_JP.json
│ │ │ ├── ko_KR.json
│ │ │ ├── languages.json
│ │ │ ├── pl_PL.json
│ │ │ ├── pt_BR.json
│ │ │ ├── ru_RU.json
│ │ │ ├── uk_UA.json
│ │ │ ├── zh_CN.json
│ │ │ └── zh_TW.json
│ │ └── source/
│ │ ├── content/
│ │ │ ├── helpers/
│ │ │ │ └── sftp_client.cpp
│ │ │ └── providers/
│ │ │ └── ssh_provider.cpp
│ │ └── plugin_remote.cpp
│ ├── script_loader/
│ │ ├── CMakeLists.txt
│ │ ├── include/
│ │ │ └── loaders/
│ │ │ ├── dotnet/
│ │ │ │ └── dotnet_loader.hpp
│ │ │ └── loader.hpp
│ │ ├── romfs/
│ │ │ └── lang/
│ │ │ ├── de_DE.json
│ │ │ ├── en_US.json
│ │ │ ├── es_ES.json
│ │ │ ├── fr_FR.json
│ │ │ ├── hu_HU.json
│ │ │ ├── it_IT.json
│ │ │ ├── ja_JP.json
│ │ │ ├── ko_KR.json
│ │ │ ├── languages.json
│ │ │ ├── pl_PL.json
│ │ │ ├── pt_BR.json
│ │ │ ├── ru_RU.json
│ │ │ ├── uk_UA.json
│ │ │ ├── zh_CN.json
│ │ │ └── zh_TW.json
│ │ ├── source/
│ │ │ ├── loaders/
│ │ │ │ └── dotnet/
│ │ │ │ └── dotnet_loader.cpp
│ │ │ └── plugin_script_loader.cpp
│ │ ├── support/
│ │ │ ├── c/
│ │ │ │ ├── CMakeLists.txt
│ │ │ │ ├── include/
│ │ │ │ │ └── script_api.hpp
│ │ │ │ └── source/
│ │ │ │ └── script_api/
│ │ │ │ └── v1/
│ │ │ │ ├── bookmarks.cpp
│ │ │ │ ├── logger.cpp
│ │ │ │ ├── mem.cpp
│ │ │ │ └── ui.cpp
│ │ │ └── dotnet/
│ │ │ ├── AssemblyLoader/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── AssemblyLoader.csproj
│ │ │ │ ├── Program.cs
│ │ │ │ └── Properties/
│ │ │ │ └── PublishProfiles/
│ │ │ │ ├── FolderProfile.pubxml
│ │ │ │ └── FolderProfile.pubxml.user
│ │ │ └── CMakeLists.txt
│ │ └── templates/
│ │ └── CSharp/
│ │ ├── .gitignore
│ │ ├── ImHexLibrary/
│ │ │ ├── Bookmarks.cs
│ │ │ ├── ImHexLibrary.csproj
│ │ │ ├── Library.cs
│ │ │ ├── Logger.cs
│ │ │ ├── Memory.cs
│ │ │ └── UI.cs
│ │ ├── ImHexScript/
│ │ │ ├── ImHexScript.csproj
│ │ │ └── Program.cs
│ │ └── ImHexScript.sln
│ ├── ui/
│ │ ├── CMakeLists.txt
│ │ ├── LICENSE
│ │ ├── include/
│ │ │ ├── banners/
│ │ │ │ ├── banner_button.hpp
│ │ │ │ └── banner_icon.hpp
│ │ │ ├── popups/
│ │ │ │ ├── popup_file_chooser.hpp
│ │ │ │ ├── popup_notification.hpp
│ │ │ │ ├── popup_question.hpp
│ │ │ │ └── popup_text_input.hpp
│ │ │ ├── toasts/
│ │ │ │ └── toast_notification.hpp
│ │ │ └── ui/
│ │ │ ├── hex_editor.hpp
│ │ │ ├── markdown.hpp
│ │ │ ├── pattern_drawer.hpp
│ │ │ ├── pattern_value_editor.hpp
│ │ │ ├── text_editor.hpp
│ │ │ ├── visualizer_drawer.hpp
│ │ │ └── widgets.hpp
│ │ ├── romfs/
│ │ │ └── lang/
│ │ │ ├── de_DE.json
│ │ │ ├── en_US.json
│ │ │ ├── es_ES.json
│ │ │ ├── fr_FR.json
│ │ │ ├── hu_HU.json
│ │ │ ├── it_IT.json
│ │ │ ├── ja_JP.json
│ │ │ ├── ko_KR.json
│ │ │ ├── languages.json
│ │ │ ├── pl_PL.json
│ │ │ ├── pt_BR.json
│ │ │ ├── ru_RU.json
│ │ │ ├── uk_UA.json
│ │ │ ├── zh_CN.json
│ │ │ └── zh_TW.json
│ │ └── source/
│ │ ├── library_ui.cpp
│ │ └── ui/
│ │ ├── hex_editor.cpp
│ │ ├── markdown.cpp
│ │ ├── menu_items.cpp
│ │ ├── pattern_drawer.cpp
│ │ ├── pattern_value_editor.cpp
│ │ ├── text_editor/
│ │ │ ├── LICENSE.txt
│ │ │ ├── editor.cpp
│ │ │ ├── highlighter.cpp
│ │ │ ├── navigate.cpp
│ │ │ ├── render.cpp
│ │ │ ├── support.cpp
│ │ │ └── utf8.cpp
│ │ ├── visualizer_drawer.cpp
│ │ └── widgets.cpp
│ ├── visualizers/
│ │ ├── CMakeLists.txt
│ │ ├── include/
│ │ │ └── content/
│ │ │ └── visualizer_helpers.hpp
│ │ ├── romfs/
│ │ │ ├── lang/
│ │ │ │ ├── de_DE.json
│ │ │ │ ├── en_US.json
│ │ │ │ ├── es_ES.json
│ │ │ │ ├── fr_FR.json
│ │ │ │ ├── hu_HU.json
│ │ │ │ ├── it_IT.json
│ │ │ │ ├── ja_JP.json
│ │ │ │ ├── ko_KR.json
│ │ │ │ ├── languages.json
│ │ │ │ ├── pl_PL.json
│ │ │ │ ├── pt_BR.json
│ │ │ │ ├── ru_RU.json
│ │ │ │ ├── uk_UA.json
│ │ │ │ ├── zh_CN.json
│ │ │ │ └── zh_TW.json
│ │ │ ├── licenses/
│ │ │ │ └── MAP_LICENSE
│ │ │ └── shaders/
│ │ │ └── default/
│ │ │ ├── fragment.glsl
│ │ │ ├── lightFragment.glsl
│ │ │ ├── lightVertex.glsl
│ │ │ ├── lineFragment.glsl
│ │ │ ├── lineVertex.glsl
│ │ │ └── vertex.glsl
│ │ └── source/
│ │ ├── content/
│ │ │ ├── pl_inline_visualizers.cpp
│ │ │ ├── pl_visualizers/
│ │ │ │ ├── 3d_model.cpp
│ │ │ │ ├── coordinates.cpp
│ │ │ │ ├── digital_signal.cpp
│ │ │ │ ├── image.cpp
│ │ │ │ ├── line_plot.cpp
│ │ │ │ ├── scatter_plot.cpp
│ │ │ │ ├── sound.cpp
│ │ │ │ ├── table.cpp
│ │ │ │ └── timestamp.cpp
│ │ │ └── pl_visualizers.cpp
│ │ └── plugin_visualizers.cpp
│ ├── windows/
│ │ ├── CMakeLists.txt
│ │ ├── include/
│ │ │ └── views/
│ │ │ └── view_tty_console.hpp
│ │ ├── romfs/
│ │ │ └── lang/
│ │ │ ├── de_DE.json
│ │ │ ├── en_US.json
│ │ │ ├── es_ES.json
│ │ │ ├── fr_FR.json
│ │ │ ├── hu_HU.json
│ │ │ ├── it_IT.json
│ │ │ ├── ja_JP.json
│ │ │ ├── ko_KR.json
│ │ │ ├── languages.json
│ │ │ ├── pl_PL.json
│ │ │ ├── pt_BR.json
│ │ │ ├── ru_RU.json
│ │ │ ├── uk_UA.json
│ │ │ ├── zh_CN.json
│ │ │ └── zh_TW.json
│ │ └── source/
│ │ ├── content/
│ │ │ ├── settings_entries.cpp
│ │ │ └── ui_items.cpp
│ │ ├── plugin_windows.cpp
│ │ └── views/
│ │ └── view_tty_console.cpp
│ └── yara_rules/
│ ├── CMakeLists.txt
│ ├── include/
│ │ └── content/
│ │ ├── views/
│ │ │ └── view_yara.hpp
│ │ └── yara_rule.hpp
│ ├── romfs/
│ │ └── lang/
│ │ ├── de_DE.json
│ │ ├── en_US.json
│ │ ├── es_ES.json
│ │ ├── fr_FR.json
│ │ ├── hu_HU.json
│ │ ├── it_IT.json
│ │ ├── ja_JP.json
│ │ ├── ko_KR.json
│ │ ├── languages.json
│ │ ├── pl_PL.json
│ │ ├── pt_BR.json
│ │ ├── ru_RU.json
│ │ ├── uk_UA.json
│ │ ├── zh_CN.json
│ │ └── zh_TW.json
│ └── source/
│ ├── content/
│ │ ├── data_information_sections.cpp
│ │ ├── views/
│ │ │ └── view_yara.cpp
│ │ └── yara_rule.cpp
│ └── plugin_yara.cpp
├── resources/
│ ├── dist/
│ │ ├── macos/
│ │ │ ├── AppIcon.icns
│ │ │ ├── Entitlements.plist
│ │ │ └── Info.plist.in
│ │ └── windows/
│ │ ├── LICENSE.rtf
│ │ ├── WIX.template.in
│ │ ├── imhex.manifest
│ │ └── wix/
│ │ ├── BrowseDlg.wxs
│ │ ├── LicenseAgreementDlg.wxs
│ │ └── WixUI_InstallDirImHex.wxs
│ ├── projects/
│ │ ├── dmg_background.xcf
│ │ ├── icon.xcf
│ │ ├── imhex_logo.afdesign
│ │ ├── ms_banner.xcf
│ │ ├── readme_banners.xcf
│ │ ├── splash_wasm.xcf
│ │ ├── wix_banner.xcf
│ │ └── wix_dialog.xcf
│ └── resource.rc
└── tests/
├── CMakeLists.txt
├── algorithms/
│ ├── CMakeLists.txt
│ └── source/
│ ├── crypto.cpp
│ └── endian.cpp
├── check_langs.py
├── common/
│ ├── CMakeLists.txt
│ └── source/
│ └── main.cpp
├── helpers/
│ ├── CMakeLists.txt
│ └── source/
│ ├── common.cpp
│ ├── file.cpp
│ ├── net.cpp
│ └── utils.cpp
└── plugins/
├── CMakeLists.txt
└── source/
└── plugins.cpp
================================================
FILE CONTENTS
================================================
================================================
FILE: .clang-tidy
================================================
# All rules should have a comment associated
# Directives that do not have any effect (e.g. disabling a rule that is not enabled) can be done to add an explanation comment.
# Or at least an empty comment # to show they were put here explicitely,
# and not as part of the historical CLion-generated rules
# Note: `- -X` means disable X
# CLI usage: go to the build directory and run: `run-clang-tidy -allow-no-checks -source-filter ".*/lib/.*" -fix -j`
Checks:
- -*
- mpi-*
- bugprone-*
- -bugprone-signal-handler
- -bugprone-narrowing-conversions
- -bugprone-redundant-branch-condition
- -bugprone-exception-escape
- -bugprone-shared-ptr-array-mismatch
- -bugprone-implicit-widening-of-multiplication-result
- -bugprone-signed-char-misuse
- -bugprone-unhandled-exception-at-new
- -bugprone-infinite-loop
- -bugprone-easily-swappable-parameters
- -bugprone-float-loop-counter #
- -bugprone-unchecked-string-to-number-conversion # Unfortunately no alternative
- -bugprone-branch-clone # Mostly warns about one-line duplicates
- cert-err52-cpp
- cert-err60-cpp
- cert-str34-c
- cert-dcl21-cpp
- cert-msc50-cpp
- cert-msc51-cpp
- cert-dcl58-cpp
- cppcoreguidelines-avoid-const-or-ref-data-members
- cppcoreguidelines-pro-type-member-init # We want to use default member initializers
- cppcoreguidelines-slicing
- cppcoreguidelines-interfaces-global-init
- -cppcoreguidelines-pro-type-static-cast-downcast # dynamic_cast has a runtime overhead
- -cppcoreguidelines-narrowing-conversions #
- google-runtime-operator
- google-explicit-constructor
- -google-default-arguments # Provider and ViewProvider read() is a good example of why this is useful
- hicpp-multiway-paths-covered
- hicpp-exception-baseclass
- misc-*
- -misc-definitions-in-headers
- -misc-unused-parameters
- -misc-unused-alias-decls
- -misc-use-anonymous-namespace
- -misc-misleading-identifier
- -misc-confusable-identifiers
- -misc-misleading-bidirectional
- -misc-static-assert
- -misc-no-recursion
- -misc-const-correctness
- -misc-use-internal-linkage # False positives if header where function is defined is not included
- -misc-include-cleaner # Allow indirect includes
- -misc-non-private-member-variables-in-classes #
- modernize-*
- -modernize-use-trailing-return-type
- -modernize-use-std-print # We want to use fmt::print instead
- -modernize-use-integer-sign-comparison # Too much occurrences to change
- openmp-use-default-none
- performance-*
- -performance-no-int-to-ptr
- portability-*
- -portability-restrict-system-includes
- readability-*
- -readability-redundant-preprocessor
- -readability-named-parameter
- -readability-function-size
- -readability-use-anyofallof
- -readability-identifier-length
- -readability-magic-numbers
- -readability-braces-around-statements
- -readability-suspicious-call-argument
- -readability-isolate-declaration
- -readability-else-after-return
- -readability-redundant-access-specifiers
- -readability-function-cognitive-complexity
- -readability-identifier-naming
- -readability-qualified-auto
- -readability-use-std-min-max # Less readable imo
- -readability-math-missing-parentheses # Basic math
- -readability-implicit-bool-conversion # Not much of a problem ?
- -readability-convert-member-functions-to-static #
- -readability-use-concise-preprocessor-directives # We do not use #ifdef
- -readability-uppercase-literal-suffix # Not important enough
- -readability-redundant-string-cstr # Sometimes used to stop at first null byte
- -readability-static-accessed-through-instance #
- -readability-ambiguous-smartptr-reset-call # Fix is hard to read
# Will fix later
- -modernize-avoid-c-arrays
- -readability-make-member-function-const # idk + lots of occurences
- -readability-misleading-indentation # We need to handle cases with #if defined()
- -bugprone-unchecked-optional-access
- -performance-unnecessary-value-param # idk
- -readability-avoid-nested-conditional-operator
================================================
FILE: .dockerignore
================================================
cmake-build-*/
build*/
local/
**/Dockerfile
================================================
FILE: .gdbinit
================================================
# Skip all std:: and __gnu_debug:: symbols
skip -rfu ^std::
skip -rfu ^__gnu_debug::
# Skip all ImGui:: symbols
skip -rfu ^ImGui::
# Trigger breakpoint when execution reaches triggerSafeShutdown()
break triggerSafeShutdown
break __glibcxx_assert_fail
# Print backtrace after execution jumped to an invalid address
define fixbt
set $pc = *(void **)$rsp
set $rsp = $rsp + 8
bt
end
================================================
FILE: .gitattributes
================================================
lib/external/** linguist-vendored
dist/*.sh eol=lf
dist/**/*Dockerfile eol=lf
================================================
FILE: .github/FUNDING.yml
================================================
# Sponsor links
github: WerWolv
ko_fi: WerWolv
custom: "https://werwolv.net/donate"
================================================
FILE: .github/ISSUE_TEMPLATE/bug_report.yaml
================================================
name: Bug Report
description: Something doesn't work correctly in ImHex.
title: "[Bug] "
labels: bug
body:
- type: dropdown
id: os
attributes:
label: Operating System
description: What Operating System are you using ImHex on?
options:
- Windows
- Linux
- MacOS
validations:
required: true
- type: textarea
attributes:
label: What's the issue you encountered?
description: |
Describe the issue in detail and what you were doing beforehand.
validations:
required: true
- type: textarea
attributes:
label: How can the issue be reproduced?
description: Include a detailed step by step process for recreating your issue.
validations:
required: true
- type: input
attributes:
label: ImHex Version
description: |
The version of ImHex you've been using when encountering the bug. If using a nightly, please add the commit hash as well
placeholder: X.X.X
validations:
required: true
- type: checkboxes
attributes:
label: ImHex Build Type
options:
- label: Nightly or built from sources
- type: input
attributes:
label: Installation type
description: |
How did you install ImHex ? MSI/Portable/DMG/AppImage/Fedora package/etc..
validations:
required: true
- type: textarea
attributes:
label: Additional context?
placeholder: |
- Additional information about your environment.
- If possible and useful, please upload the binary you've been editing when the bug occurred.
validations:
required: false
================================================
FILE: .github/ISSUE_TEMPLATE/feature_request.yaml
================================================
name: Feature Request
description: Something you'd like to see added to ImHex in the future
title: "[Feature] "
labels: feature request
body:
- type: textarea
attributes:
label: What feature would you like to see?
description: |
Describe in detail what the feature should do and how it should work.
validations:
required: true
- type: textarea
attributes:
label: How will this feature be useful to you and others?
description: Describe how everybody will benefit from this feature if it gets added.
validations:
required: true
- type: checkboxes
attributes:
label: Request Type
options:
- label: I can provide a PoC for this feature or am willing to work on it myself and submit a PR
- type: textarea
attributes:
label: Additional context?
================================================
FILE: .github/PULL_REQUEST_TEMPLATE.md
================================================
<!--
Please provide as much information as possible about what your PR aims to do.
PRs with no description will most likely be closed until more information is provided.
If you're planing on changing fundamental behaviour or add big new features, please open a GitHub Issue first before starting to work on it.
If it's not something big and you still want to contact us about it, feel free to do so !
-->
### Problem description
<!-- Describe the bug that you fixed/feature request that you implemented, or link to an existing issue describing it -->
### Implementation description
<!-- Explain what you did to correct the problem -->
### Screenshots
<!-- If your change is visual, take a screenshot showing it. Ideally, make before/after sceenshots -->
### Additional things
<!-- Anything else you would like to say -->
================================================
FILE: .github/codecov.yml
================================================
comment: false
ignore:
- "lib/third_party" # Third party libraries should be ignored
- "lib/external" # Our own libraries should be checked in their own repositories
- "tests" # https://about.codecov.io/blog/should-i-include-test-files-in-code-coverage-calculations/
================================================
FILE: .github/scripts/delete-artifact.sh
================================================
#!/bin/sh
set -xe
ARTIFACT_NAME="$1"
ARTIFACT_ID=$(gh api repos/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_ID/artifacts --jq ".artifacts[] | select(.name==\"$ARTIFACT_NAME\") | .id")
gh api -X DELETE repos/$GITHUB_REPOSITORY/actions/artifacts/$ARTIFACT_ID
echo "Deleted artifact $ARTIFACT_NAME with ID $ARTIFACT_ID"
================================================
FILE: .github/workflows/analysis.yml
================================================
name: "CodeQL"
on:
schedule:
- cron: '0 0 * * *'
workflow_dispatch:
jobs:
codeql:
name: 🐛 CodeQL
runs-on: ubuntu-24.04
permissions:
actions: read
contents: read
security-events: write
steps:
- name: 🧰 Checkout
uses: actions/checkout@v4
with:
submodules: recursive
- name: ✋ Initialize CodeQL
uses: github/codeql-action/init@v2
with:
languages: 'cpp'
- name: 📜 Setup ccache
uses: hendrikmuhs/ccache-action@v1
with:
key: ${{ runner.os }}-analysis-build-${{ github.run_id }}
restore-keys: ${{ runner.os }}-analysis-build
max-size: 50M
- name: 📜 Restore CMakeCache
uses: actions/cache@v4
with:
path: |
build/CMakeCache.txt
key: ${{ runner.os }}-analysis-build-${{ hashFiles('**/CMakeLists.txt') }}
- name: ⬇️ Install dependencies
run: |
sudo apt update
sudo bash dist/get_deps_debian.sh
- name: 🛠️ Build
run: |
set -x
mkdir -p build
cd build
CC=gcc-14 CXX=g++-14 cmake \
-DCMAKE_BUILD_TYPE=$BUILD_TYPE \
-DCMAKE_INSTALL_PREFIX="$PWD/install" \
-DCMAKE_C_COMPILER_LAUNCHER=ccache \
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
-DCMAKE_C_FLAGS="-fuse-ld=lld" \
-DCMAKE_CXX_FLAGS="-fuse-ld=lld" \
-DIMHEX_PATTERNS_PULL_MASTER=ON \
-DIMHEX_EXCLUDE_PLUGINS="script_loader" \
-G Ninja \
..
ninja install
- name: 🗯️ Perform CodeQL Analysis
uses: github/codeql-action/analyze@v2
================================================
FILE: .github/workflows/build.yml
================================================
name: Build
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
on:
push:
branches:
- 'master'
- 'releases/**'
- 'tests/**'
- 'feature/**'
pull_request:
workflow_dispatch:
env:
BUILD_TYPE: RelWithDebInfo
jobs:
# Windows MINGW build
win_mingw:
strategy:
fail-fast: false
matrix:
include:
- architecture_name: "x86_64"
msystem: "mingw64"
runner_os: "windows-2025"
- architecture_name: "arm64"
msystem: "clangarm64"
runner_os: "windows-11-arm"
runs-on: ${{ matrix.runner_os }}
name: 🪟 Windows MSYS2 ${{ matrix.architecture_name }}
defaults:
run:
shell: msys2 {0}
env:
CCACHE_DIR: "${{ github.workspace }}/.ccache"
permissions:
id-token: write
attestations: write
steps:
- name: 🧰 Checkout
uses: actions/checkout@v4
with:
submodules: recursive
- name: 📜 Setup ccache
uses: hendrikmuhs/ccache-action@v1
id: cache-ccache
with:
key: ${{ runner.os }}-mingw-ccache-${{ github.run_id }}
restore-keys: ${{ runner.os }}-mingw-ccache
max-size: 1G
- name: 🟦 Install msys2
uses: msys2/setup-msys2@v2
with:
msystem: ${{ matrix.msystem }}
- name: ⬇️ Install dependencies
run: |
set -x
dist/get_deps_msys2.sh
- name: ⬇️ Install .NET
uses: actions/setup-dotnet@v4
with:
dotnet-version: '8.0.100'
- name: 📜 Set version variable
run: |
echo "IMHEX_VERSION=`cat VERSION`" >> $GITHUB_ENV
# Windows cmake build
- name: 🛠️ Configure CMake
run: |
set -x
mkdir -p build
cd build
cmake -G "Ninja" \
-DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }} \
-DCMAKE_INSTALL_PREFIX="$PWD/install" \
-DIMHEX_GENERATE_PACKAGE=ON \
-DIMHEX_USE_DEFAULT_BUILD_SETTINGS=ON \
-DIMHEX_PATTERNS_PULL_MASTER=ON \
-DIMHEX_COMMIT_HASH_LONG="${GITHUB_SHA}" \
-DIMHEX_COMMIT_BRANCH="${GITHUB_REF##*/}" \
-DUSE_SYSTEM_CAPSTONE=ON \
-DUSE_SYSTEM_MD4C=ON \
-DIMHEX_GENERATE_PDBS=ON \
-DIMHEX_REPLACE_DWARF_WITH_PDB=ON \
-DDOTNET_EXECUTABLE="C:/Program Files/dotnet/dotnet.exe" \
-DCPACK_WIX_ROOT="$(echo "$USERPROFILE" | tr '\\' '/')/.dotnet/tools" \
..
- name: 🛠️ Build
run: |
cd build
ninja install
- name: 🕯️ Install WiX Toolkit
run: |
"C:/Program Files/dotnet/dotnet.exe" tool install --global wix@6.0.2
"$(echo "$USERPROFILE" | tr '\\' '/')/.dotnet/tools/wix" extension add --global WixToolset.UI.wixext/6.0.2
- name: 🪲 Create PDBs for MSI
run: |
cd build
mkdir cv2pdb
cd cv2pdb
wget https://github.com/rainers/cv2pdb/releases/download/v0.52/cv2pdb-0.52.zip
unzip cv2pdb-0.52.zip
cd ..
cv2pdb/cv2pdb.exe imhex.exe
cv2pdb/cv2pdb.exe imhex-gui.exe
cv2pdb/cv2pdb.exe libimhex.dll
for plugin in plugins/*.hexplug; do
cv2pdb/cv2pdb.exe $plugin
done
rm -rf cv2pdb
- name: 📦 Bundle MSI
run: |
cd build
cpack
mv ImHex-*.msi ../imhex-${{ env.IMHEX_VERSION }}-Windows-${{ matrix.architecture_name }}.msi
echo "ImHex checks for the existence of this file to determine if it is running in portable mode. You should not delete this file" > $PWD/install/PORTABLE
- name: 🪲 Create PDBs for ZIP
run: |
cd build/install
mkdir cv2pdb
cd cv2pdb
wget https://github.com/rainers/cv2pdb/releases/download/v0.52/cv2pdb-0.52.zip
unzip cv2pdb-0.52.zip
cd ..
cv2pdb/cv2pdb.exe imhex.exe
cv2pdb/cv2pdb.exe imhex-gui.exe
cv2pdb/cv2pdb.exe libimhex.dll
for plugin in plugins/*.hexplug; do
cv2pdb/cv2pdb.exe $plugin
done
rm -rf cv2pdb
- name: 🗝️ Generate build provenance attestations
uses: actions/attest-build-provenance@v2
if: ${{ github.event.repository.fork == false && github.event_name != 'pull_request' }}
with:
subject-path: |
imhex-*.msi
- name: ⬆️ Upload Windows Installer
uses: actions/upload-artifact@v4
id: upload-installer
with:
if-no-files-found: error
name: Windows Installer ${{ matrix.architecture_name }}
path: |
imhex-*.msi
- name: ⬆️ Upload Portable ZIP
uses: actions/upload-artifact@v4
with:
if-no-files-found: error
name: Windows Portable ${{ matrix.architecture_name }}
path: |
build/install/*
- name: ⬇️ Download Mesa3D for NoGPU version
if: ${{ matrix.architecture_name == 'x86_64' }}
shell: bash
run: |
set -x
echo "NoGPU version Powered by Mesa 3D : https://fdossena.com/?p=mesa%2Findex.frag" > build/install/MESA.md
curl --connect-timeout 30 --retry 5 --retry-delay 0 --retry-max-time 30 https://downloads.fdossena.com/geth.php?r=mesa64-latest -L -o mesa.7z
7z e mesa.7z
mv opengl32.dll build/install
- name: ⬆️ Upload NoGPU Portable ZIP
if: ${{ matrix.architecture_name == 'x86_64' }}
uses: actions/upload-artifact@v4
with:
if-no-files-found: error
name: Windows Portable NoGPU ${{ matrix.architecture_name }}
path: |
build/install/*
win_msvc:
strategy:
fail-fast: false
matrix:
include:
- architecture_name: "x86_64"
vs_arch: "amd64"
runner_os: "windows-2025"
- architecture_name: "arm64"
vs_arch: "amd64_arm64"
runner_os: "windows-11-arm"
runs-on: ${{ matrix.runner_os }}
name: 🪟 Windows MSVC ${{ matrix.architecture_name }}
env:
CCACHE_DIR: "${{ github.workspace }}/.ccache"
permissions:
id-token: write
attestations: write
steps:
- name: 🧰 Checkout
uses: actions/checkout@v4
with:
submodules: recursive
- name: 🫧 Setup Visual Studio Dev Environment
uses: ilammy/msvc-dev-cmd@v1
with:
arch: ${{ matrix.vs_arch }}
- name: 📜 Setup ccache
uses: hendrikmuhs/ccache-action@v1
id: cache-ccache
with:
key: ${{ runner.os }}-msvc-${{ matrix.vs_arch }}-ccache-${{ github.run_id }}
restore-keys: ${{ runner.os }}-msvc-${{ matrix.vs_arch }}-ccache
max-size: 1G
- name: 📦 Install vcpkg
uses: friendlyanon/setup-vcpkg@v1
with: { committish: 66c0373dc7fca549e5803087b9487edfe3aca0a1 }
- name: ⬇️ Install dependencies
run: |
cp dist/vcpkg.json vcpkg.json
- name: ⬇️ Install CMake and Ninja
uses: lukka/get-cmake@latest
- name: ⬇️ Install .NET
uses: actions/setup-dotnet@v4
with:
dotnet-version: '8.0.100'
- name: 📜 Set version variable
run: |
"IMHEX_VERSION=$(Get-Content VERSION -Raw)" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
# Windows cmake build
- name: 🛠️ Configure CMake
run: |
mkdir -p build
cmake -G "Ninja" -B build `
--preset vs2022 `
-DCMAKE_TOOLCHAIN_FILE="$env:VCPKG_ROOT/scripts/buildsystems/vcpkg.cmake" `
-DCMAKE_C_COMPILER="$($(Get-Command cl.exe).Path)" `
-DCMAKE_CXX_COMPILER="$($(Get-Command cl.exe).Path)" `
-DCMAKE_C_COMPILER_LAUNCHER=ccache `
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache `
-DCMAKE_INSTALL_PREFIX="$(Join-Path $PWD 'install')" `
-DIMHEX_GENERATE_PACKAGE=ON `
-DCMAKE_BUILD_TYPE="$env:BUILD_TYPE" `
-DIMHEX_PATTERNS_PULL_MASTER=ON `
-DIMHEX_COMMIT_HASH_LONG="$env:GITHUB_SHA" `
-DIMHEX_COMMIT_BRANCH="$($env:GITHUB_REF -replace '.*/', '')" `
-DDOTNET_EXECUTABLE="C:/Program Files/dotnet/dotnet.exe" `
-DCPACK_WIX_ROOT="$($env:USERPROFILE -replace '\\','/')/.dotnet/tools" `
.
- name: 🛠️ Build
run: |
cd build
ninja install
- name: 🕯️ Install WiX Toolkit
run: |
& "C:/Program Files/dotnet/dotnet.exe" tool install --global wix@6.0.2
& "$($env:USERPROFILE -replace '\\','/')/.dotnet/tools/wix" extension add --global WixToolset.UI.wixext/6.0.2
- name: 📦 Bundle MSI
run: |
cd build
cpack
mv ImHex-*.msi ../imhex-${{ env.IMHEX_VERSION }}-Windows-MSVC-${{ matrix.architecture_name }}.msi
- name: 🗝️ Generate build provenance attestations
uses: actions/attest-build-provenance@v2
if: ${{ github.event.repository.fork == false && github.event_name != 'pull_request' }}
with:
subject-path: |
imhex-*.msi
- name: ⬆️ Upload Windows Installer
uses: actions/upload-artifact@v4
if: false # The MSVC builds should not really be used, they're still packaged for testing’s sake though
with:
if-no-files-found: error
name: Windows Installer MSVC ${{ matrix.architecture_name }}
path: |
imhex-*.msi
win-plugin-template-test:
runs-on: windows-2022
name: 🧪 Plugin Template Test
defaults:
run:
shell: msys2 {0}
needs: win_mingw
env:
IMHEX_SDK_PATH: "${{ github.workspace }}/out/sdk"
steps:
- name: 🧰 Checkout ImHex
uses: actions/checkout@v4
with:
path: imhex
- name: 🟦 Install msys2
uses: msys2/setup-msys2@v2
with:
msystem: mingw64
- name: ⬇️ Install dependencies
run: |
set -x
imhex/dist/get_deps_msys2.sh
- name: 🧰 Checkout ImHex-Plugin-Template
uses: actions/checkout@v4
with:
repository: WerWolv/ImHex-Plugin-Template
submodules: recursive
path: template
- name: ⬇️ Download artifact
uses: actions/download-artifact@v4
with:
name: Windows Portable x86_64
path: out
- name: 🛠️ Build
run: |
set -x
cd template
mkdir -p build
cd build
cmake -G "Ninja" \
-DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }} \
-DIMHEX_USE_DEFAULT_BUILD_SETTINGS=ON \
-DUSE_SYSTEM_CAPSTONE=ON \
-DUSE_SYSTEM_MD4C=ON \
..
ninja
- name: 🧪 Test if plugin can be loaded
run: |
export WORKSPACE=$(echo "${{ github.workspace }}" | tr '\\' '/')
${WORKSPACE}/out/imhex.exe --validate-plugin ${WORKSPACE}/template/build/example_plugin.hexplug
# MacOS build
macos-x86:
runs-on: macos-15-intel
permissions:
id-token: write
attestations: write
name: 🍎 macOS 10.15 x86_64
steps:
- name: 🧰 Checkout
uses: actions/checkout@v4
with:
submodules: recursive
- name: 📜 Set version variable
run: |
echo "IMHEX_VERSION=`cat VERSION`" >> $GITHUB_ENV
- name: 📜 Setup ccache
uses: hendrikmuhs/ccache-action@v1
with:
key: ${{ runner.os }}-ccache-${{ github.run_id }}
restore-keys: ${{ runner.os }}-ccache
max-size: 1G
- name: Set Xcode version
run: |
sudo xcode-select --install || true
sudo xcode-select -s /Library/Developer/CommandLineTools
- name: 📦 Install MacPorts
run: |
wget https://github.com/macports/macports-base/releases/download/v2.11.6/MacPorts-2.11.6-15-Sequoia.pkg
sudo installer -pkg MacPorts-2.11.6-15-Sequoia.pkg -target /
export PATH=/opt/local/bin:/opt/local/sbin:$PATH
echo "PATH=/opt/local/bin:/opt/local/sbin:$PATH" >> $GITHUB_ENV
echo "MACOSX_DEPLOYMENT_TARGET=10.15" >> $GITHUB_ENV
echo "universal_target 10.15" | sudo tee -a /opt/local/etc/macports/macports.conf
echo "macos_deployment_target 10.15" | sudo tee -a /opt/local/etc/macports/macports.conf
echo "macosx_sdk_version 10.15" | sudo tee -a /opt/local/etc/macports/macports.conf
sudo port selfupdate
- name: ⬇️ Install dependencies
env:
# Make brew not display useless errors
HOMEBREW_TESTS: 1
run: |
brew install llvm@21 automake
sudo -E port install mbedtls3 nlohmann-json ccache freetype libmagic pkgconfig curl glfw ninja zlib xz bzip2 zstd libssh2 md4c
- name: ⬇️ Install .NET
uses: actions/setup-dotnet@v4
with:
dotnet-version: '8.0.100'
# MacOS cmake build
- name: 🛠️ Configure CMake
run: |
set -x
mkdir -p build
cd build
CC=$(brew --prefix llvm@21)/bin/clang \
CXX=$(brew --prefix llvm@21)/bin/clang++ \
OBJC=$(brew --prefix llvm@21)/bin/clang \
OBJCXX=$(brew --prefix llvm@21)/bin/clang++ \
cmake -G "Ninja" \
-DCMAKE_OSX_DEPLOYMENT_TARGET=10.15 \
-DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }} \
-DIMHEX_GENERATE_PACKAGE=ON \
-DIMHEX_SYSTEM_LIBRARY_PATH="$(brew --prefix llvm@21)/lib;$(brew --prefix llvm@21)/lib/unwind;$(brew --prefix llvm@21)/lib/c++;$(brew --prefix)/lib" \
-DCMAKE_C_COMPILER_LAUNCHER=ccache \
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
-DCMAKE_OBJC_COMPILER_LAUNCHER=ccache \
-DCMAKE_OBJCXX_COMPILER_LAUNCHER=ccache \
-DCMAKE_INSTALL_PREFIX="./install" \
-DIMHEX_PATTERNS_PULL_MASTER=ON \
-DIMHEX_COMMIT_HASH_LONG="${GITHUB_SHA}" \
-DIMHEX_COMMIT_BRANCH="${GITHUB_REF##*/}" \
..
- name: 🛠️ Build
run: cd build && ninja install
- name: ✒️ Fix Signature
run: |
set -x
cd build/install
codesign --remove-signature ImHex.app
codesign --force --deep --sign - ImHex.app
- name: 📁 Fix permissions
run: |
set -x
cd build/install
chmod -R 755 ImHex.app/
- name: 🔫 Kill XProtect
run: |
# See https://github.com/actions/runner-images/issues/7522
echo Killing XProtect...; sudo pkill -9 XProtect >/dev/null || true;
echo Waiting for XProtect process...; while pgrep XProtect; do sleep 3; done;
- name: 📦 Create DMG
run: |
brew install graphicsmagick imagemagick
git clone https://github.com/sindresorhus/create-dmg
cd create-dmg
npm i && npm -g i
cd ../build/install
for i in $(seq 1 10); do
create-dmg ImHex.app || true
if ls -d *.dmg 1>/dev/null 2>/dev/null; then
break;
fi
done
mv *.dmg ../../imhex-${{ env.IMHEX_VERSION }}-macOS-x86_64.dmg
- name: 🗝️ Generate build provenance attestations
uses: actions/attest-build-provenance@v2
if: ${{ github.event.repository.fork == false && github.event_name != 'pull_request' }}
with:
subject-path: |
./*.dmg
- name: ⬆️ Upload DMG
uses: actions/upload-artifact@v4
with:
if-no-files-found: error
name: macOS DMG x86_64
path: ./*.dmg
macos-arm64:
runs-on: ubuntu-24.04
name: 🍎 macOS 11 arm64
outputs:
IMHEX_VERSION: ${{ steps.build.outputs.IMHEX_VERSION }}
steps:
- name: 🧰 Checkout
uses: actions/checkout@v4
with:
submodules: recursive
- name: 📁 Restore docker /cache
uses: actions/cache@v4
with:
path: cache
key: macos-arm64-cache-${{ github.run_id }}
restore-keys: macos-arm64-cache
- name: 🐳 Inject /cache into docker
uses: reproducible-containers/buildkit-cache-dance@v2
with:
cache-source: cache
cache-target: /cache
- name: 🛠️ Build using docker
id: build
run: |
echo "IMHEX_VERSION=`cat VERSION`" >> $GITHUB_OUTPUT
docker buildx build . -f dist/macOS/arm64.Dockerfile --progress=plain --build-arg 'JOBS=4' --build-arg "BUILD_TYPE=$(BUILD_TYPE)" --build-context imhex=$(pwd) --output out
cp resources/dist/macos/Entitlements.plist out/Entitlements.plist
- name: ⬆️ Upload artifacts
uses: actions/upload-artifact@v4
with:
name: macos_arm64_intermediate
path: out/
# See https://github.com/actions/cache/issues/342#issuecomment-1711054115
- name: 🗑️ Delete old cache
continue-on-error: true
env:
GH_TOKEN: ${{ github.token }}
run: |
gh extension install actions/gh-actions-cache
gh cache delete "macos-arm64-cache" --confirm || true
macos-arm64-package:
runs-on: macos-15-intel
name: 🍎 macOS 11 arm64 Packaging
needs: macos-arm64
env:
IMHEX_VERSION: ${{ needs.macos-arm64.outputs.IMHEX_VERSION }}
permissions:
id-token: write
attestations: write
steps:
- name: ⬇️ Download artifact
uses: actions/download-artifact@v4
with:
name: macos_arm64_intermediate
path: out
- name: 🗑️ Delete artifact
uses: geekyeggo/delete-artifact@v5
with:
name: macos_arm64_intermediate
- name: ✒️ Fix Signature
run: |
set -x
cd out
codesign --remove-signature ImHex.app
codesign --force --deep --entitlements Entitlements.plist --sign - ImHex.app
- name: 📁 Fix permissions
run: |
set -x
cd out
chmod -R 755 ImHex.app/
- name: 🔫 Kill XProtect
run: |
# See https://github.com/actions/runner-images/issues/7522
echo Killing XProtect...; sudo pkill -9 XProtect >/dev/null || true;
echo Waiting for XProtect process...; while pgrep XProtect; do sleep 3; done;
- name: 📦 Create DMG
run: |
brew install graphicsmagick imagemagick
git clone https://github.com/sindresorhus/create-dmg
cd create-dmg
npm i && npm -g i
cd ../out
for i in $(seq 1 10); do
create-dmg ImHex.app || true
if ls -d *.dmg 1>/dev/null 2>/dev/null; then
break;
fi
done
mv *.dmg ../imhex-${{ env.IMHEX_VERSION }}-macOS${{ matrix.file_suffix }}-arm64.dmg
- name: 🗝️ Generate build provenance attestations
uses: actions/attest-build-provenance@v2
if: ${{ github.event.repository.fork == false && github.event_name != 'pull_request' }}
with:
subject-path: |
./*.dmg
- name: ⬆️ Upload DMG
uses: actions/upload-artifact@v4
with:
if-no-files-found: error
name: macOS DMG arm64
path: ./*.dmg
# Ubuntu build
ubuntu:
strategy:
fail-fast: false
matrix:
include:
- name: "Ubuntu"
release_num: "24.04"
image: "ubuntu:24.04"
- name: "Ubuntu"
release_num: "25.10"
image: "ubuntu:25.10"
- name: "Debian"
release_num: "13"
image: "debian:13"
name: 🐧 ${{ matrix.name }} ${{ matrix.release_num }} x86_64
runs-on: ubuntu-24.04
container:
image: "${{ matrix.image }}"
options: --privileged
permissions:
id-token: write
attestations: write
steps:
- name: ⬇️ Install setup dependencies
run: apt update && apt install -y git curl
- name: 🧰 Checkout
uses: actions/checkout@v4
with:
submodules: recursive
- name: 📜 Setup ccache
uses: hendrikmuhs/ccache-action@v1
with:
key: ${{ matrix.image }}-ccache-${{ github.run_id }}
restore-keys: ${{ matrix.image }}-ccache
max-size: 1G
- name: ⬇️ Install dependencies
run: |
apt update
bash dist/get_deps_debian.sh
- name: ⬇️ Install .NET
uses: actions/setup-dotnet@v4
with:
dotnet-version: '8.0.100'
# Ubuntu cmake build
- name: 🛠️ Configure CMake
shell: bash
run: |
set -x
git config --global --add safe.directory '*'
mkdir -p build
cd build
CC=gcc-14 CXX=g++-14 cmake -G "Ninja" \
-DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }} \
-DCMAKE_INSTALL_PREFIX="/usr" \
-DCMAKE_C_COMPILER_LAUNCHER=ccache \
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
-DIMHEX_PATTERNS_PULL_MASTER=ON \
-DIMHEX_COMMIT_HASH_LONG="${GITHUB_SHA}" \
-DIMHEX_COMMIT_BRANCH="${GITHUB_REF##*/}" \
-DIMHEX_ENABLE_LTO=ON \
-DIMHEX_USE_GTK_FILE_PICKER=ON \
-DDOTNET_EXECUTABLE="dotnet" \
..
- name: 🛠️ Build
run: cd build && DESTDIR=DebDir ninja install
- name: 📜 Set version variable
run: |
echo "IMHEX_VERSION=`cat VERSION`" >> $GITHUB_ENV
- name: 📦 Bundle DEB
run: |
cp -r build/DEBIAN build/DebDir
dpkg-deb -Zzstd --build build/DebDir
mv build/DebDir.deb imhex-${{ env.IMHEX_VERSION }}-${{ matrix.name }}-${{ matrix.release_num }}-x86_64.deb
- name: 🗝️ Generate build provenance attestations
uses: actions/attest-build-provenance@v2
if: ${{ github.event.repository.fork == false && github.event_name != 'pull_request' }}
with:
subject-path: |
./*.deb
- name: ⬆️ Upload DEB
uses: actions/upload-artifact@v4
with:
if-no-files-found: error
name: ${{ matrix.name }} ${{ matrix.release_num }} DEB x86_64
path: '*.deb'
# AppImage build
appimage:
strategy:
fail-fast: false
matrix:
include:
- architecture: "x86_64"
architecture_package: "amd64"
architecture_appimage_builder: "x86_64"
image: ubuntu-24.04
- architecture: "arm64"
architecture_package: "arm64"
architecture_appimage_builder: "aarch64"
image: ubuntu-24.04-arm
runs-on: ${{ matrix.image }}
name: ⬇️ AppImage ${{ matrix.architecture }}
permissions:
id-token: write
attestations: write
steps:
- name: 🧰 Checkout
uses: actions/checkout@v4
with:
submodules: recursive
- name: 📁 Restore docker /cache
uses: actions/cache@v4
with:
path: cache
key: appimage-ccache-${{ matrix.architecture }}-${{ github.run_id }}
restore-keys: appimage-ccache-${{ matrix.architecture }}
- name: 🐳 Inject /cache into docker
uses: reproducible-containers/buildkit-cache-dance@v2
with:
cache-source: cache
cache-target: /cache
- name: 🛠️ Build using docker
run: |
docker buildx build . -f dist/AppImage/Dockerfile --progress=plain --build-arg "BUILD_TYPE=$BUILD_TYPE" \
--build-arg "GIT_COMMIT_HASH=$GITHUB_SHA" --build-arg "GIT_BRANCH=${GITHUB_REF##*/}" \
--build-arg "ARCHITECTURE_PACKAGE=${{ matrix.architecture_package }}" --build-arg "ARCHITECTURE_FILE_NAME=${{ matrix.architecture }}" --build-arg "ARCHITECTURE_APPIMAGE_BUILDER=${{ matrix.architecture_appimage_builder }}" \
--output out
- name: 🗝️ Generate build provenance attestations
uses: actions/attest-build-provenance@v2
if: ${{ github.event.repository.fork == false && github.event_name != 'pull_request' }}
with:
subject-path: |
out/*.AppImage
out/*.AppImage.zsync
- name: ⬆️ Upload AppImage
uses: actions/upload-artifact@v4
with:
if-no-files-found: error
name: Linux AppImage ${{ matrix.architecture }}
path: 'out/*.AppImage'
- name: ⬆️ Upload AppImage zsync
uses: actions/upload-artifact@v4
with:
if-no-files-found: error
name: Linux AppImage zsync ${{ matrix.architecture }}
path: 'out/*.AppImage.zsync'
# ArchLinux build
archlinux-build:
name: 🐧 ArchLinux x86_64
runs-on: ubuntu-24.04
container:
image: archlinux:base-devel
permissions:
id-token: write
attestations: write
steps:
- name: ⬇️ Update all packages
run: |
pacman -Syyu --noconfirm
- name: ⬇️ Install setup dependencies
run: |
pacman -Syu git ccache --noconfirm
- name: 🧰 Checkout
uses: actions/checkout@v4
with:
submodules: recursive
- name: ⬇️ Install ImHex dependencies
run: |
dist/get_deps_archlinux.sh --noconfirm
- name: ⬇️ Install .NET
uses: actions/setup-dotnet@v4
with:
dotnet-version: '8.0.100'
- name: 📜 Setup ccache
uses: hendrikmuhs/ccache-action@v1
with:
key: archlinux-ccache-${{ github.run_id }}
restore-keys: archlinux-ccache
max-size: 1G
# ArchLinux cmake build
- name: 🛠️ Configure CMake
run: |
set -x
mkdir -p build
cd build
CC=gcc CXX=g++ cmake -G "Ninja" \
-DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }} \
-DCMAKE_INSTALL_PREFIX="/usr" \
-DCMAKE_C_COMPILER_LAUNCHER=ccache \
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
-DUSE_SYSTEM_FMT=ON \
-DUSE_SYSTEM_YARA=ON \
-DUSE_SYSTEM_NLOHMANN_JSON=ON \
-DUSE_SYSTEM_CAPSTONE=OFF \
-DUSE_SYSTEM_MD4C=ON \
-DIMHEX_PATTERNS_PULL_MASTER=ON \
-DIMHEX_COMMIT_HASH_LONG="${GITHUB_SHA}" \
-DIMHEX_COMMIT_BRANCH="${GITHUB_REF##*/}" \
-DIMHEX_ENABLE_LTO=ON \
-DIMHEX_USE_GTK_FILE_PICKER=ON \
..
- name: 🛠️ Build
run: cd build && DESTDIR=installDir ninja install
- name: 📜 Set version variable
run: |
echo "IMHEX_VERSION=`cat VERSION`" >> $GITHUB_ENV
- name: ✒️ Prepare PKGBUILD
run: |
cp dist/Arch/PKGBUILD build
sed -i 's/%version%/${{ env.IMHEX_VERSION }}/g' build/PKGBUILD
# makepkg doesn't want to run as root, so I had to chmod 777 all over
- name: 📦 Package ArchLinux .pkg.tar.zst
run: |
set -x
cd build
# the name is a small trick to make makepkg recognize it as the source
# else, it would try to download the file from the release
tar -cvf imhex-${{ env.IMHEX_VERSION }}-ArchLinux-x86_64.pkg.tar.zst -C installDir .
chmod -R 777 .
sudo -u nobody makepkg
# Replace the old file
rm imhex-${{ env.IMHEX_VERSION }}-ArchLinux-x86_64.pkg.tar.zst
rm *imhex-bin-debug* # rm debug package which is created for some reason
mv *.pkg.tar.zst imhex-${{ env.IMHEX_VERSION }}-ArchLinux-x86_64.pkg.tar.zst
- name: 🗝️ Generate build provenance attestations
uses: actions/attest-build-provenance@v2
if: ${{ github.event.repository.fork == false && github.event_name != 'pull_request' }}
with:
subject-path: |
build/imhex-${{ env.IMHEX_VERSION }}-ArchLinux-x86_64.pkg.tar.zst
- name: ⬆️ Upload imhex-archlinux.pkg.tar.zst
uses: actions/upload-artifact@v4
with:
if-no-files-found: error
name: ArchLinux .pkg.tar.zst x86_64
path: |
build/imhex-${{ env.IMHEX_VERSION }}-ArchLinux-x86_64.pkg.tar.zst
# RPM distro builds
rpm-build:
strategy:
fail-fast: false
matrix:
include:
- name: Fedora
release_num: 43
mock_config: fedora-43
name: 🐧 ${{ matrix.name }} ${{ matrix.release_num }} x86_64
runs-on: ubuntu-24.04
container:
image: "almalinux:10"
options: --privileged --pid=host --security-opt apparmor=unconfined
permissions:
id-token: write
attestations: write
steps:
# This, together with the `--pid=host --security-opt apparmor=unconfined` docker options is required to allow
# mock to work inside a Docker container running on Ubuntu again.
# GitHub seems to have enabled AppArmor on their Ubuntu CI runners which limits Docker in ways that cause
# programs inside it to fail.
# Without this, mock will throw the unhelpful error message 'Insufficient Rights'
# This step uses nsenter to execute commands on the host that disable AppArmor entirely.
- name: 🛡️ Disable AppArmor on Host
run: |
nsenter -t 1 -m -u -n -i sudo systemctl disable --now apparmor.service
nsenter -t 1 -m -u -n -i sudo aa-teardown || true
nsenter -t 1 -m -u -n -i sudo sysctl --write kernel.apparmor_restrict_unprivileged_unconfined=0
nsenter -t 1 -m -u -n -i sudo sysctl --write kernel.apparmor_restrict_unprivileged_userns=0
- name: ⬇️ Install git-core and EPEL repo
run: dnf install git-core epel-release -y
- name: 🧰 Checkout
uses: actions/checkout@v4
with:
path: ImHex
submodules: recursive
- name: 📜 Setup DNF Cache
if: false # Disabled for now since it fills up the cache very quickly
uses: actions/cache@v4
with:
path: /var/cache/dnf
key: dnf-ccache-${{ matrix.mock_config }}-${{ github.run_id }}
restore-keys: dnf-ccache-${{ matrix.mock_config }}
- name: ⬇️ Update all packages and install dependencies
run: |
set -x
dnf upgrade -y
dnf install -y \
mock \
ccache
- name: ⬇️ Install .NET
uses: actions/setup-dotnet@v4
with:
dotnet-version: '8.0.100'
- name: 📜 Setup ccache
uses: hendrikmuhs/ccache-action@v1
with:
key: ${{ matrix.mock_config }}-rpm-${{ github.run_id }}
restore-keys: ${{ matrix.mock_config }}-rpm
max-size: 1G
- name: 📜 Set version variable
run: |
echo "IMHEX_VERSION=`cat ImHex/VERSION`" >> $GITHUB_ENV
- name: 🗜️ Create tarball from sources with dependencies
run: tar --exclude-vcs -czf $GITHUB_WORKSPACE/imhex-$IMHEX_VERSION.tar.gz ImHex
- name: ✒️ Modify spec file
run: |
sed -i \
-e 's/Version: VERSION$/Version: ${{ env.IMHEX_VERSION }}/g' \
-e 's/IMHEX_OFFLINE_BUILD=ON/IMHEX_OFFLINE_BUILD=OFF/g' \
-e '/IMHEX_OFFLINE_BUILD=OFF/a -D IMHEX_PATTERNS_PULL_MASTER=ON \\' \
-e '/BuildRequires: cmake/a BuildRequires: git-core' \
-e '/%files/a %{_datadir}/imhex/' \
$GITHUB_WORKSPACE/ImHex/dist/rpm/imhex.spec
- name: 📜 Fix ccache on EL9
if: matrix.mock_config == 'alma+epel-9'
run: sed -i '/\. \/opt\/rh\/gcc-toolset-14\/enable/a PATH=/usr/lib64/ccache:$PATH' $GITHUB_WORKSPACE/ImHex/dist/rpm/imhex.spec
- name: 🟩 Copy spec file to build root
run: mv $GITHUB_WORKSPACE/ImHex/dist/rpm/imhex.spec $GITHUB_WORKSPACE/imhex.spec
# Fedora cmake build (in imhex.spec)
- name: 📦 Build RPM
run: |
mock -r ${{ matrix.mock_config }}-x86_64 \
--define 'debug_package %{nil}' \
--enable-network -N -v \
--enable-plugin=ccache \
--plugin-option=ccache:compress=True \
--plugin-option=ccache:max_cache_size=200M \
--plugin-option=ccache:dir=$GITHUB_WORKSPACE/.ccache \
--spec $GITHUB_WORKSPACE/imhex.spec \
--sources $GITHUB_WORKSPACE \
--resultdir $GITHUB_WORKSPACE/results
- name: 🟩 Move and rename finished RPM
run: |
mv $GITHUB_WORKSPACE/results/imhex-${{ env.IMHEX_VERSION }}-0.*.x86_64.rpm \
$GITHUB_WORKSPACE/imhex-${{ env.IMHEX_VERSION }}-${{ matrix.name }}-${{ matrix.release_num }}-x86_64.rpm
- name: 🗝️ Generate build provenance attestations
uses: actions/attest-build-provenance@v2
if: ${{ github.event.repository.fork == false && github.event_name != 'pull_request' }}
with:
subject-path: |
imhex-${{ env.IMHEX_VERSION }}-${{ matrix.name }}-${{ matrix.release_num }}-x86_64.rpm
- name: ⬆️ Upload RPM
uses: actions/upload-artifact@v4
with:
if-no-files-found: error
name: ${{ matrix.name }} ${{ matrix.release_num }} RPM x86_64
path: |
imhex-${{ env.IMHEX_VERSION }}-${{ matrix.name }}-${{ matrix.release_num }}-x86_64.rpm
snap-build:
strategy:
fail-fast: false
matrix:
include:
- architecture: "x86_64"
image: ubuntu-24.04
- architecture: "arm64"
image: ubuntu-24.04-arm
name: 🐧 Snap ${{ matrix.architecture }}
runs-on: ${{ matrix.image }}
permissions:
id-token: write
attestations: write
steps:
- name: ⬇️ Install setup dependencies
run: |
sudo apt update && sudo apt install -y git curl snapd ccache
for i in $(seq 1 5); do
if sudo snap install snapcraft --classic; then
break;
fi
echo "Retrying snap install..."
sleep 10
done
- name: 🧰 Checkout
uses: actions/checkout@v4
with:
submodules: recursive
- name: 📜 Set version variable
run: |
export IMHEX_VERSION=$(cat VERSION)
echo "IMHEX_VERSION=$IMHEX_VERSION" >> $GITHUB_ENV
if [[ "$IMHEX_VERSION" == *.WIP ]]; then
echo "IMHEX_VERSION_STRING=$IMHEX_VERSION-${GITHUB_RUN_NUMBER}" >> $GITHUB_ENV
else
echo "IMHEX_VERSION_STRING=$IMHEX_VERSION" >> $GITHUB_ENV
fi
echo "CCACHE=ccache" >> $GITHUB_ENV
- name: 📜 Move snap directory to root
run: |
mkdir -p ./snap
envsubst '${IMHEX_VERSION_STRING},${CCACHE}' < ./dist/snap/snapcraft.yaml > ./snap/snapcraft.yaml
- name: 📜 Setup ccache
uses: hendrikmuhs/ccache-action@v1
with:
key: ${{ matrix.architecture }}-snap-${{ github.run_id }}
restore-keys: ${{ matrix.architecture }}-snap
max-size: 1G
- name: 🛠️ Build
run: |
sudo snapcraft --destructive-mode
- name: 🟩 Rename Snap
run: |
mv *.snap imhex-${{ env.IMHEX_VERSION }}-${{ matrix.architecture }}.snap
- name: 🗝️ Generate build provenance attestations
uses: actions/attest-build-provenance@v2
if: ${{ github.event.repository.fork == false && github.event_name != 'pull_request' }}
with:
subject-path: |
*.snap
- name: ⬆️ Upload Snap
uses: actions/upload-artifact@v4
with:
if-no-files-found: error
name: Snap ${{ matrix.architecture }}
path: |
*.snap
flatpak-build:
strategy:
fail-fast: false
matrix:
include:
- architecture: "x86_64"
flatpak_arch: "x86_64"
image: ubuntu-24.04
- architecture: "arm64"
flatpak_arch: "aarch64"
image: ubuntu-24.04-arm
name: 🐧 Flatpak ${{ matrix.architecture }}
runs-on: ${{ matrix.image }}
permissions:
id-token: write
attestations: write
steps:
- name: ⬇️ Install setup dependencies
run: |
sudo apt update && sudo apt install -y git curl flatpak-builder
sudo flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
sudo flatpak remote-modify --enable flathub
sudo flatpak install --noninteractive --system flathub org.freedesktop.Platform//24.08 org.freedesktop.Sdk//24.08
- name: 🧰 Checkout
uses: actions/checkout@v4
with:
submodules: recursive
- name: 📜 Set version variable
run: |
echo "IMHEX_VERSION=`cat VERSION`" >> $GITHUB_ENV
- name: 🛠️ Build
uses: flatpak/flatpak-github-actions/flatpak-builder@v6
with:
bundle: imhex-${{ env.IMHEX_VERSION }}-${{ matrix.architecture }}.flatpak
manifest-path: dist/flatpak/net.werwolv.ImHex.yaml
cache-key: flatpak-builder-${{ matrix.architecture }}
arch: ${{ matrix.flatpak_arch }}
upload-artifact: false
- name: 🗝️ Generate build provenance attestations
uses: actions/attest-build-provenance@v2
if: ${{ github.event.repository.fork == false && github.event_name != 'pull_request' }}
with:
subject-path: |
imhex-${{ env.IMHEX_VERSION }}-${{ matrix.architecture }}.flatpak
- name: ⬆️ Upload Flatpak
uses: actions/upload-artifact@v4
with:
if-no-files-found: error
name: Flatpak ${{ matrix.architecture }}
path: |
imhex-${{ env.IMHEX_VERSION }}-${{ matrix.architecture }}.flatpak
webassembly-build:
runs-on: ubuntu-24.04
name: 🌍 Web
steps:
- name: 🧰 Checkout
uses: actions/checkout@v4
with:
submodules: recursive
- name: 📁 Restore docker /cache
uses: actions/cache@v4
with:
path: cache
key: webassembly-ccache-${{ github.run_id }}
restore-keys: webassembly-ccache
- name: 🐳 Inject /cache into docker
uses: reproducible-containers/buildkit-cache-dance@v2
with:
cache-source: cache
cache-target: /cache
- name: 🔨 Copy necessary files
run: |
mkdir -p out/nightly
cp dist/web/serve.py out/nightly/start_imhex_web.py
- name: 🛠️ Build using docker
run: |
docker buildx build . -f dist/web/Dockerfile --progress=plain --build-arg 'JOBS=4' --output out/nightly --target raw
- name: ⬇️ Download Release artifact
if: ${{ github.event.repository.fork == false }}
env:
GH_TOKEN: ${{ github.token }}
run: gh --repo $GITHUB_REPOSITORY release download --pattern "imhex-*-Web.zip"
- name: 🔨 Fix permissions
if: ${{ github.event.repository.fork == false }}
run: |
unzip imhex-*-Web.zip -d out
chmod -c -R +rX "out/"
- name: ⬆️ Upload artifacts
uses: actions/upload-pages-artifact@v3
with:
path: out/
- name: ⬆️ Upload package
uses: actions/upload-artifact@v4
with:
if-no-files-found: error
name: ImHex Web
path: out/nightly/*
# See https://github.com/actions/cache/issues/342#issuecomment-1711054115
- name: 🗑️ Delete old cache
continue-on-error: true
env:
GH_TOKEN: ${{ github.token }}
run: |
gh extension install actions/gh-actions-cache || true
gh actions-cache delete "build-web-cache" --confirm || true
webassembly-deploy:
environment:
name: ImHex Web
url: ${{ steps.deployment.outputs.page_url }}
permissions:
pages: write
id-token: write
actions: write
name: 📃 Deploy to GitHub Pages
runs-on: ubuntu-24.04
if: ${{ github.ref == 'refs/heads/master' && github.event.repository.fork == false }}
needs: webassembly-build
steps:
- name: 🧰 Checkout
uses: actions/checkout@v4
- name: 🌍 Deploy WebAssembly Build to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
- name: 🗑️ Delete artifact
env:
GH_TOKEN: ${{ github.token }}
run: |
.github/scripts/delete-artifact.sh "github-pages"
webassembly-docker-image-deploy:
runs-on: ubuntu-latest
if: github.ref == 'refs/heads/master'
needs: webassembly-build
name: 🐋 Deploy to ghcr.io
permissions:
contents: read
packages: write
steps:
- name: 🧰 Checkout
uses: actions/checkout@v4
- name: ⬇️ Download artifact
uses: actions/download-artifact@v4
with:
name: ImHex Web
path: out
- name: 📜 Login to ghcr.io
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: ⛓️ Extract metadata
id: meta
uses: docker/metadata-action@v5
with:
images: ghcr.io/${{ github.repository }}/imhex-web
tags: |
type=ref,event=branch
type=ref,event=pr
type=semver,pattern={{version}}
type=semver,pattern={{major}}.{{minor}}
type=sha
- name: 🔨 Build and push Docker image
uses: docker/build-push-action@v6
env:
DOCKER_BUILD_RECORD_UPLOAD: false
with:
context: .
file: dist/web/Host.Dockerfile
push: ${{ github.event_name != 'pull_request' }}
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
================================================
FILE: .github/workflows/dl-cache.yml
================================================
# https://gist.github.com/iTrooz/d5bacca32c0974edc6c1ac3ad3ee82f3
# See https://github.com/cli/cli/issues/9125
# Extract archive with `tar -xf cache.tzst --transform 's@\.\./@#@g' -P` to avoid ../ errors
name: Download cache key
on:
workflow_dispatch:
inputs:
cache_key:
description: 'Cache key'
required: true
type: string
jobs:
cache-download:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Query cache version
id: version
env:
GH_TOKEN: ${{ github.token }}
run: |
VERSION=$(gh api repos/$GITHUB_REPOSITORY/actions/caches \
--jq "
.actions_caches[]
| select(.ref == \"refs/heads/$GITHUB_REF_NAME\")
| select(.key == \"${{ github.event.inputs.cache_key }}\")
| .version
")
echo "version=$VERSION" | tee $GITHUB_OUTPUT
- name: Restore cache
uses: iTrooz/cache/restore@restore_with_version
with:
# Path won't be actually used, we will match by 'version'.
path: .
key: ${{ github.event.inputs.cache_key }}
version: ${{ steps.version.outputs.version }}
- name: Upload cached folder as artifact
uses: actions/upload-artifact@v4
with:
name: cache-artifact
path: |
/home/runner/work/**/*.tzst
================================================
FILE: .github/workflows/nightly_release.yml
================================================
permissions:
contents: write
name: Nightly Release
on:
schedule:
- cron: '0 0 * * *'
workflow_dispatch:
jobs:
nightly-release:
runs-on: ubuntu-24.04
name: 🌃 Update Nightly Release
steps:
- name: 🧰 Checkout
uses: actions/checkout@v4
with:
path: ImHex
fetch-depth: 0
fetch-tags: true
- name: 🌃 Check for new commits
id: check_commits
run: |
cd ImHex
git config --global --add safe.directory $(pwd)
if [ -z "$(git log nightly..HEAD --oneline)" ]; then
echo "No new commits since last nightly. Exiting."
echo "::set-output name=should_run::false"
else
echo "::set-output name=should_run::true"
fi
- name: 📜 Set version variable
if: ${{ steps.check_commits.outputs.should_run == 'true' }}
run: |
project_version=`cat ImHex/VERSION`
echo "IMHEX_VERSION=$project_version" >> $GITHUB_ENV
# TODO: Replace by Github CLI when github.com/cli/cli/pull/12435 is closed
- name: ⬇️ Download artifacts from latest workflow
uses: dawidd6/action-download-artifact@v6
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
workflow: build.yml
branch: master
workflow_conclusion: success
skip_unpack: true
- name: 🗜️ Unzip files when needed
if: ${{ steps.check_commits.outputs.should_run == 'true' }}
run: |
set -x
for zipfile in ./*.zip
do
if [ `zipinfo -1 "$zipfile" | wc -l` -eq 1 ];
then
echo "unzipping $zipfile"
unzip "$zipfile"
rm "$zipfile"
else
echo "keeping $zipfile zipped"
fi
done
- name: 🟩 Rename artifacts when needed
if: ${{ steps.check_commits.outputs.should_run == 'true' }}
run: |
mv "Windows Portable x86_64.zip" imhex-${{ env.IMHEX_VERSION }}-Windows-Portable-x86_64.zip
mv "Windows Portable arm64.zip" imhex-${{ env.IMHEX_VERSION }}-Windows-Portable-arm64.zip
mv "Windows Portable NoGPU x86_64.zip" imhex-${{ env.IMHEX_VERSION }}-Windows-Portable-NoGPU-x86_64.zip
mv "ImHex Web.zip" imhex-${{ env.IMHEX_VERSION }}-Web.zip
rm artifact.tar || true
- name: 📖 Generate Release Notes
if: ${{ steps.check_commits.outputs.should_run == 'true' }}
id: release_notes
continue-on-error: true
run: |
cd ImHex
echo "## Nightly ${GITHUB_SHA::7} Changelog" > changelog.md
git fetch --tags --recurse-submodules=no
git log nightly..origin/master --oneline --no-merges --pretty=format:'* %s' >> changelog.md
- name: 📦 Update Pre-Release
if: ${{ steps.check_commits.outputs.should_run == 'true' }}
run: |
set -e
cd ImHex
# Move nightly tag to latest commit
git tag -f nightly origin/master
git push origin nightly --force
# Auth for GitHub CLI
echo "${{ github.token }}" | gh auth login --with-token
# Delete existing assets
for asset in $(gh release view nightly --json assets --jq '.assets[].name'); do
gh release delete-asset nightly "$asset" --yes
done
# Update release notes
gh release edit nightly --notes-file changelog.md
# Upload new assets
gh release upload nightly ../*.* --clobber
- name: ⬆️ Publish x86_64 Snap package
if: ${{ steps.check_commits.outputs.should_run == 'true' }}
continue-on-error: true
uses: snapcore/action-publish@v1
env:
SNAPCRAFT_STORE_CREDENTIALS: ${{ secrets.SNAP_STORE_LOGIN }}
with:
snap: imhex-${{ env.IMHEX_VERSION }}-x86_64.snap
release: edge
- name: ⬆️ Publish arm64 Snap package
if: ${{ steps.check_commits.outputs.should_run == 'true' }}
continue-on-error: true
uses: snapcore/action-publish@v1
env:
SNAPCRAFT_STORE_CREDENTIALS: ${{ secrets.SNAP_STORE_LOGIN }}
with:
snap: imhex-${{ env.IMHEX_VERSION }}-arm64.snap
release: edge
website_update:
name: 🌍 Update ImHex Landing Website
needs: nightly-release
runs-on: ubuntu-24.04
env:
WEBSITE_DISPATCH_TOKEN: ${{ secrets.WEBSITE_DISPATCH_TOKEN }}
steps:
- name: ✉️ Dispatch Landing page update
if: ${{ env.WEBSITE_DISPATCH_TOKEN != '' }}
uses: peter-evans/repository-dispatch@v4
with:
token: ${{ secrets.WEBSITE_DISPATCH_TOKEN }}
repository: WerWolv/ImHexWebsite
event-type: update_page
================================================
FILE: .github/workflows/release.yml
================================================
permissions:
contents: write
name: Release
on:
release:
types: [published]
workflow_dispatch:
inputs:
commit_hash:
type: string
description: 'The commit hash to build (defaults to the latest commit on the default branch)'
required: false
default: ''
jobs:
release-update-repos:
runs-on: ubuntu-24.04
name: Release Update Repos
steps:
- name: 🧰 Checkout
uses: actions/checkout@v4
with:
path: ImHex
- name: 📜 Verify version and set version variable
run: |
set -x
project_version=`cat ImHex/VERSION`
tag_version="${{github.event.release.tag_name}}"
tag_version="${tag_version:1}"
if [ "$project_version" != "$tag_version" ] && [ ! -z "$tag_version" ]; then
echo "::warning::$project_version and $tag_version are not the same ! Refusing to populate release"
exit 1
fi
echo "IMHEX_VERSION=$project_version" >> $GITHUB_ENV
- name: 🎫 Create PatternLanguage release
uses: ncipollo/release-action@v1
env:
RELEASE_TOKEN: ${{ secrets.RELEASE_TOKEN }}
if: "${{ env.RELEASE_TOKEN != '' }}"
with:
tag: ImHex-v${{ env.IMHEX_VERSION }}
repo: PatternLanguage
token: ${{ secrets.RELEASE_TOKEN }}
skipIfReleaseExists: true
- name: 🎫 Create ImHex-Patterns release
uses: ncipollo/release-action@v1
env:
RELEASE_TOKEN: ${{ secrets.RELEASE_TOKEN }}
if: "${{ env.RELEASE_TOKEN != '' }}"
with:
tag: ImHex-v${{ env.IMHEX_VERSION }}
repo: ImHex-Patterns
token: ${{ secrets.RELEASE_TOKEN }}
skipIfReleaseExists: true
- name: 🎫 Create imhex-download-sdk release
uses: ncipollo/release-action@v1
env:
RELEASE_TOKEN: ${{ secrets.RELEASE_TOKEN }}
if: "${{ env.RELEASE_TOKEN != '' }}"
with:
tag: v${{ env.IMHEX_VERSION }}
repo: imhex-download-sdk
token: ${{ secrets.RELEASE_TOKEN }}
skipIfReleaseExists: true
release-upload-artifacts:
runs-on: ubuntu-24.04
name: Release Upload Artifacts
outputs:
IMHEX_VERSION: ${{ steps.verify_version.outputs.IMHEX_VERSION }}
steps:
- name: 🧰 Checkout
uses: actions/checkout@v4
with:
path: ImHex
submodules: recursive
- name: 📜 Verify version and set version variable
id: verify_version
run: |
set -x
project_version=`cat ImHex/VERSION`
tag_version="${{github.event.release.tag_name}}"
tag_version="${tag_version:1}"
if [ "$project_version" != "$tag_version" ] && [ ! -z "$tag_version" ]; then
echo "::warning::$project_version and $tag_version are not the same ! Refusing to populate release"
exit 1
fi
echo "IMHEX_VERSION=$project_version" >> $GITHUB_ENV
echo "IMHEX_VERSION=$project_version" >> $GITHUB_OUTPUT
- name: 🗜️ Create tarball from sources with dependencies
run: tar --exclude-vcs -czvf Full.Sources.tar.gz ImHex
- name: ⬇️ Download artifacts from latest workflow
uses: dawidd6/action-download-artifact@v6
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
workflow: build.yml
branch: ${{ github.event.release.target_commitish }}
workflow_conclusion: success
skip_unpack: true
commit: ${{ github.event.inputs.commit_hash }}
- name: 🗜️ Unzip files when needed
run: |
set -x
for zipfile in ./*.zip
do
if [ `zipinfo -1 "$zipfile" | wc -l` -eq 1 ];
then
echo "unzipping $zipfile"
unzip "$zipfile"
rm "$zipfile"
else
echo "keeping $zipfile zipped"
fi
done
- name: 🟩 Rename artifacts when needed
run: |
mv "Windows Portable x86_64.zip" imhex-${{ env.IMHEX_VERSION }}-Windows-Portable-x86_64.zip || true
mv "Windows Portable arm64.zip" imhex-${{ env.IMHEX_VERSION }}-Windows-Portable-arm64.zip || true
mv "Windows Portable NoGPU x86_64.zip" imhex-${{ env.IMHEX_VERSION }}-Windows-Portable-NoGPU-x86_64.zip || true
mv "ImHex Web.zip" imhex-${{ env.IMHEX_VERSION }}-Web.zip || true
rm artifact.tar || true
- name: ⬆️ Upload Unsigned x86_64 Windows Installer
uses: actions/upload-artifact@v4
id: upload-installer-x86_64
with:
if-no-files-found: error
name: Windows Installer x86_64
path: |
imhex-*-x86_64.msi
- name: ⬆️ Upload Unsigned ARM64 Windows Installer
if: false
uses: actions/upload-artifact@v4
id: upload-installer-arm64
with:
if-no-files-found: error
name: Windows Installer ARM64
path: |
imhex-*-arm64.msi
- name: 🗑️ Delete unsigned installers
run: |
rm imhex-*-x86_64.msi
- name: 🗝️ Sign x86_64 Installer
uses: signpath/github-action-submit-signing-request@v1
with:
api-token: '${{ secrets.SIGNPATH_API_TOKEN }}'
organization-id: 'f605a0e8-86cd-411c-bb6f-e05025afcc33'
project-slug: 'ImHex'
signing-policy-slug: 'release-signing'
github-artifact-id: '${{ steps.upload-installer-x86_64.outputs.artifact-id }}'
wait-for-completion: true
output-artifact-directory: '.'
- name: 🗝️ Sign ARM64 Installer
if: false
uses: signpath/github-action-submit-signing-request@v1
with:
api-token: '${{ secrets.SIGNPATH_API_TOKEN }}'
organization-id: 'f605a0e8-86cd-411c-bb6f-e05025afcc33'
project-slug: 'ImHex'
signing-policy-slug: 'release-signing'
github-artifact-id: '${{ steps.upload-installer-arm64.outputs.artifact-id }}'
wait-for-completion: true
output-artifact-directory: '.'
- name: ⬆️ Upload everything to release
uses: softprops/action-gh-release@4634c16e79c963813287e889244c50009e7f0981
with:
files: '*'
release-update-aur:
name: Release update AUR package
needs: release-upload-artifacts
runs-on: ubuntu-24.04
steps:
- name: 🧰 Checkout
uses: actions/checkout@v4
with:
path: ImHex
- name: ⬇️ Download artifacts
run: |
tagname=${GITHUB_REF#refs/tags/}
version=${tagname#v}
wget https://github.com/WerWolv/ImHex/releases/download/${tagname}/imhex-${version}-ArchLinux-x86_64.pkg.tar.zst
- name: ✒️ Prepare PKGBUILD
run: |
set -x
cp ImHex/dist/Arch/PKGBUILD .
hash=`md5sum imhex-${{ needs.release-upload-artifacts.outputs.IMHEX_VERSION }}-ArchLinux-x86_64.pkg.tar.zst | cut -d ' ' -f 1`
sed -i 's/%version%/${{ needs.release-upload-artifacts.outputs.IMHEX_VERSION }}/g' PKGBUILD
sed -i "s/(SKIP)/($hash)/g" PKGBUILD
- name: ⬆️ Publish AUR package
env:
AUR_SSH_PRIVATE_KEY: ${{ secrets.AUR_SSH_PRIVATE_KEY }}
if: "${{ env.AUR_SSH_PRIVATE_KEY != '' }}"
uses: KSXGitHub/github-actions-deploy-aur@v2
with:
pkgname: imhex-bin
pkgbuild: ./PKGBUILD
commit_username: iTrooz
commit_email: hey@itrooz.fr
ssh_private_key: ${{ secrets.AUR_SSH_PRIVATE_KEY }}
commit_message: Bump to version ${{ needs.release-upload-artifacts.outputs.IMHEX_VERSION }}
ssh_keyscan_types: rsa,ecdsa,ed25519
release-update-winget:
name: Release update winget package
needs: release-upload-artifacts
runs-on: windows-latest
steps:
- name: ⬇️ Download dependencies
shell: pwsh
run: |
iwr https://aka.ms/wingetcreate/latest -OutFile wingetcreate.exe
- name: ⬆️ Update winget manifest
shell: pwsh
env:
WINGET_GITHUB_TOKEN: ${{ secrets.RELEASE_TOKEN }}
if: "${{ env.WINGET_GITHUB_TOKEN != '' }}"
run: |
$tagname = $env:GITHUB_REF.Replace("refs/tags/", "")
$version = $tagname.Replace("v", "")
$url = "https://github.com/WerWolv/ImHex/releases/download/${tagname}/imhex-${version}-Windows-x86_64.msi"
.\wingetcreate.exe update WerWolv.ImHex -u $url --version $version
if ($version -notmatch "-") {
.\wingetcreate.exe submit .\manifests\w\WerWolv\ImHex\${version}\ --token $env:WINGET_GITHUB_TOKEN
}
release-update-snapstore:
name: Release update snapstore package
needs: release-upload-artifacts
runs-on: ubuntu-24.04
steps:
- name: ⬇️ Download artifacts
run: |
tagname=${GITHUB_REF#refs/tags/}
version=${tagname#v}
wget https://github.com/WerWolv/ImHex/releases/download/${tagname}/imhex-${version}-x86_64.snap
wget https://github.com/WerWolv/ImHex/releases/download/${tagname}/imhex-${version}-arm64.snap
- name: ⬆️ Publish x86_64 Snap package
continue-on-error: true
uses: snapcore/action-publish@v1
env:
SNAPCRAFT_STORE_CREDENTIALS: ${{ secrets.SNAP_STORE_LOGIN }}
with:
snap: imhex-${{ needs.release-upload-artifacts.outputs.IMHEX_VERSION }}-x86_64.snap
release: stable
- name: ⬆️ Publish arm64 Snap package
continue-on-error: true
uses: snapcore/action-publish@v1
env:
SNAPCRAFT_STORE_CREDENTIALS: ${{ secrets.SNAP_STORE_LOGIN }}
with:
snap: imhex-${{ needs.release-upload-artifacts.outputs.IMHEX_VERSION }}-arm64.snap
release: stable
================================================
FILE: .github/workflows/stale_issues.yml
================================================
name: Close inactive issues
on:
schedule:
- cron: "30 1 * * 0"
workflow_dispatch:
jobs:
close-issues:
if: false # Disabled for now until I actually have time to take care of all these issues
runs-on: ubuntu-24.04
permissions:
issues: write
pull-requests: write
steps:
- uses: actions/stale@v5
with:
operations-per-run: '200'
ascending: true
days-before-issue-stale: 334
days-before-issue-close: 30
stale-issue-label: "stale"
stale-issue-message: |
This issue is marked stale as it has been open for 11 months without activity.
Please try the latest ImHex version. (Avaiable here: https://imhex.download/ for release and https://imhex.download/#nightly for development version)
If the issue persists on the latest version, please make a comment on this issue again
Without response, this issue will be closed in one month.
close-issue-message: ""
days-before-pr-stale: -1
days-before-pr-close: -1
repo-token: ${{ secrets.GITHUB_TOKEN }}
================================================
FILE: .github/workflows/tests.yml
================================================
name: "Unit Tests"
on:
push:
branches:
- 'master'
- 'releases/**'
- 'tests/**'
- 'feature/**'
pull_request:
branches:
- 'master'
- 'releases/**'
workflow_dispatch:
jobs:
tests:
name: 🧪 Unit Tests
runs-on: ubuntu-24.04
permissions:
actions: read
contents: read
security-events: write
steps:
- name: 🧰 Checkout
uses: actions/checkout@v4
with:
submodules: recursive
- name: 📜 Setup ccache
uses: hendrikmuhs/ccache-action@v1
with:
key: ${{ runner.os }}-tests-build-${{ github.run_id }}
restore-keys: ${{ runner.os }}-tests-build
max-size: 50M
- name: ⬇️ Install dependencies
run: |
sudo apt update
sudo bash dist/get_deps_debian.sh
- name: 🛠️ Build
run: |
set -x
mkdir -p build
cd build
CC=gcc-14 CXX=g++-14 cmake \
-DCMAKE_BUILD_TYPE=Debug \
-DIMHEX_ENABLE_UNIT_TESTS=ON \
-DIMHEX_ENABLE_PLUGIN_TESTS=ON \
-DCMAKE_C_COMPILER_LAUNCHER=ccache \
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
-DCMAKE_C_FLAGS="-fuse-ld=lld -fsanitize=address,leak,undefined -fno-sanitize-recover=all --coverage" \
-DCMAKE_CXX_FLAGS="-fuse-ld=lld -fsanitize=address,leak,undefined -fno-sanitize-recover=all --coverage" \
-DIMHEX_OFFLINE_BUILD=ON \
-G Ninja \
..
ninja unit_tests
ninja imhex_all
- name: 🧪 Perform plcli Integration Tests
run: |
cd lib/external/pattern_language
python tests/integration/integration.py ../../../build/imhex --pl
- name: 🧪 Perform Unit Tests
run: |
cd build
ctest --output-on-failure
# Generate report from all gcov .gcda files
#- name: 🧪 Generate coverage report
# run: |
# sudo apt install python3-pip python3-venv
# python3 -m venv venv
# . venv/bin/activate
# pip3 install gcovr
# cd build
# gcovr --gcov-executable /usr/bin/gcov-14 --exclude '.*/yara_rules/' --exclude '.*/third_party/' --exclude '.*/external/' --root .. --xml coverage_report.xml --verbose --gcov-ignore-errors all
#
#- name: Upload coverage reports to Codecov
# env:
# CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
# if: ${{ env.CODECOV_TOKEN }}
# uses: codecov/codecov-action@v4
# with:
# fail_ci_if_error: true
# token: ${{ secrets.CODECOV_TOKEN }}
# file: build/coverage_report.xml
langs:
name: 🧪 Langs
runs-on: ubuntu-22.04
steps:
- name: 🧰 Checkout
uses: actions/checkout@v4
with:
submodules: recursive
- name: Check langs
run:
python3 tests/check_langs.py
================================================
FILE: .gitignore
================================================
/.vscode/
/.idea/
/.kdev4/
/.vs/
.venv/
/cmake-build-*/
/build*/
/local/
/venv/
/.cache/
/install/
/out/
/dist/ImHex.run.xml
*.mgc
*.kdev4
imgui.ini
.DS_Store
CMakeUserPresets.json
Brewfile.lock.json
vcpkg.json
================================================
FILE: .gitmodules
================================================
[submodule "lib/third_party/nativefiledialog"]
path = lib/third_party/nativefiledialog
url = https://github.com/btzy/nativefiledialog-extended
ignore = dirty
[submodule "lib/third_party/yara/yara"]
path = lib/third_party/yara/yara
url = https://github.com/VirusTotal/yara
ignore = dirty
[submodule "lib/third_party/xdgpp"]
path = lib/third_party/xdgpp
url = https://github.com/WerWolv/xdgpp
ignore = dirty
[submodule "lib/third_party/fmt"]
path = lib/third_party/fmt
url = https://github.com/fmtlib/fmt
ignore = dirty
[submodule "lib/third_party/capstone"]
path = lib/third_party/capstone
url = https://github.com/capstone-engine/capstone
ignore = dirty
[submodule "lib/third_party/edlib"]
path = lib/third_party/edlib
url = https://github.com/Martinsos/edlib
ignore = dirty
[submodule "lib/third_party/lunasvg"]
path = lib/third_party/lunasvg
url = https://github.com/sammycage/lunasvg
ignore = dirty
[submodule "lib/external/libromfs"]
path = lib/external/libromfs
url = https://github.com/WerWolv/libromfs
[submodule "lib/external/pattern_language"]
path = lib/external/pattern_language
url = https://github.com/WerWolv/PatternLanguage
[submodule "lib/external/libwolv"]
path = lib/external/libwolv
url = https://github.com/WerWolv/libwolv
[submodule "lib/third_party/HashLibPlus"]
path = lib/third_party/HashLibPlus
url = https://github.com/WerWolv/HashLibPlus
[submodule "lib/external/disassembler"]
path = lib/external/disassembler
url = https://github.com/WerWolv/Disassembler
[submodule "lib/third_party/md4c"]
path = lib/third_party/md4c
url = https://github.com/mity/md4c
================================================
FILE: CMakeLists.txt
================================================
cmake_minimum_required(VERSION 3.25)
# Options
## General
option(IMHEX_STRIP_RELEASE "Strip the release builds" ON )
option(IMHEX_OFFLINE_BUILD "Enable offline build" OFF)
option(IMHEX_IGNORE_BAD_CLONE "Disable the bad clone prevention checks" OFF)
option(IMHEX_PATTERNS_PULL_MASTER "Download latest files from master branch of the ImHex-Patterns repo" OFF)
option(IMHEX_IGNORE_BAD_COMPILER "Allow compiling with an unsupported compiler" OFF)
option(IMHEX_USE_GTK_FILE_PICKER "Use GTK file picker instead of xdg-desktop-portals (Linux only)" OFF)
option(IMHEX_BUNDLE_DOTNET "Bundle .NET runtime" ON )
option(IMHEX_ENABLE_LTO "Enables Link Time Optimizations if possible" OFF)
option(IMHEX_USE_DEFAULT_BUILD_SETTINGS "Use default build settings" OFF)
option(IMHEX_BUILD_HARDENING "Enable hardening flags for build" ON )
option(IMHEX_GENERATE_PACKAGE "Specify if a cpack package should be built. (Windows only)" OFF)
option(IMHEX_MACOS_CREATE_BUNDLE "Creates a macOS .app bundle when building (macOS only)" ON )
option(IMHEX_ENABLE_UNITY_BUILD "Enables building ImHex as a unity build." OFF)
option(IMHEX_ENABLE_PRECOMPILED_HEADERS "Enable precompiled headers" OFF)
option(IMHEX_ENABLE_CXX_MODULES "Enable C++20 Module compilation. Testing only!" OFF)
option(IMHEX_ENABLE_CPPCHECK "Enable cppcheck static analysis" OFF)
option(IMHEX_BUNDLE_PLUGIN_SDK "Enable bundling of Plugin SDK into install package" ON )
## Testing
option(IMHEX_ENABLE_UNIT_TESTS "Enable building unit tests" ON )
option(IMHEX_ENABLE_IMGUI_TEST_ENGINE "Enable the ImGui Test Engine" OFF)
option(IMHEX_ENABLE_STD_ASSERTS "Enable debug asserts in the C++ std library. (Breaks Plugin ABI!)" OFF)
## Debug info
option(IMHEX_COMPRESS_DEBUG_INFO "Compress debug information" ON )
option(IMHEX_GENERATE_PDBS "Enable generating PDB files in non-debug builds (Windows only)" OFF)
option(IMHEX_REPLACE_DWARF_WITH_PDB "Remove DWARF information from binaries when generating PDBS (Windows only)" OFF)
option(IMHEX_STRICT_WARNINGS "Enable most available warnings and treat them as errors" ON )
option(IMHEX_DISABLE_STACKTRACE "Disables support for printing stack traces" OFF)
## Plugins
option(IMHEX_STATIC_LINK_PLUGINS "Statically link all plugins into the main executable" OFF)
option(IMHEX_ENABLE_PLUGIN_TESTS "Enable building plugin tests" ON )
option(IMHEX_INCLUDE_PLUGINS "Semicolon-separated list of plugins to include in the build (empty = build all)" "" )
option(IMHEX_EXCLUDE_PLUGINS "Semicolon-separated list of plugins to exclude from the build" "" )
set(IMHEX_BASE_FOLDER "${CMAKE_CURRENT_SOURCE_DIR}")
set(CMAKE_MODULE_PATH "${IMHEX_BASE_FOLDER}/cmake/modules")
# Optional IDE support
include("${IMHEX_BASE_FOLDER}/cmake/ide_helpers.cmake")
# Basic compiler and cmake configurations
set(CMAKE_CXX_STANDARD 23)
set(CMAKE_CXX_SCAN_FOR_MODULES ${IMHEX_ENABLE_CXX_MODULES})
set(CMAKE_INCLUDE_DIRECTORIES_BEFORE ON)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
include("${IMHEX_BASE_FOLDER}/cmake/build_helpers.cmake")
# Setup project
loadVersion(IMHEX_VERSION IMHEX_VERSION_PLAIN)
setVariableInParent(IMHEX_VERSION ${IMHEX_VERSION})
configureCMake()
project(ImHex
LANGUAGES C CXX
VERSION ${IMHEX_VERSION_PLAIN}
DESCRIPTION "The ImHex Hex Editor"
HOMEPAGE_URL "https://imhex.werwolv.net"
)
configureProject()
# Add ImHex sources
add_custom_target(imhex_all ALL)
# Make sure project is configured correctly
setDefaultBuiltTypeIfUnset()
detectBadClone()
verifyCompiler()
detectBundledPlugins()
# Add various defines
detectOS()
addDefines()
# Configure packaging and install targets
configurePackingResources()
setUninstallTarget()
addBundledLibraries()
add_subdirectory(lib/libimhex)
add_subdirectory(main)
addPluginDirectories()
add_subdirectory(lib/trace)
# Add unit tests
if (IMHEX_ENABLE_UNIT_TESTS)
if (NOT TARGET unit_tests)
enable_testing()
add_custom_target(unit_tests)
add_subdirectory(tests EXCLUDE_FROM_ALL)
endif ()
endif ()
# Configure more resources that will be added to the install package
if (IMHEX_BUNDLE_PLUGIN_SDK)
generateSDKDirectory()
endif()
# Handle package generation
createPackage()
# Accommodate IDEs with FOLDER support
tweakTargetsForIDESupport()
================================================
FILE: CMakePresets.json
================================================
{
"version": 2,
"cmakeMinimumRequired": {
"major": 3,
"minor": 20,
"patch": 0
},
"configurePresets": [
{
"name": "base",
"displayName": "Base",
"description": "Base configuration for all builds",
"hidden": true,
"binaryDir": "${sourceDir}/build/${presetName}",
"generator": "Ninja",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Debug",
"CMAKE_C_COMPILER": "gcc",
"CMAKE_CXX_COMPILER": "g++",
"IMHEX_PATTERNS_PULL_MASTER": "ON",
"CMAKE_INSTALL_PREFIX": "./install",
"USE_SYSTEM_CAPSTONE": "ON",
"IMHEX_USE_DEFAULT_BUILD_SETTINGS": "ON"
}
},
{
"name": "x86_64",
"displayName": "x86_64 Build",
"description": "x86_64 build",
"inherits": [ "base" ]
},
{
"name": "xcode",
"inherits": [ "base" ],
"displayName": "Xcode",
"description": "Xcode with external compiler override",
"generator": "Xcode",
"cacheVariables": {
"CMAKE_C_COMPILER": "clang",
"CMAKE_CXX_COMPILER": "clang++",
"CMAKE_CXX_FLAGS": "-fexperimental-library -Wno-shorten-64-to-32 -Wno-deprecated-declarations",
"IMHEX_IDE_HELPERS_OVERRIDE_XCODE_COMPILER": "ON"
}
},
{
"name": "vs2022",
"displayName": "Visual Studio 2022",
"generator": "Ninja",
"binaryDir": "${sourceDir}/build/${presetName}",
"cacheVariables": {
"CMAKE_TOOLCHAIN_FILE": "$env{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake",
"VCPKG_MANIFEST_DIR": "${sourceDir}/dist"
}
},
{
"name": "vs2022-x86",
"displayName": "Visual Studio 2022 x86",
"generator": "Ninja",
"binaryDir": "${sourceDir}/build/${presetName}",
"cacheVariables": {
"CMAKE_TOOLCHAIN_FILE": "$env{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake",
"VCPKG_MANIFEST_DIR": "${sourceDir}/dist"
},
"environment": {
"VSCMD_ARG_TGT_ARCH": "x86"
}
}
],
"buildPresets": [
{
"name": "x86_64",
"description": "x86_64 build",
"configurePreset": "x86_64",
"targets": [ "imhex_all" ]
}
],
"testPresets": [
]
}
================================================
FILE: CODE_OF_CONDUCT.md
================================================
# Contributor Covenant Code of Conduct
## Our Pledge
We as members, contributors, and leaders pledge to make participation in our
community a harassment-free experience for everyone, regardless of age, body
size, visible or invisible disability, ethnicity, sex characteristics, gender
identity and expression, level of experience, education, socio-economic status,
nationality, personal appearance, race, religion, or sexual identity
and orientation.
We pledge to act and interact in ways that contribute to an open, welcoming,
diverse, inclusive, and healthy community.
## Our Standards
Examples of behavior that contributes to a positive environment for our
community include:
* Demonstrating empathy and kindness toward other people
* Being respectful of differing opinions, viewpoints, and experiences
* Giving and gracefully accepting constructive feedback
* Accepting responsibility and apologizing to those affected by our mistakes,
and learning from the experience
* Focusing on what is best not just for us as individuals, but for the
overall community
Examples of unacceptable behavior include:
* The use of sexualized language or imagery, and sexual attention or
advances of any kind
* Trolling, insulting or derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or email
address, without their explicit permission
* Other conduct which could reasonably be considered inappropriate in a
professional setting
## Enforcement Responsibilities
Community leaders are responsible for clarifying and enforcing our standards of
acceptable behavior and will take appropriate and fair corrective action in
response to any behavior that they deem inappropriate, threatening, offensive,
or harmful.
Community leaders have the right and responsibility to remove, edit, or reject
comments, commits, code, wiki edits, issues, and other contributions that are
not aligned to this Code of Conduct, and will communicate reasons for moderation
decisions when appropriate.
## Scope
This Code of Conduct applies within all community spaces, and also applies when
an individual is officially representing the community in public spaces.
Examples of representing our community include using an official e-mail address,
posting via an official social media account, or acting as an appointed
representative at an online or offline event.
## Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported to the community leaders responsible for enforcement at
Discord @WerWolv#1337.
All complaints will be reviewed and investigated promptly and fairly.
All community leaders are obligated to respect the privacy and security of the
reporter of any incident.
## Enforcement Guidelines
Community leaders will follow these Community Impact Guidelines in determining
the consequences for any action they deem in violation of this Code of Conduct:
### 1. Correction
**Community Impact**: Use of inappropriate language or other behavior deemed
unprofessional or unwelcome in the community.
**Consequence**: A private, written warning from community leaders, providing
clarity around the nature of the violation and an explanation of why the
behavior was inappropriate. A public apology may be requested.
### 2. Warning
**Community Impact**: A violation through a single incident or series
of actions.
**Consequence**: A warning with consequences for continued behavior. No
interaction with the people involved, including unsolicited interaction with
those enforcing the Code of Conduct, for a specified period of time. This
includes avoiding interactions in community spaces as well as external channels
like social media. Violating these terms may lead to a temporary or
permanent ban.
### 3. Temporary Ban
**Community Impact**: A serious violation of community standards, including
sustained inappropriate behavior.
**Consequence**: A temporary ban from any sort of interaction or public
communication with the community for a specified period of time. No public or
private interaction with the people involved, including unsolicited interaction
with those enforcing the Code of Conduct, is allowed during this period.
Violating these terms may lead to a permanent ban.
### 4. Permanent Ban
**Community Impact**: Demonstrating a pattern of violation of community
standards, including sustained inappropriate behavior, harassment of an
individual, or aggression toward or disparagement of classes of individuals.
**Consequence**: A permanent ban from any sort of public interaction within
the community.
## Attribution
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
version 2.0, available at
https://www.contributor-covenant.org/version/2/0/code_of_conduct.html.
Community Impact Guidelines were inspired by [Mozilla's code of conduct
enforcement ladder](https://github.com/mozilla/diversity).
[homepage]: https://www.contributor-covenant.org
For answers to common questions about this code of conduct, see the FAQ at
https://www.contributor-covenant.org/faq. Translations are available at
https://www.contributor-covenant.org/translations.
================================================
FILE: CONTRIBUTING.md
================================================
# Contribution guide
## Introduction
This document is a guide for developers who want to contribute to ImHex in any way. It contains information about the codebase, the build process and the general workflow.
## Making Changes
### Adding new features
If you'd like to add new features, the best way to start is by joining our Discord and telling us about your idea. We can then discuss the best way to implement it and how it should be integrated into ImHex or if it should be done in a separate plugin.
There are standalone plugin templates that use ImHex as a submodule. You can find them located in the README's [Plugin Development](README.md#plugin-development) section.
### Adding a new language
If you'd like to support a new language in ImHex, the best way is by using the `dist/langtool.py` tool. It will create the necessary file for you and help you fill them out.
First, run the tool with `python3 dist/langtool.py create plugins/builtin/romfs/lang <iso_code>` where `<iso_code>` is the ISO 639-1 code of your language. This will create a new file in the language directory.
Afterwards follow the prompts of the program to populate the entire file. Once you're done, rerun cmake and rebuild ImHex. Your language should now be available in the settings.
### Updating an existing language
If you'd like to add missing keys to an existing language, you can also use the `dist/langtool.py` tool. Run it with `python3 dist/langtool.py translate plugins/builtin/romfs/lang <iso_code>` where `<iso_code>` is the ISO 639-1 code of the language.
This will one by one list all the missing translation keys that are present in the default translation file, and you can fill them in with the correct translation for your language.
## Codebase
ImHex is written in C++ and usually uses the latest compiler and standard library features available in gcc on all supported OSes. At the time of writing this is C++23.
### Structure
- `main`: Contains the main application code
- Important to understand here is that the main ImHex application is basically just an empty shell.
- All it does is create a Window and a OpenGL context using GLFW, load all available plugins, properly configure ImGui and render it to the screen.
- Everything else is done inside of plugins. ImHex comes with a few plugins by default, most notably the `builtin` plugin which contains the majority of the application code.
- In most cases, this code doesn't need to be modified. Most features should be self-contained inside a plugin.
- `lib`
- `libimhex`: Contains all helper utilities as well as various APIs for plugins to interact with ImHex.
- The library's main purpose is for Dependency Inversion. The ImHex main application as well as libimhex do not know about the existence of plugins at build time. Plugins and the main application instead link against libimhex and use it as a common API to interact with each other.
- Since libimhex itself doesn't know about the existence of plugins, it cannot depend on any of them. This includes localizations and things that get registered by plugins after launch.
- Even if the builtin plugin is technically always available, it is still a plugin and should be treated that way.
- All important APIs can be found in the `hex/api` include directory and are documented in the respective header file.
- `external`: All libraries that need custom patches or aren't typically available in package managers go into here.
- If you'd like to add new features to the Pattern language, please make a PR to https://github.com/WerWolv/PatternLanguage instead. ImHex usually depends on the latest commit of the master branch of this repo.
- `plugins`
- `builtin`: The builtin plugin. Contains the majority of the application code.
- It's the heart of ImHex's functionality. It contains most of the default views, providers, etc. so if you want to add new functionality to ImHex, this is the place to start.
- `tests`: Contains all unit tests for ImHex. These are run automatically by the CI and should be kept up to date, especially when adding new helper functions to libimhex.
### RomFS
ImHex uses a custom library called [libromfs](https://github.com/WerWolv/libromfs). It's a simple static library which uses CMake's code generation feature to embed files into the binary at compile time so they can be accessed at runtime.
All plugins have a `romfs` folder which contains all files that should be embedded into the binary. Resources that need to be embedded into the main application (this is usually not necessary), go into the `resources/romfs` folder.
When adding, changing files or removing files, make sure to re-run CMake to update the generated code. Otherwise, the changes might not be reflected in the binary.
## Development Environment
I personally use CLion for development since it makes configuring and building the project very easy on all platforms.
### Windows
- Install MSYS2 from https://www.msys2.org/ and use the `dist/get_deps_msys2.sh` script to install all dependencies.
### Linux
- Install all dependencies using one of the `dist/get_deps_*.sh` scripts depending on your distribution or install them manually with your package manager.
### macOS
- Install all dependencies using brew and the `dist/Brewfile` script.
================================================
FILE: INSTALL.md
================================================
# Installing ImHex
## Official Releases
The easiest way to install ImHex is to download the latest release from the [GitHub Releases page](https://github.com/WerWolv/ImHex/releases/latest).
There's also a NoGPU version available for users who don't have a GPU or want to run ImHex in a VM without GPU passthrough.
### Windows
#### Installer
Simply run the installer to install ImHex on your system
#### Portable
Extract the zip file to any location on your system.
### macOS
Simply use the drag-n-drop dmg package to install ImHex on your system. It's possible that you need to allow the app to run in the security settings.
### Linux
#### AppImage
To run the AppImage, make sure it's executable. Then simply run it.
```bash
chmod +x imhex-*.AppImage
./imhex-*.AppImage
```
#### Flatpak
To install the Flatpak, make sure you have the Flathub repository added to your system. Then simply run the following command:
```bash
flatpak install flathub net.werwolv.ImHex
# or install the file directly
flatpak install ./imhex-*.flatpak
```
#### Snap
```bash
snap install ./imhex-*.snap
```
#### Ubuntu DEB Package
To install the DEB package, simply run the following command:
```bash
sudo apt install ./imhex-*.deb
```
#### Arch Linux
To install the Arch Linux package, simply run the following command:
```bash
sudo pacman -U imhex-*.pkg.tar.zst
```
#### Fedora / RHEL / AlmaLinux RPM Package
To install the RPM package, simply run the following command:
```bash
sudo dnf install ./imhex-*.rpm
```
## Nightly Builds
The GitHub Actions CI builds a new release package on every commit made to repository. These builds are available on the [GitHub Actions page](https://github.com/WerWolv/ImHex/actions?query=workflow%3A%22Build%22).
These builds are not guaranteed to be stable and may contain bugs, however they also contain new features that are not yet available in the official releases.
## Building from source
Build instructions for Windows, Linux and macOS can be found under `/dist/compiling`:
- Windows: [Link](dist/compiling/windows.md)
- macOS: [Link](dist/compiling/macos.md)
- Linux: [Link](dist/compiling/linux.md)
## Package managers
ImHex is also available on various package managers. The officially supported ones are listed here:
### Windows
- **Chocolatey**
- [imhex](https://community.chocolatey.org/packages/imhex) (Thanks to @Jarcho)
- `choco install imhex`
- **Winget**
- [WerWolv.ImHex](https://github.com/microsoft/winget-pkgs/tree/master/manifests/w/WerWolv/ImHex)
- `winget install WerWolv.ImHex`
### Linux
- **Arch Linux AUR**
- [imhex-bin](https://aur.archlinux.org/packages/imhex-bin/) (Thanks to @iTrooz)
- `yay -S imhex-bin`
- [imhex](https://aur.archlinux.org/packages/imhex/) (Thanks to @KokaKiwi)
- `yay -S imhex`
- **Fedora**
- [imhex](https://src.fedoraproject.org/rpms/imhex/) (Thanks to @jonathanspw)
- `dnf install imhex`
- **Flatpak**
- [net.werwolv.Imhex](https://flathub.org/apps/details/net.werwolv.ImHex) (Thanks to @Mailaender)
- `flatpak install flathub net.werwolv.ImHex`
### Available on other package managers
Packages that aren't explicitly mentioned above are not officially supported but they will most likely still work.
Contact the maintainer of the package if you have any issues.
[](https://repology.org/project/imhex/versions)
================================================
FILE: LICENSE
================================================
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Lesser General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License.
================================================
FILE: PLUGINS.md
================================================
# Plugins
ImHex is entirely built around the possibility to easily load plugins (most of it's features are actually implemented as a plugin!).
To install plugins, simply download the relevant `.hexplug` file and drop it in your `plugins` folder. The location of that folder can be found under `Help -> About -> ImHex Directories`.
## Available Plugins
(If you're developing a Plugin on your own, please feel free to add it to this list)
### Official Plugins
- [Extra Hashes Plugin](https://github.com/WerWolv/ImHex-Hashes-Plugin)
- Adds support for a variety of new hashes to the Hashes view including Blake, Adler32, Murmur and Tiger
- [Discord RPC Plugin](https://github.com/WerWolv/ImHex-Plugin-DiscordRPC)
- Adds support for Discord Rich Presence
### Third-Party Plugins
- [Pcap Plugin](https://github.com/Professor-plum/ImHex-Plugin-Pcap)
- Adds support for reading packet capture files
================================================
FILE: PRIVACY.md
================================================
# Privacy Policy
ImHex collects **anonymous** user statistics based on the user's preferences which are set on first launch and can be opted in or out at any moment through the settings interface.
These statistics contain basic system information such as: ImHex Version, System Architecture, OS, OS Version or Linux Distro version of the GPU in use. This information is linked to a randomly generated ID which cannot be used to identify a specific user.
Additionally, we allow uploading of anonymized crash log files in case of an error. These are never uploaded automatically but only after explicit consent by the user. This decision is not saved so logs can be uploaded on a per-error basis.
Information collected may be analyzed by members of our development team and will never be shared with third parties outside of the team. We may occasionally share general usage statistics publically in a summarized manner (For example a graph stating 70% of users are using a specific OS). We will never share information about individual users, even if they are anonymous.
================================================
FILE: README.md
================================================
<a href="https://imhex.werwolv.net">
<h1 align="center">
<picture>
<img height="300px" style="margin: 0; padding: 0" src="./resources/dist/common/logo/ImHexLogoSVGBG.svg">
</picture>
</h1>
</a>
<p align="center">
A Hex Editor for Reverse Engineers, Programmers and people who value their retinas when working at 3 AM.
<br>
<a href="https://itinerarium.github.io/phoneme-synthesis/?w=/'ˈɪmhɛks/"><strong>/ˈɪmhɛks/</strong></a>
</p>
<p align="center">
<a title="'Build' workflow Status" href="https://github.com/WerWolv/ImHex/actions?query=workflow%3ABuild"><img alt="'Build' workflow Status" src="https://img.shields.io/github/actions/workflow/status/WerWolv/ImHex/build.yml?longCache=true&style=for-the-badge&label=Build&logoColor=fff&logo=GitHub%20Actions&branch=master"></a>
<a title="Discord Server" href="https://discord.gg/X63jZ36xBY"><img alt="Discord Server" src="https://img.shields.io/discord/789833418631675954?label=Discord&logo=Discord&logoColor=fff&style=for-the-badge"></a>
<a title="Total Downloads" href="https://github.com/WerWolv/ImHex/releases/latest"><img alt="Total Downloads" src="https://img.shields.io/github/downloads/WerWolv/ImHex/total?longCache=true&style=for-the-badge&label=Downloads&logoColor=fff&logo=GitHub"></a>
<a title="Code Quality" href="https://www.codefactor.io/repository/github/werwolv/imhex"><img alt="Code Quality" src="https://img.shields.io/codefactor/grade/github/WerWolv/ImHex?longCache=true&style=for-the-badge&label=Code%20Quality&logoColor=fff&logo=CodeFactor&branch=master"></a>
<a title="Translation" href="https://weblate.werwolv.net/projects/imhex/"><img alt="Translation" src="https://img.shields.io/weblate/progress/imhex?logo=weblate&logoColor=%23FFFFFF&server=https%3A%2F%2Fweblate.werwolv.net&style=for-the-badge"></a>
<a title="Plugins" href="https://github.com/WerWolv/ImHex/blob/master/PLUGINS.md"><img alt="Plugins" src="https://img.shields.io/badge/Plugins-Supported-brightgreen?logo=stackedit&logoColor=%23FFFFFF&style=for-the-badge"></a>
</p>
<p align="center">
<a title="Download the latest version of ImHex" href="https://imhex.download"><img alt="Download the latest version of ImHex!" src="resources/dist/common/get_release_banner.png"></a>
<a title="Download the latest nightly pre-release version of ImHex" href="https://imhex.download/#nightly"><img alt="Download the latest nightly pre-release version of ImHex" src="resources/dist/common/get_nightly_banner.png"></a>
<a title="Use the Web version of ImHex right in your browser!" href="https://web.imhex.werwolv.net"><img alt="Use the Web version of ImHex right in your browser!" src="resources/dist/common/try_online_banner.png"></a>
<a title="Read the documentation of ImHex!" href="https://docs.werwolv.net"><img alt="Read the documentation of ImHex!" src="resources/dist/common/read_docs_banner.png"></a>
</p>
## Supporting
If you like my work, please consider supporting me on GitHub Sponsors, Ko-Fi or PayPal. Thanks a lot!
<p align="center">
<a href="https://github.com/sponsors/WerWolv"><img src="https://werwolv.net/assets/github_banner.png" alt="GitHub donate button" /></a>
<a href="https://ko-fi.com/WerWolv"><img src="https://werwolv.net/assets/kofi_banner.png" alt="Ko-Fi donate button" /></a>
<a href="https://werwolv.net/donate"><img src="https://werwolv.net/assets/paypal_banner.png" alt="PayPal donate button" /></a>
</p>
### Notable Sponsors
| | |
|:---------------------------------------------------------------------------------------------------:|-----------------------------------------------------------------------------------|
| [](https://www.jetbrains.com) | JetBrains, providing us with free All Products Pack licenses for development |
| [](https://signpath.io/) | SignPath, providing us with free Code Signing Certificates for our Windows builds |
| [](https://aws.amazon.com) | Amazon, providing us with free AWS Cloud Credits for our CI |
Would you like to appear here as well? Contact us at [imhex@werwolv.net](mailto:imhex@werwolv.net)!
## Screenshots


<details>
<summary><strong>More Screenshots</strong></summary>



</details>
## Features
<details>
<summary><strong>Featureful hex view</strong></summary>
- Byte patching
- Patch management
- Infinite Undo/Redo
- "Copy bytes as..."
- Bytes
- Hex string
- C, C++, C#, Rust, Python, Java & JavaScript array
- ASCII-Art hex view
- HTML self-contained div
- Simple string and hex search
- Goto from start, end and current cursor position
- Colorful highlighting
- Configurable foreground highlighting rules
- Background highlighting using patterns, find results and bookmarks
- Displaying data as a list of many different types
- Hexadecimal integers (8, 16, 32, 64 bit)
- Signed and unsigned decimal integers (8, 16, 32, 64 bit)
- Floats (16, 32, 64 bit)
- RGBA8 Colors
- HexII
- Binary
- Decoding data as ASCII and custom encodings
- Built-in support for UTF-8, UTF-16, ShiftJIS, most Windows encodings and many more
- Paged data view
</details>
<details>
<summary><strong>Custom C++-like pattern language for parsing highlighting a file's content</strong></summary>
- Automatic loading based on MIME types and magic values
- Arrays, pointers, structs, unions, enums, bitfields, namespaces, little and big endian support, conditionals and much more!
- Useful error messages, syntax highlighting and error marking
- Support for visualizing many different types of data
- Images
- Audio
- 3D Models
- Coordinates
- Time stamps
</details>
<details>
<summary><strong>Theming support</strong></summary>
- Doesn't burn out your retinas when used in late-night sessions
- Dark mode by default, but a light mode is available as well
- Customizable colors and styles for all UI elements through shareable theme files
- Support for custom fonts
</details>
<details>
<summary><strong>Importing and Exporting data</strong></summary>
- Base64 files
- IPS and IPS32 patches
- Markdown reports
- Binary arrays for various programming languages
</details>
<details>
<summary><strong>Data Inspector</strong></summary>
- Interpreting data as many different types with endianness, decimal, hexadecimal and octal support and bit inversion
- Unsigned and signed integers (8, 16, 24, 32, 48, 64 bit)
- Floats (16, 32, 64 bit)
- Signed and Unsigned LEB128
- ASCII, Wide and UTF-8 characters and strings
- time32_t, time64_t, DOS date and time
- GUIDs
- RGBA8 and RGB65 Colors
- Copying and modifying bytes through the inspector
- Adding new data types through the pattern language
- Support for hiding rows that aren't used
</details>
<details>
<summary><strong>Node-based data pre-processor</strong></summary>
- Modify, decrypt and decode data before it's being displayed in the hex editor
- Modify data without touching the underlying source
- Support for adding custom nodes
</details>
<details>
<summary><strong>Loading data from many different data sources</strong></summary>
- Local Files
- Support for huge files with fast and efficient loading
- Raw Disks
- Loading data from raw disks and partitions
- GDB Server
- Access the RAM of a running process or embedded devices through GDB
- Intel Hex and Motorola SREC data
- Base64 encoded data
- UDP Packets
- Support for displaying raw data received over UDP
- Process Memory
- Inspect the entire address space of a running process
- Remote Files over SSH with SFTP
- Support for loading files from remote servers using SSH and SFTP
</details>
<details>
<summary><strong>Data searching</strong></summary>
- Support for searching the entire file or only a selection
- String extraction
- Option to specify minimum length and character set (lower case, upper case, digits, symbols)
- Option to specify encoding (ASCII, UTF-8, UTF-16 big and little endian)
- Sequence search
- Search for a sequence of bytes or characters
- Option to ignore character case
- Regex search
- Search for strings using regular expressions
- Binary Pattern
- Search for sequences of bytes with optional wildcards
- Numeric Value search
- Search for signed/unsigned integers and floats
- Search for ranges of values
- Option to specify size and endianness
- Option to ignore unaligned values
</details>
<details>
<summary><strong>Data hashing support</strong></summary>
- Many different algorithms available
- CRC8, CRC16 and CRC32 with custom initial values and polynomials
- Many default polynomials available
- MD5
- SHA-1, SHA-224, SHA-256, SHA-384, SHA-512
- Adler32
- AP
- BKDR
- Bernstein, Bernstein1
- DEK, DJB, ELF, FNV1, FNV1a, JS, PJW, RS, SDBM
- OneAtTime, Rotating, ShiftAndXor, SuperFast
- Murmur2_32, MurmurHash3_x86_32, MurmurHash3_x86_128, MurmurHash3_x64_128
- SipHash64, SipHash128
- XXHash32, XXHash64
- Tiger, Tiger2
- Blake2B, Blake2S
- Hashing of specific regions of the loaded data
- Hashing of arbitrary strings
</details>
<details>
<summary><strong>Diffing support</strong></summary>
- Compare data of different data sources
- Difference highlighting
- Table view of differences
</details>
<details>
<summary><strong>Integrated disassembler</strong></summary>
- Support for all architectures supported by Capstone
- ARM32 (ARM, Thumb, Cortex-M, AArch32)
- ARM64
- MIPS (MIPS32, MIPS64, MIPS32R6, Micro)
- x86 (16-bit, 32-bit, 64-bit)
- PowerPC (32-bit, 64-bit)
- SPARC
- IBM SystemZ
- xCORE
- M68K
- TMS320C64X
- M680X
- Ethereum
- RISC-V
- WebAssembly
- MOS65XX
- Berkeley Packet Filter
- Support for writing custom disassemblers for your own architectures
</details>
<details>
<summary><strong>Bookmarks</strong></summary>
- Support for bookmarks with custom names and colors
- Highlighting of bookmarked region in the hex editor
- Jump to bookmarks
- Open content of bookmark in a new tab
- Add comments to bookmarks
</details>
<details>
<summary><strong>Featureful data analyzer and visualizer</strong></summary>
- File magic-based file parser and MIME type database
- Byte type distribution graph
- Entropy graph
- Highest and average entropy
- Encrypted / Compressed file detection
- Digram and Layered distribution graphs
</details>
<details>
<summary><strong>YARA Rule support</strong></summary>
- Scan a file for vulnerabilities with official yara rules
- Highlight matches in the hex editor
- Jump to matches
- Apply multiple rules at once
</details>
<details>
<summary><strong>Helpful tools</strong></summary>
- Itanium, MSVC, Rust and D-Lang demangler based on LLVM
- ASCII table
- Regex replacer
- Mathematical expression evaluator (Calculator)
- Graphing calculator
- Hexadecimal Color picker with support for many different formats
- Base converter
- Byte swapper
- UNIX Permissions calculator
- Wikipedia term definition finder
- File utilities
- File splitter
- File combiner
- File shredder
- IEEE754 Float visualizer
- Division by invariant multiplication calculator
- TCP Client/Server
- Euclidean algorithm calculator
- HTTP Requests
</details>
<details>
<summary><strong>Built-in Content updater</strong></summary>
- Download all files found in the database directly from within ImHex
- Pattern files for decoding various file formats
- Libraries for the pattern language
- Magic files for file type detection
- Custom data processor nodes
- Custom encodings
- Custom themes
- Yara rules
</details>
<details>
<summary><strong>Modern Interface</strong></summary>
- Support for multiple workspaces
- Support for custom layouts
- Detachable windows
</details>
<details>
<summary><strong>Easy to get started</strong></summary>
- Support for many different languages
- Simplified mode for beginners
- Extensive documentation
- Many example files available on [the Database](https://github.com/WerWolv/ImHex-Patterns)
- Achievements guiding you through the features of ImHex
- Interactive tutorials
</details>
## Pattern Language
The Pattern Language is the completely custom programming language developed for ImHex.
It allows you to define structures and data types in a C-like syntax and then use them to parse and highlight a file's content.
- Source Code: [Link](https://github.com/WerWolv/PatternLanguage/)
- Documentation: [Link](https://docs.werwolv.net/pattern-language/)
## Database
For format patterns, libraries, magic and constant files, check out the [ImHex-Patterns](https://github.com/WerWolv/ImHex-Patterns) repository.
**Feel free to PR your own files there as well!**
## Requirements
To use ImHex, the following minimal system requirements need to be met.
> [!IMPORTANT]
> ImHex requires a GPU with OpenGL 3.0 support in general.
> There are releases available (with the `-NoGPU` suffix) that are software rendered and don't require a GPU, however these can be a lot slower than the GPU accelerated versions.
>
> If possible at all, make ImHex use the dedicated GPU on your system instead of the integrated one.
> ImHex will usually run fine with integrated GPUs as well but certain Intel HD GPU drivers on Windows are known to cause graphical artifacts.
- **OS**:
- **Windows**: Windows 7 or higher (Windows 10/11 recommended)
- **macOS**: macOS 15 (Sequoia) or higher,
- Lower versions should still work too, but you'll need to compile ImHex yourself. The release binaries will NOT work due to GitHub not having any macOS 15 or lower CI runners available.
- The macOS build is not signed and will require you to manually allow them in the Security & Privacy settings.
- **Linux**: "Modern" Linux. The following distributions have official releases available. Other distros are supported through the AppImage, Flatpak and Snap releases.
- Ubuntu and Debian
- Fedora
- RHEL/AlmaLinux
- Arch Linux
- Basically any other distro will work as well when compiling ImHex from sources.
- **FreeBSD**: Tested on FreeBSD 14.3
- Other versions will most likely work too but are untested
- **CPU**: Officially supported are x86, AMD64 and ARM64, though any Little Endian CPU should work.
- **GPU**: OpenGL 3.0 or higher
- Integrated Intel HD iGPUs are supported, however certain drivers are known to cause various graphical artifacts, especially on Windows. Use at your own risk.
- In case you don't have a GPU available, there are software rendered releases available for Windows and macOS
- **RAM**: ~50MiB, more is required for more complex analysis
- **Storage**: ~100MiB
## Installing
Information on how to install ImHex can be found in the [Install](/INSTALL.md) guide
## Compiling
To compile ImHex on any platform, GCC (or Clang) is required with a version that supports C++23 or higher.
Windows and Linux releases are being built using latest available GCC.
MacOS releases are being built using latest available LLVM Clang.
Important to note is, the MSVC and AppleClang compilers are both **NOT** supported since they're both generally severely outdated and lack features GCC and LLVM Clang have.
> [!NOTE]
> Many dependencies are bundled into the repository using submodules so make sure to clone it using the `--recurse-submodules` option.
> All dependencies that aren't bundled, can be installed using the dependency installer scripts found in the `/dist` folder.
For more information, check out the [Compiling](/dist/compiling) guide.
## Contributing
See [Contributing](/CONTRIBUTING.md)
## Plugin development
To develop plugins for ImHex, use the following template project to get started. You then have access to the entirety of libimhex as well as the ImHex API and the Content Registry to interact with ImHex or to add new content.
To build a plugin, you will need to use our SDK
### Getting the SDK locally
You can build the SDK by compiling ImHex like this:
- `cmake -G Ninja -DIMHEX_BUNDLE_PLUGIN_SDK=ON -B build`
- `cd build`
- `DESTDIR=install ninja install`
The SDK will then be available at `install/usr/local/share/imhex/sdk`. You will need to set the variable `IMHEX_SDK_PATH` to that (absolute) path.
### Getting the SDK in a Github Actions CI
You can use [this action](https://github.com/WerWolv/imhex-download-sdk) to automatically download the SDK to your Github Runner
- [ImHex Plugin Template](https://github.com/WerWolv/ImHex-Plugin-Template)
## Credits
### Contributors
- [AxCut](https://github.com/paxcut) for a gigantic amount of contributions to the Pattern Text Editor and tons of other parts of ImHex
- [iTrooz](https://github.com/iTrooz) for getting ImHex onto the Web as well as hundreds of contributions in every part of the project
- [jumanji144](https://github.com/jumanji144) for huge contributions to the Pattern Language and ImHex's infrastructure
- [Mary](https://github.com/marysaka) for her immense help porting ImHex to macOS and help during development
- [Roblabla](https://github.com/Roblabla) for adding MSI Installer support to ImHex
- [Mailaender](https://github.com/Mailaender) for getting ImHex onto Flathub
- Everybody else who has reported issues on Discord or GitHub that I had great conversations with :)
### Dependencies
- Thanks a lot to ocornut for their amazing [Dear ImGui](https://github.com/ocornut/imgui) which is used for building the entire interface
- Thanks to epezent for [ImPlot](https://github.com/epezent/implot) used to plot data in various places
- Thanks to Nelarius for [ImNodes](https://github.com/Nelarius/imnodes) used as base for the data processor
- Thanks to BalazsJako for [ImGuiColorTextEdit](https://github.com/BalazsJako/ImGuiColorTextEdit) used for the pattern language syntax highlighting
- Thanks to nlohmann for their [json](https://github.com/nlohmann/json) library used for configuration files
- Thanks to vitaut for their [libfmt](https://github.com/fmtlib/fmt) library which makes formatting and logging so much better
- Thanks to btzy for [nativefiledialog-extended](https://github.com/btzy/nativefiledialog-extended) and their great support, used for handling file dialogs on all platforms
- Thanks to danyspin97 for [xdgpp](https://sr.ht/~danyspin97/xdgpp) used to handle folder paths on Linux
- Thanks to aquynh for [capstone](https://github.com/aquynh/capstone) which is the base of the disassembly window
- Thanks to rxi for [microtar](https://github.com/rxi/microtar) used for extracting downloaded store assets
- Thanks to VirusTotal for [Yara](https://github.com/VirusTotal/yara) used by the Yara plugin
- Thanks to Martinsos for [edlib](https://github.com/Martinsos/edlib) used for sequence searching in the diffing view
- Thanks to ron4fun for [HashLibPlus](https://github.com/ron4fun/HashLibPlus) which implements every hashing algorithm under the sun
- Thanks to mackron for [miniaudio](https://github.com/mackron/miniaudio) used to play audio files
- Thanks to all other groups and organizations whose libraries are used in ImHex
### License
The biggest part of ImHex is under the GPLv2-only license.
Notable exceptions to this are the following parts which are under the LGPLv2.1 license:
- **/lib/libimhex**: The library that allows Plugins to interact with ImHex.
- **/plugins/ui**: The UI plugin library that contains some common UI elements that can be used by other plugins
The reason for this is to allow for proprietary plugins to be developed for ImHex.
### Code Signing Policy
Free code signing provided by [SignPath.io](https://about.signpath.io/),
certificate by [SignPath Foundation](https://signpath.org/).
This program will not transfer any information to other networked systems
unless specifically requested by the user or the person installing or
operating it.
#### People with direct push access
- [WerWolv](https://github.com/WerWolv)
- [iTrooz](https://github.com/iTrooz)
- [jumanji144](https://github.com/jumanji144)
- [AxCut](https://github.com/paxcut)
================================================
FILE: SECURITY.md
================================================
# Security Policy
## Supported Versions
Supported is generally only the latest version that can be downloaded from the Release tab. If you have issues, you might get instructed to use the Nightly release version instead.
If you built ImHex yourself and experience issues that are not present in the version built by GitHub, you're on your own.
## Reporting a Vulnerability
Any critical vulnerabilities can be reported through Discord (@werwolv).
================================================
FILE: VERSION
================================================
1.39.0.WIP
================================================
FILE: changelog.md
================================================
================================================
FILE: cmake/build_helpers.cmake
================================================
# Some libraries we use set the BUILD_SHARED_LIBS variable to ON, which causes CMake to
# display a warning about options being set using set() instead of option().
# Explicitly set the policy to NEW to suppress the warning.
set(CMAKE_POLICY_DEFAULT_CMP0077 NEW)
set(CMAKE_POLICY_DEFAULT_CMP0063 NEW)
set(CMAKE_POLICY_DEFAULT_CMP0141 NEW)
if (POLICY CMP0177)
set(CMAKE_POLICY_DEFAULT_CMP0177 OLD)
cmake_policy(SET CMP0177 OLD)
endif()
function(getTarget target type)
get_target_property(IMPORTED_TARGET ${target} IMPORTED)
if (IMPORTED_TARGET)
set(${type} INTERFACE PARENT_SCOPE)
else()
set(${type} PRIVATE PARENT_SCOPE)
endif()
endfunction()
function(addCFlag)
if (ARGC EQUAL 1)
add_compile_options($<$<COMPILE_LANGUAGE:C>:${ARGV0}>)
elseif (ARGC EQUAL 2)
getTarget(${ARGV1} TYPE)
target_compile_options(${ARGV1} ${TYPE} $<$<COMPILE_LANGUAGE:C>:${ARGV0}>)
endif()
endfunction()
function(addCXXFlag)
if (ARGC EQUAL 1)
add_compile_options($<$<COMPILE_LANGUAGE:CXX>:${ARGV0}>)
elseif (ARGC EQUAL 2)
getTarget(${ARGV1} TYPE)
target_compile_options(${ARGV1} ${TYPE} $<$<COMPILE_LANGUAGE:CXX>:${ARGV0}>)
endif()
endfunction()
function(addObjCFlag)
if (ARGC EQUAL 1)
add_compile_options($<$<COMPILE_LANGUAGE:OBJC>:${ARGV0}>)
elseif (ARGC EQUAL 2)
getTarget(${ARGV1} TYPE)
target_compile_options(${ARGV1} ${TYPE} $<$<COMPILE_LANGUAGE:OBJC>:${ARGV0}>)
endif()
endfunction()
function(addLinkerFlag)
if (ARGC EQUAL 1)
add_link_options(${ARGV0})
elseif (ARGC EQUAL 2)
getTarget(${ARGV1} TYPE)
target_link_options(${ARGV1} ${TYPE} ${ARGV0})
endif()
endfunction()
function(addCCXXFlag)
addCFlag(${ARGV0} ${ARGV1})
addCXXFlag(${ARGV0} ${ARGV1})
endfunction()
function(addCommonFlag)
addCFlag(${ARGV0} ${ARGV1})
addCXXFlag(${ARGV0} ${ARGV1})
addObjCFlag(${ARGV0} ${ARGV1})
endfunction()
function(addCppCheck target)
if (NOT IMHEX_ENABLE_CPPCHECK)
return()
endif()
find_program(cppcheck_exe NAMES cppcheck REQUIRED)
if (NOT cppcheck_exe)
return()
endif()
set(target_build_dir $<TARGET_FILE_DIR:${target}>)
set(cppcheck_opts
--enable=all
--inline-suppr
--quiet
--std=c++23
--check-level=exhaustive
--error-exitcode=10
--suppressions-list=${CMAKE_SOURCE_DIR}/dist/cppcheck.supp
--checkers-report=${target_build_dir}/cppcheck-report.txt
)
set_target_properties(${target} PROPERTIES
CXX_CPPCHECK "${cppcheck_exe};${cppcheck_opts}"
)
endfunction()
set(CMAKE_WARN_DEPRECATED OFF CACHE BOOL "Disable deprecated warnings" FORCE)
include(FetchContent)
if(IMHEX_STRIP_RELEASE)
if(CMAKE_BUILD_TYPE STREQUAL "Release")
set(CPACK_STRIP_FILES TRUE)
endif()
if(CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang")
add_link_options($<$<CONFIG:RELEASE>:-s>)
endif()
endif()
macro(addDefines)
if (NOT IMHEX_VERSION)
message(FATAL_ERROR "IMHEX_VERSION is not defined")
endif ()
set(CMAKE_RC_FLAGS "${CMAKE_RC_FLAGS} -DPROJECT_VERSION_MAJOR=${PROJECT_VERSION_MAJOR} -DPROJECT_VERSION_MINOR=${PROJECT_VERSION_MINOR} -DPROJECT_VERSION_PATCH=${PROJECT_VERSION_PATCH} ")
set(IMHEX_VERSION_STRING ${IMHEX_VERSION})
if (CMAKE_BUILD_TYPE STREQUAL "Release")
set(IMHEX_VERSION_STRING ${IMHEX_VERSION_STRING})
add_compile_definitions(NDEBUG)
elseif (CMAKE_BUILD_TYPE STREQUAL "Debug")
set(IMHEX_VERSION_STRING ${IMHEX_VERSION_STRING}-Debug)
add_compile_definitions(DEBUG)
elseif (CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo")
set(IMHEX_VERSION_STRING ${IMHEX_VERSION_STRING})
add_compile_definitions(NDEBUG)
elseif (CMAKE_BUILD_TYPE STREQUAL "MinSizeRel")
set(IMHEX_VERSION_STRING ${IMHEX_VERSION_STRING}-MinSizeRel)
add_compile_definitions(NDEBUG)
endif ()
if (IMHEX_ENABLE_STD_ASSERTS)
add_compile_definitions(_GLIBCXX_DEBUG _GLIBCXX_VERBOSE)
endif()
if (IMHEX_STATIC_LINK_PLUGINS)
add_compile_definitions(IMHEX_STATIC_LINK_PLUGINS)
endif ()
endmacro()
function(addDefineToSource SOURCE DEFINE)
set_property(
SOURCE ${SOURCE}
APPEND
PROPERTY COMPILE_DEFINITIONS "${DEFINE}"
)
# Disable precompiled headers for this file
set_source_files_properties(${SOURCE} PROPERTIES SKIP_PRECOMPILE_HEADERS ON)
endfunction()
# Detect current OS / System
macro(detectOS)
if (WIN32)
add_compile_definitions(OS_WINDOWS)
set(CMAKE_INSTALL_BINDIR ".")
set(CMAKE_INSTALL_LIBDIR ".")
set(PLUGINS_INSTALL_LOCATION "plugins")
add_compile_definitions(WIN32_LEAN_AND_MEAN)
add_compile_definitions(NOMINMAX)
add_compile_definitions(UNICODE)
add_compile_definitions(_CRT_SECURE_NO_WARNINGS)
elseif (APPLE)
add_compile_definitions(OS_MACOS)
set(CMAKE_INSTALL_BINDIR ".")
set(CMAKE_INSTALL_LIBDIR ".")
set(PLUGINS_INSTALL_LOCATION "plugins")
enable_language(OBJC)
enable_language(OBJCXX)
elseif (EMSCRIPTEN)
add_compile_definitions(OS_WEB)
elseif (UNIX AND NOT APPLE)
add_compile_definitions(OS_LINUX)
if (BSD AND BSD STREQUAL "FreeBSD")
add_compile_definitions(OS_FREEBSD)
endif()
include(GNUInstallDirs)
set(PLUGINS_INSTALL_LOCATION "${CMAKE_INSTALL_LIBDIR}/imhex/plugins")
# Add System plugin location for plugins to be loaded from
# IMPORTANT: This does not work for Sandboxed or portable builds such as the Flatpak or AppImage release
add_compile_definitions(SYSTEM_PLUGINS_LOCATION="${CMAKE_INSTALL_FULL_LIBDIR}/imhex")
else ()
message(FATAL_ERROR "Unknown / unsupported system!")
endif()
endmacro()
macro(configurePackingResources)
set(LIBRARY_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)
if (WIN32)
if (NOT (CMAKE_BUILD_TYPE STREQUAL "Debug"))
set(APPLICATION_TYPE WIN32)
endif ()
set(IMHEX_ICON "${IMHEX_BASE_FOLDER}/resources/resource.rc")
if (IMHEX_GENERATE_PACKAGE)
set(CPACK_GENERATOR "WIX")
set(CPACK_PACKAGE_NAME "ImHex")
set(CPACK_PACKAGE_VENDOR "WerWolv")
set(CPACK_WIX_VERSION 4)
set(CPACK_WIX_PRODUCT_GUID "*")
set(CPACK_WIX_UPGRADE_GUID "05000E99-9659-42FD-A1CF-05C554B39285")
set(CPACK_WIX_PRODUCT_ICON "${PROJECT_SOURCE_DIR}/resources/dist/windows/icon.ico")
set(CPACK_WIX_UI_BANNER "${PROJECT_SOURCE_DIR}/resources/dist/windows/wix_banner.png")
set(CPACK_WIX_UI_DIALOG "${PROJECT_SOURCE_DIR}/resources/dist/windows/wix_dialog.png")
set(CPACK_WIX_CULTURES "en-US;de-DE;ja-JP;it-IT;pt-BR;zh-CN;zh-TW;ru-RU")
set(CPACK_WIX_TEMPLATE "${PROJECT_SOURCE_DIR}/resources/dist/windows/WIX.template.in")
set(CPACK_WIX_EXTENSIONS "WixToolset.UI.wixext")
file(GLOB_RECURSE CPACK_WIX_EXTRA_SOURCES "${PROJECT_SOURCE_DIR}/resources/dist/windows/wix/*.wxs")
set(CPACK_PACKAGE_INSTALL_DIRECTORY "ImHex")
set_property(INSTALL "$<TARGET_FILE_NAME:main>"
PROPERTY CPACK_START_MENU_SHORTCUTS "ImHex"
)
set(CPACK_RESOURCE_FILE_LICENSE "${PROJECT_SOURCE_DIR}/resources/dist/windows/LICENSE.rtf")
endif()
elseif (APPLE OR ${CMAKE_HOST_SYSTEM_NAME} MATCHES "Darwin")
set(IMHEX_ICON "${IMHEX_BASE_FOLDER}/resources/dist/macos/AppIcon.icns")
set(BUNDLE_NAME "ImHex.app")
if (IMHEX_MACOS_CREATE_BUNDLE)
set(APPLICATION_TYPE MACOSX_BUNDLE)
set_source_files_properties(${IMHEX_ICON} PROPERTIES MACOSX_PACKAGE_LOCATION "Resources")
set(MACOSX_BUNDLE_ICON_FILE "AppIcon.icns")
set(MACOSX_BUNDLE_INFO_STRING "WerWolv")
set(MACOSX_BUNDLE_BUNDLE_NAME "ImHex")
set(MACOSX_BUNDLE_INFO_PLIST "${CMAKE_CURRENT_SOURCE_DIR}/resources/dist/macos/Info.plist.in")
set(MACOSX_BUNDLE_BUNDLE_VERSION "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}")
set(MACOSX_BUNDLE_GUI_IDENTIFIER "net.WerWolv.ImHex")
string(SUBSTRING "${IMHEX_COMMIT_HASH_LONG}" 0 7 COMMIT_HASH_SHORT)
set(MACOSX_BUNDLE_LONG_VERSION_STRING "${PROJECT_VERSION}-${COMMIT_HASH_SHORT}")
set(MACOSX_BUNDLE_SHORT_VERSION_STRING "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}")
string(TIMESTAMP CURR_YEAR "%Y")
set(MACOSX_BUNDLE_COPYRIGHT "Copyright © 2020 - ${CURR_YEAR} WerWolv. All rights reserved." )
if ("${CMAKE_GENERATOR}" STREQUAL "Xcode")
set(IMHEX_BUNDLE_PATH "${CMAKE_BINARY_DIR}/${CMAKE_BUILD_TYPE}/${BUNDLE_NAME}")
else ()
set(IMHEX_BUNDLE_PATH "${CMAKE_BINARY_DIR}/${BUNDLE_NAME}")
endif()
set(PLUGINS_INSTALL_LOCATION "${IMHEX_BUNDLE_PATH}/Contents/MacOS/plugins")
set(CMAKE_INSTALL_LIBDIR "${IMHEX_BUNDLE_PATH}/Contents/Frameworks")
endif()
endif()
endmacro()
macro(addPluginDirectories)
file(MAKE_DIRECTORY "plugins")
foreach (plugin IN LISTS PLUGINS)
add_subdirectory("plugins/${plugin}")
if (TARGET ${plugin})
set_target_properties(${plugin} PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${IMHEX_MAIN_OUTPUT_DIRECTORY}/plugins")
set_target_properties(${plugin} PROPERTIES LIBRARY_OUTPUT_DIRECTORY "${IMHEX_MAIN_OUTPUT_DIRECTORY}/plugins")
if (APPLE)
if (IMHEX_MACOS_CREATE_BUNDLE)
set_target_properties(${plugin} PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${PLUGINS_INSTALL_LOCATION})
endif ()
else ()
if (WIN32)
get_target_property(target_type ${plugin} TYPE)
if (target_type STREQUAL "SHARED_LIBRARY")
install(TARGETS ${plugin} RUNTIME DESTINATION ${PLUGINS_INSTALL_LOCATION})
else ()
install(TARGETS ${plugin} LIBRARY DESTINATION ${PLUGINS_INSTALL_LOCATION})
endif()
else()
install(TARGETS ${plugin} LIBRARY DESTINATION ${PLUGINS_INSTALL_LOCATION})
endif()
endif()
add_dependencies(imhex_all ${plugin})
endif ()
endforeach()
endmacro()
macro(createPackage)
if (WIN32)
# Install binaries directly in the prefix, usually C:\Program Files\ImHex.
set(CMAKE_INSTALL_BINDIR ".")
set(PLUGIN_TARGET_FILES "")
foreach (plugin IN LISTS PLUGINS)
list(APPEND PLUGIN_TARGET_FILES "$<TARGET_FILE:${plugin}>")
endforeach ()
if (DEFINED VCPKG_TARGET_TRIPLET)
set(VCPKG_DEPS_FOLDER "")
if (CMAKE_BUILD_TYPE STREQUAL "Debug")
set(VCPKG_DEPS_FOLDER "${CMAKE_BINARY_DIR}/vcpkg_installed/${VCPKG_TARGET_TRIPLET}/debug/bin")
else()
set(VCPKG_DEPS_FOLDER "${CMAKE_BINARY_DIR}/vcpkg_installed/${VCPKG_TARGET_TRIPLET}/bin")
endif()
install(CODE "set(VCPKG_DEPS_FOLDER \"${VCPKG_DEPS_FOLDER}\")")
endif()
# Grab all dynamically linked dependencies.
install(CODE "set(CMAKE_INSTALL_BINDIR \"${CMAKE_INSTALL_BINDIR}\")")
install(CODE "set(PLUGIN_TARGET_FILES \"${PLUGIN_TARGET_FILES}\")")
install(CODE [[
file(GET_RUNTIME_DEPENDENCIES
EXECUTABLES ${PLUGIN_TARGET_FILES} $<TARGET_FILE:libimhex> $<TARGET_FILE:main>
RESOLVED_DEPENDENCIES_VAR _r_deps
UNRESOLVED_DEPENDENCIES_VAR _u_deps
CONFLICTING_DEPENDENCIES_PREFIX _c_deps
DIRECTORIES ${DEP_FOLDERS} $ENV{PATH}
POST_EXCLUDE_REGEXES ".*system32/.*\\.dll"
)
if(_c_deps_FILENAMES AND _c_deps AND NOT (_c_deps STREQUAL ""))
message(WARNING "Conflicting dependencies for library: \"${_c_deps}\"!")
endif()
if (DEFINED VCPKG_DEPS_FOLDER)
file(GLOB VCPKG_DEPS "${VCPKG_DEPS_FOLDER}/*.dll")
list(APPEND _r_deps ${VCPKG_DEPS})
endif()
foreach(_file ${_r_deps})
file(INSTALL
DESTINATION "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_BINDIR}"
TYPE SHARED_LIBRARY
FOLLOW_SYMLINK_CHAIN
FILES "${_file}"
)
endforeach()
]])
downloadImHexPatternsFiles(".")
elseif(UNIX AND NOT APPLE)
set_target_properties(libimhex PROPERTIES SOVERSION ${IMHEX_VERSION})
configure_file(${IMHEX_BASE_FOLDER}/dist/DEBIAN/control.in ${CMAKE_BINARY_DIR}/DEBIAN/control)
install(FILES ${IMHEX_BASE_FOLDER}/LICENSE DESTINATION ${CMAKE_INSTALL_PREFIX}/share/licenses/imhex)
install(FILES ${IMHEX_BASE_FOLDER}/dist/imhex.desktop DESTINATION ${CMAKE_INSTALL_PREFIX}/share/applications)
install(FILES ${IMHEX_BASE_FOLDER}/dist/imhex.mime.xml DESTINATION ${CMAKE_INSTALL_PREFIX}/share/mime/packages RENAME imhex.xml)
install(FILES ${IMHEX_BASE_FOLDER}/resources/icon.svg DESTINATION ${CMAKE_INSTALL_PREFIX}/share/pixmaps RENAME imhex.svg)
downloadImHexPatternsFiles("./share/imhex")
# install AppStream file
install(FILES ${IMHEX_BASE_FOLDER}/dist/net.werwolv.ImHex.metainfo.xml DESTINATION ${CMAKE_INSTALL_PREFIX}/share/metainfo)
endif()
if (APPLE)
if (IMHEX_MACOS_CREATE_BUNDLE)
set(EXTRA_BUNDLE_LIBRARY_PATHS ${EXTRA_BUNDLE_LIBRARY_PATHS} "${IMHEX_SYSTEM_LIBRARY_PATH}")
include(PostprocessBundle)
set_target_properties(libimhex PROPERTIES SOVERSION ${IMHEX_VERSION})
set_property(TARGET main PROPERTY MACOSX_BUNDLE_INFO_PLIST ${MACOSX_BUNDLE_INFO_PLIST})
set_property(TARGET main PROPERTY MACOSX_BUNDLE_BUNDLE_NAME "${MACOSX_BUNDLE_BUNDLE_NAME}")
# Fix rpath
install(CODE "execute_process(COMMAND ${CMAKE_INSTALL_NAME_TOOL} -add_rpath \"@executable_path/../Frameworks/\" $<TARGET_FILE:main>)")
install(CODE "execute_process(COMMAND ${CMAKE_INSTALL_NAME_TOOL} -add_rpath \"@executable_path/../Frameworks/\" $<TARGET_FILE:updater>)")
downloadImHexPatternsFiles("${CMAKE_INSTALL_PREFIX}/${BUNDLE_NAME}/Contents/MacOS")
install(TARGETS main BUNDLE DESTINATION ".")
install(TARGETS updater DESTINATION "${CMAKE_INSTALL_PREFIX}/${BUNDLE_NAME}/Contents/MacOS")
install(
FILES ${IMHEX_BASE_FOLDER}/dist/cli/imhex.sh
DESTINATION "${CMAKE_INSTALL_PREFIX}/${BUNDLE_NAME}/Contents/MacOS/cli"
RENAME imhex
PERMISSIONS
OWNER_READ OWNER_WRITE OWNER_EXECUTE
GROUP_READ GROUP_EXECUTE
WORLD_READ WORLD_EXECUTE
)
# Update library references to make the bundle portable
postprocess_bundle(imhex_all main)
# Enforce DragNDrop packaging.
set(CPACK_GENERATOR "DragNDrop")
set(CPACK_BUNDLE_ICON "${CMAKE_SOURCE_DIR}/resources/dist/macos/AppIcon.icns")
set(CPACK_BUNDLE_PLIST "${CMAKE_INSTALL_PREFIX}/${BUNDLE_NAME}/Contents/Info.plist")
if (IMHEX_RESIGN_BUNDLE)
find_program(CODESIGN_PATH codesign)
if (CODESIGN_PATH)
install(CODE "message(STATUS \"Signing bundle '${CMAKE_INSTALL_PREFIX}/${BUNDLE_NAME}'...\")")
install(CODE "execute_process(COMMAND ${CODESIGN_PATH} --force --deep --entitlements ${CMAKE_SOURCE_DIR}/resources/macos/Entitlements.plist --sign - ${CMAKE_INSTALL_PREFIX}/${BUNDLE_NAME} COMMAND_ERROR_IS_FATAL ANY)")
endif()
endif()
install(CODE [[ message(STATUS "MacOS Bundle finalized. DO NOT TOUCH IT ANYMORE! ANY MODIFICATIONS WILL BREAK IT FROM NOW ON!") ]])
else()
downloadImHexPatternsFiles("${IMHEX_MAIN_OUTPUT_DIRECTORY}")
endif()
else()
install(TARGETS main RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
if (TARGET updater)
install(TARGETS updater RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
endif()
if (TARGET main-forwarder)
install(TARGETS main-forwarder BUNDLE DESTINATION ${CMAKE_INSTALL_BINDIR})
endif()
if (WIN32)
install(
FILES ${IMHEX_BASE_FOLDER}/dist/cli/imhex.bat
DESTINATION ${CMAKE_INSTALL_BINDIR}/cli
RENAME imhex.bat
PERMISSIONS
OWNER_READ OWNER_WRITE OWNER_EXECUTE
GROUP_READ GROUP_EXECUTE
WORLD_READ WORLD_EXECUTE
)
else()
install(
FILES ${IMHEX_BASE_FOLDER}/dist/cli/imhex.sh
DESTINATION ${CMAKE_INSTALL_PREFIX}/share/imhex
RENAME imhex
PERMISSIONS
OWNER_READ OWNER_WRITE OWNER_EXECUTE
GROUP_READ GROUP_EXECUTE
WORLD_READ WORLD_EXECUTE
)
endif()
endif()
if (IMHEX_MACOS_CREATE_BUNDLE)
set(CPACK_BUNDLE_NAME "ImHex")
include(CPack)
endif()
endmacro()
function(JOIN OUTPUT GLUE)
set(_TMP_RESULT "")
set(_GLUE "") # effective glue is empty at the beginning
foreach(arg ${ARGN})
set(_TMP_RESULT "${_TMP_RESULT}${_GLUE}${arg}")
set(_GLUE "${GLUE}")
endforeach()
set(${OUTPUT} "${_TMP_RESULT}" PARENT_SCOPE)
endfunction()
macro(configureCMake)
message(STATUS "Configuring ImHex v${IMHEX_VERSION}")
if (DEFINED CMAKE_TOOLCHAIN_FILE)
message(STATUS "Using toolchain file: \"${CMAKE_TOOLCHAIN_FILE}\"")
endif()
set(CMAKE_POSITION_INDEPENDENT_CODE ON CACHE BOOL "Enable position independent code for all targets" FORCE)
set(CMAKE_MSVC_DEBUG_INFORMATION_FORMAT "$<$<CONFIG:Debug,RelWithDebInfo>:Embedded>")
# Configure use of recommended build tools
if (IMHEX_USE_DEFAULT_BUILD_SETTINGS)
message(STATUS "Configuring CMake to use recommended build tools...")
find_program(CCACHE_PATH ccache)
find_program(NINJA_PATH ninja)
find_program(LD_LLD_PATH ld.lld)
find_program(AR_LLVMLIBS_PATH llvm-ar)
find_program(RANLIB_LLVMLIBS_PATH llvm-ranlib)
if (CCACHE_PATH)
set(CMAKE_C_COMPILER_LAUNCHER ${CCACHE_PATH})
set(CMAKE_CXX_COMPILER_LAUNCHER ${CCACHE_PATH})
else ()
message(WARNING "ccache not found!")
endif ()
if (AR_LLVMLIBS_PATH)
set(CMAKE_AR ${AR_LLVMLIBS_PATH})
else ()
message(WARNING "llvm-ar not found, using default ar!")
endif ()
if (RANLIB_LLVMLIBS_PATH)
set(CMAKE_RANLIB ${RANLIB_LLVMLIBS_PATH})
else ()
message(WARNING "llvm-ranlib not found, using default ranlib!")
endif ()
if (LD_LLD_PATH)
set(CMAKE_LINKER ${LD_LLD_PATH})
if (NOT XCODE AND NOT MSVC)
add_link_options("-fuse-ld=lld")
add_link_options("-fuse-ld=lld")
endif()
else ()
message(WARNING "lld not found, using default linker!")
endif ()
if (NINJA_PATH)
set(CMAKE_GENERATOR Ninja)
else ()
message(WARNING "ninja not found, using default generator!")
endif ()
endif()
endmacro()
function(configureProject)
# Enable C and C++ languages
enable_language(C CXX)
if (XCODE)
# Support Xcode's multi configuration paradigm by placing built artifacts into separate directories
set(IMHEX_MAIN_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/Configs/$<CONFIG>" PARENT_SCOPE)
else()
set(IMHEX_MAIN_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}" PARENT_SCOPE)
endif()
# Enable LTO if desired and supported
if (IMHEX_ENABLE_LTO)
include(CheckIPOSupported)
check_ipo_supported(RESULT result OUTPUT output_error)
if (result OR WIN32)
set(CMAKE_INTERPROCEDURAL_OPTIMIZATION $<$<CONFIG:Release,RelWithDebInfo,MinSizeRel>:ON>)
message(STATUS "LTO enabled!")
else ()
message(WARNING "LTO is not supported: ${output_error}")
endif ()
endif ()
endfunction()
macro(setDefaultBuiltTypeIfUnset)
if (NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
set(CMAKE_BUILD_TYPE "RelWithDebInfo" CACHE STRING "Using RelWithDebInfo build type as it was left unset" FORCE)
set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "RelWithDebInfo")
endif()
endmacro()
function(loadVersion version plain_version)
set(VERSION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/VERSION")
set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS ${VERSION_FILE})
file(READ "${VERSION_FILE}" read_version)
string(STRIP ${read_version} read_version)
string(REPLACE ".WIP" "" read_version_plain ${read_version})
set(${version} ${read_version} PARENT_SCOPE)
set(${plain_version} ${read_version_plain} PARENT_SCOPE)
if (read_version MATCHES ".+\.WIP")
set(IMHEX_PATTERNS_PULL_MASTER ON PARENT_SCOPE)
endif()
endfunction()
function(detectBadClone)
if (IMHEX_IGNORE_BAD_CLONE)
return()
endif()
file (GLOB EXTERNAL_DIRS "lib/external/*" "lib/third_party/*")
foreach (EXTERNAL_DIR ${EXTERNAL_DIRS})
if(NOT IS_DIRECTORY "${EXTERNAL_DIR}")
continue()
endif()
file(GLOB_RECURSE RESULT "${EXTERNAL_DIR}/*")
list(LENGTH RESULT ENTRY_COUNT)
if(ENTRY_COUNT LESS_EQUAL 1)
message(FATAL_ERROR "External dependency ${EXTERNAL_DIR} is empty!\nMake sure to correctly clone ImHex using the --recurse-submodules git option or initialize the submodules manually.")
endif()
endforeach ()
endfunction()
function(verifyCompiler)
if (IMHEX_IGNORE_BAD_COMPILER)
return()
endif()
if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU" AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS "12.0.0")
message(FATAL_ERROR "ImHex requires GCC 12.0.0 or newer. Please use the latest GCC version.")
elseif (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS "17.0.0")
message(FATAL_ERROR "ImHex requires Clang 17.0.0 or newer. Please use the latest Clang version.")
elseif(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
elseif (NOT (CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang"))
message(FATAL_ERROR "ImHex can only be compiled with GCC or Clang. ${CMAKE_CXX_COMPILER_ID} is not supported.")
endif()
endfunction()
macro(detectBundledPlugins)
file(GLOB PLUGINS_DIRS "plugins/*")
if (IMHEX_INCLUDE_PLUGINS)
set(PLUGINS ${IMHEX_INCLUDE_PLUGINS})
else()
foreach(PLUGIN_DIR ${PLUGINS_DIRS})
if (EXISTS "${PLUGIN_DIR}/CMakeLists.txt")
get_filename_component(PLUGIN_NAME ${PLUGIN_DIR} NAME)
if (NOT (${PLUGIN_NAME} IN_LIST IMHEX_EXCLUDE_PLUGINS))
list(APPEND PLUGINS ${PLUGIN_NAME})
endif ()
endif()
endforeach()
endif()
foreach(PLUGIN_NAME ${PLUGINS})
message(STATUS "Enabled bundled plugin '${PLUGIN_NAME}'")
endforeach()
if (NOT PLUGINS)
message(FATAL_ERROR "No bundled plugins enabled")
endif()
set(REQUIRED_PLUGINS builtin fonts ui)
foreach(PLUGIN ${REQUIRED_PLUGINS})
list(FIND PLUGINS ${PLUGIN} PLUGIN_INDEX)
if (PLUGIN_INDEX EQUAL -1)
message(FATAL_ERROR "Required plugin '${PLUGIN}' is not enabled!")
endif()
endforeach()
endmacro()
macro(setVariableInParent variable value)
get_directory_property(hasParent PARENT_DIRECTORY)
if (hasParent)
set(${variable} "${value}" PARENT_SCOPE)
else ()
set(${variable} "${value}")
endif ()
endmacro()
function(downloadImHexPatternsFiles dest)
if (NOT IMHEX_OFFLINE_BUILD)
if (IMHEX_PATTERNS_PULL_MASTER)
set(PATTERNS_BRANCH master)
else ()
set(PATTERNS_BRANCH ImHex-v${IMHEX_VERSION})
endif ()
set(imhex_patterns_SOURCE_DIR "${CMAKE_CURRENT_BINARY_DIR}/ImHex-Patterns")
install(CODE "set(PATTERNS_BRANCH \"${PATTERNS_BRANCH}\")")
install(CODE "set(imhex_patterns_SOURCE_DIR \"${imhex_patterns_SOURCE_DIR}\")")
install(CODE [[
message(STATUS "Downloading ImHex patterns from branch '${PATTERNS_BRANCH}'...")
if (NOT EXISTS "${imhex_patterns_SOURCE_DIR}")
file(MAKE_DIRECTORY "${imhex_patterns_SOURCE_DIR}")
execute_process(
COMMAND
git clone --recurse-submodules --branch ${PATTERNS_BRANCH} https://github.com/WerWolv/ImHex-Patterns.git "${imhex_patterns_SOURCE_DIR}"
COMMAND_ERROR_IS_FATAL ANY
)
endif()
]])
else ()
set(imhex_patterns_SOURCE_DIR "")
# Maybe patterns are cloned to a subdirectory
if (NOT EXISTS ${imhex_patterns_SOURCE_DIR})
set(imhex_patterns_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/ImHex-Patterns")
endif()
# Or a sibling directory
if (NOT EXISTS ${imhex_patterns_SOURCE_DIR})
set(imhex_patterns_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../ImHex-Patterns")
endif()
endif ()
install(CODE "set(imhex_patterns_SOURCE_DIR \"${imhex_patterns_SOURCE_DIR}\")")
if(XCODE)
install(CODE [[
# The Xcode build has multiple configurations, which each need a copy of these files
file(GLOB_RECURSE sourceFilePaths LIST_DIRECTORIES NO CONFIGURE_DEPENDS RELATIVE "${imhex_patterns_SOURCE_DIR}"
"${imhex_patterns_SOURCE_DIR}/constants/*"
"${imhex_patterns_SOURCE_DIR}/encodings/*"
"${imhex_patterns_SOURCE_DIR}/includes/*"
"${imhex_patterns_SOURCE_DIR}/patterns/*"
"${imhex_patterns_SOURCE_DIR}/magic/*"
"${imhex_patterns_SOURCE_DIR}/nodes/*"
)
list(FILTER sourceFilePaths EXCLUDE REGEX "_schema.json$")
foreach(relativePath IN LISTS sourceFilePaths)
file(GENERATE OUTPUT "${dest}/${relativePath}" INPUT "${imhex_patterns_SOURCE_DIR}/${relativePath}")
endforeach()
]])
else()
if (NOT (imhex_patterns_SOURCE_DIR STREQUAL ""))
set(PATTERNS_FOLDERS_TO_INSTALL constants encodings includes patterns magic nodes)
foreach (FOLDER ${PATTERNS_FOLDERS_TO_INSTALL})
install(DIRECTORY "${imhex_patterns_SOURCE_DIR}/${FOLDER}" DESTINATION "${dest}" PATTERN "**/_schema.json" EXCLUDE)
endforeach ()
endif()
endif ()
endfunction()
# Compress debug info. See https://github.com/WerWolv/ImHex/issues/1714 for relevant problem
macro(setupDebugCompressionFlag)
include(CheckCXXCompilerFlag)
include(CheckLinkerFlag)
check_cxx_compiler_flag(-gz=zstd ZSTD_AVAILABLE_COMPILER)
check_linker_flag(CXX -gz=zstd ZSTD_AVAILABLE_LINKER)
check_cxx_compiler_flag(-gz COMPRESS_AVAILABLE_COMPILER)
check_linker_flag(CXX -gz COMPRESS_AVAILABLE_LINKER)
if (NOT DEBUG_COMPRESSION_FLAG) # Cache variable
if (ZSTD_AVAILABLE_COMPILER AND ZSTD_AVAILABLE_LINKER)
message("Using Zstd compression for debug info because both compiler and linker support it")
set(DEBUG_COMPRESSION_FLAG "-gz=zstd" CACHE STRING "Cache to use for debug info compression")
elseif (COMPRESS_AVAILABLE_COMPILER AND COMPRESS_AVAILABLE_LINKER)
message("Using default compression for debug info because both compiler and linker support it")
set(DEBUG_COMPRESSION_FLAG "-gz" CACHE STRING "Cache to use for debug info compression")
else()
set(DEBUG_COMPRESSION_FLAG "" CACHE STRING "Cache to use for debug info compression")
endif()
endif()
addCommonFlag(${DEBUG_COMPRESSION_FLAG})
endmacro()
macro(setupCompilerFlags target)
if (CMAKE_CXX_COMPILER_ID MATCHES "MSVC")
addCommonFlag("/W4" ${target})
addCommonFlag("/wd4127" ${target}) # conditional expression is constant
addCommonFlag("/wd4242" ${target}) # 'identifier': conversion from 'type1' to 'type2', possible loss of data
addCommonFlag("/wd4244" ${target}) # 'conversion': conversion from 'type1' to 'type2', possible loss of data
addCommonFlag("/wd4267" ${target}) # 'var': conversion from 'size_t' to 'type', possible loss of data
addCommonFlag("/wd4305" ${target}) # truncation from 'double' to 'float'
addCommonFlag("/wd4996" ${target}) # 'function': was declared deprecated
addCommonFlag("/wd5244" ${target}) # 'include' in the purview of module 'module' appears erroneous
if (IMHEX_STRICT_WARNINGS)
addCommonFlag("/WX" ${target})
endif()
elseif (CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang")
addCommonFlag("-Wall" ${target})
addCommonFlag("-Wextra" ${target})
addCommonFlag("-Wpedantic" ${target})
# Define strict compilation flags
if (IMHEX_STRICT_WARNINGS)
addCommonFlag("-Werror" ${target})
endif()
if (UNIX AND NOT APPLE AND CMAKE_CXX_COMPILER_ID MATCHES "GNU")
addCommonFlag("-rdynamic" ${target})
endif()
addCXXFlag("-fexceptions" ${target})
addCXXFlag("-frtti" ${target})
addCommonFlag("-fno-omit-frame-pointer" ${target})
# Disable some warnings
addCCXXFlag("-Wno-array-bounds" ${target})
addCCXXFlag("-Wno-deprecated-declarations" ${target})
addCCXXFlag("-Wno-unknown-pragmas" ${target})
addCXXFlag("-Wno-include-angled-in-module-purview" ${target})
# Enable hardening flags
if (IMHEX_BUILD_HARDENING)
if (NOT CMAKE_BUILD_TYPE STREQUAL "Debug")
addCommonFlag("-U_FORTIFY_SOURCE" ${target})
addCommonFlag("-D_FORTIFY_SOURCE=3" ${target})
if (NOT EMSCRIPTEN)
addCommonFlag("-fstack-protector-strong" ${target})
endif()
endif()
endif()
endif()
if (CMAKE_CXX_COMPILER_ID MATCHES "GNU")
if (WIN32)
addLinkerFlag("-Wa,mbig-obj" ${target})
endif ()
endif()
if (CMAKE_CXX_COMPILER_ID MATCHES "Clang" AND APPLE)
addCCXXFlag("-Wno-unknown-warning-option" ${target})
# On macOS, when using clang from Homebrew, properly setup the libc++ library path so
# it's using the one from Homebrew instead of the system one.
execute_process(COMMAND brew --prefix llvm OUTPUT_VARIABLE LLVM_PREFIX OUTPUT_STRIP_TRAILING_WHITESPACE)
if (NOT LLVM_PREFIX STREQUAL "" AND ${CMAKE_CXX_COMPILER} STREQUAL "${LLVM_PREFIX}/bin/clang++")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -L${LLVM_PREFIX}/lib/c++")
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -L${LLVM_PREFIX}/lib/c++")
set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -L${LLVM_PREFIX}/lib/c++")
endif()
if (CMAKE_BUILD_TYPE STREQUAL "Debug")
add_compile_definitions(_LIBCPP_HARDENING_MODE=_LIBCPP_HARDENING_MODE_DEBUG)
endif()
endif()
if (CMAKE_CXX_COMPILER_ID MATCHES "MSVC")
addCommonFlag("/bigobj" ${target})
addCFlag("/std:clatest" ${target})
addCXXFlag("/std:c++latest" ${target})
endif()
# Disable some warnings for gcc
if (CMAKE_CXX_COMPILER_ID MATCHES "GNU")
addCCXXFlag("-Wno-restrict" ${target})
addCCXXFlag("-Wno-stringop-overread" ${target})
addCCXXFlag("-Wno-stringop-overflow" ${target})
addCCXXFlag("-Wno-dangling-reference" ${target})
endif()
# Define emscripten-specific disabled warnings
if (EMSCRIPTEN)
addCCXXFlag("-pthread" ${target})
addCCXXFlag("-Wno-dollar-in-identifier-extension" ${target})
addCCXXFlag("-Wno-pthreads-mem-growth" ${target})
endif ()
if (IMHEX_COMPRESS_DEBUG_INFO)
setupDebugCompressionFlag()
endif()
# Only generate minimal debug information for stacktraces in RelWithDebInfo builds
if (CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo")
if (CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang")
addCCXXFlag("-g1" ${target})
endif()
if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
# Add flags for debug info in inline functions
addCCXXFlag("-gstatement-frontiers" ${target})
addCCXXFlag("-ginline-points" ${target})
endif()
endif()
endmacro()
# uninstall target
macro(setUninstallTarget)
if(NOT TARGET uninstall)
configure_file(
"${CMAKE_CURRENT_SOURCE_DIR}/cmake/cmake_uninstall.cmake.in"
"${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake"
IMMEDIATE @ONLY)
add_custom_target(uninstall
COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake)
endif()
endmacro()
macro(addBundledLibraries)
# Make sure the build is using vcpkg on Windows and Emscripten, otherwise none of these dependencies will be found
if (MSVC OR EMSCRIPTEN)
if (NOT (CMAKE_TOOLCHAIN_FILE MATCHES "vcpkg"))
message(AUTHOR_WARNING "Your current environment probably needs to be setup to use vcpkg, otherwise none of the dependencies will be found!")
endif()
endif()
set(EXTERNAL_LIBS_FOLDER "${CMAKE_CURRENT_SOURCE_DIR}/lib/external")
set(THIRD_PARTY_LIBS_FOLDER "${CMAKE_CURRENT_SOURCE_DIR}/lib/third_party")
set(BUILD_SHARED_LIBS OFF)
add_subdirectory(${THIRD_PARTY_LIBS_FOLDER}/microtar EXCLUDE_FROM_ALL)
add_subdirectory(${EXTERNAL_LIBS_FOLDER}/libwolv EXCLUDE_FROM_ALL)
set(XDGPP_INCLUDE_DIRS "${THIRD_PARTY_LIBS_FOLDER}/xdgpp")
set(FPHSA_NAME_MISMATCHED ON CACHE BOOL "")
if(NOT USE_SYSTEM_FMT)
set(FMT_INSTALL OFF CACHE BOOL "Disable install targets for libfmt" FORCE)
add_subdirectory(${THIRD_PARTY_LIBS_FOLDER}/fmt EXCLUDE_FROM_ALL)
set(FMT_LIBRARIES fmt::fmt-header-only)
else()
find_package(fmt REQUIRED)
set(FMT_LIBRARIES fmt::fmt)
endif()
if (IMHEX_USE_GTK_FILE_PICKER)
set(NFD_PORTAL OFF CACHE BOOL "Use Portals for Linux file dialogs" FORCE)
else ()
set(NFD_PORTAL ON CACHE BOOL "Use GTK for Linux file dialogs" FORCE)
endif ()
if (NOT EMSCRIPTEN)
# curl
find_package(CURL REQUIRED)
# nfd
if (NOT USE_SYSTEM_NFD)
add_subdirectory(${THIRD_PARTY_LIBS_FOLDER}/nativefiledialog EXCLUDE_FROM_ALL)
set(NFD_LIBRARIES nfd)
else()
find_package(nfd)
set(NFD_LIBRARIES nfd)
endif()
endif()
if(NOT USE_SYSTEM_NLOHMANN_JSON)
add_subdirectory(${THIRD_PARTY_LIBS_FOLDER}/nlohmann_json EXCLUDE_FROM_ALL)
set(NLOHMANN_JSON_LIBRARIES nlohmann_json)
else()
find_package(nlohmann_json 3.10.2 REQUIRED)
set(NLOHMANN_JSON_LIBRARIES nlohmann_json::nlohmann_json)
endif()
if (NOT USE_SYSTEM_LUNASVG)
add_subdirectory(${THIRD_PARTY_LIBS_FOLDER}/lunasvg EXCLUDE_FROM_ALL)
set(LUNASVG_LIBRARIES lunasvg)
else()
find_package(lunasvg REQUIRED)
set(LUNASVG_LIBRARIES lunasvg::lunasvg)
endif()
if (NOT USE_SYSTEM_MD4C)
set(BUILD_MD2HTML_EXECUTABLE OFF CACHE BOOL "Disable md2html executable" FORCE)
add_subdirectory(${THIRD_PARTY_LIBS_FOLDER}/md4c EXCLUDE_FROM_ALL)
add_library(md4c_lib INTERFACE)
add_library(md4c::md4c ALIAS md4c_lib)
target_include_directories(md4c_lib INTERFACE ${THIRD_PARTY_LIBS_FOLDER}/md4c/src)
target_link_libraries(md4c_lib INTERFACE md4c)
else()
find_package(md4c REQUIRED)
endif()
if (NOT USE_SYSTEM_LLVM)
add_subdirectory(${THIRD_PARTY_LIBS_FOLDER}/llvm-demangle EXCLUDE_FROM_ALL)
else()
find_package(LLVM REQUIRED Demangle)
endif()
if (USE_SYSTEM_BOOST)
find_package(Boost REQUIRED CONFIG COMPONENTS regex)
set(BOOST_LIBRARIES Boost::regex)
else()
add_subdirectory(${THIRD_PARTY_LIBS_FOLDER}/boost ${CMAKE_CURRENT_BINARY_DIR}/boost EXCLUDE_FROM_ALL)
set(BOOST_LIBRARIES boost::regex)
endif()
set(LIBPL_BUILD_CLI_AS_EXECUTABLE OFF CACHE BOOL "" FORCE)
set(LIBPL_ENABLE_PRECOMPILED_HEADERS ${IMHEX_ENABLE_PRECOMPILED_HEADERS} CACHE BOOL "" FORCE)
set(LIBPL_SHARED_LIBRARY OFF CACHE BOOL "" FORCE)
add_subdirectory(${EXTERNAL_LIBS_FOLDER}/pattern_language EXCLUDE_FROM_ALL)
add_subdirectory(${EXTERNAL_LIBS_FOLDER}/disassembler EXCLUDE_FROM_ALL)
add_subdirectory(${THIRD_PARTY_LIBS_FOLDER}/imgui)
if (LIBPL_SHARED_LIBRARY)
install(
TARGETS
libpl
DESTINATION
"${CMAKE_INSTALL_LIBDIR}"
PERMISSIONS
OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
)
endif()
if (WIN32)
set_target_properties(
libpl
PROPERTIES
RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}
LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}
)
endif()
enableUnityBuild(libpl)
find_package(mbedTLS 3.4.0 REQUIRED)
find_package(Magic 5.39 REQUIRED)
endmacro()
function(enableUnityBuild TARGET)
if (IMHEX_ENABLE_UNITY_BUILD)
set_target_properties(${TARGET} PROPERTIES UNITY_BUILD ON UNITY_BUILD_MODE BATCH)
endif ()
endfunction()
function(setSDKPaths)
if (WIN32)
set(SDK_PATH "./sdk" PARENT_SCOPE)
elseif (APPLE)
set(SDK_PATH "${CMAKE_INSTALL_PREFIX}/${BUNDLE_NAME}/Contents/Resources/sdk" PARENT_SCOPE)
else()
set(SDK_PATH "share/imhex/sdk" PARENT_SCOPE)
endif()
set(SDK_BUILD_PATH "${CMAKE_BINARY_DIR}/sdk" PARENT_SCOPE)
endfunction()
function(generateSDKDirectory)
setSDKPaths()
install(DIRECTORY ${CMAKE_SOURCE_DIR}/lib/libimhex DESTINATION "${SDK_PATH}/lib" PATTERN "**/source/*" EXCLUDE)
install(DIRECTORY ${CMAKE_SOURCE_DIR}/lib/trace DESTINATION "${SDK_PATH}/lib" PATTERN "**/source/*" EXCLUDE)
install(DIRECTORY ${CMAKE_SOURCE_DIR}/lib/external DESTINATION "${SDK_PATH}/lib")
install(DIRECTORY ${CMAKE_SOURCE_DIR}/lib/third_party/imgui DESTINATION "${SDK_PATH}/lib/third_party" PATTERN "**/source/*" EXCLUDE)
if (NOT USE_SYSTEM_FMT)
install(DIRECTORY ${CMAKE_SOURCE_DIR}/lib/third_party/fmt DESTINATION "${SDK_PATH}/lib/third_party")
endif()
if (NOT USE_SYSTEM_NLOHMANN_JSON)
install(DIRECTORY ${CMAKE_SOURCE_DIR}/lib/third_party/nlohmann_json DESTINATION "${SDK_PATH}/lib/third_party")
endif()
if (NOT USE_SYSTEM_BOOST)
install(DIRECTORY ${CMAKE_SOURCE_DIR}/lib/third_party/boost DESTINATION "${SDK_PATH}/lib/third_party")
endif()
install(DIRECTORY ${CMAKE_SOURCE_DIR}/cmake/modules DESTINATION "${SDK_PATH}/cmake")
install(FILES ${CMAKE_SOURCE_DIR}/cmake/build_helpers.cmake DESTINATION "${SDK_PATH}/cmake")
install(DIRECTORY ${CMAKE_SOURCE_DIR}/cmake/sdk/ DESTINATION "${SDK_PATH}")
install(TARGETS libimhex ARCHIVE DESTINATION "${SDK_PATH}/lib")
install(TARGETS tracing ARCHIVE DESTINATION "${SDK_PATH}/lib")
install(DIRECTORY ${CMAKE_SOURCE_DIR}/plugins/ui/include DESTINATION "${SDK_PATH}/lib/ui/include")
install(FILES ${CMAKE_SOURCE_DIR}/plugins/ui/CMakeLists.txt DESTINATION "${SDK_PATH}/lib/ui/")
if (WIN32)
install(TARGETS ui ARCHIVE DESTINATION "${SDK_PATH}/lib")
endif()
install(DIRECTORY ${CMAKE_SOURCE_DIR}/plugins/fonts/include DESTINATION "${SDK_PATH}/lib/fonts/include")
install(FILES ${CMAKE_SOURCE_DIR}/plugins/fonts/CMakeLists.txt DESTINATION "${SDK_PATH}/lib/fonts/")
if (WIN32)
install(TARGETS fonts ARCHIVE DESTINATION "${SDK_PATH}/lib")
endif()
endfunction()
function(addIncludesFromLibrary target library)
get_target_property(library_include_dirs ${library} INTERFACE_INCLUDE_DIRECTORIES)
target_include_directories(${target} PRIVATE ${library_include_dirs})
endfunction()
function(precompileHeaders target includeFolder)
if (NOT IMHEX_ENABLE_PRECOMPILED_HEADERS)
return()
endif()
file(GLOB_RECURSE TARGET_INCLUDES "${includeFolder}/**/*.hpp")
file(GLOB_RECURSE LIBIMHEX_INCLUDES "${CMAKE_SOURCE_DIR}/lib/libimhex/include/**/*.hpp")
set(SYSTEM_INCLUDES "<algorithm>;<array>;<atomic>;<chrono>;<cmath>;<cstddef>;<cstdint>;<cstdio>;<cstdlib>;<cstring>;<exception>;<filesystem>;<functional>;<iterator>;<limits>;<list>;<map>;<memory>;<optional>;<ranges>;<set>;<stdexcept>;<string>;<string_view>;<thread>;<tuple>;<type_traits>;<unordered_map>;<unordered_set>;<utility>;<variant>;<vector>")
set(INCLUDES "${SYSTEM_INCLUDES};${TARGET_INCLUDES};${LIBIMHEX_INCLUDES}")
string(REPLACE ">" "$<ANGLE-R>" INCLUDES "${INCLUDES}")
target_precompile_headers(${target}
PUBLIC
"$<$<COMPILE_LANGUAGE:CXX>:${INCLUDES}>"
)
endfunction()
================================================
FILE: cmake/cmake_uninstall.cmake.in
================================================
if(NOT EXISTS "@CMAKE_BINARY_DIR@/install_manifest.txt")
message(FATAL_ERROR "Cannot find install manifest: @CMAKE_BINARY_DIR@/install_manifest.txt")
endif()
file(READ "@CMAKE_BINARY_DIR@/install_manifest.txt" files)
string(REGEX REPLACE "\n" ";" files "${files}")
foreach(file ${files})
message(STATUS "Uninstalling $ENV{DESTDIR}${file}")
if(IS_SYMLINK "$ENV{DESTDIR}${file}" OR EXISTS "$ENV{DESTDIR}${file}")
exec_program(
"@CMAKE_COMMAND@" ARGS "-E remove \"$ENV{DESTDIR}${file}\""
OUTPUT_VARIABLE rm_out
RETURN_VALUE rm_retval
)
if(NOT "${rm_retval}" STREQUAL 0)
message(FATAL_ERROR "Problem when removing $ENV{DESTDIR}${file}")
endif()
else(IS_SYMLINK "$ENV{DESTDIR}${file}" OR EXISTS "$ENV{DESTDIR}${file}")
message(STATUS "File $ENV{DESTDIR}${file} does not exist.")
endif()
endforeach()
================================================
FILE: cmake/ide_helpers.cmake
================================================
option(IMHEX_IDE_HELPERS_OVERRIDE_XCODE_COMPILER "Enable choice of compiler for Xcode builds, despite CMake's best efforts" OFF)
option(IMHEX_IDE_HELPERS_INTRUSIVE_IDE_TWEAKS "Enable intrusive CMake tweaks to better support IDEs with folder support" OFF)
# The CMake infrastructure silently ignores the CMAKE_<>_COMPILER settings when
# using the `Xcode` generator.
#
# A particularly nasty (and potentially only) way of getting around this is to
# temporarily lie about the generator being used, while CMake determines and
# locks in the compiler to use.
#
# Needless to say, this is hacky and fragile. Use at your own risk!
if (IMHEX_IDE_HELPERS_OVERRIDE_XCODE_COMPILER AND CMAKE_GENERATOR STREQUAL "Xcode")
set(CMAKE_GENERATOR "Unknown")
enable_language(C CXX)
set(CMAKE_GENERATOR "Xcode")
set(CMAKE_XCODE_ATTRIBUTE_CC "${CMAKE_C_COMPILER}")
set(CMAKE_XCODE_ATTRIBUTE_CXX "${CMAKE_CXX_COMPILER}")
if (CLANG)
set(CMAKE_XCODE_ATTRIBUTE_LD "${CMAKE_C_COMPILER}")
set(CMAKE_XCODE_ATTRIBUTE_LDPLUSPLUS "${CMAKE_CXX_COMPILER}")
endif()
# By default Xcode passes a `-index-store-path=<...>` parameter to the compiler
# during builds to build code completion indexes. This is not supported by
# anything other than AppleClang
set(CMAKE_XCODE_ATTRIBUTE_COMPILER_INDEX_STORE_ENABLE "NO")
endif()
# Generate a launch/build scheme for all targets
set(CMAKE_XCODE_GENERATE_SCHEME YES)
# Utility function that helps avoid messing with non-standard targets
macro(returnIfTargetIsNonTweakable target)
get_target_property(targetIsAliased ${target} ALIASED_TARGET)
get_target_property(targetIsImported ${target} IMPORTED)
if (targetIsAliased OR targetIsImported)
return()
endif()
get_target_property(targetType ${target} TYPE)
if (targetType MATCHES "INTERFACE_LIBRARY|UNKNOWN_LIBRARY")
return()
endif()
endmacro()
# Targets usually don't specify their private headers, nor group their source files
# which results in very spotty coverage by IDEs with folders support
#
# Unfortunately, CMake does not have a `target_source_group` like construct yet, therefore
# we have to play by the limitations of `source_group`.
#
# A particularly problematic part is that the function must be called within the directoryies
# scope for the grouping to take effect.
#
# See: https://discourse.cmake.org/t/topic/7388
function(tweakTargetForIDESupport target)
returnIfTargetIsNonTweakable(${target})
# Don't assume directory structure of third parties
get_target_property(targetSourceDir ${target} SOURCE_DIR)
if (targetSourceDir MATCHES "third_party")
return()
endif()
# Add headers to target
get_target_property(targetSourceDir ${target} SOURCE_DIR)
if (targetSourceDir)
file(GLOB_RECURSE targetPrivateHeaders CONFIGURE_DEPENDS "${targetSourceDir}/include/*.hpp")
target_sources(${target} PRIVATE "${targetPrivateHeaders}")
endif()
# Organize target sources into directory tree
get_target_property(sources ${target} SOURCES)
foreach(file IN LISTS sources)
get_filename_component(path "${file}" ABSOLUTE)
if (NOT path MATCHES "^${targetSourceDir}")
continue()
endif()
source_group(TREE "${targetSourceDir}" PREFIX "Source Tree" FILES "${file}")
endforeach()
endfunction()
if (IMHEX_IDE_HELPERS_INTRUSIVE_IDE_TWEAKS)
# See tweakTargetForIDESupport for rationale
function(add_library target)
_add_library(${target} ${ARGN})
tweakTargetForIDESupport(${target})
endfunction()
function(add_executable target)
_add_executable(${target} ${ARGN})
tweakTargetForIDESupport(${target})
endfunction()
endif()
# Adjust target's FOLDER property, which is an IDE only preference
function(_tweakTarget target path)
get_target_property(targetType ${target} TYPE)
if (TARGET generator-${target})
set_target_properties(generator-${target} PROPERTIES FOLDER "romfs/${target}")
endif()
if (TARGET romfs_file_packer-${target})
set_target_properties(romfs_file_packer-${target} PROPERTIES FOLDER "romfs/${target}")
endif()
if (TARGET libromfs-${target})
set_target_properties(libromfs-${target} PROPERTIES FOLDER "romfs/${target}")
endif()
if (${targetType} MATCHES "EXECUTABLE|LIBRARY")
set_target_properties(${target} PROPERTIES FOLDER "${path}")
endif()
endfunction()
macro(_tweakTargetsRecursive dir)
get_property(subdirectories DIRECTORY ${dir} PROPERTY SUBDIRECTORIES)
foreach(subdir IN LISTS subdirectories)
_tweakTargetsRecursive("${subdir}")
endforeach()
if(${dir} STREQUAL ${CMAKE_SOURCE_DIR})
return()
endif()
get_property(targets DIRECTORY "${dir}" PROPERTY BUILDSYSTEM_TARGETS)
file(RELATIVE_PATH rdir ${CMAKE_SOURCE_DIR} "${dir}/..")
foreach(target ${targets})
_tweakTarget(${target} "${rdir}")
endforeach()
endmacro()
# Tweak all targets this CMake build is aware about
function(tweakTargetsForIDESupport)
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
_tweakTargetsRecursive("${CMAKE_SOURCE_DIR}")
endfunction()
================================================
FILE: cmake/modules/FindBacktrace.cmake
================================================
# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
# file Copyright.txt or https://cmake.org/licensing for details.
#[=======================================================================[.rst:
FindBacktrace
-------------
Find provider for `backtrace(3) <https://man7.org/linux/man-pages/man3/backtrace.3.html>`__.
Checks if OS supports ``backtrace(3)`` via either ``libc`` or custom library.
This module defines the following variables:
``Backtrace_HEADER``
The header file needed for ``backtrace(3)``. Cached.
Could be forcibly set by user.
``Backtrace_INCLUDE_DIRS``
The include directories needed to use ``backtrace(3)`` header.
``Backtrace_LIBRARIES``
The libraries (linker flags) needed to use ``backtrace(3)``, if any.
``Backtrace_FOUND``
Is set if and only if ``backtrace(3)`` support detected.
The following cache variables are also available to set or use:
``Backtrace_LIBRARY``
The external library providing backtrace, if any.
``Backtrace_INCLUDE_DIR``
The directory holding the ``backtrace(3)`` header.
Typical usage is to generate of header file using :command:`configure_file`
with the contents like the following::
#cmakedefine01 Backtrace_FOUND
#if Backtrace_FOUND
# include <${Backtrace_HEADER}>
#endif
And then reference that generated header file in actual source.
#]=======================================================================]
include(CMakePushCheckState)
include(CheckSymbolExists)
include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
# List of variables to be provided to find_package_handle_standard_args()
set(_Backtrace_STD_ARGS Backtrace_INCLUDE_DIR)
if(Backtrace_HEADER)
set(_Backtrace_HEADER_TRY "${Backtrace_HEADER}")
else(Backtrace_HEADER)
set(_Backtrace_HEADER_TRY "execinfo.h")
endif(Backtrace_HEADER)
find_path(Backtrace_INCLUDE_DIR "${_Backtrace_HEADER_TRY}")
set(Backtrace_INCLUDE_DIRS ${Backtrace_INCLUDE_DIR})
if (NOT DEFINED Backtrace_LIBRARY)
# First, check if we already have backtrace(), e.g., in libc
cmake_push_check_state(RESET)
set(CMAKE_REQUIRED_INCLUDES ${Backtrace_INCLUDE_DIRS})
set(CMAKE_REQUIRED_QUIET ${Backtrace_FIND_QUIETLY})
check_symbol_exists("backtrace" "${_Backtrace_HEADER_TRY}" _Backtrace_SYM_FOUND)
cmake_pop_check_state()
endif()
if(_Backtrace_SYM_FOUND)
# Avoid repeating the message() call below each time CMake is run.
if(NOT Backtrace_FIND_QUIETLY AND NOT DEFINED Backtrace_LIBRARY)
message(STATUS "backtrace facility detected in default set of libraries")
endif()
set(Backtrace_LIBRARY "" CACHE FILEPATH "Library providing backtrace(3), empty for default set of libraries")
else()
# Check for external library, for non-glibc systems
if(Backtrace_INCLUDE_DIR)
# OpenBSD has libbacktrace renamed to libexecinfo
find_library(Backtrace_LIBRARY "execinfo")
else() # respect user wishes
set(_Backtrace_HEADER_TRY "backtrace.h")
find_path(Backtrace_INCLUDE_DIR ${_Backtrace_HEADER_TRY})
find_library(Backtrace_LIBRARY "backtrace")
endif()
# Prepend list with library path as it's more common practice
set(_Backtrace_STD_ARGS Backtrace_LIBRARY ${_Backtrace_STD_ARGS})
endif()
set(Backtrace_LIBRARIES ${Backtrace_LIBRARY})
set(Backtrace_HEADER "${_Backtrace_HEADER_TRY}" CACHE STRING "Header providing backtrace(3) facility")
find_package_handle_standard_args(Backtrace FOUND_VAR Backtrace_FOUND REQUIRED_VARS ${_Backtrace_STD_ARGS})
mark_as_advanced(Backtrace_HEADER Backtrace_INCLUDE_DIR Backtrace_LIBRARY)
================================================
FILE: cmake/modules/FindCapstone.cmake
================================================
find_path(CAPSTONE_INCLUDE_DIR capstone.h PATH_SUFFIXES capstone)
find_library(CAPSTONE_LIBRARY NAMES capstone)
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(Capstone DEFAULT_MSG CAPSTONE_LIBRARY CAPSTONE_INCLUDE_DIR)
mark_as_advanced(CAPSTONE_INCLUDE_DIR CAPSTONE_LIBRARY)
================================================
FILE: cmake/modules/FindCoreClrEmbed.cmake
================================================
set(CoreClrEmbed_FOUND FALSE)
set(CORECLR_ARCH "linux-x64")
set(CORECLR_SUBARCH "x64")
if (WIN32)
set(CORECLR_ARCH "win-x64")
endif()
if (UNIX)
if (CMAKE_SYSTEM_PROCESSOR STREQUAL "aarch64")
set(CORECLR_ARCH "linux-arm64")
set(CORECLR_SUBARCH "arm64")
endif()
endif()
if (APPLE)
if (CMAKE_SYSTEM_PROCESSOR STREQUAL "arm64")
set(CORECLR_ARCH "osx-arm64")
set(CORECLR_SUBARCH "arm64")
else()
set(CORECLR_ARCH "osx-x64")
endif()
endif()
if (NOT DOTNET_EXECUTABLE)
set(DOTNET_EXECUTABLE dotnet)
endif ()
set(CORECLR_VERSION "8.0")
execute_process(COMMAND ${DOTNET_EXECUTABLE} "--list-runtimes" OUTPUT_VARIABLE CORECLR_LIST_RUNTIMES_OUTPUT OUTPUT_STRIP_TRAILING_WHITESPACE)
if (CORECLR_LIST_RUNTIMES_OUTPUT STREQUAL "")
message(STATUS "Unable to find any .NET runtimes")
return()
endif ()
set(_ALL_RUNTIMES ${CORECLR_LIST_RUNTIMES_OUTPUT})
string(REPLACE "\n" ";" _ALL_RUNTIMES_LIST ${_ALL_RUNTIMES})
foreach(X ${_ALL_RUNTIMES_LIST})
string(REGEX MATCH "Microsoft\.NETCore\.App ([0-9]+)\.([0-9]+)\.([a-zA-Z0-9.-]+) [\[](.*)Microsoft\.NETCore\.App[\]]"
CORECLR_VERSION_REGEX_MATCH ${X})
set(_RUNTIME_VERSION ${CMAKE_MATCH_1}.${CMAKE_MATCH_2})
if (CMAKE_MATCH_1 AND CMAKE_MATCH_4)
if (${_RUNTIME_VERSION} STREQUAL ${CORECLR_VERSION})
set(CORECLR_RUNTIME_VERSION ${_RUNTIME_VERSION})
set(CORECLR_RUNTIME_VERSION_FULL ${CORECLR_VERSION}.${CMAKE_MATCH_3})
set(CORECLR_RUNTIME_ROOT_PATH ${CMAKE_MATCH_4})
message(STATUS "Found matching .NET runtime version '${CORECLR_RUNTIME_VERSION_FULL}' path='${CORECLR_RUNTIME_ROOT_PATH}'")
endif()
endif()
endforeach()
if (CORECLR_RUNTIME_ROOT_PATH)
get_filename_component(CORECLR_RUNTIME_ROOT_PATH ${CORECLR_RUNTIME_ROOT_PATH} DIRECTORY)
endif()
set(CoreClrEmbed_ROOT_PATH "${CORECLR_RUNTIME_ROOT_PATH}")
file(GLOB _CORECLR_HOST_ARCH_PATH_LIST "${CORECLR_RUNTIME_ROOT_PATH}/packs/Microsoft.NETCore.App.Host.*-${CORECLR_SUBARCH}")
if (_CORECLR_HOST_ARCH_PATH_LIST)
foreach(_CORECLR_HOST_ARCH_PATH ${_CORECLR_HOST_ARCH_PATH_LIST})
get_filename_component(_CORECLR_HOST_ARCH_FILENAME ${_CORECLR_HOST_ARCH_PATH} NAME)
string(REPLACE "Microsoft.NETCore.App.Host." "" _CORECLR_COMPUTED_ARCH "${_CORECLR_HOST_ARCH_FILENAME}")
if (_CORECLR_COMPUTED_ARCH)
set(CORECLR_ARCH "${_CORECLR_COMPUTED_ARCH}")
break()
endif()
endforeach()
endif()
set(CORECLR_HOST_BASE_PATH "${CORECLR_RUNTIME_ROOT_PATH}/packs/Microsoft.NETCore.App.Host.${CORECLR_ARCH}/${CORECLR_RUNTIME_VERSION_FULL}")
file(GLOB _CORECLR_FOUND_PATH ${CORECLR_HOST_BASE_PATH})
if (_CORECLR_FOUND_PATH)
set(CORECLR_NETHOST_ROOT "${_CORECLR_FOUND_PATH}/runtimes/${CORECLR_ARCH}/native")
endif()
find_library(CoreClrEmbed_LIBRARY nethost PATHS
${CORECLR_NETHOST_ROOT}
)
find_path(CoreClr
gitextract_ps364jvn/
├── .clang-tidy
├── .dockerignore
├── .gdbinit
├── .gitattributes
├── .github/
│ ├── FUNDING.yml
│ ├── ISSUE_TEMPLATE/
│ │ ├── bug_report.yaml
│ │ └── feature_request.yaml
│ ├── PULL_REQUEST_TEMPLATE.md
│ ├── codecov.yml
│ ├── scripts/
│ │ └── delete-artifact.sh
│ └── workflows/
│ ├── analysis.yml
│ ├── build.yml
│ ├── dl-cache.yml
│ ├── nightly_release.yml
│ ├── release.yml
│ ├── stale_issues.yml
│ └── tests.yml
├── .gitignore
├── .gitmodules
├── CMakeLists.txt
├── CMakePresets.json
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── INSTALL.md
├── LICENSE
├── PLUGINS.md
├── PRIVACY.md
├── README.md
├── SECURITY.md
├── VERSION
├── changelog.md
├── cmake/
│ ├── build_helpers.cmake
│ ├── cmake_uninstall.cmake.in
│ ├── ide_helpers.cmake
│ ├── modules/
│ │ ├── FindBacktrace.cmake
│ │ ├── FindCapstone.cmake
│ │ ├── FindCoreClrEmbed.cmake
│ │ ├── FindGLFW.cmake
│ │ ├── FindLZ4.cmake
│ │ ├── FindMagic.cmake
│ │ ├── FindPackageHandleStandardArgs.cmake
│ │ ├── FindPackageMessage.cmake
│ │ ├── FindYara.cmake
│ │ ├── FindZSTD.cmake
│ │ ├── Findlibssh2.cmake
│ │ ├── FindmbedTLS.cmake
│ │ ├── ImHexPlugin.cmake
│ │ └── PostprocessBundle.cmake
│ └── sdk/
│ ├── CMakeLists.txt
│ └── template/
│ ├── CMakeLists.txt
│ └── source/
│ └── example_plugin.cpp
├── dist/
│ ├── AppImage/
│ │ ├── AppImageBuilder.yml
│ │ └── Dockerfile
│ ├── Arch/
│ │ ├── Dockerfile
│ │ └── PKGBUILD
│ ├── DEBIAN/
│ │ └── control.in
│ ├── ImHex-9999.ebuild
│ ├── cli/
│ │ ├── imhex.bat
│ │ └── imhex.sh
│ ├── compiling/
│ │ ├── docker.md
│ │ ├── linux.md
│ │ ├── macos.md
│ │ ├── macos_nogpu.md
│ │ └── windows.md
│ ├── cppcheck.supp
│ ├── flake.nix
│ ├── flatpak/
│ │ └── net.werwolv.ImHex.yaml
│ ├── fonts/
│ │ ├── move_private_use_area.py
│ │ └── ttf_to_header_file.py
│ ├── gen_release_notes.py
│ ├── get_deps_archlinux.sh
│ ├── get_deps_debian.sh
│ ├── get_deps_fedora.sh
│ ├── get_deps_msys2.sh
│ ├── get_deps_tumbleweed.sh
│ ├── imhex.desktop
│ ├── imhex.mime.xml
│ ├── langtool.py
│ ├── macOS/
│ │ ├── 0001-glfw-SW.patch
│ │ ├── Brewfile
│ │ ├── arm64.Dockerfile
│ │ ├── arm64.crosscompile.Dockerfile
│ │ └── osx_10_15/
│ │ └── x64-osx.cmake
│ ├── msys2/
│ │ └── PKGBUILD
│ ├── net.werwolv.ImHex.metainfo.xml
│ ├── rpm/
│ │ └── imhex.spec
│ ├── snap/
│ │ └── snapcraft.yaml
│ └── web/
│ ├── Dockerfile
│ ├── Host.Dockerfile
│ ├── compose.yml
│ ├── plugin-bundle.cpp.in
│ ├── serve.py
│ └── source/
│ ├── enable-threads.js
│ ├── index.html
│ ├── manifest.json
│ ├── robots.txt
│ ├── sitemap.xml
│ ├── style.css
│ └── wasm-config.js
├── lib/
│ ├── libimhex/
│ │ ├── CMakeLists.txt
│ │ ├── LICENSE
│ │ ├── include/
│ │ │ ├── hex/
│ │ │ │ ├── api/
│ │ │ │ │ ├── achievement_manager.hpp
│ │ │ │ │ ├── content_registry/
│ │ │ │ │ │ ├── background_services.hpp
│ │ │ │ │ │ ├── command_palette.hpp
│ │ │ │ │ │ ├── communication_interface.hpp
│ │ │ │ │ │ ├── data_formatter.hpp
│ │ │ │ │ │ ├── data_information.hpp
│ │ │ │ │ │ ├── data_inspector.hpp
│ │ │ │ │ │ ├── data_processor.hpp
│ │ │ │ │ │ ├── diffing.hpp
│ │ │ │ │ │ ├── disassemblers.hpp
│ │ │ │ │ │ ├── experiments.hpp
│ │ │ │ │ │ ├── file_type_handler.hpp
│ │ │ │ │ │ ├── hashes.hpp
│ │ │ │ │ │ ├── hex_editor.hpp
│ │ │ │ │ │ ├── pattern_language.hpp
│ │ │ │ │ │ ├── provider.hpp
│ │ │ │ │ │ ├── reports.hpp
│ │ │ │ │ │ ├── settings.hpp
│ │ │ │ │ │ ├── tools.hpp
│ │ │ │ │ │ ├── user_interface.hpp
│ │ │ │ │ │ └── views.hpp
│ │ │ │ │ ├── event_manager.hpp
│ │ │ │ │ ├── events/
│ │ │ │ │ │ ├── events_gui.hpp
│ │ │ │ │ │ ├── events_interaction.hpp
│ │ │ │ │ │ ├── events_lifecycle.hpp
│ │ │ │ │ │ ├── events_provider.hpp
│ │ │ │ │ │ ├── requests_gui.hpp
│ │ │ │ │ │ ├── requests_interaction.hpp
│ │ │ │ │ │ ├── requests_lifecycle.hpp
│ │ │ │ │ │ └── requests_provider.hpp
│ │ │ │ │ ├── imhex_api/
│ │ │ │ │ │ ├── bookmarks.hpp
│ │ │ │ │ │ ├── fonts.hpp
│ │ │ │ │ │ ├── hex_editor.hpp
│ │ │ │ │ │ ├── messaging.hpp
│ │ │ │ │ │ ├── provider.hpp
│ │ │ │ │ │ └── system.hpp
│ │ │ │ │ ├── layout_manager.hpp
│ │ │ │ │ ├── localization_manager.hpp
│ │ │ │ │ ├── plugin_manager.hpp
│ │ │ │ │ ├── project_file_manager.hpp
│ │ │ │ │ ├── shortcut_manager.hpp
│ │ │ │ │ ├── task_manager.hpp
│ │ │ │ │ ├── theme_manager.hpp
│ │ │ │ │ ├── tutorial_manager.hpp
│ │ │ │ │ └── workspace_manager.hpp
│ │ │ │ ├── api_urls.hpp
│ │ │ │ ├── data_processor/
│ │ │ │ │ ├── attribute.hpp
│ │ │ │ │ ├── link.hpp
│ │ │ │ │ └── node.hpp
│ │ │ │ ├── helpers/
│ │ │ │ │ ├── auto_reset.hpp
│ │ │ │ │ ├── binary_pattern.hpp
│ │ │ │ │ ├── concepts.hpp
│ │ │ │ │ ├── crypto.hpp
│ │ │ │ │ ├── debugging.hpp
│ │ │ │ │ ├── default_paths.hpp
│ │ │ │ │ ├── encoding_file.hpp
│ │ │ │ │ ├── fmt.hpp
│ │ │ │ │ ├── fs.hpp
│ │ │ │ │ ├── http_requests.hpp
│ │ │ │ │ ├── http_requests_emscripten.hpp
│ │ │ │ │ ├── http_requests_native.hpp
│ │ │ │ │ ├── keys.hpp
│ │ │ │ │ ├── literals.hpp
│ │ │ │ │ ├── logger.hpp
│ │ │ │ │ ├── magic.hpp
│ │ │ │ │ ├── menu_items.hpp
│ │ │ │ │ ├── opengl.hpp
│ │ │ │ │ ├── patches.hpp
│ │ │ │ │ ├── scaling.hpp
│ │ │ │ │ ├── semantic_version.hpp
│ │ │ │ │ ├── tar.hpp
│ │ │ │ │ ├── types.hpp
│ │ │ │ │ ├── udp_server.hpp
│ │ │ │ │ ├── utils.hpp
│ │ │ │ │ ├── utils_linux.hpp
│ │ │ │ │ └── utils_macos.hpp
│ │ │ │ ├── mcp/
│ │ │ │ │ ├── client.hpp
│ │ │ │ │ └── server.hpp
│ │ │ │ ├── plugin.hpp
│ │ │ │ ├── providers/
│ │ │ │ │ ├── buffered_reader.hpp
│ │ │ │ │ ├── cached_provider.hpp
│ │ │ │ │ ├── memory_provider.hpp
│ │ │ │ │ ├── overlay.hpp
│ │ │ │ │ ├── provider.hpp
│ │ │ │ │ ├── provider_data.hpp
│ │ │ │ │ └── undo_redo/
│ │ │ │ │ ├── operations/
│ │ │ │ │ │ ├── operation.hpp
│ │ │ │ │ │ └── operation_group.hpp
│ │ │ │ │ └── stack.hpp
│ │ │ │ ├── subcommands/
│ │ │ │ │ └── subcommands.hpp
│ │ │ │ ├── test/
│ │ │ │ │ ├── test_provider.hpp
│ │ │ │ │ └── tests.hpp
│ │ │ │ └── ui/
│ │ │ │ ├── banner.hpp
│ │ │ │ ├── imgui_imhex_extensions.h
│ │ │ │ ├── popup.hpp
│ │ │ │ ├── toast.hpp
│ │ │ │ ├── view.hpp
│ │ │ │ └── widgets.hpp
│ │ │ ├── hex.cppm
│ │ │ └── hex.hpp
│ │ └── source/
│ │ ├── api/
│ │ │ ├── achievement_manager.cpp
│ │ │ ├── content_registry.cpp
│ │ │ ├── event_manager.cpp
│ │ │ ├── imhex_api.cpp
│ │ │ ├── layout_manager.cpp
│ │ │ ├── localization_manager.cpp
│ │ │ ├── plugin_manager.cpp
│ │ │ ├── project_file_manager.cpp
│ │ │ ├── shortcut_manager.cpp
│ │ │ ├── task_manager.cpp
│ │ │ ├── theme_manager.cpp
│ │ │ ├── tutorial_manager.cpp
│ │ │ └── workspace_manager.cpp
│ │ ├── data_processor/
│ │ │ ├── attribute.cpp
│ │ │ ├── link.cpp
│ │ │ └── node.cpp
│ │ ├── helpers/
│ │ │ ├── binary_pattern.cpp
│ │ │ ├── crypto.cpp
│ │ │ ├── debugging.cpp
│ │ │ ├── default_paths.cpp
│ │ │ ├── encoding_file.cpp
│ │ │ ├── fs.cpp
│ │ │ ├── http_requests.cpp
│ │ │ ├── http_requests_emscripten.cpp
│ │ │ ├── http_requests_native.cpp
│ │ │ ├── imgui_hooks.cpp
│ │ │ ├── keys.cpp
│ │ │ ├── logger.cpp
│ │ │ ├── macos_menu.m
│ │ │ ├── magic.cpp
│ │ │ ├── opengl.cpp
│ │ │ ├── patches.cpp
│ │ │ ├── scaling.cpp
│ │ │ ├── semantic_version.cpp
│ │ │ ├── tar.cpp
│ │ │ ├── udp_server.cpp
│ │ │ ├── utils.cpp
│ │ │ ├── utils_linux.cpp
│ │ │ └── utils_macos.m
│ │ ├── mcp/
│ │ │ ├── client.cpp
│ │ │ └── server.cpp
│ │ ├── providers/
│ │ │ ├── cached_provider.cpp
│ │ │ ├── memory_provider.cpp
│ │ │ ├── provider.cpp
│ │ │ └── undo/
│ │ │ └── stack.cpp
│ │ ├── subcommands/
│ │ │ └── subcommands.cpp
│ │ ├── test/
│ │ │ └── tests.cpp
│ │ └── ui/
│ │ ├── banner.cpp
│ │ ├── imgui_imhex_extensions.cpp
│ │ ├── popup.cpp
│ │ ├── toast.cpp
│ │ └── view.cpp
│ ├── third_party/
│ │ ├── .clang-tidy
│ │ ├── boost/
│ │ │ ├── CMakeLists.txt
│ │ │ └── regex/
│ │ │ ├── CMakeLists.txt
│ │ │ └── include/
│ │ │ └── boost/
│ │ │ ├── cregex.hpp
│ │ │ ├── regex/
│ │ │ │ ├── concepts.hpp
│ │ │ │ ├── config/
│ │ │ │ │ ├── borland.hpp
│ │ │ │ │ └── cwchar.hpp
│ │ │ │ ├── config.hpp
│ │ │ │ ├── icu.hpp
│ │ │ │ ├── mfc.hpp
│ │ │ │ ├── pattern_except.hpp
│ │ │ │ ├── pending/
│ │ │ │ │ ├── object_cache.hpp
│ │ │ │ │ ├── static_mutex.hpp
│ │ │ │ │ └── unicode_iterator.hpp
│ │ │ │ ├── regex_traits.hpp
│ │ │ │ ├── user.hpp
│ │ │ │ ├── v4/
│ │ │ │ │ ├── basic_regex.hpp
│ │ │ │ │ ├── basic_regex_creator.hpp
│ │ │ │ │ ├── basic_regex_parser.hpp
│ │ │ │ │ ├── c_regex_traits.hpp
│ │ │ │ │ ├── char_regex_traits.hpp
│ │ │ │ │ ├── cpp_regex_traits.hpp
│ │ │ │ │ ├── cregex.hpp
│ │ │ │ │ ├── error_type.hpp
│ │ │ │ │ ├── icu.hpp
│ │ │ │ │ ├── indexed_bit_flag.hpp
│ │ │ │ │ ├── iterator_category.hpp
│ │ │ │ │ ├── iterator_traits.hpp
│ │ │ │ │ ├── match_flags.hpp
│ │ │ │ │ ├── match_results.hpp
│ │ │ │ │ ├── mem_block_cache.hpp
│ │ │ │ │ ├── object_cache.hpp
│ │ │ │ │ ├── pattern_except.hpp
│ │ │ │ │ ├── perl_matcher.hpp
│ │ │ │ │ ├── perl_matcher_common.hpp
│ │ │ │ │ ├── perl_matcher_non_recursive.hpp
│ │ │ │ │ ├── perl_matcher_recursive.hpp
│ │ │ │ │ ├── primary_transform.hpp
│ │ │ │ │ ├── protected_call.hpp
│ │ │ │ │ ├── regbase.hpp
│ │ │ │ │ ├── regex.hpp
│ │ │ │ │ ├── regex_format.hpp
│ │ │ │ │ ├── regex_fwd.hpp
│ │ │ │ │ ├── regex_grep.hpp
│ │ │ │ │ ├── regex_iterator.hpp
│ │ │ │ │ ├── regex_match.hpp
│ │ │ │ │ ├── regex_merge.hpp
│ │ │ │ │ ├── regex_raw_buffer.hpp
│ │ │ │ │ ├── regex_replace.hpp
│ │ │ │ │ ├── regex_search.hpp
│ │ │ │ │ ├── regex_split.hpp
│ │ │ │ │ ├── regex_token_iterator.hpp
│ │ │ │ │ ├── regex_traits.hpp
│ │ │ │ │ ├── regex_traits_defaults.hpp
│ │ │ │ │ ├── regex_workaround.hpp
│ │ │ │ │ ├── states.hpp
│ │ │ │ │ ├── sub_match.hpp
│ │ │ │ │ ├── syntax_type.hpp
│ │ │ │ │ ├── u32regex_iterator.hpp
│ │ │ │ │ ├── u32regex_token_iterator.hpp
│ │ │ │ │ ├── unicode_iterator.hpp
│ │ │ │ │ └── w32_regex_traits.hpp
│ │ │ │ └── v5/
│ │ │ │ ├── basic_regex.hpp
│ │ │ │ ├── basic_regex_creator.hpp
│ │ │ │ ├── basic_regex_parser.hpp
│ │ │ │ ├── c_regex_traits.hpp
│ │ │ │ ├── char_regex_traits.hpp
│ │ │ │ ├── cpp_regex_traits.hpp
│ │ │ │ ├── cregex.hpp
│ │ │ │ ├── error_type.hpp
│ │ │ │ ├── icu.hpp
│ │ │ │ ├── iterator_category.hpp
│ │ │ │ ├── iterator_traits.hpp
│ │ │ │ ├── match_flags.hpp
│ │ │ │ ├── match_results.hpp
│ │ │ │ ├── mem_block_cache.hpp
│ │ │ │ ├── object_cache.hpp
│ │ │ │ ├── pattern_except.hpp
│ │ │ │ ├── perl_matcher.hpp
│ │ │ │ ├── perl_matcher_common.hpp
│ │ │ │ ├── perl_matcher_non_recursive.hpp
│ │ │ │ ├── primary_transform.hpp
│ │ │ │ ├── regbase.hpp
│ │ │ │ ├── regex.hpp
│ │ │ │ ├── regex_format.hpp
│ │ │ │ ├── regex_fwd.hpp
│ │ │ │ ├── regex_grep.hpp
│ │ │ │ ├── regex_iterator.hpp
│ │ │ │ ├── regex_match.hpp
│ │ │ │ ├── regex_merge.hpp
│ │ │ │ ├── regex_raw_buffer.hpp
│ │ │ │ ├── regex_replace.hpp
│ │ │ │ ├── regex_search.hpp
│ │ │ │ ├── regex_split.hpp
│ │ │ │ ├── regex_token_iterator.hpp
│ │ │ │ ├── regex_traits.hpp
│ │ │ │ ├── regex_traits_defaults.hpp
│ │ │ │ ├── regex_workaround.hpp
│ │ │ │ ├── states.hpp
│ │ │ │ ├── sub_match.hpp
│ │ │ │ ├── syntax_type.hpp
│ │ │ │ ├── u32regex_iterator.hpp
│ │ │ │ ├── u32regex_token_iterator.hpp
│ │ │ │ ├── unicode_iterator.hpp
│ │ │ │ └── w32_regex_traits.hpp
│ │ │ ├── regex.h
│ │ │ ├── regex.hpp
│ │ │ └── regex_fwd.hpp
│ │ ├── imgui/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── backend/
│ │ │ │ ├── CMakeLists.txt
│ │ │ │ ├── include/
│ │ │ │ │ ├── emscripten_browser_clipboard.h
│ │ │ │ │ ├── imgui_impl_glfw.h
│ │ │ │ │ ├── imgui_impl_opengl3.h
│ │ │ │ │ ├── imgui_impl_opengl3_loader.h
│ │ │ │ │ ├── opengl_support.h
│ │ │ │ │ └── stb_image.h
│ │ │ │ └── source/
│ │ │ │ ├── imgui_impl_glfw.cpp
│ │ │ │ └── imgui_impl_opengl3.cpp
│ │ │ ├── cimgui/
│ │ │ │ ├── CMakeLists.txt
│ │ │ │ ├── include/
│ │ │ │ │ └── cimgui.h
│ │ │ │ └── source/
│ │ │ │ └── cimgui.cpp
│ │ │ ├── imgui/
│ │ │ │ ├── CMakeLists.txt
│ │ │ │ ├── LICENSE.txt
│ │ │ │ ├── README.md
│ │ │ │ ├── include/
│ │ │ │ │ ├── imconfig.h
│ │ │ │ │ ├── imgui.h
│ │ │ │ │ ├── imgui_internal.h
│ │ │ │ │ ├── imstb_rectpack.h
│ │ │ │ │ ├── imstb_textedit.h
│ │ │ │ │ ├── imstb_truetype.h
│ │ │ │ │ └── misc/
│ │ │ │ │ └── freetype/
│ │ │ │ │ └── imgui_freetype.h
│ │ │ │ └── source/
│ │ │ │ ├── imgui.cpp
│ │ │ │ ├── imgui_demo.cpp
│ │ │ │ ├── imgui_draw.cpp
│ │ │ │ ├── imgui_tables.cpp
│ │ │ │ ├── imgui_widgets.cpp
│ │ │ │ └── misc/
│ │ │ │ └── freetype/
│ │ │ │ └── imgui_freetype.cpp
│ │ │ ├── imgui_test_engine/
│ │ │ │ ├── CMakeLists.txt
│ │ │ │ ├── LICENSE.txt
│ │ │ │ ├── README.md
│ │ │ │ ├── include/
│ │ │ │ │ ├── imgui_capture_tool.h
│ │ │ │ │ ├── imgui_te_context.h
│ │ │ │ │ ├── imgui_te_coroutine.h
│ │ │ │ │ ├── imgui_te_engine.h
│ │ │ │ │ ├── imgui_te_exporters.h
│ │ │ │ │ ├── imgui_te_imconfig.h
│ │ │ │ │ ├── imgui_te_internal.h
│ │ │ │ │ ├── imgui_te_perftool.h
│ │ │ │ │ ├── imgui_te_ui.h
│ │ │ │ │ ├── imgui_te_utils.h
│ │ │ │ │ └── thirdparty/
│ │ │ │ │ ├── README.md
│ │ │ │ │ ├── Str/
│ │ │ │ │ │ ├── .editorconfig
│ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ ├── Str.h
│ │ │ │ │ │ └── Str.natvis
│ │ │ │ │ └── stb/
│ │ │ │ │ └── imstb_image_write.h
│ │ │ │ └── source/
│ │ │ │ ├── imgui_capture_tool.cpp
│ │ │ │ ├── imgui_te_context.cpp
│ │ │ │ ├── imgui_te_coroutine.cpp
│ │ │ │ ├── imgui_te_engine.cpp
│ │ │ │ ├── imgui_te_exporters.cpp
│ │ │ │ ├── imgui_te_perftool.cpp
│ │ │ │ ├── imgui_te_ui.cpp
│ │ │ │ └── imgui_te_utils.cpp
│ │ │ ├── imnodes/
│ │ │ │ ├── CMakeLists.txt
│ │ │ │ ├── LICENSE.md
│ │ │ │ ├── README.md
│ │ │ │ ├── include/
│ │ │ │ │ ├── imnodes.h
│ │ │ │ │ └── imnodes_internal.h
│ │ │ │ └── source/
│ │ │ │ └── imnodes.cpp
│ │ │ ├── implot/
│ │ │ │ ├── CMakeLists.txt
│ │ │ │ ├── LICENSE.txt
│ │ │ │ ├── README.md
│ │ │ │ ├── include/
│ │ │ │ │ ├── implot.h
│ │ │ │ │ └── implot_internal.h
│ │ │ │ └── source/
│ │ │ │ ├── implot.cpp
│ │ │ │ ├── implot_demo.cpp
│ │ │ │ └── implot_items.cpp
│ │ │ └── implot3d/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── include/
│ │ │ │ ├── implot3d.h
│ │ │ │ └── implot3d_internal.h
│ │ │ └── source/
│ │ │ ├── implot3d.cpp
│ │ │ ├── implot3d_demo.cpp
│ │ │ ├── implot3d_items.cpp
│ │ │ └── implot3d_meshes.cpp
│ │ ├── llvm-demangle/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── LICENSE.TXT
│ │ │ ├── include/
│ │ │ │ └── llvm/
│ │ │ │ └── Demangle/
│ │ │ │ ├── Demangle.h
│ │ │ │ ├── DemangleConfig.h
│ │ │ │ ├── ItaniumDemangle.h
│ │ │ │ ├── ItaniumNodes.def
│ │ │ │ ├── MicrosoftDemangle.h
│ │ │ │ ├── MicrosoftDemangleNodes.h
│ │ │ │ ├── README.txt
│ │ │ │ ├── StringViewExtras.h
│ │ │ │ └── Utility.h
│ │ │ └── source/
│ │ │ ├── DLangDemangle.cpp
│ │ │ ├── Demangle.cpp
│ │ │ ├── ItaniumDemangle.cpp
│ │ │ ├── MicrosoftDemangle.cpp
│ │ │ ├── MicrosoftDemangleNodes.cpp
│ │ │ └── RustDemangle.cpp
│ │ ├── microtar/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── include/
│ │ │ │ └── microtar.h
│ │ │ └── source/
│ │ │ └── microtar.c
│ │ ├── miniaudio/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── LICENSE
│ │ │ ├── include/
│ │ │ │ └── miniaudio.h
│ │ │ └── source/
│ │ │ └── miniaudio.c
│ │ ├── nlohmann_json/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── LICENSE.MIT
│ │ │ ├── cmake/
│ │ │ │ ├── config.cmake.in
│ │ │ │ ├── nlohmann_jsonConfigVersion.cmake.in
│ │ │ │ └── pkg-config.pc.in
│ │ │ ├── include/
│ │ │ │ └── nlohmann/
│ │ │ │ ├── adl_serializer.hpp
│ │ │ │ ├── byte_container_with_subtype.hpp
│ │ │ │ ├── detail/
│ │ │ │ │ ├── abi_macros.hpp
│ │ │ │ │ ├── conversions/
│ │ │ │ │ │ ├── from_json.hpp
│ │ │ │ │ │ ├── to_chars.hpp
│ │ │ │ │ │ └── to_json.hpp
│ │ │ │ │ ├── exceptions.hpp
│ │ │ │ │ ├── hash.hpp
│ │ │ │ │ ├── input/
│ │ │ │ │ │ ├── binary_reader.hpp
│ │ │ │ │ │ ├── input_adapters.hpp
│ │ │ │ │ │ ├── json_sax.hpp
│ │ │ │ │ │ ├── lexer.hpp
│ │ │ │ │ │ ├── parser.hpp
│ │ │ │ │ │ └── position_t.hpp
│ │ │ │ │ ├── iterators/
│ │ │ │ │ │ ├── internal_iterator.hpp
│ │ │ │ │ │ ├── iter_impl.hpp
│ │ │ │ │ │ ├── iteration_proxy.hpp
│ │ │ │ │ │ ├── iterator_traits.hpp
│ │ │ │ │ │ ├── json_reverse_iterator.hpp
│ │ │ │ │ │ └── primitive_iterator.hpp
│ │ │ │ │ ├── json_custom_base_class.hpp
│ │ │ │ │ ├── json_pointer.hpp
│ │ │ │ │ ├── json_ref.hpp
│ │ │ │ │ ├── macro_scope.hpp
│ │ │ │ │ ├── macro_unscope.hpp
│ │ │ │ │ ├── meta/
│ │ │ │ │ │ ├── call_std/
│ │ │ │ │ │ │ ├── begin.hpp
│ │ │ │ │ │ │ └── end.hpp
│ │ │ │ │ │ ├── cpp_future.hpp
│ │ │ │ │ │ ├── detected.hpp
│ │ │ │ │ │ ├── identity_tag.hpp
│ │ │ │ │ │ ├── is_sax.hpp
│ │ │ │ │ │ ├── std_fs.hpp
│ │ │ │ │ │ ├── type_traits.hpp
│ │ │ │ │ │ └── void_t.hpp
│ │ │ │ │ ├── output/
│ │ │ │ │ │ ├── binary_writer.hpp
│ │ │ │ │ │ ├── output_adapters.hpp
│ │ │ │ │ │ └── serializer.hpp
│ │ │ │ │ ├── string_concat.hpp
│ │ │ │ │ ├── string_escape.hpp
│ │ │ │ │ ├── string_utils.hpp
│ │ │ │ │ └── value_t.hpp
│ │ │ │ ├── json.hpp
│ │ │ │ ├── json_fwd.hpp
│ │ │ │ ├── ordered_map.hpp
│ │ │ │ └── thirdparty/
│ │ │ │ └── hedley/
│ │ │ │ ├── hedley.hpp
│ │ │ │ └── hedley_undef.hpp
│ │ │ ├── nlohmann_json.natvis
│ │ │ └── single_include/
│ │ │ └── nlohmann/
│ │ │ ├── json.hpp
│ │ │ └── json_fwd.hpp
│ │ └── yara/
│ │ ├── CMakeLists.txt
│ │ └── crypto.h
│ └── trace/
│ ├── CMakeLists.txt
│ ├── include/
│ │ └── hex/
│ │ └── trace/
│ │ ├── exceptions.hpp
│ │ └── stacktrace.hpp
│ └── source/
│ ├── exceptions.cpp
│ ├── instr_entry.cpp
│ └── stacktrace.cpp
├── main/
│ ├── CMakeLists.txt
│ ├── forwarder/
│ │ ├── CMakeLists.txt
│ │ └── source/
│ │ └── main.cpp
│ ├── gui/
│ │ ├── CMakeLists.txt
│ │ ├── include/
│ │ │ ├── crash_handlers.hpp
│ │ │ ├── init/
│ │ │ │ ├── run.hpp
│ │ │ │ ├── splash_window.hpp
│ │ │ │ └── tasks.hpp
│ │ │ ├── messaging.hpp
│ │ │ └── window.hpp
│ │ ├── romfs/
│ │ │ └── splash_colors.json
│ │ └── source/
│ │ ├── crash_handlers.cpp
│ │ ├── init/
│ │ │ ├── run/
│ │ │ │ ├── cli.cpp
│ │ │ │ ├── common.cpp
│ │ │ │ ├── desktop.cpp
│ │ │ │ └── web.cpp
│ │ │ ├── splash_window.cpp
│ │ │ └── tasks.cpp
│ │ ├── main.cpp
│ │ ├── messaging/
│ │ │ ├── common.cpp
│ │ │ ├── linux.cpp
│ │ │ ├── macos.cpp
│ │ │ ├── web.cpp
│ │ │ └── windows.cpp
│ │ └── window/
│ │ ├── platform/
│ │ │ ├── linux.cpp
│ │ │ ├── macos.cpp
│ │ │ ├── web.cpp
│ │ │ └── windows.cpp
│ │ └── window.cpp
│ └── updater/
│ ├── CMakeLists.txt
│ └── source/
│ └── main.cpp
├── plugins/
│ ├── builtin/
│ │ ├── CMakeLists.txt
│ │ ├── include/
│ │ │ ├── content/
│ │ │ │ ├── command_line_interface.hpp
│ │ │ │ ├── data_processor_nodes.hpp
│ │ │ │ ├── differing_byte_searcher.hpp
│ │ │ │ ├── export_formatters/
│ │ │ │ │ ├── export_formatter.hpp
│ │ │ │ │ ├── export_formatter_csv.hpp
│ │ │ │ │ ├── export_formatter_json.hpp
│ │ │ │ │ └── export_formatter_tsv.hpp
│ │ │ │ ├── global_actions.hpp
│ │ │ │ ├── helpers/
│ │ │ │ │ ├── constants.hpp
│ │ │ │ │ └── diagrams.hpp
│ │ │ │ ├── popups/
│ │ │ │ │ ├── hex_editor/
│ │ │ │ │ │ ├── popup_hex_editor_base_address.hpp
│ │ │ │ │ │ ├── popup_hex_editor_decoded_string.hpp
│ │ │ │ │ │ ├── popup_hex_editor_fill.hpp
│ │ │ │ │ │ ├── popup_hex_editor_find.hpp
│ │ │ │ │ │ ├── popup_hex_editor_goto.hpp
│ │ │ │ │ │ ├── popup_hex_editor_insert.hpp
│ │ │ │ │ │ ├── popup_hex_editor_page_size.hpp
│ │ │ │ │ │ ├── popup_hex_editor_paste_behaviour.hpp
│ │ │ │ │ │ ├── popup_hex_editor_remove.hpp
│ │ │ │ │ │ ├── popup_hex_editor_resize.hpp
│ │ │ │ │ │ └── popup_hex_editor_select.hpp
│ │ │ │ │ ├── popup_blocking_task.hpp
│ │ │ │ │ ├── popup_crash_recovered.hpp
│ │ │ │ │ ├── popup_docs_question.hpp
│ │ │ │ │ ├── popup_tasks_waiting.hpp
│ │ │ │ │ └── popup_unsaved_changes.hpp
│ │ │ │ ├── providers/
│ │ │ │ │ ├── base64_provider.hpp
│ │ │ │ │ ├── command_provider.hpp
│ │ │ │ │ ├── disk_provider.hpp
│ │ │ │ │ ├── file_provider.hpp
│ │ │ │ │ ├── gdb_provider.hpp
│ │ │ │ │ ├── intel_hex_provider.hpp
│ │ │ │ │ ├── memory_file_provider.hpp
│ │ │ │ │ ├── motorola_srec_provider.hpp
│ │ │ │ │ ├── null_provider.hpp
│ │ │ │ │ ├── process_memory_provider.hpp
│ │ │ │ │ ├── udp_provider.hpp
│ │ │ │ │ ├── undo_operations/
│ │ │ │ │ │ ├── operation_bookmark.hpp
│ │ │ │ │ │ ├── operation_insert.hpp
│ │ │ │ │ │ ├── operation_remove.hpp
│ │ │ │ │ │ └── operation_write.hpp
│ │ │ │ │ └── view_provider.hpp
│ │ │ │ ├── recent.hpp
│ │ │ │ ├── text_highlighting/
│ │ │ │ │ └── pattern_language.hpp
│ │ │ │ ├── tools_entries.hpp
│ │ │ │ └── views/
│ │ │ │ ├── fullscreen/
│ │ │ │ │ ├── view_fullscreen_file_info.hpp
│ │ │ │ │ └── view_fullscreen_save_editor.hpp
│ │ │ │ ├── view_about.hpp
│ │ │ │ ├── view_achievements.hpp
│ │ │ │ ├── view_bookmarks.hpp
│ │ │ │ ├── view_command_palette.hpp
│ │ │ │ ├── view_data_inspector.hpp
│ │ │ │ ├── view_data_processor.hpp
│ │ │ │ ├── view_find.hpp
│ │ │ │ ├── view_hex_editor.hpp
│ │ │ │ ├── view_highlight_rules.hpp
│ │ │ │ ├── view_information.hpp
│ │ │ │ ├── view_logs.hpp
│ │ │ │ ├── view_patches.hpp
│ │ │ │ ├── view_pattern_data.hpp
│ │ │ │ ├── view_pattern_editor.hpp
│ │ │ │ ├── view_provider_settings.hpp
│ │ │ │ ├── view_settings.hpp
│ │ │ │ ├── view_store.hpp
│ │ │ │ ├── view_theme_manager.hpp
│ │ │ │ ├── view_tools.hpp
│ │ │ │ └── view_tutorials.hpp
│ │ │ └── plugin_builtin.hpp
│ │ ├── romfs/
│ │ │ ├── assets/
│ │ │ │ ├── common/
│ │ │ │ │ └── color_names.json
│ │ │ │ └── screenshot_descriptions.json
│ │ │ ├── auto_extract/
│ │ │ │ └── workspaces/
│ │ │ │ ├── default.hexws
│ │ │ │ └── minimal.hexws
│ │ │ ├── lang/
│ │ │ │ ├── de_DE.json
│ │ │ │ ├── en_US.json
│ │ │ │ ├── es_ES.json
│ │ │ │ ├── fr_FR.json
│ │ │ │ ├── hu_HU.json
│ │ │ │ ├── it_IT.json
│ │ │ │ ├── ja_JP.json
│ │ │ │ ├── ko_KR.json
│ │ │ │ ├── languages.json
│ │ │ │ ├── pl_PL.json
│ │ │ │ ├── pt_BR.json
│ │ │ │ ├── ru_RU.json
│ │ │ │ ├── uk_UA.json
│ │ │ │ ├── zh_CN.json
│ │ │ │ └── zh_TW.json
│ │ │ ├── layouts/
│ │ │ │ ├── default.hexlyt
│ │ │ │ └── minimal.hexlyt
│ │ │ ├── licenses/
│ │ │ │ └── LICENSE
│ │ │ ├── logo.ans
│ │ │ ├── mcp/
│ │ │ │ └── tools/
│ │ │ │ ├── execute_pattern_code.json
│ │ │ │ ├── get_pattern_console_content.json
│ │ │ │ ├── get_patterns.json
│ │ │ │ ├── list_open_data_sources.json
│ │ │ │ ├── open_file.json
│ │ │ │ ├── read_data.json
│ │ │ │ └── select_data_source.json
│ │ │ ├── shaders/
│ │ │ │ └── retro/
│ │ │ │ ├── fragment.glsl
│ │ │ │ └── vertex.glsl
│ │ │ ├── themes/
│ │ │ │ ├── classic.json
│ │ │ │ ├── dark.json
│ │ │ │ └── light.json
│ │ │ └── tips.json
│ │ ├── source/
│ │ │ ├── content/
│ │ │ │ ├── achievements.cpp
│ │ │ │ ├── background_services.cpp
│ │ │ │ ├── command_line_interface.cpp
│ │ │ │ ├── command_palette_commands.cpp
│ │ │ │ ├── communication_interface.cpp
│ │ │ │ ├── data_formatters.cpp
│ │ │ │ ├── data_information_sections.cpp
│ │ │ │ ├── data_inspector.cpp
│ │ │ │ ├── data_processor_nodes/
│ │ │ │ │ ├── basic_nodes.cpp
│ │ │ │ │ ├── control_nodes.cpp
│ │ │ │ │ ├── decode_nodes.cpp
│ │ │ │ │ ├── logic_nodes.cpp
│ │ │ │ │ ├── math_nodes.cpp
│ │ │ │ │ ├── other_nodes.cpp
│ │ │ │ │ └── visual_nodes.cpp
│ │ │ │ ├── data_processor_nodes.cpp
│ │ │ │ ├── data_visualizers.cpp
│ │ │ │ ├── differing_byte_searcher.cpp
│ │ │ │ ├── events.cpp
│ │ │ │ ├── file_extraction.cpp
│ │ │ │ ├── file_handlers.cpp
│ │ │ │ ├── global_actions.cpp
│ │ │ │ ├── helpers/
│ │ │ │ │ └── constants.cpp
│ │ │ │ ├── init_tasks.cpp
│ │ │ │ ├── main_menu_items.cpp
│ │ │ │ ├── mcp_tools.cpp
│ │ │ │ ├── minimap_visualizers.cpp
│ │ │ │ ├── out_of_box_experience.cpp
│ │ │ │ ├── pl_builtin_functions.cpp
│ │ │ │ ├── pl_builtin_types.cpp
│ │ │ │ ├── pl_pragmas.cpp
│ │ │ │ ├── pl_visualizers/
│ │ │ │ │ ├── chunk_entropy.cpp
│ │ │ │ │ └── hex_viewer.cpp
│ │ │ │ ├── pl_visualizers.cpp
│ │ │ │ ├── popups/
│ │ │ │ │ └── hex_editor/
│ │ │ │ │ ├── popup_hex_editor_base_address.cpp
│ │ │ │ │ ├── popup_hex_editor_decoded_string.cpp
│ │ │ │ │ ├── popup_hex_editor_fill.cpp
│ │ │ │ │ ├── popup_hex_editor_find.cpp
│ │ │ │ │ ├── popup_hex_editor_goto.cpp
│ │ │ │ │ ├── popup_hex_editor_insert.cpp
│ │ │ │ │ ├── popup_hex_editor_page_size.cpp
│ │ │ │ │ ├── popup_hex_editor_paste_behaviour.cpp
│ │ │ │ │ ├── popup_hex_editor_remove.cpp
│ │ │ │ │ ├── popup_hex_editor_resize.cpp
│ │ │ │ │ └── popup_hex_editor_select.cpp
│ │ │ │ ├── project.cpp
│ │ │ │ ├── providers/
│ │ │ │ │ ├── base64_provider.cpp
│ │ │ │ │ ├── command_provider.cpp
│ │ │ │ │ ├── disk_provider.cpp
│ │ │ │ │ ├── file_provider.cpp
│ │ │ │ │ ├── gdb_provider.cpp
│ │ │ │ │ ├── intel_hex_provider.cpp
│ │ │ │ │ ├── memory_file_provider.cpp
│ │ │ │ │ ├── motorola_srec_provider.cpp
│ │ │ │ │ ├── process_memory_provider.cpp
│ │ │ │ │ ├── udp_provider.cpp
│ │ │ │ │ └── view_provider.cpp
│ │ │ │ ├── providers.cpp
│ │ │ │ ├── recent.cpp
│ │ │ │ ├── report_generators.cpp
│ │ │ │ ├── settings_entries.cpp
│ │ │ │ ├── text_highlighting/
│ │ │ │ │ └── pattern_language.cpp
│ │ │ │ ├── themes.cpp
│ │ │ │ ├── tools/
│ │ │ │ │ ├── ascii_table.cpp
│ │ │ │ │ ├── base_converter.cpp
│ │ │ │ │ ├── byte_swapper.cpp
│ │ │ │ │ ├── color_picker.cpp
│ │ │ │ │ ├── demangler.cpp
│ │ │ │ │ ├── euclidean_alg.cpp
│ │ │ │ │ ├── file_tool_combiner.cpp
│ │ │ │ │ ├── file_tool_shredder.cpp
│ │ │ │ │ ├── file_tool_splitter.cpp
│ │ │ │ │ ├── file_uploader.cpp
│ │ │ │ │ ├── graphing_calc.cpp
│ │ │ │ │ ├── http_requests.cpp
│ │ │ │ │ ├── ieee_decoder.cpp
│ │ │ │ │ ├── math_eval.cpp
│ │ │ │ │ ├── multiplication_decoder.cpp
│ │ │ │ │ ├── perms_calc.cpp
│ │ │ │ │ ├── regex_replacer.cpp
│ │ │ │ │ ├── tcp_client_server.cpp
│ │ │ │ │ └── wiki_explainer.cpp
│ │ │ │ ├── tools_entries.cpp
│ │ │ │ ├── tutorials/
│ │ │ │ │ ├── introduction.cpp
│ │ │ │ │ └── tutorials.cpp
│ │ │ │ ├── ui_items.cpp
│ │ │ │ ├── views/
│ │ │ │ │ ├── fullscreen/
│ │ │ │ │ │ ├── view_fullscreen_file_info.cpp
│ │ │ │ │ │ └── view_fullscreen_save_editor.cpp
│ │ │ │ │ ├── view_about.cpp
│ │ │ │ │ ├── view_achievements.cpp
│ │ │ │ │ ├── view_bookmarks.cpp
│ │ │ │ │ ├── view_command_palette.cpp
│ │ │ │ │ ├── view_data_inspector.cpp
│ │ │ │ │ ├── view_data_processor.cpp
│ │ │ │ │ ├── view_find.cpp
│ │ │ │ │ ├── view_hex_editor.cpp
│ │ │ │ │ ├── view_highlight_rules.cpp
│ │ │ │ │ ├── view_information.cpp
│ │ │ │ │ ├── view_logs.cpp
│ │ │ │ │ ├── view_patches.cpp
│ │ │ │ │ ├── view_pattern_data.cpp
│ │ │ │ │ ├── view_pattern_editor.cpp
│ │ │ │ │ ├── view_provider_settings.cpp
│ │ │ │ │ ├── view_settings.cpp
│ │ │ │ │ ├── view_store.cpp
│ │ │ │ │ ├── view_theme_manager.cpp
│ │ │ │ │ ├── view_tools.cpp
│ │ │ │ │ └── view_tutorials.cpp
│ │ │ │ ├── views.cpp
│ │ │ │ ├── welcome_screen.cpp
│ │ │ │ ├── window_decoration.cpp
│ │ │ │ └── workspaces.cpp
│ │ │ └── plugin_builtin.cpp
│ │ └── tests/
│ │ ├── CMakeLists.txt
│ │ └── source/
│ │ └── main.cpp
│ ├── decompress/
│ │ ├── CMakeLists.txt
│ │ └── source/
│ │ ├── content/
│ │ │ └── pl_functions.cpp
│ │ └── plugin_decompress.cpp
│ ├── diffing/
│ │ ├── CMakeLists.txt
│ │ ├── include/
│ │ │ └── content/
│ │ │ └── views/
│ │ │ └── view_diff.hpp
│ │ ├── romfs/
│ │ │ └── lang/
│ │ │ ├── de_DE.json
│ │ │ ├── en_US.json
│ │ │ ├── es_ES.json
│ │ │ ├── fr_FR.json
│ │ │ ├── hu_HU.json
│ │ │ ├── it_IT.json
│ │ │ ├── ja_JP.json
│ │ │ ├── ko_KR.json
│ │ │ ├── languages.json
│ │ │ ├── pl_PL.json
│ │ │ ├── pt_BR.json
│ │ │ ├── ru_RU.json
│ │ │ ├── uk_UA.json
│ │ │ ├── zh_CN.json
│ │ │ └── zh_TW.json
│ │ └── source/
│ │ ├── content/
│ │ │ ├── diffing_algorithms.cpp
│ │ │ └── views/
│ │ │ └── view_diff.cpp
│ │ └── plugin_diffing.cpp
│ ├── disassembler/
│ │ ├── CMakeLists.txt
│ │ ├── include/
│ │ │ └── content/
│ │ │ ├── helpers/
│ │ │ │ └── capstone.hpp
│ │ │ └── views/
│ │ │ └── view_disassembler.hpp
│ │ ├── romfs/
│ │ │ └── lang/
│ │ │ ├── de_DE.json
│ │ │ ├── en_US.json
│ │ │ ├── es_ES.json
│ │ │ ├── fr_FR.json
│ │ │ ├── hu_HU.json
│ │ │ ├── it_IT.json
│ │ │ ├── ja_JP.json
│ │ │ ├── ko_KR.json
│ │ │ ├── languages.json
│ │ │ ├── pl_PL.json
│ │ │ ├── pt_BR.json
│ │ │ ├── ru_RU.json
│ │ │ ├── uk_UA.json
│ │ │ ├── zh_CN.json
│ │ │ └── zh_TW.json
│ │ └── source/
│ │ ├── content/
│ │ │ ├── disassemblers/
│ │ │ │ ├── capstone_architectures.cpp
│ │ │ │ └── custom_architectures.cpp
│ │ │ ├── pl_builtin_types.cpp
│ │ │ ├── pl_visualizers/
│ │ │ │ └── disassembler.cpp
│ │ │ └── views/
│ │ │ └── view_disassembler.cpp
│ │ └── plugin_disassembler.cpp
│ ├── fonts/
│ │ ├── CMakeLists.txt
│ │ ├── LICENSE
│ │ ├── include/
│ │ │ ├── font_settings.hpp
│ │ │ └── fonts/
│ │ │ ├── blender_icons.hpp
│ │ │ ├── fonts.hpp
│ │ │ ├── tabler_icons.hpp
│ │ │ └── vscode_icons.hpp
│ │ ├── romfs/
│ │ │ ├── BLENDERICONS_LICENSE.txt
│ │ │ ├── JETBRAINS_MONO_LICENSE.txt
│ │ │ ├── TABLERICONS_LICENSE.txt
│ │ │ ├── UNIFONT_LICENSE.txt
│ │ │ ├── VSCODICONS_LICENSE.txt
│ │ │ ├── fonts/
│ │ │ │ └── unifont.otf
│ │ │ └── lang/
│ │ │ ├── de_DE.json
│ │ │ ├── en_US.json
│ │ │ ├── es_ES.json
│ │ │ ├── fr_FR.json
│ │ │ ├── hu_HU.json
│ │ │ ├── it_IT.json
│ │ │ ├── ja_JP.json
│ │ │ ├── ko_KR.json
│ │ │ ├── languages.json
│ │ │ ├── pl_PL.json
│ │ │ ├── pt_BR.json
│ │ │ ├── ru_RU.json
│ │ │ ├── uk_UA.json
│ │ │ ├── zh_CN.json
│ │ │ └── zh_TW.json
│ │ └── source/
│ │ ├── font_loader.cpp
│ │ ├── font_settings.cpp
│ │ ├── fonts.cpp
│ │ └── library_fonts.cpp
│ ├── hashes/
│ │ ├── CMakeLists.txt
│ │ ├── include/
│ │ │ └── content/
│ │ │ └── views/
│ │ │ └── view_hashes.hpp
│ │ ├── romfs/
│ │ │ └── lang/
│ │ │ ├── de_DE.json
│ │ │ ├── en_US.json
│ │ │ ├── es_ES.json
│ │ │ ├── fr_FR.json
│ │ │ ├── hu_HU.json
│ │ │ ├── it_IT.json
│ │ │ ├── ja_JP.json
│ │ │ ├── ko_KR.json
│ │ │ ├── languages.json
│ │ │ ├── pl_PL.json
│ │ │ ├── pt_BR.json
│ │ │ ├── ru_RU.json
│ │ │ ├── uk_UA.json
│ │ │ ├── zh_CN.json
│ │ │ └── zh_TW.json
│ │ └── source/
│ │ ├── content/
│ │ │ ├── hashes.cpp
│ │ │ └── views/
│ │ │ └── view_hashes.cpp
│ │ └── plugin_hashes.cpp
│ ├── remote/
│ │ ├── CMakeLists.txt
│ │ ├── LICENSE
│ │ ├── include/
│ │ │ └── content/
│ │ │ ├── helpers/
│ │ │ │ └── sftp_client.hpp
│ │ │ └── providers/
│ │ │ └── ssh_provider.hpp
│ │ ├── romfs/
│ │ │ └── lang/
│ │ │ ├── de_DE.json
│ │ │ ├── en_US.json
│ │ │ ├── es_ES.json
│ │ │ ├── fr_FR.json
│ │ │ ├── hu_HU.json
│ │ │ ├── it_IT.json
│ │ │ ├── ja_JP.json
│ │ │ ├── ko_KR.json
│ │ │ ├── languages.json
│ │ │ ├── pl_PL.json
│ │ │ ├── pt_BR.json
│ │ │ ├── ru_RU.json
│ │ │ ├── uk_UA.json
│ │ │ ├── zh_CN.json
│ │ │ └── zh_TW.json
│ │ └── source/
│ │ ├── content/
│ │ │ ├── helpers/
│ │ │ │ └── sftp_client.cpp
│ │ │ └── providers/
│ │ │ └── ssh_provider.cpp
│ │ └── plugin_remote.cpp
│ ├── script_loader/
│ │ ├── CMakeLists.txt
│ │ ├── include/
│ │ │ └── loaders/
│ │ │ ├── dotnet/
│ │ │ │ └── dotnet_loader.hpp
│ │ │ └── loader.hpp
│ │ ├── romfs/
│ │ │ └── lang/
│ │ │ ├── de_DE.json
│ │ │ ├── en_US.json
│ │ │ ├── es_ES.json
│ │ │ ├── fr_FR.json
│ │ │ ├── hu_HU.json
│ │ │ ├── it_IT.json
│ │ │ ├── ja_JP.json
│ │ │ ├── ko_KR.json
│ │ │ ├── languages.json
│ │ │ ├── pl_PL.json
│ │ │ ├── pt_BR.json
│ │ │ ├── ru_RU.json
│ │ │ ├── uk_UA.json
│ │ │ ├── zh_CN.json
│ │ │ └── zh_TW.json
│ │ ├── source/
│ │ │ ├── loaders/
│ │ │ │ └── dotnet/
│ │ │ │ └── dotnet_loader.cpp
│ │ │ └── plugin_script_loader.cpp
│ │ ├── support/
│ │ │ ├── c/
│ │ │ │ ├── CMakeLists.txt
│ │ │ │ ├── include/
│ │ │ │ │ └── script_api.hpp
│ │ │ │ └── source/
│ │ │ │ └── script_api/
│ │ │ │ └── v1/
│ │ │ │ ├── bookmarks.cpp
│ │ │ │ ├── logger.cpp
│ │ │ │ ├── mem.cpp
│ │ │ │ └── ui.cpp
│ │ │ └── dotnet/
│ │ │ ├── AssemblyLoader/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── AssemblyLoader.csproj
│ │ │ │ ├── Program.cs
│ │ │ │ └── Properties/
│ │ │ │ └── PublishProfiles/
│ │ │ │ ├── FolderProfile.pubxml
│ │ │ │ └── FolderProfile.pubxml.user
│ │ │ └── CMakeLists.txt
│ │ └── templates/
│ │ └── CSharp/
│ │ ├── .gitignore
│ │ ├── ImHexLibrary/
│ │ │ ├── Bookmarks.cs
│ │ │ ├── ImHexLibrary.csproj
│ │ │ ├── Library.cs
│ │ │ ├── Logger.cs
│ │ │ ├── Memory.cs
│ │ │ └── UI.cs
│ │ ├── ImHexScript/
│ │ │ ├── ImHexScript.csproj
│ │ │ └── Program.cs
│ │ └── ImHexScript.sln
│ ├── ui/
│ │ ├── CMakeLists.txt
│ │ ├── LICENSE
│ │ ├── include/
│ │ │ ├── banners/
│ │ │ │ ├── banner_button.hpp
│ │ │ │ └── banner_icon.hpp
│ │ │ ├── popups/
│ │ │ │ ├── popup_file_chooser.hpp
│ │ │ │ ├── popup_notification.hpp
│ │ │ │ ├── popup_question.hpp
│ │ │ │ └── popup_text_input.hpp
│ │ │ ├── toasts/
│ │ │ │ └── toast_notification.hpp
│ │ │ └── ui/
│ │ │ ├── hex_editor.hpp
│ │ │ ├── markdown.hpp
│ │ │ ├── pattern_drawer.hpp
│ │ │ ├── pattern_value_editor.hpp
│ │ │ ├── text_editor.hpp
│ │ │ ├── visualizer_drawer.hpp
│ │ │ └── widgets.hpp
│ │ ├── romfs/
│ │ │ └── lang/
│ │ │ ├── de_DE.json
│ │ │ ├── en_US.json
│ │ │ ├── es_ES.json
│ │ │ ├── fr_FR.json
│ │ │ ├── hu_HU.json
│ │ │ ├── it_IT.json
│ │ │ ├── ja_JP.json
│ │ │ ├── ko_KR.json
│ │ │ ├── languages.json
│ │ │ ├── pl_PL.json
│ │ │ ├── pt_BR.json
│ │ │ ├── ru_RU.json
│ │ │ ├── uk_UA.json
│ │ │ ├── zh_CN.json
│ │ │ └── zh_TW.json
│ │ └── source/
│ │ ├── library_ui.cpp
│ │ └── ui/
│ │ ├── hex_editor.cpp
│ │ ├── markdown.cpp
│ │ ├── menu_items.cpp
│ │ ├── pattern_drawer.cpp
│ │ ├── pattern_value_editor.cpp
│ │ ├── text_editor/
│ │ │ ├── LICENSE.txt
│ │ │ ├── editor.cpp
│ │ │ ├── highlighter.cpp
│ │ │ ├── navigate.cpp
│ │ │ ├── render.cpp
│ │ │ ├── support.cpp
│ │ │ └── utf8.cpp
│ │ ├── visualizer_drawer.cpp
│ │ └── widgets.cpp
│ ├── visualizers/
│ │ ├── CMakeLists.txt
│ │ ├── include/
│ │ │ └── content/
│ │ │ └── visualizer_helpers.hpp
│ │ ├── romfs/
│ │ │ ├── lang/
│ │ │ │ ├── de_DE.json
│ │ │ │ ├── en_US.json
│ │ │ │ ├── es_ES.json
│ │ │ │ ├── fr_FR.json
│ │ │ │ ├── hu_HU.json
│ │ │ │ ├── it_IT.json
│ │ │ │ ├── ja_JP.json
│ │ │ │ ├── ko_KR.json
│ │ │ │ ├── languages.json
│ │ │ │ ├── pl_PL.json
│ │ │ │ ├── pt_BR.json
│ │ │ │ ├── ru_RU.json
│ │ │ │ ├── uk_UA.json
│ │ │ │ ├── zh_CN.json
│ │ │ │ └── zh_TW.json
│ │ │ ├── licenses/
│ │ │ │ └── MAP_LICENSE
│ │ │ └── shaders/
│ │ │ └── default/
│ │ │ ├── fragment.glsl
│ │ │ ├── lightFragment.glsl
│ │ │ ├── lightVertex.glsl
│ │ │ ├── lineFragment.glsl
│ │ │ ├── lineVertex.glsl
│ │ │ └── vertex.glsl
│ │ └── source/
│ │ ├── content/
│ │ │ ├── pl_inline_visualizers.cpp
│ │ │ ├── pl_visualizers/
│ │ │ │ ├── 3d_model.cpp
│ │ │ │ ├── coordinates.cpp
│ │ │ │ ├── digital_signal.cpp
│ │ │ │ ├── image.cpp
│ │ │ │ ├── line_plot.cpp
│ │ │ │ ├── scatter_plot.cpp
│ │ │ │ ├── sound.cpp
│ │ │ │ ├── table.cpp
│ │ │ │ └── timestamp.cpp
│ │ │ └── pl_visualizers.cpp
│ │ └── plugin_visualizers.cpp
│ ├── windows/
│ │ ├── CMakeLists.txt
│ │ ├── include/
│ │ │ └── views/
│ │ │ └── view_tty_console.hpp
│ │ ├── romfs/
│ │ │ └── lang/
│ │ │ ├── de_DE.json
│ │ │ ├── en_US.json
│ │ │ ├── es_ES.json
│ │ │ ├── fr_FR.json
│ │ │ ├── hu_HU.json
│ │ │ ├── it_IT.json
│ │ │ ├── ja_JP.json
│ │ │ ├── ko_KR.json
│ │ │ ├── languages.json
│ │ │ ├── pl_PL.json
│ │ │ ├── pt_BR.json
│ │ │ ├── ru_RU.json
│ │ │ ├── uk_UA.json
│ │ │ ├── zh_CN.json
│ │ │ └── zh_TW.json
│ │ └── source/
│ │ ├── content/
│ │ │ ├── settings_entries.cpp
│ │ │ └── ui_items.cpp
│ │ ├── plugin_windows.cpp
│ │ └── views/
│ │ └── view_tty_console.cpp
│ └── yara_rules/
│ ├── CMakeLists.txt
│ ├── include/
│ │ └── content/
│ │ ├── views/
│ │ │ └── view_yara.hpp
│ │ └── yara_rule.hpp
│ ├── romfs/
│ │ └── lang/
│ │ ├── de_DE.json
│ │ ├── en_US.json
│ │ ├── es_ES.json
│ │ ├── fr_FR.json
│ │ ├── hu_HU.json
│ │ ├── it_IT.json
│ │ ├── ja_JP.json
│ │ ├── ko_KR.json
│ │ ├── languages.json
│ │ ├── pl_PL.json
│ │ ├── pt_BR.json
│ │ ├── ru_RU.json
│ │ ├── uk_UA.json
│ │ ├── zh_CN.json
│ │ └── zh_TW.json
│ └── source/
│ ├── content/
│ │ ├── data_information_sections.cpp
│ │ ├── views/
│ │ │ └── view_yara.cpp
│ │ └── yara_rule.cpp
│ └── plugin_yara.cpp
├── resources/
│ ├── dist/
│ │ ├── macos/
│ │ │ ├── AppIcon.icns
│ │ │ ├── Entitlements.plist
│ │ │ └── Info.plist.in
│ │ └── windows/
│ │ ├── LICENSE.rtf
│ │ ├── WIX.template.in
│ │ ├── imhex.manifest
│ │ └── wix/
│ │ ├── BrowseDlg.wxs
│ │ ├── LicenseAgreementDlg.wxs
│ │ └── WixUI_InstallDirImHex.wxs
│ ├── projects/
│ │ ├── dmg_background.xcf
│ │ ├── icon.xcf
│ │ ├── imhex_logo.afdesign
│ │ ├── ms_banner.xcf
│ │ ├── readme_banners.xcf
│ │ ├── splash_wasm.xcf
│ │ ├── wix_banner.xcf
│ │ └── wix_dialog.xcf
│ └── resource.rc
└── tests/
├── CMakeLists.txt
├── algorithms/
│ ├── CMakeLists.txt
│ └── source/
│ ├── crypto.cpp
│ └── endian.cpp
├── check_langs.py
├── common/
│ ├── CMakeLists.txt
│ └── source/
│ └── main.cpp
├── helpers/
│ ├── CMakeLists.txt
│ └── source/
│ ├── common.cpp
│ ├── file.cpp
│ ├── net.cpp
│ └── utils.cpp
└── plugins/
├── CMakeLists.txt
└── source/
└── plugins.cpp
Showing preview only (1,412K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (13493 symbols across 345 files)
FILE: dist/fonts/move_private_use_area.py
function move_pua_glyphs (line 10) | def move_pua_glyphs(input_font_path, output_font_path):
FILE: dist/fonts/ttf_to_header_file.py
function unicode_to_utf8_escape (line 5) | def unicode_to_utf8_escape(codepoint):
function format_macro_name (line 8) | def format_macro_name(prefix, glyph_name):
function generate_font_header (line 12) | def generate_font_header(font_path, output_path, font_macro_name, font_f...
FILE: dist/gen_release_notes.py
function get_commits (line 4) | def get_commits(branch: str, start_tag: str, end_tag: str) -> list[str]:
function main (line 16) | def main(args: list) -> int:
FILE: dist/langtool.py
function main (line 17) | def main():
function fmtzh (line 194) | def fmtzh(text: str) -> str:
FILE: dist/web/serve.py
class MyHttpRequestHandler (line 4) | class MyHttpRequestHandler(http.server.SimpleHTTPRequestHandler):
method end_headers (line 6) | def end_headers(self):
FILE: dist/web/source/enable-threads.js
function handleFetch (line 10) | async function handleFetch(request) {
FILE: dist/web/source/wasm-config.js
function monkeyPatch (line 10) | function monkeyPatch(progressFun) {
function glfwSetCursorCustom (line 72) | function glfwSetCursorCustom(wnd, shape) {
function glfwCreateStandardCursorCustom (line 100) | function glfwCreateStandardCursorCustom(shape) {
FILE: lib/libimhex/include/hex/api/achievement_manager.hpp
function EXPORT_MODULE (line 19) | EXPORT_MODULE namespace hex {
FILE: lib/libimhex/include/hex/api/content_registry/background_services.hpp
function EXPORT_MODULE (line 8) | EXPORT_MODULE namespace hex {
FILE: lib/libimhex/include/hex/api/content_registry/command_palette.hpp
function EXPORT_MODULE (line 12) | EXPORT_MODULE namespace hex {
FILE: lib/libimhex/include/hex/api/content_registry/communication_interface.hpp
function EXPORT_MODULE (line 12) | EXPORT_MODULE namespace hex {
FILE: lib/libimhex/include/hex/api/content_registry/data_formatter.hpp
function EXPORT_MODULE (line 11) | EXPORT_MODULE namespace hex {
FILE: lib/libimhex/include/hex/api/content_registry/data_information.hpp
function EXPORT_MODULE (line 15) | EXPORT_MODULE namespace hex {
FILE: lib/libimhex/include/hex/api/content_registry/data_inspector.hpp
function EXPORT_MODULE (line 13) | EXPORT_MODULE namespace hex {
FILE: lib/libimhex/include/hex/api/content_registry/data_processor.hpp
function EXPORT_MODULE (line 11) | EXPORT_MODULE namespace hex {
FILE: lib/libimhex/include/hex/api/content_registry/diffing.hpp
function EXPORT_MODULE (line 12) | EXPORT_MODULE namespace hex {
FILE: lib/libimhex/include/hex/api/content_registry/disassemblers.hpp
function EXPORT_MODULE (line 14) | EXPORT_MODULE namespace hex {
FILE: lib/libimhex/include/hex/api/content_registry/experiments.hpp
function EXPORT_MODULE (line 10) | EXPORT_MODULE namespace hex {
FILE: lib/libimhex/include/hex/api/content_registry/file_type_handler.hpp
function EXPORT_MODULE (line 11) | EXPORT_MODULE namespace hex {
FILE: lib/libimhex/include/hex/api/content_registry/hashes.hpp
function EXPORT_MODULE (line 14) | EXPORT_MODULE namespace hex {
FILE: lib/libimhex/include/hex/api/content_registry/hex_editor.hpp
function EXPORT_MODULE (line 15) | EXPORT_MODULE namespace hex {
FILE: lib/libimhex/include/hex/api/content_registry/pattern_language.hpp
function EXPORT_MODULE (line 14) | EXPORT_MODULE namespace hex {
FILE: lib/libimhex/include/hex/api/content_registry/provider.hpp
function EXPORT_MODULE (line 13) | EXPORT_MODULE namespace hex {
FILE: lib/libimhex/include/hex/api/content_registry/reports.hpp
function EXPORT_MODULE (line 9) | EXPORT_MODULE namespace hex {
FILE: lib/libimhex/include/hex/api/content_registry/settings.hpp
function EXPORT_MODULE (line 17) | EXPORT_MODULE namespace hex {
FILE: lib/libimhex/include/hex/api/content_registry/tools.hpp
function EXPORT_MODULE (line 10) | EXPORT_MODULE namespace hex {
FILE: lib/libimhex/include/hex/api/content_registry/user_interface.hpp
function EXPORT_MODULE (line 13) | EXPORT_MODULE namespace hex {
FILE: lib/libimhex/include/hex/api/content_registry/views.hpp
function EXPORT_MODULE (line 12) | EXPORT_MODULE namespace hex {
FILE: lib/libimhex/include/hex/api/event_manager.hpp
function EXPORT_MODULE (line 53) | EXPORT_MODULE namespace hex {
FILE: lib/libimhex/include/hex/api/events/events_gui.hpp
type GLFWwindow (line 6) | struct GLFWwindow
type hex (line 8) | namespace hex { class View; }
class View (line 8) | class View
type hex (line 11) | namespace hex {
class View (line 8) | class View
type hex (line 83) | namespace hex {
class View (line 8) | class View
FILE: lib/libimhex/include/hex/api/events/events_interaction.hpp
type hex (line 9) | namespace hex { class Achievement; }
class Achievement (line 9) | class Achievement
type hex (line 12) | namespace hex {
class Achievement (line 9) | class Achievement
FILE: lib/libimhex/include/hex/api/events/events_lifecycle.hpp
type ImGuiTestEngine (line 6) | struct ImGuiTestEngine
type hex (line 9) | namespace hex {
FILE: lib/libimhex/include/hex/api/events/events_provider.hpp
type hex (line 7) | namespace hex {
type prv (line 9) | namespace prv {
class Provider (line 10) | class Provider
type hex (line 80) | namespace hex {
type prv (line 9) | namespace prv {
class Provider (line 10) | class Provider
FILE: lib/libimhex/include/hex/api/events/requests_gui.hpp
type hex (line 6) | namespace hex {
FILE: lib/libimhex/include/hex/api/events/requests_interaction.hpp
type pl::ptrn (line 8) | namespace pl::ptrn { class Pattern; }
class Pattern (line 8) | class Pattern
type hex (line 11) | namespace hex {
FILE: lib/libimhex/include/hex/api/events/requests_lifecycle.hpp
type hex (line 7) | namespace hex {
FILE: lib/libimhex/include/hex/api/events/requests_provider.hpp
type hex (line 6) | namespace hex {
FILE: lib/libimhex/include/hex/api/imhex_api/bookmarks.hpp
function EXPORT_MODULE (line 7) | EXPORT_MODULE namespace hex {
FILE: lib/libimhex/include/hex/api/imhex_api/fonts.hpp
type ImFont (line 12) | struct ImFont
function EXPORT_MODULE (line 15) | EXPORT_MODULE namespace hex {
FILE: lib/libimhex/include/hex/api/imhex_api/hex_editor.hpp
function EXPORT_MODULE (line 12) | EXPORT_MODULE namespace hex {
FILE: lib/libimhex/include/hex/api/imhex_api/messaging.hpp
function EXPORT_MODULE (line 10) | EXPORT_MODULE namespace hex {
FILE: lib/libimhex/include/hex/api/imhex_api/provider.hpp
function EXPORT_MODULE (line 13) | EXPORT_MODULE namespace hex {
FILE: lib/libimhex/include/hex/api/imhex_api/system.hpp
type ImVec2 (line 16) | struct ImVec2
type ImFontAtlas (line 17) | struct ImFontAtlas
type GLFWwindow (line 20) | struct GLFWwindow
function EXPORT_MODULE (line 22) | EXPORT_MODULE namespace hex {
FILE: lib/libimhex/include/hex/api/layout_manager.hpp
type ImGuiTextBuffer (line 8) | struct ImGuiTextBuffer
function EXPORT_MODULE (line 11) | EXPORT_MODULE namespace hex {
FILE: lib/libimhex/include/hex/api/localization_manager.hpp
function EXPORT_MODULE (line 14) | EXPORT_MODULE namespace hex {
type std::hash<hex::UnlocalizedString> (line 159) | struct std::hash<hex::UnlocalizedString> {
type fmt (line 165) | namespace fmt {
function format (line 168) | auto format(const hex::Lang &entry, Args &&... args) {
FILE: lib/libimhex/include/hex/api/plugin_manager.hpp
type ImGuiContext (line 14) | struct ImGuiContext
function EXPORT_MODULE (line 17) | EXPORT_MODULE namespace hex {
FILE: lib/libimhex/include/hex/api/project_file_manager.hpp
function EXPORT_MODULE (line 12) | EXPORT_MODULE namespace hex {
FILE: lib/libimhex/include/hex/api/shortcut_manager.hpp
type ImGuiWindow (line 13) | struct ImGuiWindow
type KeyEquivalent (line 16) | struct KeyEquivalent {
function EXPORT_MODULE (line 22) | EXPORT_MODULE namespace hex {
FILE: lib/libimhex/include/hex/api/task_manager.hpp
function EXPORT_MODULE (line 15) | EXPORT_MODULE namespace hex {
FILE: lib/libimhex/include/hex/api/theme_manager.hpp
function EXPORT_MODULE (line 12) | EXPORT_MODULE namespace hex {
FILE: lib/libimhex/include/hex/api/tutorial_manager.hpp
type ImRect (line 13) | struct ImRect
function EXPORT_MODULE (line 15) | EXPORT_MODULE namespace hex {
FILE: lib/libimhex/include/hex/api/workspace_manager.hpp
function EXPORT_MODULE (line 9) | EXPORT_MODULE namespace hex {
FILE: lib/libimhex/include/hex/data_processor/attribute.hpp
type hex::dp (line 11) | namespace hex::dp {
class Node (line 13) | class Node
class Attribute (line 15) | class Attribute {
type Type (line 17) | enum class Type {
type IOType (line 23) | enum class IOType {
method getId (line 31) | [[nodiscard]] int getId() const { return m_id; }
method setId (line 32) | void setId(int id) { m_id = id; }
method IOType (line 34) | [[nodiscard]] IOType getIOType() const { return m_ioType; }
method Type (line 35) | [[nodiscard]] Type getType() const { return m_type; }
method UnlocalizedString (line 36) | [[nodiscard]] const UnlocalizedString &getUnlocalizedName() const { ...
method addConnectedAttribute (line 38) | void addConnectedAttribute(int linkId, Attribute *to) { m_connectedA...
method removeConnectedAttribute (line 39) | void removeConnectedAttribute(int linkId) { m_connectedAttributes.er...
method Node (line 42) | [[nodiscard]] Node *getParentNode() const { return m_parentNode; }
method clearOutputData (line 51) | void clearOutputData() { m_outputData.clear(); }
method setParentNode (line 69) | void setParentNode(Node *node) { m_parentNode = node; }
FILE: lib/libimhex/include/hex/data_processor/link.hpp
type hex::dp (line 3) | namespace hex::dp {
class Link (line 5) | class Link {
method getId (line 9) | [[nodiscard]] int getId() const { return m_id; }
method setId (line 10) | void setId(int id) { m_id = id; }
method getFromId (line 12) | [[nodiscard]] int getFromId() const { return m_from; }
method getToId (line 13) | [[nodiscard]] int getToId() const { return m_to; }
FILE: lib/libimhex/include/hex/data_processor/node.hpp
type hex::prv (line 17) | namespace hex::prv {
class Provider (line 18) | class Provider
class Overlay (line 19) | class Overlay
type hex::dp (line 22) | namespace hex::dp {
class Node (line 24) | class Node {
method getId (line 30) | [[nodiscard]] int getId() const { return m_id; }
method setId (line 31) | void setId(int id) { m_id = id; }
method UnlocalizedString (line 33) | [[nodiscard]] const UnlocalizedString &getUnlocalizedName() const { ...
method setUnlocalizedName (line 34) | void setUnlocalizedName(const UnlocalizedString &unlocalizedName) { ...
method UnlocalizedString (line 36) | [[nodiscard]] const UnlocalizedString &getUnlocalizedTitle() const {...
method setUnlocalizedTitle (line 37) | void setUnlocalizedTitle(std::string title) { m_unlocalizedTitle = s...
method setCurrentOverlay (line 42) | void setCurrentOverlay(prv::Overlay *overlay) {
method reset (line 48) | virtual void reset() { }
method store (line 50) | virtual void store(nlohmann::json &j) const { std::ignore = j; }
method load (line 51) | virtual void load(const nlohmann::json &j) { std::ignore = j; }
type NodeError (line 53) | struct NodeError: public std::exception {
method NodeError (line 57) | NodeError(Node *node, std::string message) : node(node), message(...
method resetOutputData (line 64) | void resetOutputData() {
method resetProcessedInputs (line 69) | void resetProcessedInputs() {
method setPosition (line 73) | void setPosition(ImVec2 pos) {
method ImVec2 (line 77) | [[nodiscard]] ImVec2 getPosition() const {
method drawNode (line 94) | virtual void drawNode() { }
FILE: lib/libimhex/include/hex/helpers/auto_reset.hpp
type hex (line 6) | namespace hex {
type impl (line 8) | namespace impl {
class AutoResetBase (line 10) | class AutoResetBase {
class AutoReset (line 22) | class AutoReset : public impl::AutoResetBase {
method AutoReset (line 26) | AutoReset() noexcept {
method AutoReset (line 34) | explicit(false) AutoReset(const T &value) : AutoReset() {
method AutoReset (line 39) | explicit(false) AutoReset(T &&value) noexcept : AutoReset() {
method T (line 48) | T* operator->() {
method T (line 52) | const T* operator->() const {
method T (line 56) | T& operator*() {
method T (line 60) | const T& operator*() const {
method AutoReset (line 72) | AutoReset& operator=(const T &value) {
method AutoReset (line 78) | AutoReset& operator=(T &&value) noexcept {
method isValid (line 84) | [[nodiscard]] bool isValid() const {
method reset (line 89) | void reset() override {
FILE: lib/libimhex/include/hex/helpers/binary_pattern.hpp
type hex (line 9) | namespace hex {
class BinaryPattern (line 11) | class BinaryPattern {
method BinaryPattern (line 13) | BinaryPattern() = default;
type Pattern (line 22) | struct Pattern {
FILE: lib/libimhex/include/hex/helpers/concepts.hpp
type hex (line 8) | namespace hex {
type always_false (line 11) | struct always_false : std::false_type { }
class ICloneable (line 17) | class ICloneable {
FILE: lib/libimhex/include/hex/helpers/crypto.hpp
type hex::prv (line 14) | namespace hex::prv {
class Provider (line 15) | class Provider
type hex::crypt (line 18) | namespace hex::crypt {
type AESMode (line 51) | enum class AESMode : u8 {
type KeyLength (line 62) | enum class KeyLength : u8 {
FILE: lib/libimhex/include/hex/helpers/debugging.hpp
type hex::trace (line 17) | namespace hex::trace {
type StackTraceResult (line 18) | struct StackTraceResult
type hex::dbg (line 21) | namespace hex::dbg {
type impl (line 23) | namespace impl {
function drawDebugVariable (line 27) | static void drawDebugVariable(T &variable, std::string_view name) {
FILE: lib/libimhex/include/hex/helpers/default_paths.hpp
type hex::paths (line 8) | namespace hex::paths {
type impl (line 10) | namespace impl {
class DefaultPath (line 12) | class DefaultPath {
method DefaultPath (line 14) | constexpr DefaultPath() = default;
method DefaultPath (line 18) | DefaultPath(const DefaultPath&) = delete;
method DefaultPath (line 19) | DefaultPath(DefaultPath&&) = delete;
method DefaultPath (line 20) | DefaultPath& operator=(const DefaultPath&) = delete;
method DefaultPath (line 21) | DefaultPath& operator=(DefaultPath&&) = delete;
class ConfigPath (line 28) | class ConfigPath : public DefaultPath {
method ConfigPath (line 30) | explicit ConfigPath(std::fs::path postfix) : m_postfix(std::move(p...
class DataPath (line 38) | class DataPath : public DefaultPath {
method DataPath (line 40) | explicit DataPath(std::fs::path postfix) : m_postfix(std::move(pos...
class PluginPath (line 49) | class PluginPath : public DefaultPath {
method PluginPath (line 51) | explicit PluginPath(std::fs::path postfix) : m_postfix(std::move(p...
FILE: lib/libimhex/include/hex/helpers/encoding_file.hpp
type hex (line 12) | namespace hex {
class EncodingFile (line 14) | class EncodingFile {
type Type (line 16) | enum class Type
method u64 (line 32) | [[nodiscard]] u64 getShortestSequence() const { return m_shortestSeq...
method u64 (line 33) | [[nodiscard]] u64 getLongestSequence() const { return m_longestSequ...
method valid (line 36) | [[nodiscard]] bool valid() const { return m_valid; }
FILE: lib/libimhex/include/hex/helpers/fs.hpp
function EXPORT_MODULE (line 11) | EXPORT_MODULE namespace hex::fs {
FILE: lib/libimhex/include/hex/helpers/http_requests.hpp
type hex (line 19) | namespace hex {
class HttpRequest (line 21) | class HttpRequest {
class ResultBase (line 24) | class ResultBase {
method ResultBase (line 26) | ResultBase() = default;
method ResultBase (line 27) | explicit ResultBase(u32 statusCode) : m_statusCode(statusCode), m_...
method u32 (line 29) | [[nodiscard]] u32 getStatusCode() const {
method isSuccess (line 33) | [[nodiscard]] bool isSuccess() const {
method isValid (line 37) | [[nodiscard]] bool isValid() const {
class Result (line 47) | class Result : public ResultBase {
method Result (line 49) | Result() = default;
method Result (line 50) | Result(u32 statusCode, T data) : ResultBase(statusCode), m_data(st...
method T (line 52) | [[nodiscard]]
method HttpRequest (line 64) | HttpRequest(const HttpRequest&) = delete;
method HttpRequest (line 65) | HttpRequest& operator=(const HttpRequest&) = delete;
method setMethod (line 74) | void setMethod(std::string method) {
method setUrl (line 78) | void setUrl(std::string url) {
method addHeader (line 82) | void addHeader(std::string key, std::string value) {
method setBody (line 86) | void setBody(std::string body) {
method setTimeout (line 90) | void setTimeout(u32 timeout) {
method getProgress (line 94) | float getProgress() const {
method cancel (line 98) | void cancel() {
method setProgress (line 120) | void setProgress(float progress) { m_progress = progress; }
method isCanceled (line 121) | bool isCanceled() const { return m_canceled; }
FILE: lib/libimhex/include/hex/helpers/http_requests_emscripten.hpp
type hex (line 9) | namespace hex {
FILE: lib/libimhex/include/hex/helpers/http_requests_native.hpp
type hex (line 14) | namespace hex {
type impl (line 16) | namespace impl {
FILE: lib/libimhex/include/hex/helpers/keys.hpp
type Keys (line 4) | enum class Keys {
type Keys (line 123) | enum Keys
type Keys (line 124) | enum Keys
FILE: lib/libimhex/include/hex/helpers/literals.hpp
type hex::literals (line 3) | namespace hex::literals {
FILE: lib/libimhex/include/hex/helpers/logger.hpp
function EXPORT_MODULE (line 11) | EXPORT_MODULE namespace hex::log {
FILE: lib/libimhex/include/hex/helpers/magic.hpp
type hex::prv (line 12) | namespace hex::prv {
class Provider (line 13) | class Provider
type hex::magic (line 16) | namespace hex::magic {
type FoundPattern (line 32) | struct FoundPattern {
FILE: lib/libimhex/include/hex/helpers/menu_items.hpp
type hex::menu (line 4) | namespace hex::menu {
FILE: lib/libimhex/include/hex/helpers/opengl.hpp
type hex::gl (line 18) | namespace hex::gl {
type impl (line 20) | namespace impl {
function GLuint (line 23) | GLuint getType() {
class Vector (line 41) | class Vector {
method Vector (line 43) | Vector() = default;
method Vector (line 44) | Vector(const T val) {
method Vector (line 49) | Vector(std::array<T, Size> data) : m_data(data) { }
method Vector (line 50) | Vector(Vector &&other) noexcept : m_data(std::move(other.m_data)) { }
method Vector (line 51) | Vector(const Vector &other) : m_data(other.m_data) { }
method T (line 53) | T &operator[](size_t index) { return m_data[index]; }
method T (line 54) | const T &operator[](size_t index) const { return m_data[index]; }
method T (line 58) | T *data() { return m_data.data(); }
method T (line 59) | const T *data() const { return m_data.data(); }
method size (line 61) | [[nodiscard]] size_t size() const { return m_data.size(); }
method Vector (line 98) | Vector operator*=(const T scalar) {
method dot (line 126) | auto dot(const Vector& other) {
method cross (line 133) | auto cross(const Vector& other) {
method magnitude (line 140) | auto magnitude() {
method normalize (line 144) | auto normalize() {
class Matrix (line 164) | class Matrix {
method Matrix (line 166) | Matrix(const T &init) {
method Matrix (line 172) | Matrix(const Matrix &A) {
method getRows (line 178) | size_t getRows() const {
method getColumns (line 182) | size_t getColumns() const {
method T (line 186) | T *data() { return this->mat.data(); }
method T (line 188) | const T *data() const { return this->mat.data(); }
method T (line 191) | T &getElement(int row,int col) {
method getColumn (line 195) | Vector<T,Rows> getColumn(int col) {
method getRow (line 202) | Vector<T,Columns> getRow(int row) {
method updateRow (line 209) | void updateRow(int row, const Vector<T, Columns> &values) {
method updateColumn (line 214) | void updateColumn(int col, const Vector<T, Rows> &values) {
method updateElement (line 219) | void updateElement(int row, int col, T value) {
method T (line 223) | T &operator()(const unsigned &row, const unsigned &col) {
method T (line 227) | const T &operator()(const unsigned &row, const unsigned &col) const {
method Matrix (line 231) | Matrix& operator=(const Matrix& A) {
method Matrix (line 241) | Matrix operator+(const Matrix& A) {
method Matrix (line 250) | Matrix operator-(const Matrix& A) {
method Matrix (line 259) | static Matrix identity() {
method Matrix (line 268) | Matrix transpose() {
type RotationSequence (line 389) | enum RotationSequence {
function getRotationMatrix (line 399) | Matrix<T, 4, 4> getRotationMatrix(Vector<T,3> ypr, bool radians, Rotat...
function getRotationMatrixFromVectorAngle (line 524) | Matrix<T, 4, 4> getRotationMatrixFromVectorAngle(Vector<T, 4> rotation...
type MatrixElements (line 562) | enum class MatrixElements {
function T (line 569) | T findValue(Vector<T,3> ypr, MatrixElements matrixElement, RotationSeq...
function getTransformMatrix (line 716) | Matrix<T, 4,4 > getTransformMatrix(Vector<T,3> xyz, Vector<T,3> ypr, b...
function getTranslationVector (line 734) | Vector<T,3> getTranslationVector(Matrix<T, 4,4 > transform_matrix) {
function getYprVector (line 745) | Vector<T,3> getYprVector(Matrix<T, 4,4 > transform_matrix) {
function GetObliqueMatrix (line 781) | static Matrix<T,4,4> GetObliqueMatrix( T width, T height,T nearVal,T f...
class Shader (line 796) | class Shader {
method Shader (line 798) | Shader() = default;
method Shader (line 802) | Shader(const Shader&) = delete;
method Shader (line 805) | Shader& operator=(const Shader&) = delete;
method isValid (line 811) | bool isValid() const { return m_program != 0; }
method setUniform (line 818) | void setUniform(std::string_view name, const Vector<float, N> &value) {
method setUniform (line 828) | void setUniform(std::string_view name, Matrix<float, N, N> &value){
type BufferType (line 841) | enum class BufferType {
class Buffer (line 847) | class Buffer {
method Buffer (line 849) | Buffer() = default;
method Buffer (line 852) | Buffer(const Buffer&) = delete;
method Buffer (line 855) | Buffer& operator=(const Buffer&) = delete;
class Buffer<float> (line 870) | class Buffer<float>
class Buffer<u32> (line 871) | class Buffer<u32>
class Buffer<u16> (line 872) | class Buffer<u16>
class Buffer<u8> (line 873) | class Buffer<u8>
class VertexArray (line 875) | class VertexArray {
method VertexArray (line 879) | VertexArray(const VertexArray&) = delete;
method VertexArray (line 882) | VertexArray& operator=(const VertexArray&) = delete;
method addBuffer (line 886) | void addBuffer(u32 index, const Buffer<T> &buffer, u32 size = 3) con...
class Texture (line 900) | class Texture {
method Texture (line 904) | Texture(const Texture&) = delete;
method Texture (line 907) | Texture& operator=(const Texture&) = delete;
class FrameBuffer (line 923) | class FrameBuffer {
method FrameBuffer (line 927) | FrameBuffer(const FrameBuffer&) = delete;
method FrameBuffer (line 930) | FrameBuffer& operator=(const FrameBuffer&) = delete;
class AxesVectors (line 942) | class AxesVectors {
class AxesBuffers (line 965) | class AxesBuffers {
class GridVectors (line 987) | class GridVectors {
method u32 (line 991) | u32 getSlices() const {
class GridBuffers (line 1014) | class GridBuffers {
class LightSourceVectors (line 1036) | class LightSourceVectors {
method setColor (line 1058) | void setColor(float r, float g, float b) {
class LightSourceBuffers (line 1077) | class LightSourceBuffers {
FILE: lib/libimhex/include/hex/helpers/patches.hpp
type hex (line 10) | namespace hex {
type prv (line 12) | namespace prv {
class Provider (line 13) | class Provider
type IPSError (line 16) | enum class IPSError {
type PatchKind (line 24) | enum class PatchKind {
class Patches (line 29) | class Patches {
method Patches (line 31) | Patches() = default;
method Patches (line 32) | Patches(std::map<u64, u8> &&patches) : m_patches(std::move(patches)) {}
FILE: lib/libimhex/include/hex/helpers/scaling.hpp
type hex (line 5) | namespace hex {
FILE: lib/libimhex/include/hex/helpers/semantic_version.hpp
function EXPORT_MODULE (line 9) | EXPORT_MODULE namespace hex {
FILE: lib/libimhex/include/hex/helpers/tar.hpp
type mtar_t (line 9) | struct mtar_t
type hex (line 11) | namespace hex {
class Tar (line 13) | class Tar {
type Mode (line 15) | enum class Mode {
method Tar (line 21) | Tar() = default;
method Tar (line 24) | Tar(const Tar&) = delete;
method isValid (line 49) | [[nodiscard]] bool isValid() const { return m_valid; }
FILE: lib/libimhex/include/hex/helpers/types.hpp
type hex (line 16) | namespace hex {
type Region (line 18) | struct Region {
method isWithin (line 22) | [[nodiscard]] constexpr bool isWithin(const Region &other) const {
method overlaps (line 32) | [[nodiscard]] constexpr bool overlaps(const Region &other) const {
method u64 (line 42) | [[nodiscard]] constexpr u64 getStartAddress() const { return this->a...
method u64 (line 43) | [[nodiscard]] constexpr u64 getEndAddress() const {
method getSize (line 49) | [[nodiscard]] constexpr size_t getSize() const { return this->size; }
method Region (line 55) | constexpr static Region Invalid() {
type NonNull (line 69) | struct NonNull {
method NonNull (line 70) | NonNull(T ptr) : pointer(ptr) { }
method NonNull (line 71) | NonNull(std::nullptr_t) = delete;
method NonNull (line 72) | NonNull(std::integral auto) = delete;
method NonNull (line 73) | NonNull(bool) = delete;
method T (line 75) | [[nodiscard]] T get() const { return pointer; }
method T (line 76) | [[nodiscard]] T operator->() const { return pointer; }
FILE: lib/libimhex/include/hex/helpers/udp_server.hpp
type hex (line 10) | namespace hex {
class UDPServer (line 12) | class UDPServer {
method UDPServer (line 15) | UDPServer() = default;
method UDPServer (line 19) | UDPServer(const UDPServer&) = delete;
method UDPServer (line 20) | UDPServer& operator=(const UDPServer&) = delete;
method UDPServer (line 21) | UDPServer(UDPServer &&other) noexcept {
method UDPServer (line 30) | UDPServer& operator=(UDPServer &&other) noexcept {
method u16 (line 47) | [[nodiscard]] u16 getPort() const { return m_port; }
FILE: lib/libimhex/include/hex/helpers/utils.hpp
type hex (line 33) | namespace hex {
type prv (line 36) | namespace prv {
class Provider (line 37) | class Provider
function sampleChannels (line 42) | [[nodiscard]] std::vector<std::vector<T>> sampleChannels(const std::ve...
function sampleData (line 65) | [[nodiscard]] std::vector<T> sampleData(const std::vector<T> &data, si...
function u64 (line 114) | [[nodiscard]] constexpr u64 extract(u8 from, u8 to, const auto &value) {
function u64 (line 123) | [[nodiscard]] inline u64 extract(u32 from, u32 to, const std::vector<u...
function i128 (line 138) | [[nodiscard]] constexpr i128 signExtend(size_t numBits, i128 value) {
function T (line 144) | [[nodiscard]] constexpr T swapBitOrder(size_t numBits, T value) {
function strnlen (line 155) | [[nodiscard]] constexpr size_t strnlen(const char *s, size_t n) {
type SizeTypeImpl (line 163) | struct SizeTypeImpl { }
type SizeTypeImpl<1> (line 166) | struct SizeTypeImpl<1> { using Type = u8; }
type SizeTypeImpl<2> (line 168) | struct SizeTypeImpl<2> { using Type = u16; }
type SizeTypeImpl<4> (line 170) | struct SizeTypeImpl<4> { using Type = u32; }
type SizeTypeImpl<8> (line 172) | struct SizeTypeImpl<8> { using Type = u64; }
type SizeTypeImpl<16> (line 174) | struct SizeTypeImpl<16> { using Type = u128; }
function T (line 180) | [[nodiscard]] constexpr T changeEndianness(const T &value, size_t size...
function T (line 200) | [[nodiscard]] constexpr T changeEndianness(const T &value, std::endian...
function u128 (line 204) | [[nodiscard]] constexpr u128 bitmask(u8 bits) {
function T (line 209) | [[nodiscard]] constexpr T bit_width(T x) noexcept {
function T (line 214) | [[nodiscard]] constexpr T bit_ceil(T x) noexcept {
function powi (line 222) | [[nodiscard]] auto powi(T base, U exp) {
function moveToVector (line 240) | void moveToVector(std::vector<T> &buffer, T &&first, Args &&...rest) {
function moveToVector (line 248) | [[nodiscard]] std::vector<T> moveToVector(T &&first, Args &&...rest) {
function parseByteString (line 257) | [[nodiscard]] inline std::vector<u8> parseByteString(const std::string...
function toBinaryString (line 278) | [[nodiscard]] std::string toBinaryString(std::unsigned_integral auto n...
function customFloatToFloat32 (line 289) | [[nodiscard]] constexpr float customFloatToFloat32(u32 value) {
function float16ToFloat32 (line 333) | [[nodiscard]] constexpr float float16ToFloat32(u16 float16) {
function equalsIgnoreCase (line 337) | [[nodiscard]] inline bool equalsIgnoreCase(std::string_view left, std:...
function containsIgnoreCase (line 343) | [[nodiscard]] inline bool containsIgnoreCase(std::string_view a, std::...
function T (line 352) | [[nodiscard]] T get_or(const std::variant<VariantTypes...> &variant, T...
function T (line 361) | [[nodiscard]] T alignTo(T value, T alignment) {
FILE: lib/libimhex/include/hex/helpers/utils_linux.hpp
type hex (line 5) | namespace hex {
FILE: lib/libimhex/include/hex/helpers/utils_macos.hpp
type GLFWwindow (line 8) | struct GLFWwindow
FILE: lib/libimhex/include/hex/mcp/client.hpp
type hex::mcp (line 5) | namespace hex::mcp {
class Client (line 7) | class Client {
method Client (line 9) | Client() = default;
FILE: lib/libimhex/include/hex/mcp/server.hpp
type hex::mcp (line 9) | namespace hex::mcp {
class JsonRpc (line 11) | class JsonRpc {
method JsonRpc (line 13) | explicit JsonRpc(std::string request) : m_request(std::move(request)...
type MethodNotFoundException (line 15) | struct MethodNotFoundException : std::exception {}
type InvalidParametersException (line 16) | struct InvalidParametersException : std::exception {}
type ErrorCode (line 18) | enum class ErrorCode: i16 {
type Error (line 42) | struct Error {
type TextContent (line 49) | struct TextContent {
type StructuredContent (line 65) | struct StructuredContent {
class Server (line 83) | class Server {
type ClientInfo (line 97) | struct ClientInfo {
method ClientInfo (line 103) | const ClientInfo& getClientInfo() const {
type Primitive (line 111) | struct Primitive {
FILE: lib/libimhex/include/hex/plugin.hpp
type PluginFunctionHelperInstantiation (line 24) | struct PluginFunctionHelperInstantiation {}
type PluginFeatureFunctionHelper (line 28) | struct PluginFeatureFunctionHelper {
type PluginSubCommandsFunctionHelper (line 33) | struct PluginSubCommandsFunctionHelper {
FILE: lib/libimhex/include/hex/providers/buffered_reader.hpp
type hex::prv (line 8) | namespace hex::prv {
function providerReaderFunction (line 12) | inline void providerReaderFunction(Provider *provider, void *buffer, u...
class ProviderReader (line 16) | class ProviderReader : public wolv::io::BufferedReader<prv::Provider, ...
method ProviderReader (line 20) | explicit ProviderReader(Provider *provider, size_t bufferSize = 0x10...
FILE: lib/libimhex/include/hex/providers/cached_provider.hpp
type hex::prv (line 12) | namespace hex::prv {
class CachedProvider (line 19) | class CachedProvider : public Provider {
method resizeSource (line 36) | virtual void resizeSource(uint64_t newSize) { std::ignore = newSize; }
type Block (line 41) | struct Block {
method u64 (line 53) | constexpr u64 calcBlockIndex(u64 offset) const { return offset / m_c...
method calcBlockOffset (line 54) | constexpr size_t calcBlockOffset(u64 offset) const { return offset %...
FILE: lib/libimhex/include/hex/providers/memory_provider.hpp
type hex::prv (line 5) | namespace hex::prv {
class MemoryProvider (line 11) | class MemoryProvider : public hex::prv::Provider {
method MemoryProvider (line 13) | MemoryProvider() = default;
method MemoryProvider (line 14) | explicit MemoryProvider(std::vector<u8> data, std::string name = "")...
method MemoryProvider (line 17) | MemoryProvider(const MemoryProvider&) = delete;
method MemoryProvider (line 18) | MemoryProvider& operator=(const MemoryProvider&) = delete;
method MemoryProvider (line 20) | MemoryProvider(MemoryProvider &&provider) noexcept = default;
method MemoryProvider (line 21) | MemoryProvider& operator=(MemoryProvider &&provider) noexcept = defa...
method isAvailable (line 23) | [[nodiscard]] bool isAvailable() const override { return true...
method isReadable (line 24) | [[nodiscard]] bool isReadable() const override { return true...
method isWritable (line 25) | [[nodiscard]] bool isWritable() const override { return true...
method isResizable (line 26) | [[nodiscard]] bool isResizable() const override { return true...
method isSavable (line 27) | [[nodiscard]] bool isSavable() const override { return m_na...
method isSavableAsRecent (line 28) | [[nodiscard]] bool isSavableAsRecent() const override { return fals...
method close (line 31) | void close() override { }
method u64 (line 35) | [[nodiscard]] u64 getActualSize() const override { return m_data.siz...
method getName (line 39) | [[nodiscard]] std::string getName() const override { return m_name; }
method UnlocalizedString (line 41) | [[nodiscard]] UnlocalizedString getTypeName() const override { retur...
FILE: lib/libimhex/include/hex/providers/overlay.hpp
type hex::prv (line 7) | namespace hex::prv {
class Overlay (line 9) | class Overlay {
method Overlay (line 11) | Overlay() = default;
method setAddress (line 13) | void setAddress(u64 address) { m_address = address; }
method u64 (line 14) | [[nodiscard]] u64 getAddress() const { return m_address; }
method u64 (line 16) | [[nodiscard]] u64 getSize() const { return m_data.size(); }
FILE: lib/libimhex/include/hex/providers/provider.hpp
type hex::prv (line 18) | namespace hex::prv {
class IProviderLoadInterface (line 22) | class IProviderLoadInterface {
class IProviderSidebarInterface (line 31) | class IProviderSidebarInterface {
class IProviderFilePicker (line 40) | class IProviderFilePicker {
class IProviderMenuItems (line 49) | class IProviderMenuItems {
type MenuEntry (line 51) | struct MenuEntry {
class IProviderDataDescription (line 64) | class IProviderDataDescription {
type Description (line 66) | struct Description {
class IProviderDataBackupable (line 75) | class IProviderDataBackupable {
class Provider (line 93) | class Provider {
class OpenResult (line 97) | class OpenResult {
method OpenResult (line 99) | OpenResult() : m_result(std::monostate{}) {}
method OpenResult (line 101) | [[nodiscard]] static OpenResult failure(std::string errorMessage) {
method OpenResult (line 107) | [[nodiscard]] static OpenResult warning(std::string warningMessage) {
method OpenResult (line 114) | [[nodiscard]] static OpenResult redirect(Provider *provider) {
method isSuccess (line 120) | [[nodiscard]] bool isSuccess() const {
method isFailure (line 124) | [[nodiscard]] bool isFailure() const {
method isWarning (line 128) | [[nodiscard]] bool isWarning() const {
method isRedirecting (line 132) | [[nodiscard]] bool isRedirecting() const {
method Provider (line 136) | [[nodiscard]] Provider* getRedirectProvider() const {
method getErrorMessage (line 143) | [[nodiscard]] std::string_view getErrorMessage() const {
method Provider (line 158) | Provider(const Provider&) = delete;
method Provider (line 159) | Provider& operator=(const Provider&) = delete;
method Provider (line 161) | Provider(Provider &&provider) noexcept = default;
method Provider (line 162) | Provider& operator=(Provider &&provider) noexcept = default;
method isSavableAsRecent (line 225) | [[nodiscard]] virtual bool isSavableAsRecent() const { return true; }
method resizeRaw (line 292) | virtual void resizeRaw(u64 newSize) { std::ignore = newSize; }
method markDirty (line 331) | void markDirty(bool dirty = true) { m_dirty = dirty; }
method isDirty (line 332) | [[nodiscard]] bool isDirty() const { return m_dirty; }
method skipLoadInterface (line 336) | void skipLoadInterface() { m_skipLoadInterface = true; }
method shouldSkipLoadInterface (line 337) | [[nodiscard]] bool shouldSkipLoadInterface() const { return m_skipLo...
method addUndoableOperation (line 340) | bool addUndoableOperation(auto && ... args) {
FILE: lib/libimhex/include/hex/providers/provider_data.hpp
type hex (line 13) | namespace hex {
type prv (line 16) | namespace prv {
class Provider (line 17) | class Provider
class PerProvider (line 22) | class PerProvider {
method PerProvider (line 24) | PerProvider() { this->onCreate(); }
method PerProvider (line 25) | PerProvider(const PerProvider&) = delete;
method PerProvider (line 26) | PerProvider(PerProvider&&) = delete;
method PerProvider (line 27) | PerProvider& operator=(const PerProvider&) = delete;
method PerProvider (line 28) | PerProvider& operator=(PerProvider &&) = delete;
method T (line 32) | T* operator->() {
method T (line 36) | const T* operator->() const {
method T (line 40) | T& get(const prv::Provider *provider = ImHexApi::Provider::get()) {
method T (line 47) | const T& get(const prv::Provider *provider = ImHexApi::Provider::get...
method set (line 54) | void set(const T &data, const prv::Provider *provider = ImHexApi::Pr...
method set (line 61) | void set(T &&data, const prv::Provider *provider = ImHexApi::Provide...
method T (line 68) | T& operator*() {
method T (line 72) | const T& operator*() const {
method PerProvider (line 76) | PerProvider& operator=(const T &data) {
method PerProvider (line 81) | PerProvider& operator=(T &&data) {
method all (line 90) | auto all() {
method setOnCreateCallback (line 94) | void setOnCreateCallback(std::function<void(prv::Provider *, T&)> ca...
method setOnDestroyCallback (line 98) | void setOnDestroyCallback(std::function<void(prv::Provider *, T&)> c...
method onCreate (line 103) | void onCreate() {
method onDestroy (line 141) | void onDestroy() {
FILE: lib/libimhex/include/hex/providers/undo_redo/operations/operation.hpp
type hex::prv (line 8) | namespace hex::prv {
class Provider (line 9) | class Provider
type hex::prv::undo (line 12) | namespace hex::prv::undo {
class Operation (line 14) | class Operation : public ICloneable<Operation> {
method formatContent (line 24) | [[nodiscard]] virtual std::vector<std::string> formatContent() const {
method shouldHighlight (line 28) | [[nodiscard]] virtual bool shouldHighlight() const { return true; }
FILE: lib/libimhex/include/hex/providers/undo_redo/operations/operation_group.hpp
type hex::prv::undo (line 9) | namespace hex::prv::undo {
class OperationGroup (line 11) | class OperationGroup : public Operation {
method OperationGroup (line 13) | explicit OperationGroup(UnlocalizedString unlocalizedName) : m_unloc...
method OperationGroup (line 15) | OperationGroup(const OperationGroup &other) {
method undo (line 20) | void undo(Provider *provider) override {
method redo (line 25) | void redo(Provider *provider) override {
method addOperation (line 30) | void addOperation(std::unique_ptr<Operation> &&newOperation) {
method format (line 45) | [[nodiscard]] std::string format() const override {
method Region (line 49) | [[nodiscard]] Region getRegion() const override {
method clone (line 53) | std::unique_ptr<Operation> clone() const override {
method formatContent (line 57) | std::vector<std::string> formatContent() const override {
FILE: lib/libimhex/include/hex/providers/undo_redo/stack.hpp
type hex::prv (line 13) | namespace hex::prv {
class Provider (line 14) | class Provider
type hex::prv::undo (line 17) | namespace hex::prv::undo {
class Stack (line 21) | class Stack {
method add (line 36) | bool add(auto && ... args) {
method reset (line 54) | void reset() {
method Operation (line 60) | [[nodiscard]] Operation* getLastOperation() const {
FILE: lib/libimhex/include/hex/subcommands/subcommands.hpp
type hex::subcommands (line 7) | namespace hex::subcommands {
FILE: lib/libimhex/include/hex/test/test_provider.hpp
type hex::test (line 6) | namespace hex::test {
class TestProvider (line 9) | class TestProvider : public prv::Provider {
method TestProvider (line 11) | explicit TestProvider(std::vector<u8> *data) {
method isAvailable (line 16) | [[nodiscard]] bool isAvailable() const override { return true; }
method isReadable (line 17) | [[nodiscard]] bool isReadable() const override { return true; }
method isWritable (line 18) | [[nodiscard]] bool isWritable() const override { return false; }
method isResizable (line 19) | [[nodiscard]] bool isResizable() const override { return false; }
method isSavable (line 20) | [[nodiscard]] bool isSavable() const override { return false; }
method setData (line 22) | void setData(std::vector<u8> *data) {
method getName (line 26) | [[nodiscard]] std::string getName() const override {
method readRaw (line 34) | void readRaw(u64 offset, void *buffer, size_t size) override {
method writeRaw (line 40) | void writeRaw(u64 offset, const void *buffer, size_t size) override {
method u64 (line 46) | [[nodiscard]] u64 getActualSize() const override {
method UnlocalizedString (line 50) | [[nodiscard]] UnlocalizedString getTypeName() const override { retur...
method OpenResult (line 52) | OpenResult open() override { return {}; }
method close (line 53) | void close() override { }
method storeSettings (line 55) | nlohmann::json storeSettings(nlohmann::json) const override { return...
FILE: lib/libimhex/include/hex/test/tests.hpp
type hex::test (line 53) | namespace hex::test {
type Test (line 56) | struct Test {
class Tests (line 61) | class Tests {
class TestSequence (line 69) | class TestSequence {
method TestSequence (line 71) | TestSequence(const std::string &name, F func, bool shouldFail) noexc...
method TestSequence (line 75) | TestSequence &operator=(TestSequence &&) = delete;
type TestSequenceExecutor (line 78) | struct TestSequenceExecutor {
method TestSequenceExecutor (line 79) | explicit TestSequenceExecutor(std::string name, bool shouldFail = fa...
method shouldFail (line 86) | [[nodiscard]] bool shouldFail() const noexcept {
class ImGuiTestSequence (line 104) | class ImGuiTestSequence {
method ImGuiTestSequence (line 106) | ImGuiTestSequence(const std::string &category, const std::string &na...
method ImGuiTestSequence (line 114) | ImGuiTestSequence &operator=(ImGuiTestSequence &&) = delete;
type ImGuiTestSequenceExecutor (line 117) | struct ImGuiTestSequenceExecutor {
method ImGuiTestSequenceExecutor (line 118) | explicit ImGuiTestSequenceExecutor(std::string category, std::string...
FILE: lib/libimhex/include/hex/ui/banner.hpp
type hex (line 12) | namespace hex {
type impl (line 14) | namespace impl {
class BannerBase (line 16) | class BannerBase {
method BannerBase (line 18) | BannerBase(ImColor color) : m_color(color) {}
method draw (line 21) | virtual void draw() { drawContent(); }
method ImColor (line 26) | [[nodiscard]] const ImColor& getColor() const {
method close (line 30) | void close() { m_shouldClose = true; }
method shouldClose (line 31) | [[nodiscard]] bool shouldClose() const { return m_shouldClose; }
class Banner (line 43) | class Banner : public impl::BannerBase {
method open (line 48) | static void open(Args && ... args) {
FILE: lib/libimhex/include/hex/ui/imgui_imhex_extensions.h
type ImGuiCustomCol (line 18) | enum ImGuiCustomCol : int {
type ImGuiCustomStyle (line 64) | enum ImGuiCustomStyle {
function namespace (line 70) | namespace ImGuiExt {
FILE: lib/libimhex/include/hex/ui/popup.hpp
type hex (line 15) | namespace hex {
type impl (line 17) | namespace impl {
class PopupBase (line 19) | class PopupBase {
method PopupBase (line 21) | explicit PopupBase(UnlocalizedString unlocalizedName, bool closeBu...
method ImGuiWindowFlags (line 27) | [[nodiscard]] virtual ImGuiWindowFlags getFlags() const { return I...
method ImVec2 (line 29) | [[nodiscard]] virtual ImVec2 getMinSize() const {
method ImVec2 (line 33) | [[nodiscard]] virtual ImVec2 getMaxSize() const {
method UnlocalizedString (line 39) | [[nodiscard]] const UnlocalizedString &getUnlocalizedName() const {
method hasCloseButton (line 43) | [[nodiscard]] bool hasCloseButton() const {
method isModal (line 47) | [[nodiscard]] bool isModal() const {
method close (line 51) | void close() {
method shouldClose (line 55) | [[nodiscard]] bool shouldClose() const {
class Popup (line 71) | class Popup : public impl::PopupBase {
method Popup (line 73) | explicit Popup(UnlocalizedString unlocalizedName, bool closeButton =...
method open (line 77) | static void open(Args && ... args) {
FILE: lib/libimhex/include/hex/ui/toast.hpp
type hex (line 11) | namespace hex {
type impl (line 13) | namespace impl {
class ToastBase (line 15) | class ToastBase {
method ToastBase (line 17) | ToastBase(ImColor color) : m_color(color) {}
method draw (line 20) | virtual void draw() { drawContent(); }
method ImColor (line 25) | [[nodiscard]] const ImColor& getColor() const {
method setAppearTime (line 29) | void setAppearTime(double appearTime) {
method getAppearTime (line 33) | [[nodiscard]] double getAppearTime() const {
class Toast (line 49) | class Toast : public impl::ToastBase {
method open (line 54) | static void open(Args && ... args) {
FILE: lib/libimhex/include/hex/ui/view.hpp
type hex (line 18) | namespace hex {
class View (line 20) | class View {
method drawAlwaysVisibleContent (line 39) | virtual void drawAlwaysVisibleContent() { }
method View (line 83) | [[nodiscard]] virtual View* getMenuItemInheritView() const { return ...
method shouldDefaultFocus (line 90) | [[nodiscard]] virtual bool shouldDefaultFocus() const { return false; }
method shouldStoreWindowState (line 91) | [[nodiscard]] virtual bool shouldStoreWindowState() const { return t...
method isFocused (line 96) | [[nodiscard]] bool isFocused() const { return m_focused; }
method onOpen (line 117) | virtual void onOpen() {}
method onClose (line 122) | virtual void onClose() {}
class Window (line 125) | class Window
class Special (line 126) | class Special
class Floating (line 127) | class Floating
class Scrolling (line 128) | class Scrolling
class Modal (line 129) | class Modal
class FullScreen (line 130) | class FullScreen
class View::Window (line 147) | class View::Window : public View {
method Window (line 149) | explicit Window(UnlocalizedString unlocalizedName, const char *icon)...
method ImGuiWindow (line 150) | [[nodiscard]] ImGuiWindow *getFocusedSubWindow() const { return m_fo...
method allowScroll (line 159) | [[nodiscard]] virtual bool allowScroll() const {
class View::Special (line 174) | class View::Special : public View {
method Special (line 176) | explicit Special(UnlocalizedString unlocalizedName) : View(std::move...
class View::Floating (line 184) | class View::Floating : public View::Window {
method Floating (line 186) | explicit Floating(UnlocalizedString unlocalizedName, const char *ico...
method shouldStoreWindowState (line 190) | [[nodiscard]] bool shouldStoreWindowState() const override { return ...
class View::Scrolling (line 196) | class View::Scrolling : public View::Window {
method Scrolling (line 198) | explicit Scrolling(UnlocalizedString unlocalizedName, const char *ic...
method allowScroll (line 202) | [[nodiscard]] bool allowScroll() const final {
class View::Modal (line 210) | class View::Modal : public View {
method Modal (line 212) | explicit Modal(UnlocalizedString unlocalizedName, const char *icon) ...
method hasCloseButton (line 216) | [[nodiscard]] virtual bool hasCloseButton() const { return true; }
method shouldStoreWindowState (line 217) | [[nodiscard]] bool shouldStoreWindowState() const override { return ...
class View::FullScreen (line 220) | class View::FullScreen : public View {
method FullScreen (line 222) | explicit FullScreen() : View("FullScreen", "") {}
FILE: lib/libimhex/include/hex/ui/widgets.hpp
type hex::ui (line 14) | namespace hex::ui {
class SearchableWidget (line 17) | class SearchableWidget {
method SearchableWidget (line 19) | SearchableWidget(const std::function<bool(const std::string&, const ...
method reset (line 50) | void reset() {
FILE: lib/libimhex/source/api/achievement_manager.cpp
type hex (line 13) | namespace hex {
function Achievement (line 186) | Achievement &AchievementManager::addAchievementImpl(std::unique_ptr<Ac...
FILE: lib/libimhex/source/api/content_registry.cpp
type hex (line 51) | namespace hex {
type ContentRegistry::Settings (line 53) | namespace ContentRegistry::Settings {
type impl (line 57) | namespace impl {
type OnChange (line 59) | struct OnChange {
type OnSave (line 64) | struct OnSave {
function runAllOnChangeCallbacks (line 72) | static void runAllOnChangeCallbacks() {
function runOnChangeHandlers (line 86) | void runOnChangeHandlers(const UnlocalizedString &unlocalizedCateg...
function load (line 122) | void load() {
function store (line 137) | void store() {
function clear (line 158) | void clear() {
function load (line 166) | void load() {
function store (line 184) | void store() {
function clear (line 223) | void clear() {
function T (line 231) | static T* insertOrGetEntry(std::vector<T> &vector, const Unlocaliz...
function printSettingReadError (line 279) | void printSettingReadError(const UnlocalizedString &unlocalizedCat...
function setCategoryDescription (line 285) | void setCategoryDescription(const UnlocalizedString &unlocalizedCate...
function u64 (line 291) | u64 onChange(const UnlocalizedString &unlocalizedCategory, const Unl...
function removeOnChangeHandler (line 301) | void removeOnChangeHandler(u64 id) {
function u64 (line 328) | u64 onSave(const OnSaveCallback &callback) {
type Widgets (line 338) | namespace Widgets {
function areColorsEquals (line 420) | static bool areColorsEquals(const std::array<float, 4> &a, const s...
function ImColor (line 464) | ImColor ColorPicker::getColor() const {
type ContentRegistry::CommandPalette (line 609) | namespace ContentRegistry::CommandPalette {
type impl (line 611) | namespace impl {
function add (line 630) | void add(Type type, const std::string &command, const UnlocalizedStr...
function addHandler (line 636) | void addHandler(Type type, const std::string &command, const impl::Q...
function setDisplayedContent (line 642) | void setDisplayedContent(const impl::ContentDisplayCallback &display...
function openWithContent (line 646) | void openWithContent(const impl::ContentDisplayCallback &displayCall...
type ContentRegistry::PatternLanguage (line 654) | namespace ContentRegistry::PatternLanguage {
type impl (line 656) | namespace impl {
function getFunctionName (line 685) | static std::string getFunctionName(const pl::api::Namespace &ns, con...
function configureRuntime (line 712) | void configureRuntime(pl::PatternLanguage &runtime, prv::Provider *p...
function addPragma (line 748) | void addPragma(const std::string &name, const pl::api::PragmaHandler...
function addFunction (line 754) | void addFunction(const pl::api::Namespace &ns, const std::string &na...
function addDangerousFunction (line 764) | void addDangerousFunction(const pl::api::Namespace &ns, const std::s...
function addType (line 774) | void addType(const pl::api::Namespace &ns, const std::string &name, ...
function addVisualizer (line 784) | void addVisualizer(const std::string &name, const impl::VisualizerFu...
function addInlineVisualizer (line 789) | void addInlineVisualizer(const std::string &name, const impl::Visual...
type ContentRegistry::Views (line 797) | namespace ContentRegistry::Views {
type impl (line 799) | namespace impl {
function add (line 806) | void add(std::unique_ptr<View> &&view) {
function setFullScreenView (line 817) | void setFullScreenView(std::unique_ptr<View> &&view) {
function View (line 823) | View* getViewByName(const UnlocalizedString &unlocalizedName) {
function View (line 832) | View* getFocusedView() {
type ContentRegistry::Tools (line 843) | namespace ContentRegistry::Tools {
type impl (line 845) | namespace impl {
function add (line 854) | void add(const UnlocalizedString &unlocalizedName, const char *icon,...
type ContentRegistry::DataInspector (line 862) | namespace ContentRegistry::DataInspector {
type impl (line 864) | namespace impl {
type EditWidget (line 873) | namespace EditWidget {
function add (line 885) | void add(const UnlocalizedString &unlocalizedName, size_t requiredSi...
function add (line 891) | void add(const UnlocalizedString &unlocalizedName, size_t requiredSi...
function drawMenuItems (line 897) | void drawMenuItems(const std::function<void()> &function) {
type ContentRegistry::DataProcessor (line 907) | namespace ContentRegistry::DataProcessor {
type impl (line 909) | namespace impl {
function add (line 916) | void add(const Entry &entry) {
function addSeparator (line 924) | void addSeparator() {
type ContentRegistry::UserInterface (line 930) | namespace ContentRegistry::UserInterface {
type impl (line 932) | namespace impl {
function registerMainMenuItem (line 986) | void registerMainMenuItem(const UnlocalizedString &unlocalizedName, ...
function addMenuItem (line 992) | void addMenuItem(const std::vector<UnlocalizedString> &unlocalizedMa...
function addMenuItem (line 996) | void addMenuItem(const std::vector<UnlocalizedString> &unlocalizedMa...
function addMenuItem (line 1000) | void addMenuItem(const std::vector<UnlocalizedString> &unlocalizedMa...
function addMenuItem (line 1004) | void addMenuItem(const std::vector<UnlocalizedString> &unlocalizedMa...
function addMenuItemSubMenu (line 1027) | void addMenuItemSubMenu(std::vector<UnlocalizedString> unlocalizedMa...
function addMenuItemSubMenu (line 1031) | void addMenuItemSubMenu(std::vector<UnlocalizedString> unlocalizedMa...
function addMenuItemSeparator (line 1040) | void addMenuItemSeparator(std::vector<UnlocalizedString> unlocalized...
function addTaskBarMenuItem (line 1047) | void addTaskBarMenuItem(std::vector<UnlocalizedString> unlocalizedMa...
function addWelcomeScreenEntry (line 1056) | void addWelcomeScreenEntry(const impl::DrawCallback &function) {
function addFooterItem (line 1060) | void addFooterItem(const impl::DrawCallback &function) {
function addToolbarItem (line 1064) | void addToolbarItem(const impl::DrawCallback &function) {
function addMenuItemToToolbar (line 1068) | void addMenuItemToToolbar(const std::vector<UnlocalizedString>& unlo...
type MenuItemSorter (line 1084) | struct MenuItemSorter {
function updateToolbarItems (line 1090) | void updateToolbarItems() {
function addSidebarItem (line 1107) | void addSidebarItem(const std::string &icon, const impl::DrawCallbac...
function addTitleBarButton (line 1111) | void addTitleBarButton(const std::string &icon, ImGuiCustomCol color...
function addWelcomeScreenQuickSettingsToggle (line 1115) | void addWelcomeScreenQuickSettingsToggle(const std::string &icon, co...
function addWelcomeScreenQuickSettingsToggle (line 1119) | void addWelcomeScreenQuickSettingsToggle(const std::string &onIcon, ...
type ContentRegistry::Provider::impl (line 1128) | namespace ContentRegistry::Provider::impl {
function add (line 1130) | void add(const std::string &typeName, ProviderCreationFunction creat...
function addProviderName (line 1148) | void addProviderName(const UnlocalizedString &unlocalizedName, const...
type ContentRegistry::DataFormatter (line 1159) | namespace ContentRegistry::DataFormatter {
type impl (line 1161) | namespace impl {
function addExportMenuEntry (line 1175) | void addExportMenuEntry(const UnlocalizedString &unlocalizedName, co...
function addFindExportFormatter (line 1181) | void addFindExportFormatter(const UnlocalizedString &unlocalizedName...
type ContentRegistry::FileTypeHandler (line 1189) | namespace ContentRegistry::FileTypeHandler {
type impl (line 1191) | namespace impl {
function add (line 1200) | void add(const std::vector<std::string> &extensions, const impl::Cal...
type ContentRegistry::HexEditor (line 1209) | namespace ContentRegistry::HexEditor {
type UserData (line 1216) | struct UserData {
type UserData (line 1247) | struct UserData {
type impl (line 1279) | namespace impl {
function addDataVisualizer (line 1291) | void addDataVisualizer(std::shared_ptr<DataVisualizer> &&visualize...
function getVisualizerByName (line 1298) | std::shared_ptr<DataVisualizer> getVisualizerByName(const Unlocalize...
function addMiniMapVisualizer (line 1307) | void addMiniMapVisualizer(UnlocalizedString unlocalizedName, MiniMap...
type ContentRegistry::Diffing::impl (line 1314) | namespace ContentRegistry::Diffing::impl {
function addAlgorithm (line 1321) | void addAlgorithm(std::unique_ptr<Algorithm> &&hash) {
type ContentRegistry::Hashes::impl (line 1328) | namespace ContentRegistry::Hashes::impl {
function add (line 1335) | void add(std::unique_ptr<Hash> &&hash) {
type ContentRegistry::BackgroundServices (line 1342) | namespace ContentRegistry::BackgroundServices {
type impl (line 1344) | namespace impl {
class Service (line 1346) | class Service {
method Service (line 1348) | Service(UnlocalizedString unlocalizedName, std::jthread thread) ...
method Service (line 1349) | Service(const Service&) = delete;
method Service (line 1350) | Service(Service &&) = default;
method Service (line 1357) | Service& operator=(const Service&) = delete;
method Service (line 1358) | Service& operator=(Service &&) = default;
method UnlocalizedString (line 1360) | [[nodiscard]] const UnlocalizedString& getUnlocalizedName() const {
function stopServices (line 1378) | void stopServices() {
function registerService (line 1384) | void registerService(const UnlocalizedString &unlocalizedName, const...
type ContentRegistry::CommunicationInterface (line 1401) | namespace ContentRegistry::CommunicationInterface {
type impl (line 1403) | namespace impl {
function registerNetworkEndpoint (line 1412) | void registerNetworkEndpoint(const std::string &endpoint, const impl...
type ContentRegistry::MCP (line 1420) | namespace ContentRegistry::MCP {
type impl (line 1422) | namespace impl {
function setEnabled (line 1434) | void setEnabled(bool enabled) {
function isEnabled (line 1440) | bool isEnabled() {
function isConnected (line 1444) | bool isConnected() {
function registerTool (line 1448) | void registerTool(std::string_view capabilities, std::function<nlohm...
type ContentRegistry::Experiments (line 1454) | namespace ContentRegistry::Experiments {
type impl (line 1456) | namespace impl {
function addExperiment (line 1465) | void addExperiment(const std::string &experimentName, const Unlocali...
function enableExperiement (line 1480) | void enableExperiement(const std::string &experimentName, bool enabl...
function isExperimentEnabled (line 1491) | [[nodiscard]] bool isExperimentEnabled(const std::string &experiment...
type ContentRegistry::Reports (line 1504) | namespace ContentRegistry::Reports {
type impl (line 1506) | namespace impl {
function addReportProvider (line 1515) | void addReportProvider(impl::Callback callback) {
type ContentRegistry::DataInformation (line 1521) | namespace ContentRegistry::DataInformation {
type impl (line 1533) | namespace impl {
function addInformationSectionCreator (line 1540) | void addInformationSectionCreator(const CreateCallback &callback) {
type ContentRegistry::Disassemblers::impl (line 1549) | namespace ContentRegistry::Disassemblers::impl {
function addArchitectureCreator (line 1553) | void addArchitectureCreator(impl::CreatorFunction function) {
FILE: lib/libimhex/source/api/event_manager.cpp
type hex (line 4) | namespace hex {
FILE: lib/libimhex/source/api/imhex_api.cpp
type hex (line 56) | namespace hex {
type ImHexApi::HexEditor (line 59) | namespace ImHexApi::HexEditor {
type impl (line 69) | namespace impl {
function setCurrentSelection (line 107) | void setCurrentSelection(const std::optional<ProviderRegion> ®i...
function setHoveredRegion (line 116) | void setHoveredRegion(const prv::Provider *provider, const Region ...
function u32 (line 128) | u32 addBackgroundHighlight(const Region ®ion, color_t color) {
function removeBackgroundHighlight (line 142) | void removeBackgroundHighlight(u32 id) {
function u32 (line 148) | u32 addBackgroundHighlightingProvider(const impl::HighlightingFuncti...
function removeBackgroundHighlightingProvider (line 160) | void removeBackgroundHighlightingProvider(u32 id) {
function u32 (line 166) | u32 addForegroundHighlight(const Region ®ion, color_t color) {
function removeForegroundHighlight (line 180) | void removeForegroundHighlight(u32 id) {
function u32 (line 186) | u32 addForegroundHighlightingProvider(const impl::HighlightingFuncti...
function removeForegroundHighlightingProvider (line 198) | void removeForegroundHighlightingProvider(u32 id) {
function u32 (line 204) | u32 addHoverHighlightProvider(const impl::HoveringFunction &function) {
function removeHoverHighlightProvider (line 214) | void removeHoverHighlightProvider(u32 id) {
function u32 (line 219) | u32 addTooltip(Region region, std::string value, color_t color) {
function removeTooltip (line 226) | void removeTooltip(u32 id) {
function u32 (line 231) | u32 addTooltipProvider(TooltipFunction function) {
function removeTooltipProvider (line 238) | void removeTooltipProvider(u32 id) {
function isSelectionValid (line 242) | bool isSelectionValid() {
function getSelection (line 247) | std::optional<ProviderRegion> getSelection() {
function clearSelection (line 251) | void clearSelection() {
function setSelection (line 255) | void setSelection(const Region ®ion, prv::Provider *provider) {
function setSelection (line 259) | void setSelection(const ProviderRegion ®ion) {
function setSelection (line 263) | void setSelection(u64 address, size_t size, prv::Provider *provider) {
function addVirtualFile (line 267) | void addVirtualFile(const std::string &path, std::vector<u8> data, R...
type ImHexApi::Bookmarks (line 278) | namespace ImHexApi::Bookmarks {
function u64 (line 280) | u64 add(Region region, const std::string &name, const std::string &c...
function u64 (line 287) | u64 add(u64 address, size_t size, const std::string &name, const std...
function remove (line 291) | void remove(u64 id) {
type ImHexApi::Provider (line 298) | namespace ImHexApi::Provider {
type impl (line 304) | namespace impl {
function resetClosingProvider (line 307) | void resetClosingProvider() {
function getClosingProviders (line 311) | std::set<prv::Provider*> getClosingProviders() {
function getProviders (line 325) | std::vector<prv::Provider*> getProviders() {
function setCurrentProvider (line 334) | void setCurrentProvider(i64 index) {
function setCurrentProvider (line 349) | void setCurrentProvider(NonNull<prv::Provider*> provider) {
function i64 (line 362) | i64 getCurrentProviderIndex() {
function isValid (line 366) | bool isValid() {
function markDirty (line 370) | void markDirty() {
function resetDirty (line 378) | void resetDirty() {
function isDirty (line 383) | bool isDirty() {
function add (line 389) | void add(std::shared_ptr<prv::Provider> &&provider, bool skipLoadInt...
function remove (line 405) | void remove(prv::Provider *provider, bool noQuestions) {
function createProvider (line 498) | std::shared_ptr<prv::Provider> createProvider(const UnlocalizedStrin...
function openProvider (line 505) | void openProvider(std::shared_ptr<prv::Provider> provider) {
type ImHexApi::System (line 511) | namespace ImHexApi::System {
type impl (line 513) | namespace impl {
function setMainInstanceStatus (line 517) | void setMainInstanceStatus(bool status) {
function setMainWindowPosition (line 523) | void setMainWindowPosition(i32 x, i32 y) {
function setMainWindowSize (line 527) | void setMainWindowSize(u32 width, u32 height) {
function setMainDockSpaceId (line 532) | void setMainDockSpaceId(ImGuiID id) {
function setMainWindowHandle (line 537) | void setMainWindowHandle(GLFWwindow *window) {
function setMainWindowFocusState (line 542) | void setMainWindowFocusState(bool focused) {
function setGlobalScale (line 548) | void setGlobalScale(float scale) {
function setNativeScale (line 553) | void setNativeScale(float scale) {
function setBorderlessWindowMode (line 559) | void setBorderlessWindowMode(bool enabled) {
function setMultiWindowMode (line 564) | void setMultiWindowMode(bool enabled) {
function setInitialWindowProperties (line 569) | void setInitialWindowProperties(InitialWindowProperties properties) {
function setGPUVendor (line 575) | void setGPUVendor(const std::string &vendor) {
function setGLRenderer (line 580) | void setGLRenderer(const std::string &renderer) {
function setGLVersion (line 585) | void setGLVersion(SemanticVersion version) {
function addInitArgument (line 590) | void addInitArgument(const std::string &key, const std::string &va...
function setLastFrameTime (line 598) | void setLastFrameTime(double time) {
function isWindowResizable (line 603) | bool isWindowResizable() {
function addAutoResetObject (line 613) | void addAutoResetObject(hex::impl::AutoResetBase *object) {
function removeAutoResetObject (line 617) | void removeAutoResetObject(hex::impl::AutoResetBase *object) {
function cleanup (line 621) | void cleanup() {
function frameRateUnlockRequested (line 627) | bool frameRateUnlockRequested() {
function resetFrameRateUnlockRequested (line 631) | void resetFrameRateUnlockRequested() {
function isMainInstance (line 637) | bool isMainInstance() {
function closeImHex (line 641) | void closeImHex(bool noQuestions) {
function restartImHex (line 645) | void restartImHex() {
function setTaskBarProgress (line 650) | void setTaskBarProgress(TaskProgressState state, TaskProgressType ty...
function getTargetFPS (line 657) | float getTargetFPS() {
function setTargetFPS (line 661) | void setTargetFPS(float fps) {
function getGlobalScale (line 665) | float getGlobalScale() {
function getNativeScale (line 669) | float getNativeScale() {
function getBackingScaleFactor (line 673) | float getBackingScaleFactor() {
function ImVec2 (line 698) | ImVec2 getMainWindowPosition() {
function ImVec2 (line 705) | ImVec2 getMainWindowSize() {
function ImGuiID (line 710) | ImGuiID getMainDockSpaceId() {
function GLFWwindow (line 714) | GLFWwindow* getMainWindowHandle() {
function isMainWindowFocused (line 718) | bool isMainWindowFocused() {
function isBorderlessWindowModeEnabled (line 722) | bool isBorderlessWindowModeEnabled() {
function isMultiWindowModeEnabled (line 726) | bool isMultiWindowModeEnabled() {
function getInitialWindowProperties (line 730) | std::optional<InitialWindowProperties> getInitialWindowProperties() {
function addMigrationRoutine (line 738) | void addMigrationRoutine(SemanticVersion migrationVersion, std::func...
function getInitArgument (line 751) | std::string getInitArgument(const std::string &key) {
function enableSystemThemeDetection (line 761) | void enableSystemThemeDetection(bool enabled) {
function usesSystemThemeDetection (line 767) | bool usesSystemThemeDetection() {
function setAdditionalFolderPaths (line 777) | void setAdditionalFolderPaths(const std::vector<std::fs::path> &path...
function SemanticVersion (line 790) | const SemanticVersion& getGLVersion() {
function isCorporateEnvironment (line 794) | bool isCorporateEnvironment() {
function isPortableVersion (line 816) | bool isPortableVersion() {
function getOSName (line 832) | std::string getOSName() {
function getOSVersion (line 850) | std::string getOSVersion() {
function getArchitecture (line 870) | std::string getArchitecture() {
function getLinuxDistro (line 902) | std::optional<LinuxDistro> getLinuxDistro() {
function SemanticVersion (line 921) | const SemanticVersion& getImHexVersion() {
function getCommitHash (line 931) | std::string getCommitHash(bool longHash) {
function getCommitBranch (line 944) | std::string getCommitBranch() {
function getBuildTime (line 952) | std::optional<std::chrono::system_clock::time_point> getBuildTime() {
function isDebugBuild (line 960) | bool isDebugBuild() {
function isNightlyBuild (line 968) | bool isNightlyBuild() {
function checkForUpdate (line 974) | std::optional<std::string> checkForUpdate() {
function updateImHex (line 1047) | bool updateImHex(UpdateType updateType) {
function addStartupTask (line 1093) | void addStartupTask(const std::string &name, bool async, const std::...
function getLastFrameTime (line 1097) | double getLastFrameTime() {
function setWindowResizable (line 1101) | void setWindowResizable(bool resizable) {
function unlockFrameRate (line 1106) | void unlockFrameRate() {
function setPostProcessingShader (line 1110) | void setPostProcessingShader(const std::string &vertexShader, const ...
type ImHexApi::Messaging (line 1117) | namespace ImHexApi::Messaging {
type impl (line 1119) | namespace impl {
function runHandler (line 1126) | void runHandler(const std::string &eventName, const std::vector<u8...
function registerHandler (line 1140) | void registerHandler(const std::string &eventName, const impl::Messa...
type ImHexApi::Fonts (line 1148) | namespace ImHexApi::Fonts {
type impl (line 1150) | namespace impl {
function registerMergeFont (line 1216) | void registerMergeFont(const std::string &name, const std::span<cons...
function registerFont (line 1229) | void registerFont(const Font& font) {
function FontDefinition (line 1233) | FontDefinition getFont(const UnlocalizedString &fontName) {
function setDefaultFont (line 1243) | void setDefaultFont(const Font& font) {
function Font (line 1247) | const Font& getDefaultFont() {
function getDpi (line 1255) | float getDpi() {
function pixelsToPoints (line 1260) | float pixelsToPoints(float pixels) {
function pointsToPixels (line 1264) | float pointsToPixels(float points) {
FILE: lib/libimhex/source/api/layout_manager.cpp
type hex (line 13) | namespace hex {
FILE: lib/libimhex/source/api/localization_manager.cpp
type hex (line 12) | namespace hex {
type LocalizationManager (line 14) | namespace LocalizationManager {
function addLanguages (line 26) | void addLanguages(const std::string_view &languageList, std::functio...
function LanguageId (line 63) | static LanguageId findBestLanguageMatch(LanguageId languageId) {
function populateLocalization (line 87) | static void populateLocalization(LanguageId languageId, std::unorder...
function setLanguage (line 133) | void setLanguage(const LanguageId &languageId) {
function LanguageDefinition (line 172) | const LanguageDefinition& getLanguageDefinition(const LanguageId &la...
FILE: lib/libimhex/source/api/plugin_manager.cpp
type hex (line 20) | namespace hex {
function loadLibrary (line 22) | static uintptr_t loadLibrary(const std::fs::path &path) {
function unloadLibrary (line 48) | static void unloadLibrary(uintptr_t handle, const std::fs::path &path) {
function Plugin (line 105) | Plugin& Plugin::operator=(Plugin &&other) noexcept {
function Plugin (line 408) | Plugin* PluginManager::getPlugin(const std::string &name) {
FILE: lib/libimhex/source/api/project_file_manager.cpp
type hex (line 7) | namespace hex {
FILE: lib/libimhex/source/api/shortcut_manager.cpp
type hex (line 13) | namespace hex {
function Shortcut (line 25) | Shortcut operator+(const Key &lhs, const Key &rhs) {
function Shortcut (line 39) | Shortcut Shortcut::operator+(const Key &other) const {
function Shortcut (line 46) | Shortcut& Shortcut::operator+=(const Key &other) {
function KeyEquivalent (line 240) | KeyEquivalent Shortcut::toKeyEquivalent() const {
function Shortcut (line 306) | static Shortcut getShortcut(bool ctrl, bool alt, bool shift, bool supe...
function processShortcut (line 325) | static bool processShortcut(Shortcut shortcut, const std::map<Shortcut...
function Shortcut (line 404) | Shortcut ShortcutManager::getShortcutByName(const std::vector<Unlocali...
function updateShortcutImpl (line 454) | static bool updateShortcutImpl(const Shortcut &oldShortcut, const Shor...
FILE: lib/libimhex/source/api/task_manager.cpp
type SourceLocationWrapper (line 24) | struct SourceLocationWrapper {
type std::hash<SourceLocationWrapper> (line 38) | struct std::hash<SourceLocationWrapper> {
type hex (line 48) | namespace hex {
function UnlocalizedString (line 183) | const UnlocalizedString &Task::getUnlocalizedName() {
function u64 (line 187) | u64 Task::getValue() const {
function u64 (line 191) | u64 Task::getMaxValue() const {
function u32 (line 271) | u32 TaskHolder::getProgress() const {
function TaskHolder (line 389) | TaskHolder TaskManager::createTask(const UnlocalizedString &unlocalize...
function TaskHolder (line 406) | TaskHolder TaskManager::createTask(const UnlocalizedString &unlocalize...
function TaskHolder (line 411) | TaskHolder TaskManager::createTask(const UnlocalizedString &unlocalize...
function TaskHolder (line 420) | TaskHolder TaskManager::createBackgroundTask(const UnlocalizedString &...
function TaskHolder (line 425) | TaskHolder TaskManager::createBackgroundTask(const UnlocalizedString &...
function TaskHolder (line 434) | TaskHolder TaskManager::createBlockingTask(const UnlocalizedString &un...
function TaskHolder (line 439) | TaskHolder TaskManager::createBlockingTask(const UnlocalizedString &un...
function Task (line 465) | Task& TaskManager::getCurrentTask() {
type THREADNAME_INFO (line 555) | struct THREADNAME_INFO {
FILE: lib/libimhex/source/api/theme_manager.cpp
type hex (line 11) | namespace hex {
FILE: lib/libimhex/source/api/tutorial_manager.cpp
type hex (line 18) | namespace hex {
class IDStack (line 38) | class IDStack {
method IDStack (line 40) | IDStack() {
method add (line 44) | void add(const char *string) {
method add (line 51) | void add(const std::string &string) {
method add (line 58) | void add(const void *pointer) {
method add (line 65) | void add(int value) {
method ImGuiID (line 72) | ImGuiID get() {
function ImGuiID (line 79) | ImGuiID calculateId(const auto &ids) {
FILE: lib/libimhex/source/api/workspace_manager.cpp
type hex (line 15) | namespace hex {
FILE: lib/libimhex/source/data_processor/attribute.cpp
type hex::dp (line 4) | namespace hex::dp {
FILE: lib/libimhex/source/data_processor/link.cpp
type hex::dp (line 4) | namespace hex::dp {
FILE: lib/libimhex/source/data_processor/node.cpp
type hex::dp (line 8) | namespace hex::dp {
function i128 (line 41) | const i128& Node::getIntegerOnInput(u32 index) {
function Attribute (line 170) | Attribute& Node::getAttribute(u32 index) {
function Attribute (line 177) | Attribute *Node::getConnectedInputAttribute(u32 index) {
FILE: lib/libimhex/source/helpers/binary_pattern.cpp
type hex (line 5) | namespace hex {
function skipWhitespace (line 9) | void skipWhitespace(std::string_view &string) {
function parseValueExpression (line 17) | std::vector<BinaryPattern::Pattern> parseValueExpression(std::string_v...
function parseBinaryPatternString (line 85) | std::vector<BinaryPattern::Pattern> parseBinaryPatternString(std::stri...
function u64 (line 171) | u64 BinaryPattern::getSize() const {
FILE: lib/libimhex/source/helpers/crypto.cpp
type hex::crypt (line 36) | namespace hex::crypt {
function processDataByChunks (line 40) | void processDataByChunks(prv::Provider *data, u64 offset, size_t size,...
function T (line 50) | T reflect(T in, std::size_t bits) {
function T (line 63) | T reflect(T in) {
class Crc (line 78) | class Crc {
method Crc (line 83) | constexpr Crc(u64 polynomial, u64 init, u64 xorOut, bool reflectInpu...
method reset (line 106) | constexpr void reset() {
method processBytes (line 110) | constexpr void processBytes(const unsigned char *data, std::size_t s...
method u64 (line 122) | [[nodiscard]]
function calcCrc (line 142) | auto calcCrc(prv::Provider *data, u64 offset, std::size_t size, u32 po...
function u8 (line 151) | u8 crc8(prv::Provider *&data, u64 offset, size_t size, u32 polynomial,...
function u16 (line 155) | u16 crc16(prv::Provider *&data, u64 offset, size_t size, u32 polynomia...
function u32 (line 159) | u32 crc32(prv::Provider *&data, u64 offset, size_t size, u32 polynomia...
function md5 (line 164) | std::array<u8, 16> md5(prv::Provider *&data, u64 offset, size_t size) {
function md5 (line 181) | std::array<u8, 16> md5(const std::vector<u8> &data) {
function sha1 (line 196) | std::array<u8, 20> sha1(prv::Provider *&data, u64 offset, size_t size) {
function sha1 (line 213) | std::array<u8, 20> sha1(const std::vector<u8> &data) {
function sha224 (line 228) | std::array<u8, 28> sha224(prv::Provider *&data, u64 offset, size_t siz...
function sha224 (line 245) | std::array<u8, 28> sha224(const std::vector<u8> &data) {
function sha256 (line 260) | std::array<u8, 32> sha256(prv::Provider *&data, u64 offset, size_t siz...
function sha256 (line 277) | std::array<u8, 32> sha256(const std::vector<u8> &data) {
function sha384 (line 292) | std::array<u8, 48> sha384(prv::Provider *&data, u64 offset, size_t siz...
function sha384 (line 309) | std::array<u8, 48> sha384(const std::vector<u8> &data) {
function sha512 (line 324) | std::array<u8, 64> sha512(prv::Provider *&data, u64 offset, size_t siz...
function sha512 (line 341) | std::array<u8, 64> sha512(const std::vector<u8> &data) {
function decode64 (line 357) | std::vector<u8> decode64(const std::vector<u8> &input) {
function encode64 (line 370) | std::vector<u8> encode64(const std::vector<u8> &input) {
function decode16 (line 384) | std::vector<u8> decode16(const std::string &input) {
function encode16 (line 407) | std::string encode16(const std::vector<u8> &input) {
function T (line 423) | static T safeLeftShift(T t, u32 shift) {
function T (line 432) | static T decodeLeb128(const std::vector<u8> &bytes) {
function u128 (line 452) | u128 decodeUleb128(const std::vector<u8> &bytes) {
function i128 (line 456) | i128 decodeSleb128(const std::vector<u8> &bytes) {
function encodeLeb128 (line 461) | static std::vector<u8> encodeLeb128(T value) {
function encodeUleb128 (line 485) | std::vector<u8> encodeUleb128(u128 value) {
function encodeSleb128 (line 489) | std::vector<u8> encodeSleb128(i128 value) {
function aes (line 493) | static wolv::util::Expected<std::vector<u8>, int> aes(mbedtls_cipher_t...
function aesDecrypt (line 547) | wolv::util::Expected<std::vector<u8>, int> aesDecrypt(AESMode mode, Ke...
FILE: lib/libimhex/source/helpers/debugging.cpp
type hex::dbg (line 5) | namespace hex::dbg {
type impl (line 7) | namespace impl {
function debugModeEnabled (line 18) | bool debugModeEnabled() {
function setDebugModeEnabled (line 22) | void setDebugModeEnabled(bool enabled) {
function assertionHandler (line 26) | [[noreturn]] void assertionHandler(const char* file, int line, const c...
function printStackTrace (line 35) | void printStackTrace(const trace::StackTraceResult &stackTrace) {
FILE: lib/libimhex/source/helpers/default_paths.cpp
type hex::paths (line 17) | namespace hex::paths {
function getDataPaths (line 19) | std::vector<std::fs::path> getDataPaths(bool includeSystemFolders) {
function getConfigPaths (line 92) | std::vector<std::fs::path> getConfigPaths(bool includeSystemFolders) {
function appendPath (line 103) | static std::vector<std::fs::path> appendPath(std::vector<std::fs::path...
function getPluginPaths (line 112) | static std::vector<std::fs::path> getPluginPaths() {
type impl (line 130) | namespace impl {
FILE: lib/libimhex/source/helpers/encoding_file.cpp
type hex (line 9) | namespace hex {
function EncodingFile (line 68) | EncodingFile &EncodingFile::operator=(const hex::EncodingFile &other) {
function EncodingFile (line 82) | EncodingFile &EncodingFile::operator=(EncodingFile &&other) noexcept {
function u64 (line 107) | u64 EncodingFile::getEncodingLengthFor(std::span<u8> buffer) const {
FILE: lib/libimhex/source/helpers/fs.cpp
type hex::fs (line 35) | namespace hex::fs {
function setFileBrowserErrorCallback (line 38) | void setFileBrowserErrorCallback(const std::function<void(const std::s...
function openFileExternal (line 43) | void openFileExternal(std::fs::path filePath) {
function openFolderExternal (line 62) | void openFolderExternal(std::fs::path dirPath) {
function openFolderWithSelectionExternal (line 82) | void openFolderWithSelectionExternal(std::fs::path selectedFilePath) {
function fileBrowserCallback (line 113) | fileBrowserCallback(char* path) {
function EM_JS (line 117) | EM_JS(int, callJs_saveFile, (const char *rawFilename), {
function openFileBrowser (line 186) | bool openFileBrowser(DialogMode mode, const std::vector<ItemFilter> &v...
function openFileBrowser (line 218) | bool openFileBrowser(DialogMode mode, const std::vector<ItemFilter> &v...
function isPathWritable (line 298) | bool isPathWritable(const std::fs::path &path) {
function toShortPath (line 321) | std::fs::path toShortPath(const std::fs::path &path) {
FILE: lib/libimhex/source/helpers/http_requests.cpp
type hex (line 6) | namespace hex {
FILE: lib/libimhex/source/helpers/http_requests_emscripten.cpp
type hex (line 5) | namespace hex {
function HttpRequest (line 20) | HttpRequest& HttpRequest::operator=(HttpRequest &&other) noexcept {
FILE: lib/libimhex/source/helpers/http_requests_native.cpp
type hex (line 6) | namespace hex {
function progressCallback (line 15) | int progressCallback(void *contents, curl_off_t dlTotal, curl_off_t dl...
function HttpRequest (line 54) | HttpRequest& HttpRequest::operator=(HttpRequest &&other) noexcept {
type impl (line 113) | namespace impl {
function setWriteFunctions (line 115) | void setWriteFunctions(CURL *curl, wolv::io::File &file) {
function setWriteFunctions (line 120) | void setWriteFunctions(CURL *curl, std::vector<u8> &data) {
function setupFileUpload (line 125) | void setupFileUpload(CURL *curl, const wolv::io::File &file, const s...
function setupFileUpload (line 156) | void setupFileUpload(CURL *curl, const std::vector<u8> &data, const ...
function executeCurl (line 168) | int executeCurl(CURL *curl, const std::string &url, const std::strin...
function getStatusCode (line 194) | long getStatusCode(CURL *curl) {
function getStatusText (line 201) | std::string getStatusText(int result) {
FILE: lib/libimhex/source/helpers/imgui_hooks.cpp
function ImGuiTestEngineHook_ItemAdd (line 10) | void ImGuiTestEngineHook_ItemAdd(ImGuiContext*, ImGuiID id, const ImRect...
function ImGuiTestEngineHook_ItemInfo (line 14) | void ImGuiTestEngineHook_ItemInfo(ImGuiContext*, ImGuiID, const char*, I...
function ImGuiTestEngineHook_Log (line 15) | void ImGuiTestEngineHook_Log(ImGuiContext*, const char*, ...) {}
FILE: lib/libimhex/source/helpers/keys.cpp
function scanCodeToKey (line 5) | enum Keys scanCodeToKey(int scanCode) {
function keyToScanCode (line 123) | int keyToScanCode(enum Keys key) {
FILE: lib/libimhex/source/helpers/logger.cpp
type hex::log (line 21) | namespace hex::log {
function suspendLogging (line 33) | void suspendLogging() {
function resumeLogging (line 37) | void resumeLogging() {
function enableDebugLogging (line 41) | void enableDebugLogging() {
type impl (line 45) | namespace impl {
function lockLoggerMutex (line 47) | void lockLoggerMutex() {
function unlockLoggerMutex (line 51) | void unlockLoggerMutex() {
function isLoggingSuspended (line 56) | bool isLoggingSuspended() {
function isDebugLoggingEnabled (line 60) | bool isDebugLoggingEnabled() {
function FILE (line 68) | FILE *getDestination() {
function isRedirected (line 79) | bool isRedirected() {
function redirectToFile (line 83) | void redirectToFile() {
function enableColorPrinting (line 99) | void enableColorPrinting() {
function addLogEntry (line 119) | void addLogEntry(std::string_view project, std::string_view level, s...
function printPrefix (line 128) | void printPrefix(FILE *dest, fmt::text_style ts, std::string_view le...
type color (line 153) | namespace color {
function debug (line 155) | fmt::color debug() { return fmt::color::medium_sea_green; }
function info (line 156) | fmt::color info() { return fmt::color::steel_blue; }
function warn (line 157) | fmt::color warn() { return fmt::color::orange; }
function error (line 158) | fmt::color error() { return fmt::color::indian_red; }
function fatal (line 159) | fmt::color fatal() { return fmt::color::medium_purple; }
FILE: lib/libimhex/source/helpers/magic.cpp
type hex::magic (line 35) | namespace hex::magic {
function getMagicFiles (line 37) | static std::optional<std::string> getMagicFiles(bool sourceFiles = fal...
function compile (line 64) | bool compile() {
function getDescription (line 107) | std::string getDescription(const std::vector<u8> &data, bool firstEntr...
function getDescription (line 130) | std::string getDescription(prv::Provider *provider, u64 address, size_...
function getMIMEType (line 137) | std::string getMIMEType(const std::vector<u8> &data, bool firstEntryOn...
function getMIMEType (line 160) | std::string getMIMEType(prv::Provider *provider, u64 address, size_t s...
function getExtensions (line 167) | std::string getExtensions(prv::Provider *provider, u64 address, size_t...
function getExtensions (line 174) | std::string getExtensions(const std::vector<u8> &data, bool firstEntry...
function getAppleCreatorType (line 197) | std::string getAppleCreatorType(prv::Provider *provider, u64 address, ...
function getAppleCreatorType (line 204) | std::string getAppleCreatorType(const std::vector<u8> &data, bool firs...
function isValidMIMEType (line 222) | bool isValidMIMEType(const std::string &mimeType) {
function findViablePatterns (line 237) | std::vector<FoundPattern> findViablePatterns(prv::Provider *provider, ...
FILE: lib/libimhex/source/helpers/opengl.cpp
type hex::gl (line 16) | namespace hex::gl {
function GetOrthographicMatrix (line 18) | Matrix<float,4,4> GetOrthographicMatrix( float viewWidth, float viewHe...
function GetPerspectiveMatrix (line 43) | Matrix<float,4,4> GetPerspectiveMatrix( float viewWidth, float viewHei...
function Shader (line 109) | Shader& Shader::operator=(Shader &&other) noexcept {
function GLint (line 140) | GLint Shader::getUniformLocation(std::string_view name) {
class Buffer<float> (line 238) | class Buffer<float>
class Buffer<u32> (line 239) | class Buffer<u32>
class Buffer<u16> (line 240) | class Buffer<u16>
class Buffer<u8> (line 241) | class Buffer<u8>
function VertexArray (line 256) | VertexArray& VertexArray::operator=(VertexArray &&other) noexcept {
function Texture (line 296) | Texture& Texture::operator=(Texture &&other) noexcept {
function GLuint (line 314) | GLuint Texture::getTexture() const {
function u32 (line 318) | u32 Texture::getWidth() const {
function u32 (line 322) | u32 Texture::getHeight() const {
function GLuint (line 326) | GLuint Texture::release() {
function FrameBuffer (line 358) | FrameBuffer& FrameBuffer::operator=(FrameBuffer &&other) noexcept {
FILE: lib/libimhex/source/helpers/patches.cpp
type hex (line 11) | namespace hex {
class PatchesGenerator (line 15) | class PatchesGenerator : public hex::prv::Provider {
method PatchesGenerator (line 17) | explicit PatchesGenerator() = default;
method isAvailable (line 20) | [[nodiscard]] bool isAvailable() const override { return true; }
method isReadable (line 21) | [[nodiscard]] bool isReadable() const override { return true; }
method isWritable (line 22) | [[nodiscard]] bool isWritable() const override { return true; }
method isResizable (line 23) | [[nodiscard]] bool isResizable() const override { return true; }
method isSavable (line 24) | [[nodiscard]] bool isSavable() const override { return false; }
method isSavableAsRecent (line 25) | [[nodiscard]] bool isSavableAsRecent() const override { return false; }
method OpenResult (line 27) | [[nodiscard]] OpenResult open() override { return {}; }
method close (line 28) | void close() override { }
method readRaw (line 30) | void readRaw(u64 offset, void *buffer, size_t size) override {
method writeRaw (line 36) | void writeRaw(u64 offset, const void *buffer, size_t size) override {
method u64 (line 41) | [[nodiscard]] u64 getActualSize() const override {
method insertRaw (line 48) | void insertRaw(u64 offset, u64 size) override {
method removeRaw (line 62) | void removeRaw(u64 offset, u64 size) override {
method getName (line 76) | [[nodiscard]] std::string getName() const override {
method UnlocalizedString (line 84) | [[nodiscard]] UnlocalizedString getTypeName() const override { retur...
function pushStringBack (line 94) | void pushStringBack(std::vector<u8> &buffer, const std::string &string) {
function pushBytesBack (line 99) | void pushBytesBack(std::vector<u8> &buffer, T bytes) {
FILE: lib/libimhex/source/helpers/scaling.cpp
type hex (line 5) | namespace hex {
function ImVec2 (line 15) | ImVec2 scaled(const ImVec2 &vector) {
function ImVec2 (line 19) | ImVec2 scaled(float x, float y) {
FILE: lib/libimhex/source/helpers/semantic_version.cpp
type hex (line 5) | namespace hex {
function u32 (line 45) | u32 SemanticVersion::major() const {
function u32 (line 55) | u32 SemanticVersion::minor() const {
function u32 (line 65) | u32 SemanticVersion::patch() const {
FILE: lib/libimhex/source/helpers/tar.cpp
type hex (line 12) | namespace hex {
function Tar (line 63) | Tar &Tar::operator=(Tar &&other) noexcept {
function writeFile (line 155) | static void writeFile(mtar_t *ctx, const mtar_header_t *header, const ...
FILE: lib/libimhex/source/helpers/udp_server.cpp
type hex (line 14) | namespace hex {
FILE: lib/libimhex/source/helpers/utils.cpp
type hex (line 45) | namespace hex {
function to_string (line 47) | std::string to_string(u128 value) {
function to_string (line 60) | std::string to_string(i128 value) {
function toLower (line 80) | std::string toLower(std::string string) {
function toUpper (line 87) | std::string toUpper(std::string string) {
function parseHexString (line 94) | std::vector<u8> parseHexString(std::string string) {
function parseBinaryString (line 122) | std::optional<u8> parseBinaryString(const std::string &string) {
function toByteString (line 141) | std::string toByteString(u64 bytes) {
function makeStringPrintable (line 189) | std::string makeStringPrintable(const std::string &string) {
function makePrintable (line 201) | std::string makePrintable(u8 c) {
function toEngineeringString (line 279) | std::string toEngineeringString(double value) {
function startProgram (line 297) | void startProgram(const std::vector<std::string> &command) {
function executeCommand (line 311) | int executeCommand(const std::string &command) {
function executeCommandWithOutput (line 315) | std::optional<std::string> executeCommandWithOutput(const std::string ...
function executeCommandDetach (line 359) | void executeCommandDetach(const std::string &command) {
function openWebpage (line 395) | void openWebpage(std::string url) {
function hexCharToValue (line 414) | std::optional<u8> hexCharToValue(char c) {
function encodeByteString (line 423) | std::string encodeByteString(const std::vector<u8> &bytes) {
function decodeByteString (line 465) | std::vector<u8> decodeByteString(const std::string &string) {
function utf8ToUtf16 (line 536) | std::wstring utf8ToUtf16(const std::string& utf8) {
function utf16ToUtf8 (line 600) | std::string utf16ToUtf8(const std::wstring& utf16) {
function isProcessElevated (line 654) | bool isProcessElevated() {
function getEnvironmentVariable (line 678) | std::optional<std::string> getEnvironmentVariable(const std::string &e...
function limitStringLength (line 687) | [[nodiscard]] std::string limitStringLength(const std::string &string,...
function openFile (line 729) | void openFile(const char *path) {
function getInitialFilePath (line 734) | std::optional<std::fs::path> getInitialFilePath() {
function registerFont (line 739) | void registerFont(const char *fontName, const char *fontPath) {
function generateHexViewImpl (line 749) | std::string generateHexViewImpl(u64 offset, auto begin, auto end) {
function generateHexView (line 801) | std::string generateHexView(u64 offset, u64 size, prv::Provider *provi...
function generateHexView (line 809) | std::string generateHexView(u64 offset, const std::vector<u8> &data) {
function formatSystemError (line 813) | std::string formatSystemError(i32 error) {
function blendColors (line 855) | std::optional<ImColor> blendColors(const std::optional<ImColor> &a, co...
function parseTime (line 866) | std::optional<std::chrono::system_clock::time_point> parseTime(std::st...
function getOSLanguage (line 879) | std::optional<std::string> getOSLanguage() {
function macOSCloseButtonPressed (line 934) | void macOSCloseButtonPressed() {
function macosEventDataReceived (line 938) | void macosEventDataReceived(const u8 *data, size_t length) {
function showErrorMessageBox (line 942) | void showErrorMessageBox(const std::string &message) {
function showToastMessage (line 959) | void showToastMessage(const std::string &title, const std::string &mes...
FILE: lib/libimhex/source/helpers/utils_linux.cpp
type hex (line 9) | namespace hex {
function executeCmd (line 11) | void executeCmd(const std::vector<std::string> &argsVector) {
FILE: lib/libimhex/source/mcp/client.cpp
type hex::mcp (line 16) | namespace hex::mcp {
FILE: lib/libimhex/source/mcp/server.cpp
type hex::mcp (line 14) | namespace hex::mcp {
FILE: lib/libimhex/source/providers/cached_provider.cpp
type hex::prv (line 5) | namespace hex::prv {
function u64 (line 101) | u64 CachedProvider::getActualSize() const {
FILE: lib/libimhex/source/providers/memory_provider.cpp
type hex::prv (line 5) | namespace hex::prv {
FILE: lib/libimhex/source/providers/provider.cpp
type hex::prv (line 19) | namespace hex::prv {
function Overlay (line 197) | Overlay *Provider::newOverlay() {
function u64 (line 212) | u64 Provider::getPageSize() const {
function u32 (line 225) | u32 Provider::getPageCount() const {
function u32 (line 229) | u32 Provider::getCurrentPage() const {
function u64 (line 244) | u64 Provider::getBaseAddress() const {
function u64 (line 248) | u64 Provider::getCurrentPageAddress() const {
function u64 (line 252) | u64 Provider::getSize() const {
function u32 (line 324) | u32 Provider::getID() const {
FILE: lib/libimhex/source/providers/undo/stack.cpp
type hex::prv::undo (line 11) | namespace hex::prv::undo {
FILE: lib/libimhex/source/subcommands/subcommands.cpp
type hex::subcommands (line 13) | namespace hex::subcommands {
function findSubCommand (line 15) | std::optional<SubCommand> findSubCommand(const std::string &arg) {
function processArguments (line 30) | void processArguments(const std::vector<std::string> &args) {
function forwardSubCommand (line 115) | void forwardSubCommand(const std::string &cmdName, const std::vector<s...
function registerSubCommand (line 131) | void registerSubCommand(const std::string &cmdName, const ForwardComma...
FILE: lib/libimhex/source/test/tests.cpp
type hex::test (line 3) | namespace hex::test {
function initPluginImpl (line 18) | bool initPluginImpl(std::string name) {
FILE: lib/libimhex/source/ui/banner.cpp
type hex::impl (line 4) | namespace hex::impl {
FILE: lib/libimhex/source/ui/imgui_imhex_extensions.cpp
type ImGuiExt (line 28) | namespace ImGuiExt {
function isOpenGLExtensionSupported (line 34) | bool isOpenGLExtensionSupported(const char *name) {
function isOpenGLVersionAtLeast (line 50) | bool isOpenGLVersionAtLeast(u8 major, u8 minor) {
function getGLFilter (line 60) | constexpr auto getGLFilter(Texture::Filter filter) {
function GLint (line 72) | [[maybe_unused]] GLint getMaxSamples(GLenum target, GLenum format) {
function GLuint (line 79) | GLuint createTextureFromRGBA8Array(const ImU8 *buffer, int width, int ...
function GLuint (line 99) | GLuint createMultisampleTextureFromRGBA8Array(const ImU8 *buffer, int ...
function Texture (line 153) | Texture Texture::fromImage(const ImU8 *buffer, int size, Filter filter) {
function Texture (line 173) | Texture Texture::fromImage(std::span<const std::byte> buffer, Filter f...
function Texture (line 178) | Texture Texture::fromImage(const std::fs::path &path, Filter filter) {
function Texture (line 182) | Texture Texture::fromImage(const char *path, Filter filter) {
function Texture (line 197) | Texture Texture::fromGLTexture(unsigned int glTexture, int width, int ...
function Texture (line 206) | Texture Texture::fromBitmap(std::span<const std::byte> buffer, int wid...
function Texture (line 210) | Texture Texture::fromBitmap(const ImU8 *buffer, int size, int width, i...
function Texture (line 224) | Texture Texture::fromSVG(const char *path, int width, int height, Filt...
function Texture (line 240) | Texture Texture::fromSVG(const std::fs::path &path, int width, int hei...
function Texture (line 244) | Texture Texture::fromSVG(std::span<const std::byte> buffer, int width,...
function Texture (line 269) | Texture& Texture::operator=(Texture&& other) noexcept {
function GetTextWrapPos (line 320) | float GetTextWrapPos() {
function UpdateStringSizeCallback (line 324) | int UpdateStringSizeCallback(ImGuiInputTextCallbackData *data) {
function IconHyperlink (line 335) | bool IconHyperlink(const char *icon, const char *label, const ImVec2 &...
function Hyperlink (line 374) | bool Hyperlink(const char *label, const ImVec2 &size_arg, ImGuiButtonF...
function BulletHyperlink (line 404) | bool BulletHyperlink(const char *label, const ImVec2 &size_arg, ImGuiB...
function DescriptionButton (line 437) | bool DescriptionButton(const char *label, const char *description, con...
function DescriptionButtonProgress (line 496) | bool DescriptionButtonProgress(const char *label, const char *descript...
function HelpHover (line 559) | void HelpHover(const char *text, const char *icon, ImU32 iconColor) {
function UnderlinedText (line 583) | void UnderlinedText(const char *label, ImColor color, const ImVec2 &si...
function UnderwavedText (line 597) | void UnderwavedText(const char *label, ImColor textColor, ImColor line...
function TextSpinner (line 625) | void TextSpinner(const char *label) {
function Header (line 629) | void Header(const char *label, bool firstEntry) {
function HeaderColored (line 635) | void HeaderColored(const char *label, ImColor color, bool firstEntry) {
function InfoTooltip (line 642) | bool InfoTooltip(const char *text, bool isSeparator) {
function ImU32 (line 687) | ImU32 GetCustomColorU32(ImGuiCustomCol idx, float alpha_mul) {
function ImVec4 (line 694) | ImVec4 GetCustomColorVec4(ImGuiCustomCol idx, float alpha_mul) {
function GetCustomStyleFloat (line 701) | float GetCustomStyleFloat(ImGuiCustomStyle idx) {
function ImVec2 (line 712) | ImVec2 GetCustomStyleVec2(ImGuiCustomStyle idx) {
function StyleCustomColorsDark (line 717) | void StyleCustomColorsDark() {
function StyleCustomColorsLight (line 739) | void StyleCustomColorsLight() {
function StyleCustomColorsClassic (line 761) | void StyleCustomColorsClassic() {
function OpenPopupInWindow (line 782) | void OpenPopupInWindow(const char *window_name, const char *popup_name) {
function DisableWindowResize (line 789) | void DisableWindowResize(ImGuiDir dir) {
function TitleBarButton (line 801) | bool TitleBarButton(const char *label, ImVec2 size_arg) {
function ToolBarButton (line 838) | bool ToolBarButton(const char *symbol, ImVec4 color) {
function IconButton (line 886) | bool IconButton(const char *symbol, ImVec4 color, ImVec2 size_arg, ImV...
function InputPrefix (line 929) | bool InputPrefix(const char* label, const char *prefix, std::string &b...
function InputIntegerPrefix (line 961) | bool InputIntegerPrefix(const char *label, const char *prefix, void *v...
function InputHexadecimal (line 997) | bool InputHexadecimal(const char *label, u32 *value, ImGuiInputTextFla...
function InputHexadecimal (line 1001) | bool InputHexadecimal(const char *label, u64 *value, ImGuiInputTextFla...
function SliderBytes (line 1005) | bool SliderBytes(const char *label, u64 *value, u64 min, u64 max, u64 ...
function ProgressBar (line 1029) | void ProgressBar(float fraction, ImVec2 size_value, float yOffset) {
function TextUnformattedCentered (line 1058) | void TextUnformattedCentered(const char *text) {
function InputTextIcon (line 1079) | bool InputTextIcon(const char *label, const char *icon, std::string &b...
function InputTextIconHint (line 1083) | bool InputTextIconHint(const char* label, const char *icon, const char...
function InputScalarCallback (line 1111) | bool InputScalarCallback(const char* label, ImGuiDataType data_type, v...
function HideTooltip (line 1138) | void HideTooltip() {
function BitCheckbox (line 1148) | bool BitCheckbox(const char* label, bool* v) {
function DimmedButton (line 1190) | bool DimmedButton(const char* label, ImVec2 size, ImGuiButtonFlags fla...
function DimmedIconButton (line 1205) | bool DimmedIconButton(const char *symbol, ImVec4 color, ImVec2 size, I...
function DimmedArrowButton (line 1220) | bool DimmedArrowButton(const char *id, ImGuiDir dir, ImVec2 size) {
function DimmedButtonToggle (line 1235) | bool DimmedButtonToggle(const char *icon, bool *v, ImVec2 size, ImVec2...
function DimmedIconToggle (line 1255) | bool DimmedIconToggle(const char *icon, bool *v) {
function DimmedIconToggle (line 1275) | bool DimmedIconToggle(const char *iconOn, const char *iconOff, bool *v) {
function TextOverlay (line 1295) | void TextOverlay(const char *text, ImVec2 pos, float maxWidth) {
function BeginBox (line 1310) | bool BeginBox() {
function EndBox (line 1322) | void EndBox() {
function BeginSubWindow (line 1327) | bool BeginSubWindow(const char *label, bool *collapsed, ImVec2 size, I...
function EndSubWindow (line 1364) | void EndSubWindow() {
function VSliderAngle (line 1369) | bool VSliderAngle(const char* label, const ImVec2& size, float* v_rad,...
function InputFilePicker (line 1378) | bool InputFilePicker(const char *label, std::fs::path &path, const std...
function ToggleSwitch (line 1411) | bool ToggleSwitch(const char *label, bool *v) {
function ToggleSwitch (line 1458) | bool ToggleSwitch(const char *label, bool v) {
function PopupTitleBarButton (line 1462) | bool PopupTitleBarButton(const char* label, bool p_enabled)
function PopupTitleBarText (line 1497) | void PopupTitleBarText(const char* text) {
function IsDarkBackground (line 1516) | bool IsDarkBackground(const ImColor& bgColor) {
type ImGui (line 1542) | namespace ImGui {
function InputText (line 1544) | bool InputText(const char *label, std::u8string &buffer, ImGuiInputTex...
function InputText (line 1548) | bool InputText(const char *label, std::string &buffer, ImGuiInputTextF...
function InputTextMultiline (line 1552) | bool InputTextMultiline(const char *label, std::string &buffer, const ...
function InputTextWithHint (line 1556) | bool InputTextWithHint(const char *label, const char *hint, std::strin...
FILE: lib/libimhex/source/ui/popup.cpp
type hex::impl (line 4) | namespace hex::impl {
FILE: lib/libimhex/source/ui/toast.cpp
type hex::impl (line 4) | namespace hex::impl {
FILE: lib/libimhex/source/ui/view.cpp
type hex (line 15) | namespace hex {
function ImVec2 (line 33) | ImVec2 View::getMinSize() const {
function ImVec2 (line 37) | ImVec2 View::getMaxSize() const {
function ImGuiWindowFlags (line 41) | ImGuiWindowFlags View::getWindowFlags() const {
function UnlocalizedString (line 55) | const UnlocalizedString &View::getUnlocalizedName() const {
function View (line 114) | const View* View::getLastFocusedView() {
FILE: lib/third_party/boost/regex/include/boost/regex/concepts.hpp
type boost (line 40) | namespace boost{
type char_architype (line 53) | struct char_architype
function hash_value (line 72) | inline long hash_value(char_architype val)
type regex_traits_architype (line 136) | struct regex_traits_architype
method regex_traits_architype (line 139) | regex_traits_architype(){}
method length (line 146) | static std::size_t length(const char_type* ) { return 0; }
method charT (line 148) | charT translate(charT ) const { return charT(); }
method charT (line 149) | charT translate_nocase(charT ) const { return static_object<charT>::...
method string_type (line 152) | string_type transform(ForwardIterator , ForwardIterator ) const
method string_type (line 155) | string_type transform_primary(ForwardIterator , ForwardIterator ) const
method char_class_type (line 159) | char_class_type lookup_classname(ForwardIterator , ForwardIterator )...
method string_type (line 162) | string_type lookup_collatename(ForwardIterator , ForwardIterator ) c...
method isctype (line 165) | bool isctype(charT, char_class_type) const
method value (line 167) | int value(charT, int) const
method locale_type (line 170) | locale_type imbue(locale_type l)
method locale_type (line 172) | locale_type getloc()const
method regex_traits_architype (line 177) | regex_traits_architype(const regex_traits_architype&){}
method regex_traits_architype (line 178) | regex_traits_architype& operator=(const regex_traits_architype&){ re...
type BitmaskConcept (line 191) | struct BitmaskConcept
method constraints (line 193) | void constraints()
type RegexTraitsConcept (line 212) | struct RegexTraitsConcept
method constraints (line 222) | void constraints()
type regex_traits_computer (line 273) | struct regex_traits_computer
type regex_traits_computer< global_regex_namespace::basic_regex<charT, traits> > (line 276) | struct regex_traits_computer< global_regex_namespace::basic_regex<char...
type BaseRegexConcept (line 286) | struct BaseRegexConcept
method global_constraints (line 305) | void global_constraints()
method constraints (line 377) | void constraints()
type RegexConcept (line 611) | struct RegexConcept
method constraints (line 627) | void constraints()
type functor1 (line 808) | struct functor1
method char_type (line 811) | const char_type* operator()(const M&)const
type functor1b (line 818) | struct functor1b
type functor2 (line 828) | struct functor2
method O (line 831) | O operator()(const M& /*m*/, O i)const
type functor3 (line 837) | struct functor3
method O (line 840) | O operator()(const M& /*m*/, O i, regex_constants::match_flag_type)c...
type BoostRegexConcept (line 851) | struct BoostRegexConcept
method constraints (line 868) | void constraints()
type std (line 78) | namespace std{
type char_traits<boost::char_architype> (line 79) | struct char_traits<boost::char_architype>
class allocator_architype (line 91) | class allocator_architype
type rebind (line 103) | struct rebind
method pointer (line 108) | pointer address(reference r){ return &r; }
method const_pointer (line 109) | const_pointer address(const_reference r) { return &r; }
method pointer (line 110) | pointer allocate(size_type n) { return static_cast<pointer>(std::mallo...
method pointer (line 111) | pointer allocate(size_type n, pointer) { return static_cast<pointer>(s...
method deallocate (line 112) | void deallocate(pointer p, size_type) { std::free(p); }
method size_type (line 113) | size_type max_size()const { return UINT_MAX; }
method allocator_architype (line 115) | allocator_architype(){}
method allocator_architype (line 116) | allocator_architype(const allocator_architype&){}
method allocator_architype (line 119) | allocator_architype(const allocator_architype<Other>&){}
method construct (line 121) | void construct(pointer p, const_reference r) { new (p)T(r); }
method destroy (line 122) | void destroy(pointer p) { p->~T(); }
type boost (line 130) | namespace boost{
type char_architype (line 53) | struct char_architype
function hash_value (line 72) | inline long hash_value(char_architype val)
type regex_traits_architype (line 136) | struct regex_traits_architype
method regex_traits_architype (line 139) | regex_traits_architype(){}
method length (line 146) | static std::size_t length(const char_type* ) { return 0; }
method charT (line 148) | charT translate(charT ) const { return charT(); }
method charT (line 149) | charT translate_nocase(charT ) const { return static_object<charT>::...
method string_type (line 152) | string_type transform(ForwardIterator , ForwardIterator ) const
method string_type (line 155) | string_type transform_primary(ForwardIterator , ForwardIterator ) const
method char_class_type (line 159) | char_class_type lookup_classname(ForwardIterator , ForwardIterator )...
method string_type (line 162) | string_type lookup_collatename(ForwardIterator , ForwardIterator ) c...
method isctype (line 165) | bool isctype(charT, char_class_type) const
method value (line 167) | int value(charT, int) const
method locale_type (line 170) | locale_type imbue(locale_type l)
method locale_type (line 172) | locale_type getloc()const
method regex_traits_architype (line 177) | regex_traits_architype(const regex_traits_architype&){}
method regex_traits_architype (line 178) | regex_traits_architype& operator=(const regex_traits_architype&){ re...
type BitmaskConcept (line 191) | struct BitmaskConcept
method constraints (line 193) | void constraints()
type RegexTraitsConcept (line 212) | struct RegexTraitsConcept
method constraints (line 222) | void constraints()
type regex_traits_computer (line 273) | struct regex_traits_computer
type regex_traits_computer< global_regex_namespace::basic_regex<charT, traits> > (line 276) | struct regex_traits_computer< global_regex_namespace::basic_regex<char...
type BaseRegexConcept (line 286) | struct BaseRegexConcept
method global_constraints (line 305) | void global_constraints()
method constraints (line 377) | void constraints()
type RegexConcept (line 611) | struct RegexConcept
method constraints (line 627) | void constraints()
type functor1 (line 808) | struct functor1
method char_type (line 811) | const char_type* operator()(const M&)const
type functor1b (line 818) | struct functor1b
type functor2 (line 828) | struct functor2
method O (line 831) | O operator()(const M& /*m*/, O i)const
type functor3 (line 837) | struct functor3
method O (line 840) | O operator()(const M& /*m*/, O i, regex_constants::match_flag_type)c...
type BoostRegexConcept (line 851) | struct BoostRegexConcept
method constraints (line 868) | void constraints()
FILE: lib/third_party/boost/regex/include/boost/regex/config.hpp
type boost (line 398) | namespace boost{
type BOOST_REGEX_DETAIL_NS (line 399) | namespace BOOST_REGEX_DETAIL_NS{
FILE: lib/third_party/boost/regex/include/boost/regex/config/cwchar.hpp
type std (line 49) | namespace std{
function wchar_t (line 176) | inline wchar_t *(wcscpy)(wchar_t *p1, const wchar_t *p2)
function wcsxfrm (line 192) | size_t wcsxfrm(wchar_t *p1, const wchar_t *p2, size_t s)
FILE: lib/third_party/boost/regex/include/boost/regex/mfc.hpp
type boost (line 25) | namespace boost{
function make_regex (line 42) | inline basic_regex<B>
function regex_match (line 52) | inline bool regex_match(const ATL::CSimpleStringT<B, b>& s,
function regex_match (line 65) | inline bool regex_match(const ATL::CSimpleStringT<B, b>& s,
function regex_search (line 78) | inline bool regex_search(const ATL::CSimpleStringT<B, b>& s,
function regex_search (line 91) | inline bool regex_search(const ATL::CSimpleStringT<B, b>& s,
function make_regex_iterator (line 104) | inline regex_iterator<B const*>
function make_regex_token_iterator (line 112) | inline regex_token_iterator<B const*>
function make_regex_token_iterator (line 120) | inline regex_token_iterator<B const*>
function make_regex_token_iterator (line 128) | inline regex_token_iterator<B const*>
function OutputIterator (line 137) | OutputIterator regex_replace(OutputIterator out,
type BOOST_REGEX_DETAIL_NS (line 147) | namespace BOOST_REGEX_DETAIL_NS{
class mfc_string_out_iterator (line 150) | class mfc_string_out_iterator
method mfc_string_out_iterator (line 154) | mfc_string_out_iterator(ATL::CSimpleStringT<B, b>& s) : out(&s) {}
method mfc_string_out_iterator (line 155) | mfc_string_out_iterator& operator++() { return *this; }
method mfc_string_out_iterator (line 156) | mfc_string_out_iterator& operator++(int) { return *this; }
method mfc_string_out_iterator (line 157) | mfc_string_out_iterator& operator*() { return *this; }
method mfc_string_out_iterator (line 158) | mfc_string_out_iterator& operator=(B v)
function regex_replace (line 173) | ATL::CSimpleStringT<B, b> regex_replace(const ATL::CSimpleStringT<B, b...
FILE: lib/third_party/boost/regex/include/boost/regex/pending/static_mutex.hpp
type boost (line 37) | namespace boost{
class static_mutex (line 39) | class static_mutex
function scoped_static_mutex_lock (line 43) | class BOOST_REGEX_DECL scoped_static_mutex_lock
class static_mutex (line 63) | class static_mutex
class BOOST_REGEX_DECL (line 82) | class BOOST_REGEX_DECL
class static_mutex (line 84) | class static_mutex
function scoped_static_mutex_lock (line 93) | class BOOST_REGEX_DECL scoped_static_mutex_lock
class BOOST_REGEX_DECL (line 140) | class BOOST_REGEX_DECL
function static_mutex (line 143) | class BOOST_REGEX_DECL static_mutex
function scoped_static_mutex_lock (line 154) | class BOOST_REGEX_DECL scoped_static_mutex_lock
type boost (line 80) | namespace boost{
class static_mutex (line 39) | class static_mutex
function scoped_static_mutex_lock (line 43) | class BOOST_REGEX_DECL scoped_static_mutex_lock
class static_mutex (line 63) | class static_mutex
class BOOST_REGEX_DECL (line 82) | class BOOST_REGEX_DECL
class static_mutex (line 84) | class static_mutex
function scoped_static_mutex_lock (line 93) | class BOOST_REGEX_DECL scoped_static_mutex_lock
class BOOST_REGEX_DECL (line 140) | class BOOST_REGEX_DECL
function static_mutex (line 143) | class BOOST_REGEX_DECL static_mutex
function scoped_static_mutex_lock (line 154) | class BOOST_REGEX_DECL scoped_static_mutex_lock
type boost (line 138) | namespace boost{
class static_mutex (line 39) | class static_mutex
function scoped_static_mutex_lock (line 43) | class BOOST_REGEX_DECL scoped_static_mutex_lock
class static_mutex (line 63) | class static_mutex
class BOOST_REGEX_DECL (line 82) | class BOOST_REGEX_DECL
class static_mutex (line 84) | class static_mutex
function scoped_static_mutex_lock (line 93) | class BOOST_REGEX_DECL scoped_static_mutex_lock
class BOOST_REGEX_DECL (line 140) | class BOOST_REGEX_DECL
function static_mutex (line 143) | class BOOST_REGEX_DECL static_mutex
function scoped_static_mutex_lock (line 154) | class BOOST_REGEX_DECL scoped_static_mutex_lock
FILE: lib/third_party/boost/regex/include/boost/regex/v4/basic_regex.hpp
class basic_regex_parser (line 57) | class basic_regex_parser
function bubble_down_one (line 60) | void bubble_down_one(I first, I last)
function hash_value_from_capture_name (line 76) | inline int hash_value_from_capture_name(Iterator i, Iterator j)
class named_subexpressions (line 83) | class named_subexpressions
type name (line 86) | struct name
method name (line 89) | name(const charT* i, const charT* j, int idx)
method name (line 94) | name(int h, int idx)
method swap (line 108) | void swap(name& other)
method named_subexpressions (line 118) | named_subexpressions(){}
method set_name (line 121) | void set_name(const charT* i, const charT* j, int index)
method get_id (line 127) | int get_id(const charT* i, const charT* j)const
method range_type (line 138) | range_type equal_range(const charT* i, const charT* j)const
method get_id (line 143) | int get_id(int h)const
method range_type (line 153) | range_type equal_range(int h)const
function regex_data (line 172) | regex_data(const ::boost::shared_ptr<
class basic_regex (line 326) | class basic_regex : public regbase
method basic_regex (line 349) | explicit basic_regex(){}
method basic_regex (line 350) | explicit basic_regex(const charT* p, flag_type f = regex_constants::no...
method basic_regex (line 354) | basic_regex(const charT* p1, const charT* p2, flag_type f = regex_cons...
method basic_regex (line 358) | basic_regex(const charT* p, size_type len, flag_type f)
method basic_regex (line 362) | basic_regex(const basic_regex& that)
method basic_regex (line 376) | basic_regex& assign(const basic_regex& that)
method basic_regex (line 381) | basic_regex& assign(const charT* p, flag_type f = regex_constants::nor...
method basic_regex (line 385) | basic_regex& assign(const charT* p, size_type len, flag_type f)
method basic_regex (line 394) | basic_regex& assign(const charT* p1,
method basic_regex (line 409) | explicit basic_regex(const std::basic_string<charT, ST, SA>& p, flag_t...
method basic_regex (line 415) | basic_regex(InputIterator arg_first, InputIterator arg_last, flag_type...
method basic_regex (line 426) | basic_regex& BOOST_REGEX_CALL operator=(const std::basic_string<charT,...
method basic_regex (line 432) | basic_regex& BOOST_REGEX_CALL assign(
method basic_regex (line 440) | basic_regex& BOOST_REGEX_CALL assign(InputIterator arg_first,
method set_expression (line 455) | set_expression(const std::basic_string<charT>& p, flag_type f = regex_...
method basic_regex (line 460) | basic_regex(const std::basic_string<charT>& p, flag_type f = regex_con...
method assign (line 470) | assign(
method getloc (line 482) | getloc()const
method getflags (line 490) | getflags()const
method flags (line 494) | flags()const
method str (line 500) | str()const
method subexpression (line 506) | subexpression(std::size_t n)const
method begin (line 512) | begin()const
method end (line 516) | end()const
method swap (line 522) | swap(basic_regex& that)throw()
method size (line 528) | size()const
method max_size (line 534) | max_size()const
method empty (line 540) | empty()const
method mark_count (line 545) | mark_count()const
method status (line 550) | int status()const
method compare (line 555) | compare(const basic_regex& that) const
method expression (line 597) | expression()const
method set_expression (line 601) | set_expression(const charT* p1, const charT* p2, flag_type f = regex_c...
method set_expression (line 606) | set_expression(const charT* p, flag_type f = regex_constants::normal)
method error_code (line 611) | error_code()const
method get_restart_type (line 623) | unsigned get_restart_type()const
method can_be_null (line 638) | bool can_be_null()const
method get_named_subs (line 648) | boost::shared_ptr<BOOST_REGEX_DETAIL_NS::named_subexpressions > get_na...
function swap (line 695) | void swap(basic_regex<charT, traits>& e1, basic_regex<charT, traits>& e2)
class reg_expression (line 726) | class reg_expression : public basic_regex<charT, traits>
method reg_expression (line 731) | explicit reg_expression(){}
method reg_expression (line 732) | explicit reg_expression(const charT* p, flag_type f = regex_constants:...
method reg_expression (line 734) | reg_expression(const charT* p1, const charT* p2, flag_type f = regex_c...
method reg_expression (line 736) | reg_expression(const charT* p, size_type len, flag_type f)
method reg_expression (line 738) | reg_expression(const reg_expression& that)
method reg_expression (line 748) | explicit reg_expression(const std::basic_string<charT, ST, SA>& p, fla...
method reg_expression (line 754) | reg_expression(InputIterator arg_first, InputIterator arg_last, flag_t...
method reg_expression (line 760) | reg_expression& BOOST_REGEX_CALL operator=(const std::basic_string<cha...
method reg_expression (line 766) | explicit reg_expression(const std::basic_string<charT>& p, flag_type f...
FILE: lib/third_party/boost/regex/include/boost/regex/v4/basic_regex_creator.hpp
type boost (line 43) | namespace boost{
type BOOST_REGEX_DETAIL_NS (line 45) | namespace BOOST_REGEX_DETAIL_NS{
type digraph (line 48) | struct digraph : public std::pair<charT, charT>
method digraph (line 50) | digraph() : std::pair<charT, charT>(charT(0), charT(0)){}
method digraph (line 51) | digraph(charT c1) : std::pair<charT, charT>(c1, charT(0)){}
method digraph (line 52) | digraph(charT c1, charT c2) : std::pair<charT, charT>(c1, c2)
method digraph (line 54) | digraph(const digraph<charT>& d) : std::pair<charT, charT>(d.first...
method digraph (line 59) | digraph(const Seq& s) : std::pair<charT, charT>()
class basic_char_set (line 69) | class basic_char_set
method basic_char_set (line 76) | basic_char_set()
method add_single (line 85) | void add_single(const digraph_type& s)
method add_range (line 92) | void add_range(const digraph_type& first, const digraph_type& end)
method add_class (line 108) | void add_class(m_type m)
method add_negated_class (line 113) | void add_negated_class(m_type m)
method add_equivalent (line 118) | void add_equivalent(const digraph_type& s)
method negate (line 128) | void negate()
method has_digraphs (line 137) | bool has_digraphs()const
method is_negated (line 141) | bool is_negated()const
method set_iterator (line 147) | set_iterator singles_begin()const
method set_iterator (line 151) | set_iterator singles_end()const
method list_iterator (line 155) | list_iterator ranges_begin()const
method list_iterator (line 159) | list_iterator ranges_end()const
method set_iterator (line 163) | set_iterator equivalents_begin()const
method set_iterator (line 167) | set_iterator equivalents_end()const
method m_type (line 171) | m_type classes()const
method m_type (line 175) | m_type negated_classes()const
method empty (line 179) | bool empty()const
class basic_regex_creator (line 195) | class basic_regex_creator
method getoffset (line 199) | std::ptrdiff_t getoffset(void* addr)
method getoffset (line 203) | std::ptrdiff_t getoffset(const void* addr, const void* base)
method re_syntax_base (line 207) | re_syntax_base* getaddress(std::ptrdiff_t off)
method re_syntax_base (line 211) | re_syntax_base* getaddress(std::ptrdiff_t off, void* base)
method init (line 215) | void init(unsigned l_flags)
method flags (line 220) | regbase::flag_type flags()
method flags (line 224) | void flags(regbase::flag_type f)
function re_syntax_base (line 299) | re_syntax_base* basic_regex_creator<charT, traits>::append_state(syn...
function re_syntax_base (line 318) | re_syntax_base* basic_regex_creator<charT, traits>::insert_state(std...
function re_literal (line 337) | re_literal* basic_regex_creator<charT, traits>::append_literal(charT c)
function re_syntax_base (line 362) | inline re_syntax_base* basic_regex_creator<charT, traits>::append_set(
function re_syntax_base (line 372) | re_syntax_base* basic_regex_creator<charT, traits>::append_set(
function char_less (line 517) | inline bool char_less(T t1, T t2)
function char_less (line 521) | inline bool char_less(char t1, char t2)
function char_less (line 525) | inline bool char_less(signed char t1, signed char t2)
function re_syntax_base (line 531) | re_syntax_base* basic_regex_creator<charT, traits>::append_set(
type recursion_saver (line 1076) | struct recursion_saver
method recursion_saver (line 1080) | recursion_saver(std::vector<unsigned char>* p) : saved_state(*p), ...
function syntax_element_type (line 1490) | syntax_element_type basic_regex_creator<charT, traits>::get_repeat_t...
FILE: lib/third_party/boost/regex/include/boost/regex/v4/basic_regex_parser.hpp
type boost (line 36) | namespace boost{
type BOOST_REGEX_DETAIL_NS (line 37) | namespace BOOST_REGEX_DETAIL_NS{
function umax (line 47) | inline boost::intmax_t umax(mpl::false_ const&)
function umax (line 52) | inline boost::intmax_t umax(mpl::true_ const&)
function umax (line 57) | inline boost::intmax_t umax()
class basic_regex_parser (line 63) | class basic_regex_parser : public basic_regex_creator<charT, traits>
method fail (line 70) | void fail(regex_constants::error_type error_code, std::ptrdiff_t p...
function valid_value (line 1748) | bool valid_value(charT, boost::intmax_t v, const mpl::true_&)
function valid_value (line 1753) | bool valid_value(charT, boost::intmax_t, const mpl::false_&)
function valid_value (line 1758) | bool valid_value(charT c, boost::intmax_t v)
function charT (line 1764) | charT basic_regex_parser<charT, traits>::unescape_character()
FILE: lib/third_party/boost/regex/include/boost/regex/v4/c_regex_traits.hpp
type std (line 32) | namespace std{
type boost (line 48) | namespace boost{
type BOOST_REGEX_DETAIL_NS (line 50) | namespace BOOST_REGEX_DETAIL_NS {
type c_regex_traits (line 75) | struct c_regex_traits
type c_regex_traits<char> (line 78) | struct c_regex_traits<char>
method c_regex_traits (line 80) | c_regex_traits(){}
type locale_type (line 84) | struct locale_type{}
method size_type (line 87) | static size_type length(const char_type* p)
method translate (line 92) | char translate(char c) const
method translate_nocase (line 96) | char translate_nocase(char c) const
method locale_type (line 110) | locale_type imbue(locale_type l)
method locale_type (line 112) | locale_type getloc()const
type c_regex_traits<wchar_t> (line 123) | struct c_regex_traits<wchar_t>
method c_regex_traits (line 125) | c_regex_traits(){}
type locale_type (line 129) | struct locale_type{}
method size_type (line 132) | static size_type length(const char_type* p)
method wchar_t (line 137) | wchar_t translate(wchar_t c) const
method wchar_t (line 141) | wchar_t translate_nocase(wchar_t c) const
method locale_type (line 155) | locale_type imbue(locale_type l)
method locale_type (line 157) | locale_type getloc()const
FILE: lib/third_party/boost/regex/include/boost/regex/v4/char_regex_traits.hpp
type boost (line 34) | namespace boost{
type deprecated (line 36) | namespace deprecated{
class char_regex_traits_i (line 41) | class char_regex_traits_i : public regex_traits<charT> {}
class char_regex_traits_i<char> (line 44) | class char_regex_traits_i<char> : public regex_traits<char>
class char_regex_traits_i<wchar_t> (line 56) | class char_regex_traits_i<wchar_t> : public regex_traits<wchar_t>
FILE: lib/third_party/boost/regex/include/boost/regex/v4/cpp_regex_traits.hpp
class cpp_regex_traits (line 70) | class cpp_regex_traits
type BOOST_REGEX_DETAIL_NS (line 72) | namespace BOOST_REGEX_DETAIL_NS{
class parser_buf (line 80) | class parser_buf : public ::std::basic_streambuf<charT, traits>
method parser_buf (line 89) | parser_buf() : base_type() { setbuf(0, 0); }
method charT (line 90) | const charT* getnext() { return this->gptr(); }
type cpp_regex_traits_base (line 174) | struct cpp_regex_traits_base
method cpp_regex_traits_base (line 176) | cpp_regex_traits_base(const std::locale& l)
class cpp_regex_traits_char_layer (line 231) | class cpp_regex_traits_char_layer : public cpp_regex_traits_base<charT>
method cpp_regex_traits_char_layer (line 237) | cpp_regex_traits_char_layer(const std::locale& l)
method cpp_regex_traits_char_layer (line 242) | cpp_regex_traits_char_layer(const cpp_regex_traits_base<charT>& b)
method syntax_type (line 249) | regex_constants::syntax_type syntax_type(charT c)const
method escape_syntax_type (line 254) | regex_constants::escape_syntax_type escape_syntax_type(charT c) const
class cpp_regex_traits_char_layer<char> (line 358) | class cpp_regex_traits_char_layer<char> : public cpp_regex_traits_base...
method cpp_regex_traits_char_layer (line 362) | cpp_regex_traits_char_layer(const std::locale& l)
method cpp_regex_traits_char_layer (line 367) | cpp_regex_traits_char_layer(const cpp_regex_traits_base<char>& l)
method syntax_type (line 373) | regex_constants::syntax_type syntax_type(char c)const
method escape_syntax_type (line 377) | regex_constants::escape_syntax_type escape_syntax_type(char c) const
class cpp_regex_traits_implementation (line 415) | class cpp_regex_traits_implementation : public cpp_regex_traits_char_l...
method cpp_regex_traits_implementation (line 432) | cpp_regex_traits_implementation(const std::locale& l)
method cpp_regex_traits_implementation (line 437) | cpp_regex_traits_implementation(const cpp_regex_traits_base<charT>& l)
method error_string (line 442) | std::string error_string(regex_constants::error_type n) const
method char_class_type (line 451) | char_class_type lookup_classname(const charT* p1, const charT* p2) c...
function create_cpp_regex_traits (line 903) | inline boost::shared_ptr<const cpp_regex_traits_implementation<charT> ...
class cpp_regex_traits (line 912) | class cpp_regex_traits
type boost_extensions_tag (line 923) | struct boost_extensions_tag{}
method cpp_regex_traits (line 925) | cpp_regex_traits()
method size_type (line 928) | static size_type length(const char_type* p)
method syntax_type (line 932) | regex_constants::syntax_type syntax_type(charT c)const
method escape_syntax_type (line 936) | regex_constants::escape_syntax_type escape_syntax_type(charT c) const
method charT (line 940) | charT translate(charT c) const
method charT (line 944) | charT translate_nocase(charT c) const
method charT (line 948) | charT translate(charT c, bool icase) const
method charT (line 952) | charT tolower(charT c) const
method charT (line 956) | charT toupper(charT c) const
method string_type (line 960) | string_type transform(const charT* p1, const charT* p2) const
method string_type (line 964) | string_type transform_primary(const charT* p1, const charT* p2) const
method char_class_type (line 968) | char_class_type lookup_classname(const charT* p1, const charT* p2) c...
method string_type (line 972) | string_type lookup_collatename(const charT* p1, const charT* p2) const
method isctype (line 976) | bool isctype(charT c, char_class_type f) const
method value (line 1031) | int value(charT c, int radix)const
method locale_type (line 1036) | locale_type imbue(locale_type l)
method locale_type (line 1042) | locale_type getloc()const
method error_string (line 1046) | std::string error_string(regex_constants::error_type n) const
function static_mutex (line 1125) | static_mutex& cpp_regex_traits<charT>::get_mutex_inst()
type BOOST_REGEX_DETAIL_NS (line 1132) | namespace BOOST_REGEX_DETAIL_NS {
FILE: lib/third_party/boost/regex/include/boost/regex/v4/cregex.hpp
type boost (line 48) | namespace boost{
FILE: lib/third_party/boost/regex/include/boost/regex/v4/error_type.hpp
type boost (line 23) | namespace boost{
type regex_constants (line 27) | namespace regex_constants{
type error_type (line 29) | enum error_type{
FILE: lib/third_party/boost/regex/include/boost/regex/v4/icu.hpp
type boost (line 37) | namespace boost {
type BOOST_REGEX_DETAIL_NS (line 39) | namespace BOOST_REGEX_DETAIL_NS {
class icu_regex_traits_implementation (line 44) | class icu_regex_traits_implementation
method icu_regex_traits_implementation (line 52) | icu_regex_traits_implementation(const U_NAMESPACE_QUALIFIER Locale...
method U_NAMESPACE_QUALIFIER (line 66) | U_NAMESPACE_QUALIFIER Locale getloc()const
method string_type (line 70) | string_type do_transform(const char_type* p1, const char_type* p2,...
method string_type (line 121) | string_type transform(const char_type* p1, const char_type* p2) const
method string_type (line 125) | string_type transform_primary(const char_type* p1, const char_type...
method init_error (line 130) | void init_error()
function get_icu_regex_traits_implementation (line 140) | inline boost::shared_ptr<icu_regex_traits_implementation> get_icu_re...
function u32regex (line 697) | inline u32regex do_make_u32regex(InputIterator i,
function u32regex (line 707) | inline u32regex do_make_u32regex(InputIterator i,
function u32regex (line 717) | inline u32regex do_make_u32regex(InputIterator i,
function u32regex (line 726) | inline u32regex do_make_u32regex(InputIterator i,
function u32regex (line 746) | inline u32regex do_make_u32regex(InputIterator i,
function u32regex (line 766) | inline u32regex do_make_u32regex(InputIterator i,
function copy_results (line 870) | void copy_results(MR1& out, MR2 const& in, NSubs named_subs)
function do_regex_match (line 903) | inline bool do_regex_match(BidiIterator first, BidiIterator last,
function do_regex_match (line 912) | bool do_regex_match(BidiIterator first, BidiIterator last,
function do_regex_match (line 928) | bool do_regex_match(BidiIterator first, BidiIterator last,
function do_regex_search (line 1076) | inline bool do_regex_search(BidiIterator first, BidiIterator last,
function do_regex_search (line 1086) | bool do_regex_search(BidiIterator first, BidiIterator last,
function do_regex_search (line 1103) | bool do_regex_search(BidiIterator first, BidiIterator last,
function make_utf32_seq (line 1258) | inline std::pair< boost::u8_to_u32_iterator<I>, boost::u8_to_u32_ite...
function make_utf32_seq (line 1264) | inline std::pair< boost::u16_to_u32_iterator<I>, boost::u16_to_u32_i...
function make_utf32_seq (line 1270) | inline std::pair< I, I >
function make_utf32_seq (line 1276) | inline std::pair< boost::u8_to_u32_iterator<const charT*>, boost::u8...
function make_utf32_seq (line 1283) | inline std::pair< boost::u16_to_u32_iterator<const charT*>, boost::u...
function make_utf32_seq (line 1290) | inline std::pair< const charT*, const charT* >
function OutputIterator (line 1296) | inline OutputIterator make_utf32_out(OutputIterator o, mpl::int_<4> ...
function make_utf32_out (line 1301) | inline utf16_output_iterator<OutputIterator> make_utf32_out(OutputIt...
function make_utf32_out (line 1306) | inline utf8_output_iterator<OutputIterator> make_utf32_out(OutputIte...
function OutputIterator (line 1312) | OutputIterator do_regex_replace(OutputIterator out,
function BaseIterator (line 1359) | inline const BaseIterator& extract_output_base(const BaseIterator& b)
function BaseIterator (line 1364) | inline BaseIterator extract_output_base(const utf8_output_iterator<B...
function BaseIterator (line 1369) | inline BaseIterator extract_output_base(const utf16_output_iterator<...
class unicode_string_out_iterator (line 1458) | class unicode_string_out_iterator
method unicode_string_out_iterator (line 1462) | unicode_string_out_iterator(U_NAMESPACE_QUALIFIER UnicodeString& s...
method unicode_string_out_iterator (line 1463) | unicode_string_out_iterator& operator++() { return *this; }
method unicode_string_out_iterator (line 1464) | unicode_string_out_iterator& operator++(int) { return *this; }
method unicode_string_out_iterator (line 1465) | unicode_string_out_iterator& operator*() { return *this; }
method unicode_string_out_iterator (line 1466) | unicode_string_out_iterator& operator=(UChar v)
class icu_regex_traits (line 147) | class icu_regex_traits
type boost_extensions_tag (line 160) | struct boost_extensions_tag {}
method icu_regex_traits (line 162) | icu_regex_traits()
method size_type (line 166) | static size_type length(const char_type* p)
method syntax_type (line 176) | ::boost::regex_constants::syntax_type syntax_type(char_type c)const
method escape_syntax_type (line 180) | ::boost::regex_constants::escape_syntax_type escape_syntax_type(char...
method char_type (line 184) | char_type translate(char_type c) const
method char_type (line 188) | char_type translate_nocase(char_type c) const
method char_type (line 192) | char_type translate(char_type c, bool icase) const
method char_type (line 196) | char_type tolower(char_type c) const
method char_type (line 200) | char_type toupper(char_type c) const
method string_type (line 204) | string_type transform(const char_type* p1, const char_type* p2) const
method string_type (line 208) | string_type transform_primary(const char_type* p1, const char_type* ...
method char_class_type (line 212) | char_class_type lookup_classname(const char_type* p1, const char_typ...
method string_type (line 284) | string_type lookup_collatename(const char_type* p1, const char_type*...
method isctype (line 334) | bool isctype(char_type c, char_class_type f) const
method toi (line 371) | boost::intmax_t toi(const char_type*& p1, const char_type* p2, int r...
method value (line 375) | int value(char_type c, int radix)const
method locale_type (line 379) | locale_type imbue(locale_type l)
method locale_type (line 385) | locale_type getloc()const
method error_string (line 389) | std::string error_string(::boost::regex_constants::error_type n) const
method char_class_type (line 412) | static char_class_type lookup_icu_mask(const ::UChar32* p1, const ::...
type BOOST_REGEX_DETAIL_NS (line 693) | namespace BOOST_REGEX_DETAIL_NS {
class icu_regex_traits_implementation (line 44) | class icu_regex_traits_implementation
method icu_regex_traits_implementation (line 52) | icu_regex_traits_implementation(const U_NAMESPACE_QUALIFIER Locale...
method U_NAMESPACE_QUALIFIER (line 66) | U_NAMESPACE_QUALIFIER Locale getloc()const
method string_type (line 70) | string_type do_transform(const char_type* p1, const char_type* p2,...
method string_type (line 121) | string_type transform(const char_type* p1, const char_type* p2) const
method string_type (line 125) | string_type transform_primary(const char_type* p1, const char_type...
method init_error (line 130) | void init_error()
function get_icu_regex_traits_implementation (line 140) | inline boost::shared_ptr<icu_regex_traits_implementation> get_icu_re...
function u32regex (line 697) | inline u32regex do_make_u32regex(InputIterator i,
function u32regex (line 707) | inline u32regex do_make_u32regex(InputIterator i,
function u32regex (line 717) | inline u32regex do_make_u32regex(InputIterator i,
function u32regex (line 726) | inline u32regex do_make_u32regex(InputIterator i,
function u32regex (line 746) | inline u32regex do_make_u32regex(InputIterator i,
function u32regex (line 766) | inline u32regex do_make_u32regex(InputIterator i,
function copy_results (line 870) | void copy_results(MR1& out, MR2 const& in, NSubs named_subs)
function do_regex_match (line 903) | inline bool do_regex_match(BidiIterator first, BidiIterator last,
function do_regex_match (line 912) | bool do_regex_match(BidiIterator first, BidiIterator last,
function do_regex_match (line 928) | bool do_regex_match(BidiIterator first, BidiIterator last,
function do_regex_search (line 1076) | inline bool do_regex_search(BidiIterator first, BidiIterator last,
function do_regex_search (line 1086) | bool do_regex_search(BidiIterator first, BidiIterator last,
function do_regex_search (line 1103) | bool do_regex_search(BidiIterator first, BidiIterator last,
function make_utf32_seq (line 1258) | inline std::pair< boost::u8_to_u32_iterator<I>, boost::u8_to_u32_ite...
function make_utf32_seq (line 1264) | inline std::pair< boost::u16_to_u32_iterator<I>, boost::u16_to_u32_i...
function make_utf32_seq (line 1270) | inline std::pair< I, I >
function make_utf32_seq (line 1276) | inline std::pair< boost::u8_to_u32_iterator<const charT*>, boost::u8...
function make_utf32_seq (line 1283) | inline std::pair< boost::u16_to_u32_iterator<const charT*>, boost::u...
function make_utf32_seq (line 1290) | inline std::pair< const charT*, const charT* >
function OutputIterator (line 1296) | inline OutputIterator make_utf32_out(OutputIterator o, mpl::int_<4> ...
function make_utf32_out (line 1301) | inline utf16_output_iterator<OutputIterator> make_utf32_out(OutputIt...
function make_utf32_out (line 1306) | inline utf8_output_iterator<OutputIterator> make_utf32_out(OutputIte...
function OutputIterator (line 1312) | OutputIterator do_regex_replace(OutputIterator out,
function BaseIterator (line 1359) | inline const BaseIterator& extract_output_base(const BaseIterator& b)
function BaseIterator (line 1364) | inline BaseIterator extract_output_base(const utf8_output_iterator<B...
function BaseIterator (line 1369) | inline BaseIterator extract_output_base(const utf16_output_iterator<...
class unicode_string_out_iterator (line 1458) | class unicode_string_out_iterator
method unicode_string_out_iterator (line 1462) | unicode_string_out_iterator(U_NAMESPACE_QUALIFIER UnicodeString& s...
method unicode_string_out_iterator (line 1463) | unicode_string_out_iterator& operator++() { return *this; }
method unicode_string_out_iterator (line 1464) | unicode_string_out_iterator& operator++(int) { return *this; }
method unicode_string_out_iterator (line 1465) | unicode_string_out_iterator& operator*() { return *this; }
method unicode_string_out_iterator (line 1466) | unicode_string_out_iterator& operator=(UChar v)
function u32regex (line 817) | inline u32regex make_u32regex(InputIterator i,
function u32regex (line 826) | inline u32regex make_u32regex(const char* p, boost::regex_constants::s...
function u32regex (line 830) | inline u32regex make_u32regex(const unsigned char* p, boost::regex_con...
function u32regex (line 838) | inline u32regex make_u32regex(const wchar_t* p, boost::regex_constants...
function u32regex (line 844) | inline u32regex make_u32regex(const UChar* p, boost::regex_constants::...
function u32regex (line 853) | inline u32regex make_u32regex(const std::basic_string<C, T, A>& s, boo...
function u32regex (line 860) | inline u32regex make_u32regex(const U_NAMESPACE_QUALIFIER UnicodeStrin...
type BOOST_REGEX_DETAIL_NS (line 868) | namespace BOOST_REGEX_DETAIL_NS {
class icu_regex_traits_implementation (line 44) | class icu_regex_traits_implementation
method icu_regex_traits_implementation (line 52) | icu_regex_traits_implementation(const U_NAMESPACE_QUALIFIER Locale...
method U_NAMESPACE_QUALIFIER (line 66) | U_NAMESPACE_QUALIFIER Locale getloc()const
method string_type (line 70) | string_type do_transform(const char_type* p1, const char_type* p2,...
method string_type (line 121) | string_type transform(const char_type* p1, const char_type* p2) const
method string_type (line 125) | string_type transform_primary(const char_type* p1, const char_type...
method init_error (line 130) | void init_error()
function get_icu_regex_traits_implementation (line 140) | inline boost::shared_ptr<icu_regex_traits_implementation> get_icu_re...
function u32regex (line 697) | inline u32regex do_make_u32regex(InputIterator i,
function u32regex (line 707) | inline u32regex do_make_u32regex(InputIterator i,
function u32regex (line 717) | inline u32regex do_make_u32regex(InputIterator i,
function u32regex (line 726) | inline u32regex do_make_u32regex(InputIterator i,
function u32regex (line 746) | inline u32regex do_make_u32regex(InputIterator i,
function u32regex (line 766) | inline u32regex do_make_u32regex(InputIterator i,
function copy_results (line 870) | void copy_results(MR1& out, MR2 const& in, NSubs named_subs)
function do_regex_match (line 903) | inline bool do_regex_match(BidiIterator first, BidiIterator last,
function do_regex_match (line 912) | bool do_regex_match(BidiIterator first, BidiIterator last,
function do_regex_match (line 928) | bool do_regex_match(BidiIterator first, BidiIterator last,
function do_regex_search (line 1076) | inline bool do_regex_search(BidiIterator first, BidiIterator last,
function do_regex_search (line 1086) | bool do_regex_search(BidiIterator first, BidiIterator last,
function do_regex_search (line 1103) | bool do_regex_search(BidiIterator first, BidiIterator last,
function make_utf32_seq (line 1258) | inline std::pair< boost::u8_to_u32_iterator<I>, boost::u8_to_u32_ite...
function make_utf32_seq (line 1264) | inline std::pair< boost::u16_to_u32_iterator<I>, boost::u16_to_u32_i...
function make_utf32_seq (line 1270) | inline std::pair< I, I >
function make_utf32_seq (line 1276) | inline std::pair< boost::u8_to_u32_iterator<const charT*>, boost::u8...
function make_utf32_seq (line 1283) | inline std::pair< boost::u16_to_u32_iterator<const charT*>, boost::u...
function make_utf32_seq (line 1290) | inline std::pair< const charT*, const charT* >
function OutputIterator (line 1296) | inline OutputIterator make_utf32_out(OutputIterator o, mpl::int_<4> ...
function make_utf32_out (line 1301) | inline utf16_output_iterator<OutputIterator> make_utf32_out(OutputIt...
function make_utf32_out (line 1306) | inline utf8_output_iterator<OutputIterator> make_utf32_out(OutputIte...
function OutputIterator (line 1312) | OutputIterator do_regex_replace(OutputIterator out,
function BaseIterator (line 1359) | inline const BaseIterator& extract_output_base(const BaseIterator& b)
function BaseIterator (line 1364) | inline BaseIterator extract_output_base(const utf8_output_iterator<B...
function BaseIterator (line 1369) | inline BaseIterator extract_output_base(const utf16_output_iterator<...
class unicode_string_out_iterator (line 1458) | class unicode_string_out_iterator
method unicode_string_out_iterator (line 1462) | unicode_string_out_iterator(U_NAMESPACE_QUALIFIER UnicodeString& s...
method unicode_string_out_iterator (line 1463) | unicode_string_out_iterator& operator++() { return *this; }
method unicode_string_out_iterator (line 1464) | unicode_string_out_iterator& operator++(int) { return *this; }
method unicode_string_out_iterator (line 1465) | unicode_string_out_iterator& operator*() { return *this; }
method unicode_string_out_iterator (line 1466) | unicode_string_out_iterator& operator=(UChar v)
function u32regex_match (line 946) | inline bool u32regex_match(BidiIterator first, BidiIterator last,
function u32regex_match (line 953) | inline bool u32regex_match(const UChar* p,
function u32regex_match (line 961) | inline bool u32regex_match(const wchar_t* p,
function u32regex_match (line 969) | inline bool u32regex_match(const char* p,
function u32regex_match (line 976) | inline bool u32regex_match(const unsigned char* p,
function u32regex_match (line 983) | inline bool u32regex_match(const std::string& s,
function u32regex_match (line 991) | inline bool u32regex_match(const std::wstring& s,
function u32regex_match (line 999) | inline bool u32regex_match(const U_NAMESPACE_QUALIFIER UnicodeString& s,
function u32regex_match (line 1010) | inline bool u32regex_match(BidiIterator first, BidiIterator last,
function u32regex_match (line 1017) | inline bool u32regex_match(const UChar* p,
function u32regex_match (line 1025) | inline bool u32regex_match(const wchar_t* p,
function u32regex_match (line 1033) | inline bool u32regex_match(const char* p,
function u32regex_match (line 1040) | inline bool u32regex_match(const unsigned char* p,
function u32regex_match (line 1047) | inline bool u32regex_match(const std::string& s,
function u32regex_match (line 1055) | inline bool u32regex_match(const std::wstring& s,
function u32regex_match (line 1063) | inline bool u32regex_match(const U_NAMESPACE_QUALIFIER UnicodeString& s,
type BOOST_REGEX_DETAIL_NS (line 1074) | namespace BOOST_REGEX_DETAIL_NS {
class icu_regex_traits_implementation (line 44) | class icu_regex_traits_implementation
method icu_regex_traits_implementation (line 52) | icu_regex_traits_implementation(const U_NAMESPACE_QUALIFIER Locale...
method U_NAMESPACE_QUALIFIER (line 66) | U_NAMESPACE_QUALIFIER Locale getloc()const
method string_type (line 70) | string_type do_transform(const char_type* p1, const char_type* p2,...
method string_type (line 121) | string_type transform(const char_type* p1, const char_type* p2) const
method string_type (line 125) | string_type transform_primary(const char_type* p1, const char_type...
method init_error (line 130) | void init_error()
function get_icu_regex_traits_implementation (line 140) | inline boost::shared_ptr<icu_regex_traits_implementation> get_icu_re...
function u32regex (line 697) | inline u32regex do_make_u32regex(InputIterator i,
function u32regex (line 707) | inline u32regex do_make_u32regex(InputIterator i,
function u32regex (line 717) | inline u32regex do_make_u32regex(InputIterator i,
function u32regex (line 726) | inline u32regex do_make_u32regex(InputIterator i,
function u32regex (line 746) | inline u32regex do_make_u32regex(InputIterator i,
function u32regex (line 766) | inline u32regex do_make_u32regex(InputIterator i,
function copy_results (line 870) | void copy_results(MR1& out, MR2 const& in, NSubs named_subs)
function do_regex_match (line 903) | inline bool do_regex_match(BidiIterator first, BidiIterator last,
function do_regex_match (line 912) | bool do_regex_match(BidiIterator first, BidiIterator last,
function do_regex_match (line 928) | bool do_regex_match(BidiIterator first, BidiIterator last,
function do_regex_search (line 1076) | inline bool do_regex_search(BidiIterator first, BidiIterator last,
function do_regex_search (line 1086) | bool do_regex_search(BidiIterator first, BidiIterator last,
function do_regex_search (line 1103) | bool do_regex_search(BidiIterator first, BidiIterator last,
function make_utf32_seq (line 1258) | inline std::pair< boost::u8_to_u32_iterator<I>, boost::u8_to_u32_ite...
function make_utf32_seq (line 1264) | inline std::pair< boost::u16_to_u32_iterator<I>, boost::u16_to_u32_i...
function make_utf32_seq (line 1270) | inline std::pair< I, I >
function make_utf32_seq (line 1276) | inline std::pair< boost::u8_to_u32_iterator<const charT*>, boost::u8...
function make_utf32_seq (line 1283) | inline std::pair< boost::u16_to_u32_iterator<const charT*>, boost::u...
function make_utf32_seq (line 1290) | inline std::pair< const charT*, const charT* >
function OutputIterator (line 1296) | inline OutputIterator make_utf32_out(OutputIterator o, mpl::int_<4> ...
function make_utf32_out (line 1301) | inline utf16_output_iterator<OutputIterator> make_utf32_out(OutputIt...
function make_utf32_out (line 1306) | inline utf8_output_iterator<OutputIterator> make_utf32_out(OutputIte...
function OutputIterator (line 1312) | OutputIterator do_regex_replace(OutputIterator out,
function BaseIterator (line 1359) | inline const BaseIterator& extract_output_base(const BaseIterator& b)
function BaseIterator (line 1364) | inline BaseIterator extract_output_base(const utf8_output_iterator<B...
function BaseIterator (line 1369) | inline BaseIterator extract_output_base(const utf16_output_iterator<...
class unicode_string_out_iterator (line 1458) | class unicode_string_out_iterator
method unicode_string_out_iterator (line 1462) | unicode_string_out_iterator(U_NAMESPACE_QUALIFIER UnicodeString& s...
method unicode_string_out_iterator (line 1463) | unicode_string_out_iterator& operator++() { return *this; }
method unicode_string_out_iterator (line 1464) | unicode_string_out_iterator& operator++(int) { return *this; }
method unicode_string_out_iterator (line 1465) | unicode_string_out_iterator& operator*() { return *this; }
method unicode_string_out_iterator (line 1466) | unicode_string_out_iterator& operator=(UChar v)
function u32regex_search (line 1122) | inline bool u32regex_search(BidiIterator first, BidiIterator last,
function u32regex_search (line 1130) | inline bool u32regex_search(BidiIterator first, BidiIterator last,
function u32regex_search (line 1138) | inline bool u32regex_search(const UChar* p,
function u32regex_search (line 1146) | inline bool u32regex_search(const wchar_t* p,
function u32regex_search (line 1154) | inline bool u32regex_search(const char* p,
function u32regex_search (line 1161) | inline bool u32regex_search(const unsigned char* p,
function u32regex_search (line 1168) | inline bool u32regex_search(const std::string& s,
function u32regex_search (line 1176) | inline bool u32regex_search(const std::wstring& s,
function u32regex_search (line 1184) | inline bool u32regex_search(const U_NAMESPACE_QUALIFIER UnicodeString& s,
function u32regex_search (line 1192) | inline bool u32regex_search(BidiIterator first, BidiIterator last,
function u32regex_search (line 1199) | inline bool u32regex_search(const UChar* p,
function u32regex_search (line 1207) | inline bool u32regex_search(const wchar_t* p,
function u32regex_search (line 1215) | inline bool u32regex_search(const char* p,
function u32regex_search (line 1222) | inline bool u32regex_search(const unsigned char* p,
function u32regex_search (line 1229) | inline bool u32regex_search(const std::string& s,
function u32regex_search (line 1237) | inline bool u32regex_search(const std::wstring& s,
function u32regex_search (line 1245) | inline bool u32regex_search(const U_NAMESPACE_QUALIFIER UnicodeString& s,
type BOOST_REGEX_DETAIL_NS (line 1256) | namespace BOOST_REGEX_DETAIL_NS {
class icu_regex_traits_implementation (line 44) | class icu_regex_traits_implementation
method icu_regex_traits_implementation (line 52) | icu_regex_traits_implementation(const U_NAMESPACE_QUALIFIER Locale...
method U_NAMESPACE_QUALIFIER (line 66) | U_NAMESPACE_QUALIFIER Locale getloc()const
method string_type (line 70) | string_type do_transform(const char_type* p1, const char_type* p2,...
method string_type (line 121) | string_type transform(const char_type* p1, const char_type* p2) const
method string_type (line 125) | string_type transform_primary(const char_type* p1, const char_type...
method init_error (line 130) | void init_error()
function get_icu_regex_traits_implementation (line 140) | inline boost::shared_ptr<icu_regex_traits_implementation> get_icu_re...
function u32regex (line 697) | inline u32regex do_make_u32regex(InputIterator i,
function u32regex (line 707) | inline u32regex do_make_u32regex(InputIterator i,
function u32regex (line 717) | inline u32regex do_make_u32regex(InputIterator i,
function u32regex (line 726) | inline u32regex do_make_u32regex(InputIterator i,
function u32regex (line 746) | inline u32regex do_make_u32regex(InputIterator i,
function u32regex (line 766) | inline u32regex do_make_u32regex(InputIterator i,
function copy_results (line 870) | void copy_results(MR1& out, MR2 const& in, NSubs named_subs)
function do_regex_match (line 903) | inline bool do_regex_match(BidiIterator first, BidiIterator last,
function do_regex_match (line 912) | bool do_regex_match(BidiIterator first, BidiIterator last,
function do_regex_match (line 928) | bool do_regex_match(BidiIterator first, BidiIterator last,
function do_regex_search (line 1076) | inline bool do_regex_search(BidiIterator first, BidiIterator last,
function do_regex_search (line 1086) | bool do_regex_search(BidiIterator first, BidiIterator last,
function do_regex_search (line 1103) | bool do_regex_search(BidiIterator first, BidiIterator last,
function make_utf32_seq (line 1258) | inline std::pair< boost::u8_to_u32_iterator<I>, boost::u8_to_u32_ite...
function make_utf32_seq (line 1264) | inline std::pair< boost::u16_to_u32_iterator<I>, boost::u16_to_u32_i...
function make_utf32_seq (line 1270) | inline std::pair< I, I >
function make_utf32_seq (line 1276) | inline std::pair< boost::u8_to_u32_iterator<const charT*>, boost::u8...
function make_utf32_seq (line 1283) | inline std::pair< boost::u16_to_u32_iterator<const charT*>, boost::u...
function make_utf32_seq (line 1290) | inline std::pair< const charT*, const charT* >
function OutputIterator (line 1296) | inline OutputIterator make_utf32_out(OutputIterator o, mpl::int_<4> ...
function make_utf32_out (line 1301) | inline utf16_output_iterator<OutputIterator> make_utf32_out(OutputIt...
function make_utf32_out (line 1306) | inline utf8_output_iterator<OutputIterator> make_utf32_out(OutputIte...
function OutputIterator (line 1312) | OutputIterator do_regex_replace(OutputIterator out,
function BaseIterator (line 1359) | inline const BaseIterator& extract_output_base(const BaseIterator& b)
function BaseIterator (line 1364) | inline BaseIterator extract_output_base(const utf8_output_iterator<B...
function BaseIterator (line 1369) | inline BaseIterator extract_output_base(const utf16_output_iterator<...
class unicode_string_out_iterator (line 1458) | class unicode_string_out_iterator
method unicode_string_out_iterator (line 1462) | unicode_string_out_iterator(U_NAMESPACE_QUALIFIER UnicodeString& s...
method unicode_string_out_iterator (line 1463) | unicode_string_out_iterator& operator++() { return *this; }
method unicode_string_out_iterator (line 1464) | unicode_string_out_iterator& operator++(int) { return *this; }
method unicode_string_out_iterator (line 1465) | unicode_string_out_iterator& operator*() { return *this; }
method unicode_string_out_iterator (line 1466) | unicode_string_out_iterator& operator=(UChar v)
function OutputIterator (line 1376) | inline OutputIterator u32regex_replace(OutputIterator out,
function OutputIterator (line 1395) | inline OutputIterator u32regex_replace(OutputIterator out,
function OutputIterator (line 1414) | inline OutputIterator u32regex_replace(OutputIterator out,
function u32regex_replace (line 1433) | std::basic_string<charT> u32regex_replace(const std::basic_string<char...
function u32regex_replace (line 1445) | std::basic_string<charT> u32regex_replace(const std::basic_string<char...
type BOOST_REGEX_DETAIL_NS (line 1456) | namespace BOOST_REGEX_DETAIL_NS {
class icu_regex_traits_implementation (line 44) | class icu_regex_traits_implementation
method icu_regex_traits_implementation (line 52) | icu_regex_traits_implementation(const U_NAMESPACE_QUALIFIER Locale...
method U_NAMESPACE_QUALIFIER (line 66) | U_NAMESPACE_QUALIFIER Locale getloc()const
method string_type (line 70) | string_type do_transform(const char_type* p1, const char_type* p2,...
method string_type (line 121) | string_type transform(const char_type* p1, const char_type* p2) const
method string_type (line 125) | string_type transform_primary(const char_type* p1, const char_type...
method init_error (line 130) | void init_error()
function get_icu_regex_traits_implementation (line 140) | inline boost::shared_ptr<icu_regex_traits_implementation> get_icu_re...
function u32regex (line 697) | inline u32regex do_make_u32regex(InputIterator i,
function u32regex (line 707) | inline u32regex do_make_u32regex(InputIterator i,
function u32regex (line 717) | inline u32regex do_make_u32regex(InputIterator i,
function u32regex (line 726) | inline u32regex do_make_u32regex(InputIterator i,
function u32regex (line 746) | inline u32regex do_make_u32regex(InputIterator i,
function u32regex (line 766) | inline u32regex do_make_u32regex(InputIterator i,
function copy_results (line 870) | void copy_results(MR1& out, MR2 const& in, NSubs named_subs)
function do_regex_match (line 903) | inline bool do_regex_match(BidiIterator first, BidiIterator last,
function do_regex_match (line 912) | bool do_regex_match(BidiIterator first, BidiIterator last,
function do_regex_match (line 928) | bool do_regex_match(BidiIterator first, BidiIterator last,
function do_regex_search (line 1076) | inline bool do_regex_search(BidiIterator first, BidiIterator last,
function do_regex_search (line 1086) | bool do_regex_search(BidiIterator first, BidiIterator last,
function do_regex_search (line 1103) | bool do_regex_search(BidiIterator first, BidiIterator last,
function make_utf32_seq (line 1258) | inline std::pair< boost::u8_to_u32_iterator<I>, boost::u8_to_u32_ite...
function make_utf32_seq (line 1264) | inline std::pair< boost::u16_to_u32_iterator<I>, boost::u16_to_u32_i...
function make_utf32_seq (line 1270) | inline std::pair< I, I >
function make_utf32_seq (line 1276) | inline std::pair< boost::u8_to_u32_iterator<const charT*>, boost::u8...
function make_utf32_seq (line 1283) | inline std::pair< boost::u16_to_u32_iterator<const charT*>, boost::u...
function make_utf32_seq (line 1290) | inline std::pair< const charT*, const charT* >
function OutputIterator (line 1296) | inline OutputIterator make_utf32_out(OutputIterator o, mpl::int_<4> ...
function make_utf32_out (line 1301) | inline utf16_output_iterator<OutputIterator> make_utf32_out(OutputIt...
function make_utf32_out (line 1306) | inline utf8_output_iterator<OutputIterator> make_utf32_out(OutputIte...
function OutputIterator (line 1312) | OutputIterator do_regex_replace(OutputIterator out,
function BaseIterator (line 1359) | inline const BaseIterator& extract_output_base(const BaseIterator& b)
function BaseIterator (line 1364) | inline BaseIterator extract_output_base(const utf8_output_iterator<B...
function BaseIterator (line 1369) | inline BaseIterator extract_output_base(const utf16_output_iterator<...
class unicode_string_out_iterator (line 1458) | class unicode_string_out_iterator
method unicode_string_out_iterator (line 1462) | unicode_string_out_iterator(U_NAMESPACE_QUALIFIER UnicodeString& s...
method unicode_string_out_iterator (line 1463) | unicode_string_out_iterator& operator++() { return *this; }
method unicode_string_out_iterator (line 1464) | unicode_string_out_iterator& operator++(int) { return *this; }
method unicode_string_out_iterator (line 1465) | unicode_string_out_iterator& operator*() { return *this; }
method unicode_string_out_iterator (line 1466) | unicode_string_out_iterator& operator=(UChar v)
function U_NAMESPACE_QUALIFIER (line 1480) | inline U_NAMESPACE_QUALIFIER UnicodeString u32regex_replace(const U_NA...
function U_NAMESPACE_QUALIFIER (line 1491) | inline U_NAMESPACE_QUALIFIER UnicodeString u32regex_replace(const U_NA...
type boost (line 683) | namespace boost {
type BOOST_REGEX_DETAIL_NS (line 39) | namespace BOOST_REGEX_DETAIL_NS {
class icu_regex_traits_implementation (line 44) | class icu_regex_traits_implementation
method icu_regex_traits_implementation (line 52) | icu_regex_traits_implementation(const U_NAMESPACE_QUALIFIER Locale...
method U_NAMESPACE_QUALIFIER (line 66) | U_NAMESPACE_QUALIFIER Locale getloc()const
method string_type (line 70) | string_type do_transform(const char_type* p1, const char_type* p2,...
method string_type (line 121) | string_type transform(const char_type* p1, const char_type* p2) const
method string_type (line 125) | string_type transform_primary(const char_type* p1, const char_type...
method init_error (line 130) | void init_error()
function get_icu_regex_traits_implementation (line 140) | inline boost::shared_ptr<icu_regex_traits_implementation> get_icu_re...
function u32regex (line 697) | inline u32regex do_make_u32regex(InputIterator i,
function u32regex (line 707) | inline u32regex do_make_u32regex(InputIterator i,
function u32regex (line 717) | inline u32regex do_make_u32regex(InputIterator i,
function u32regex (line 726) | inline u32regex do_make_u32regex(InputIterator i,
function u32regex (line 746) | inline u32regex do_make_u32regex(InputIterator i,
function u32regex (line 766) | inline u32regex do_make_u32regex(InputIterator i,
function copy_results (line 870) | void copy_results(MR1& out, MR2 const& in, NSubs named_subs)
function do_regex_match (line 903) | inline bool do_regex_match(BidiIterator first, BidiIterator last,
function do_regex_match (line 912) | bool do_regex_match(BidiIterator first, BidiIterator last,
function do_regex_match (line 928) | bool do_regex_match(BidiIterator first, BidiIterator last,
function do_regex_search (line 1076) | inline bool do_regex_search(BidiIterator first, BidiIterator last,
function do_regex_search (line 1086) | bool do_regex_search(BidiIterator first, BidiIterator last,
function do_regex_search (line 1103) | bool do_regex_search(BidiIterator first, BidiIterator last,
function make_utf32_seq (line 1258) | inline std::pair< boost::u8_to_u32_iterator<I>, boost::u8_to_u32_ite...
function make_utf32_seq (line 1264) | inline std::pair< boost::u16_to_u32_iterator<I>, boost::u16_to_u32_i...
function make_utf32_seq (line 1270) | inline std::pair< I, I >
function make_utf32_seq (line 1276) | inline std::pair< boost::u8_to_u32_iterator<const charT*>, boost::u8...
function make_utf32_seq (line 1283) | inline std::pair< boost::u16_to_u32_iterator<const charT*>, boost::u...
function make_utf32_seq (line 1290) | inline std::pair< const charT*, const charT* >
function OutputIterator (line 1296) | inline OutputIterator make_utf32_out(OutputIterator o, mpl::int_<4> ...
function make_utf32_out (line 1301) | inline utf16_output_iterator<OutputIterator> make_utf32_out(OutputIt...
function make_utf32_out (line 1306) | inline utf8_output_iterator<OutputIterator> make_utf32_out(OutputIte...
function OutputIterator (line 1312) | OutputIterator do_regex_replace(OutputIterator out,
function BaseIterator (line 1359) | inline const BaseIterator& extract_output_base(const BaseIterator& b)
function BaseIterator (line 1364) | inline BaseIterator extract_output_base(const utf8_output_iterator<B...
function BaseIterator (line 1369) | inline BaseIterator extract_output_base(const utf16_output_iterator<...
class unicode_string_out_iterator (line 1458) | class unicode_string_out_iterator
method unicode_string_out_iterator (line 1462) | unicode_string_out_iterator(U_NAMESPACE_QUALIFIER UnicodeString& s...
method unicode_string_out_iterator (line 1463) | unicode_string_out_iterator& operator++() { return *this; }
method unicode_string_out_iterator (line 1464) | unicode_string_out_iterator& operator++(int) { return *this; }
method unicode_string_out_iterator (line 1465) | unicode_string_out_iterator& operator*() { return *this; }
method unicode_string_out_iterator (line 1466) | unicode_string_out_iterator& operator=(UChar v)
class icu_regex_traits (line 147) | class icu_regex_traits
type boost_extensions_tag (line 160) | struct boost_extensions_tag {}
method icu_regex_traits (line 162) | icu_regex_traits()
method size_type (line 166) | static size_type length(const char_type* p)
method syntax_type (line 176) | ::boost::regex_constants::syntax_type syntax_type(char_type c)const
method escape_syntax_type (line 180) | ::boost::regex_constants::escape_syntax_type escape_syntax_type(char...
method char_type (line 184) | char_type translate(char_type c) const
method char_type (line 188) | char_type translate_nocase(char_type c) const
method char_type (line 192) | char_type translate(char_type c, bool icase) const
method char_type (line 196) | char_type tolower(char_type c) const
method char_type (line 200) | char_type toupper(char_type c) const
method string_type (line 204) | string_type transform(const char_type* p1, const char_type* p2) const
method string_type (line 208) | string_type transform_primary(const char_type* p1, const char_type* ...
method char_class_type (line 212) | char_class_type lookup_classname(const char_type* p1, const char_typ...
method string_type (line 284) | string_type lookup_collatename(const char_type* p1, const char_type*...
method isctype (line 334) | bool isctype(char_type c, char_class_type f) const
method toi (line 371) | boost::intmax_t toi(const char_type*& p1, const char_type* p2, int r...
method value (line 375) | int value(char_type c, int radix)const
method locale_type (line 379) | locale_type imbue(locale_type l)
method locale_type (line 385) | locale_type getloc()const
method error_string (line 389) | std::string error_string(::boost::regex_constants::error_type n) const
method char_class_type (line 412) | static char_class_type lookup_icu_mask(const ::UChar32* p1, const ::...
type BOOST_REGEX_DETAIL_NS (line 693) | namespace BOOST_REGEX_DETAIL_NS {
class icu_regex_traits_implementation (line 44) | class icu_regex_traits_implementation
method icu_regex_traits_implementation (line 52) | icu_regex_traits_implementation(const U_NAMESPACE_QUALIFIER Locale...
method U_NAMESPACE_QUALIFIER (line 66) | U_NAMESPACE_QUALIFIER Locale getloc()const
method string_type (line 70) | string_type do_transform(const char_type* p1, const char_type* p2,...
method string_type (line 121) | string_type transform(const char_type* p1, const char_type* p2) const
method string_type (line 125) | string_type transform_primary(const char_type* p1, const char_type...
method init_error (line 130) | void init_error()
function get_icu_regex_traits_implementation (line 140) | inline boost::shared_ptr<icu_regex_traits_implementation> get_icu_re...
function u32regex (line 697) | inline u32regex do_make_u32regex(InputIterator i,
function u32regex (line 707) | inline u32regex do_make_u32regex(InputIterator i,
function u32regex (line 717) | inline u32regex do_make_u32regex(InputIterator i,
function u32regex (line 726) | inline u32regex do_make_u32regex(InputIterator i,
function u32regex (line 746) | inline u32regex do_make_u32regex(InputIterator i,
function u32regex (line 766) | inline u32regex do_make_u32regex(InputIterator i,
function copy_results (line 870) | void copy_results(MR1& out, MR2 const& in, NSubs named_subs)
function do_regex_match (line 903) | inline bool do_regex_match(BidiIterator first, BidiIterator last,
function do_regex_match (line 912) | bool do_regex_match(BidiIterator first, BidiIterator last,
function do_regex_match (line 928) | bool do_regex_match(BidiIterator first, BidiIterator last,
function do_regex_search (line 1076) | inline bool do_regex_search(BidiIterator first, BidiIterator last,
function do_regex_search (line 1086) | bool do_regex_search(BidiIterator first, BidiIterator last,
function do_regex_search (line 1103) | bool do_regex_search(BidiIterator first, BidiIterator last,
function make_utf32_seq (line 1258) | inline std::pair< boost::u8_to_u32_iterator<I>, boost::u8_to_u32_ite...
function make_utf32_seq (line 1264) | inline std::pair< boost::u16_to_u32_iterator<I>, boost::u16_to_u32_i...
function make_utf32_seq (line 1270) | inline std::pair< I, I >
function make_utf32_seq (line 1276) | inline std::pair< boost::u8_to_u32_iterator<const charT*>, boost::u8...
function make_utf32_seq (line 1283) | inline std::pair< boost::u16_to_u32_iterator<const charT*>, boost::u...
function make_utf32_seq (line 1290) | inline std::pair< const charT*, const charT* >
function OutputIterator (line 1296) | inline OutputIterator make_utf32_out(OutputIterator o, mpl::int_<4> ...
function make_utf32_out (line 1301) | inline utf16_output_iterator<OutputIterator> make_utf32_out(OutputIt...
function make_utf32_out (line 1306) | inline utf8_output_iterator<OutputIterator> make_utf32_out(OutputIte...
function OutputIterator (line 1312) | OutputIterator do_regex_replace(OutputIterator out,
function BaseIterator (line 1359) | inline const BaseIterator& extract_output_base(const BaseIterator& b)
function BaseIterator (line 1364) | inline BaseIterator extract_output_base(const utf8_output_iterator<B...
function BaseIterator (line 1369) | inline BaseIterator extract_output_base(const utf16_output_iterator<...
class unicode_string_out_iterator (line 1458) | class unicode_string_out_iterator
method unicode_string_out_iterator (line 1462) | unicode_string_out_iterator(U_NAMESPACE_QUALIFIER UnicodeString& s...
method unicode_string_out_iterator (line 1463) | unicode_string_out_iterator& operator++() { return *this; }
method unicode_string_out_iterator (line 1464) | unicode_string_out_iterator& operator++(int) { return *this; }
method unicode_string_out_iterator (line 1465) | unicode_string_out_iterator& operator*() { return *this; }
method unicode_string_out_iterator (line 1466) | unicode_string_out_iterator& operator=(UChar v)
function u32regex (line 817) | inline u32regex make_u32regex(InputIterator i,
function u32regex (line 826) | inline u32regex make_u32regex(const char* p, boost::regex_constants::s...
function u32regex (line 830) | inline u32regex make_u32regex(const unsigned char* p, boost::regex_con...
function u32regex (line 838) | inline u32regex make_u32regex(const wchar_t* p, boost::regex_constants...
function u32regex (line 844) | inline u32regex make_u32regex(const UChar* p, boost::regex_constants::...
function u32regex (line 853) | inline u32regex make_u32regex(const std::basic_string<C, T, A>& s, boo...
function u32regex (line 860) | inline u32regex make_u32regex(const U_NAMESPACE_QUALIFIER UnicodeStrin...
type BOOST_REGEX_DETAIL_NS (line 868) | namespace BOOST_REGEX_DETAIL_NS {
class icu_regex_traits_implementation (line 44) | class icu_regex_traits_implementation
method icu_regex_traits_implementation (line 52) | icu_regex_traits_implementation(const U_NAMESPACE_QUALIFIER Locale...
method U_NAMESPACE_QUALIFIER (line 66) | U_NAMESPACE_QUALIFIER Locale getloc()const
method string_type (line 70) | string_type do_transform(const char_type* p1, const char_type* p2,...
method string_type (line 121) | string_type transform(const char_type* p1, const char_type* p2) const
method string_type (line 125) | string_type transform_primary(const char_type* p1, const char_type...
method init_error (line 130) | void init_error()
function get_icu_regex_traits_implementation (line 140) | inline boost::shared_ptr<icu_regex_traits_implementation> get_icu_re...
function u32regex (line 697) | inline u32regex do_make_u32regex(InputIterator i,
function u32regex (line 707) | inline u32regex do_make_u32regex(InputIterator i,
function u32regex (line 717) | inline u32regex do_make_u32regex(InputIterator i,
function u32regex (line 726) | inline u32regex do_make_u32regex(InputIterator i,
function u32regex (line 746) | inline u32regex do_make_u32regex(InputIterator i,
function u32regex (line 766) | inline u32regex do_make_u32regex(InputIterator i,
function copy_results (line 870) | void copy_results(MR1& out, MR2 const& in, NSubs named_subs)
function do_regex_match (line 903) | inline bool do_regex_match(BidiIterator first, BidiIterator last,
function do_regex_match (line 912) | bool do_regex_match(BidiIterator first, BidiIterator last,
function do_regex_match (line 928) | bool do_regex_match(BidiIterator first, BidiIterator last,
function do_regex_search (line 1076) | inline bool do_regex_search(BidiIterator first, BidiIterator last,
function do_regex_search (line 1086) | bool do_regex_search(BidiIterator first, BidiIterator last,
function do_regex_search (line 1103) | bool do_regex_search(BidiIterator first, BidiIterator last,
function make_utf32_seq (line 1258) | inline std::pair< boost::u8_to_u32_iterator<I>, boost::u8_to_u32_ite...
function make_utf32_seq (line 1264) | inline std::pair< boost::u16_to_u32_iterator<I>, boost::u16_to_u32_i...
function make_utf32_seq (line 1270) | inline std::pair< I, I >
function make_utf32_seq (line 1276) | inline std::pair< boost::u8_to_u32_iterator<const charT*>, boost::u8...
function make_utf32_seq (line 1283) | inline std::pair< boost::u16_to_u32_iterator<const charT*>, boost::u...
function make_utf32_seq (line 1290) | inline std::pair< const charT*, const charT* >
function OutputIterator (line 1296) | inline OutputIterator make_utf32_out(OutputIterator o, mpl::int_<4> ...
function make_utf32_out (line 1301) | inline utf16_output_iterator<OutputIterator> make_utf32_out(OutputIt...
function make_utf32_out (line 1306) | inline utf8_output_iterator<OutputIterator> make_utf32_out(OutputIte...
function OutputIterator (line 1312) | OutputIterator do_regex_replace(OutputIterator out,
function BaseIterator (line 1359) | inline const BaseIterator& extract_output_base(const BaseIterator& b)
function BaseIterator (line 1364) | inline BaseIterator extract_output_base(const utf8_output_iterator<B...
function BaseIterator (line 1369) | inline BaseIterator extract_output_base(const utf16_output_iterator<...
class unicode_string_out_iterator (line 1458) | class unicode_string_out_iterator
method unicode_string_out_iterator (line 1462) | unicode_string_out_iterator(U_NAMESPACE_QUALIFIER UnicodeString& s...
method unicode_string_out_iterator (line 1463) | unicode_string_out_iterator& operator++() { return *this; }
method unicode_string_out_iterator (line 1464) | unicode_string_out_iterator& operator++(int) { return *this; }
method unicode_string_out_iterator (line 1465) | unicode_string_out_iterator& operator*() { return *this; }
method unicode_string_out_iterator (line 1466) | unicode_string_out_iterator& operator=(UChar v)
function u32regex_match (line 946) | inline bool u32regex_match(BidiIterator first, BidiIterator last,
function u32regex_match (line 953) | inline bool u32regex_match(const UChar* p,
function u32regex_match (line 961) | inline bool u32regex_match(const wchar_t* p,
function u32regex_match (line 969) | inline bool u32regex_match(const char* p,
function u32regex_match (line 976) | inline bool u32regex_match(const unsigned char* p,
function u32regex_match (line 983) | inline bool u32regex_match(const std::string& s,
function u32regex_match (line 991) | inline bool u32regex_match(const std::wstring& s,
function u32regex_match (line 999) | inline bool u32regex_match(const U_NAMESPACE_QUALIFIER UnicodeString& s,
function u32regex_match (line 1010) | inline bool u32regex_match(BidiIterator first, BidiIterator last,
function u32regex_match (line 1017) | inline bool u32regex_match(const UChar* p,
function u32regex_match (line 1025) | inline bool u32regex_match(const wchar_t* p,
function u32regex_match (line 1033) | inline bool u32regex_match(const char* p,
function u32regex_match (line 1040) | inline bool u32regex_match(const unsigned char* p,
function u32regex_match (line 1047) | inline bool u32regex_match(const std::string& s,
function u32regex_match (line 1055) | inline bool u32regex_match(const std::wstring& s,
function u32regex_match (line 1063) | inline bool u32regex_match(const U_NAMESPACE_QUALIFIER UnicodeString& s,
type BOOST_REGEX_DETAIL_NS (line 1074) | namespace BOOST_REGEX_DETAIL_NS {
class icu_regex_traits_implementation (line 44) | class icu_regex_traits_implementation
method icu_regex_traits_implementation (line 52) | icu_regex_traits_implementation(const U_NAMESPACE_QUALIFIER Locale...
method U_NAMESPACE_QUALIFIER (line 66) | U_NAMESPACE_QUALIFIER Locale getloc()const
method string_type (line 70) | string_type do_transform(const char_type* p1, const char_type* p2,...
method string_type (line 121) | string_type transform(const char_type* p1, const char_type* p2) const
method string_type (line 125) | string_type transform_primary(const char_type* p1, const char_type...
method init_error (line 130) | void init_error()
function get_icu_regex_traits_implementation (line 140) | inline boost::shared_ptr<icu_regex_traits_implementation> get_icu_re...
function u32regex (line 697) | inline u32regex do_make_u32regex(InputIterator i,
function u32regex (line 707) | inline u32regex do_make_u32regex(InputIterator i,
function u32regex (line 717) | inline u32regex do_make_u32regex(InputIterator i,
function u32regex (line 726) | inline u32regex do_make_u32regex(InputIterator i,
function u32regex (line 746) | inline u32regex do_make_u32regex(InputIterator i,
function u32regex (line 766) | inline u32regex do_make_u32regex(InputIterator i,
function copy_results (line 870) | void copy_results(MR1& out, MR2 const& in, NSubs named_subs)
function do_regex_match (line 903) | inline bool do_regex_match(BidiIterator first, BidiIterator last,
function do_regex_match (line 912) | bool do_regex_match(BidiIterator first, BidiIterator last,
function do_regex_match (line 928) | bool do_regex_match(BidiIterator first, BidiIterator last,
function do_regex_search (line 1076) | inline bool do_regex_search(BidiIterator first, BidiIterator last,
function do_regex_search (line 1086) | bool do_regex_search(BidiIterator first, BidiIterator last,
function do_regex_search (line 1103) | bool do_regex_search(BidiIterator first, BidiIterator last,
function make_utf32_seq (line 1258) | inline std::pair< boost::u8_to_u32_iterator<I>, boost::u8_to_u32_ite...
function make_utf32_seq (line 1264) | inline std::pair< boost::u16_to_u32_iterator<I>, boost::u16_to_u32_i...
function make_utf32_seq (line 1270) | inline std::pair< I, I >
function make_utf32_seq (line 1276) | inline std::pair< boost::u8_to_u32_iterator<const charT*>, boost::u8...
function make_utf32_seq (line 1283) | inline std::pair< boost::u16_to_u32_iterator<const charT*>, boost::u...
function make_utf32_seq (line 1290) | inline std::pair< const charT*, const charT* >
function OutputIterator (line 1296) | inline OutputIterator make_utf32_out(OutputIterator o, mpl::int_<4> ...
function make_utf32_out (line 1301) | inline utf16_output_iterator<OutputIterator> make_utf32_out(OutputIt...
function make_utf32_out (line 1306) | inline utf8_output_iterator<OutputIterator> make_utf32_out(OutputIte...
function OutputIterator (line 1312) | OutputIterator do_regex_replace(OutputIterator out,
function BaseIterator (line 1359) | inline const BaseIterator& extract_output_base(const BaseIterator& b)
function BaseIterator (line 1364) | inline BaseIterator extract_output_base(const utf8_output_iterator<B...
function BaseIterator (line 1369) | inline BaseIterator extract_output_base(const utf16_output_iterator<...
class unicode_string_out_iterator (line 1458) | class unicode_string_out_iterator
method unicode_string_out_iterator (line 1462) | unicode_string_out_iterator(U_NAMESPACE_QUALIFIER UnicodeString& s...
method unicode_string_out_iterator (line 1463) | unicode_string_out_iterator& operator++() { return *this; }
method unicode_string_out_iterator (line 1464) | unicode_string_out_iterator& operator++(int) { return *this; }
method unicode_string_out_iterator (line 1465) | unicode_string_out_iterator& operator*() { return *this; }
method unicode_string_out_iterator (line 1466) | unicode_string_out_iterator& operator=(UChar v)
function u32regex_search (line 1122) | inline bool u32regex_search(BidiIterator first, BidiIterator last,
function u32regex_search (line 1130) | inline bool u32regex_search(BidiIterator first, BidiIterator last,
function u32regex_search (line 1138) | inline bool u32regex_search(const UChar* p,
function u32regex_search (line 1146) | inline bool u32regex_search(const wchar_t* p,
function u32regex_search (line 1154) | inline bool u32regex_search(const char* p,
function u32regex_search (line 1161) | inline bool u32regex_search(const unsigned char* p,
function u32regex_search (line 1168) | inline bool u32regex_search(const std::string& s,
function u32regex_search (line 1176) | inline bool u32regex_search(const std::wstring& s,
function u32regex_search (line 1184) | inline bool u32regex_search(const U_NAMESPACE_QUALIFIER UnicodeString& s,
function u32regex_search (line 1192) | inline bool u32regex_search(BidiIterator first, BidiIterator last,
function u32regex_search (line 1199) | inline bool u32regex_search(const UChar* p,
function u32regex_search (line 1207) | inline bool u32regex_search(const wchar_t* p,
function u32regex_search (line 1215) | inline bool u32regex_search(const char* p,
function u32regex_search (line 1222) | inline bool u32regex_search(const unsigned char* p,
function u32regex_search (line 1229) | inline bool u32regex_search(const std::string& s,
function u32regex_search (line 1237) | inline bool u32regex_search(const std::wstring& s,
function u32regex_search (line 1245) | inline bool u32regex_search(const U_NAMESPACE_QUALIFIER UnicodeString& s,
type BOOST_REGEX_DETAIL_NS (line 1256) | namespace BOOST_REGEX_DETAIL_NS {
class icu_regex_traits_implementation (line 44) | class icu_regex_traits_implementation
method icu_regex_traits_implementation (line 52) | icu_regex_traits_implementation(const U_NAMESPACE_QUALIFIER Locale...
method U_NAMESPACE_QUALIFIER (line 66) | U_NAMESPACE_QUALIFIER Locale getloc()const
method string_type (line 70) | string_type do_transform(const char_type* p1, const char_type* p2,...
method string_type (line 121) | string_type transform(const char_type* p1, const char_type* p2) const
method string_type (line 125) | string_type transform_primary(const char_type* p1, const char_type...
method init_error (line 130) | void init_error()
function get_icu_regex_traits_implementation (line 140) | inline boost::shared_ptr<icu_regex_traits_implementation> get_icu_re...
function u32regex (line 697) | inline u32regex do_make_u32regex(InputIterator i,
function u32regex (line 707) | inline u32regex do_make_u32regex(InputIterator i,
function u32regex (line 717) | inline u32regex do_make_u32regex(InputIterator i,
function u32regex (line 726) | inline u32regex do_make_u32regex(InputIterator i,
function u32regex (line 746) | inline u32regex do_make_u32regex(InputIterator i,
function u32regex (line 766) | inline u32regex do_make_u32regex(InputIterator i,
function copy_results (line 870) | void copy_results(MR1& out, MR2 const& in, NSubs named_subs)
function do_regex_match (line 903) | inline bool do_regex_match(BidiIterator first, BidiIterator last,
function do_regex_match (line 912) | bool do_regex_match(BidiIterator first, BidiIterator last,
function do_regex_match (line 928) | bool do_regex_match(BidiIterator first, BidiIterator last,
function do_regex_search (line 1076) | inline bool do_regex_search(BidiIterator first, BidiIterator last,
function do_regex_search (line 1086) | bool do_regex_search(BidiIterator first, BidiIterator last,
function do_regex_search (line 1103) | bool do_regex_search(BidiIterator first, BidiIterator last,
function make_utf32_seq (line 1258) | inline std::pair< boost::u8_to_u32_iterator<I>, boost::u8_to_u32_ite...
function make_utf32_seq (line 1264) | inline std::pair< boost::u16_to_u32_iterator<I>, boost::u16_to_u32_i...
function make_utf32_seq (line 1270) | inline std::pair< I, I >
function make_utf32_seq (line 1276) | inline std::pair< boost::u8_to_u32_iterator<const charT*>, boost::u8...
function make_utf32_seq (line 1283) | inline std::pair< boost::u16_to_u32_iterator<const charT*>, boost::u...
function make_utf32_seq (line 1290) | inline std::pair< const charT*, const charT* >
function OutputIterator (line 1296) | inline OutputIterator make_utf32_out(OutputIterator o, mpl::int_<4> ...
function make_utf32_out (line 1301) | inline utf16_output_iterator<OutputIterator> make_utf32_out(OutputIt...
function make_utf32_out (line 1306) | inline utf8_output_iterator<OutputIterator> make_utf32_out(OutputIte...
function OutputIterator (line 1312) | OutputIterator do_regex_replace(OutputIterator out,
function BaseIterator (line 1359) | inline const BaseIterator& extract_output_base(const BaseIterator& b)
function BaseIterator (line 1364) | inline BaseIterator extract_output_base(const utf8_output_iterator<B...
function BaseIterator (line 1369) | inline BaseIterator extract_output_base(const utf16_output_iterator<...
class unicode_string_out_iterator (line 1458) | class unicode_string_out_iterator
method unicode_string_out_iterator (line 1462) | unicode_string_out_iterator(U_NAMESPACE_QUALIFIER UnicodeString& s...
method unicode_string_out_iterator (line 1463) | unicode_string_out_iterator& operator++() { return *this; }
method unicode_string_out_iterator (line 1464) | unicode_string_out_iterator& operator++(int) { return *this; }
method unicode_string_out_iterator (line 1465) | unicode_string_out_iterator& operator*() { return *this; }
method unicode_string_out_iterator (line 1466) | unicode_string_out_iterator& operator=(UChar v)
function OutputIterator (line 1376) | inline OutputIterator u32regex_replace(OutputIterator out,
function OutputIterator (line 1395) | inline OutputIterator u32regex_replace(OutputIterator out,
function OutputIterator (line 1414) | inline OutputIterator u32regex_replace(OutputIterator out,
function u32regex_replace (line 1433) | std::basic_string<charT> u32regex_replace(const std::basic_string<char...
function u32regex_replace (line 1445) | std::basic_string<charT> u32regex_replace(const std::basic_string<char...
type BOOST_REGEX_DETAIL_NS (line 1456) | namespace BOOST_REGEX_DETAIL_NS {
class icu_regex_traits_implementation (line 44) | class icu_regex_traits_implementation
method icu_regex_traits_implementation (line 52) | icu_regex_traits_implementation(const U_NAMESPACE_QUALIFIER Locale...
method U_NAMESPACE_QUALIFIER (line 66) | U_NAMESPACE_QUALIFIER Locale getloc()const
method string_type (line 70) | string_type do_transform(const char_type* p1, const char_type* p2,...
method string_type (line 121) | string_type transform(const char_type* p1, const char_type* p2) const
method string_type (line 125) | string_type transform_primary(const char_type* p1, const char_type...
method init_error (line 130) | void init_error()
function get_icu_regex_traits_implementation (line 140) | inline boost::shared_ptr<icu_regex_traits_implementation> get_icu_re...
function u32regex (line 697) | inline u32regex do_make_u32regex(InputIterator i,
function u32regex (line 707) | inline u32regex do_make_u32regex(InputIterator i,
function u32regex (line 717) | inline u32regex do_make_u32regex(InputIterator i,
function u32regex (line 726) | inline u32regex do_make_u32regex(InputIterator i,
function u32regex (line 746) | inline u32regex do_make_u32regex(InputIterator i,
function u32regex (line 766) | inline u32regex do_make_u32regex(InputIterator i,
function copy_results (line 870) | void copy_results(MR1& out, MR2 const& in, NSubs named_subs)
function do_regex_match (line 903) | inline bool do_regex_match(BidiIterator first, BidiIterator last,
function do_regex_match (line 912) | bool do_regex_match(BidiIterator first, BidiIterator last,
function do_regex_match (line 928) | bool do_regex_match(BidiIterator first, BidiIterator last,
function do_regex_search (line 1076) | inline bool do_regex_search(BidiIterator first, BidiIterator last,
function do_regex_search (line 1086) | bool do_regex_search(BidiIterator first, BidiIterator last,
function do_regex_search (line 1103) | bool do_regex_search(BidiIterator first, BidiIterator last,
function make_utf32_seq (line 1258) | inline std::pair< boost::u8_to_u32_iterator<I>, boost::u8_to_u32_ite...
function make_utf32_seq (line 1264) | inline std::pair< boost::u16_to_u32_iterator<I>, boost::u16_to_u32_i...
function make_utf32_seq (line 1270) | inline std::pair< I, I >
function make_utf32_seq (line 1276) | inline std::pair< boost::u8_to_u32_iterator<const charT*>, boost::u8...
function make_utf32_seq (line 1283) | inline std::pair< boost::u16_to_u32_iterator<const charT*>, boost::u...
function make_utf32_seq (line 1290) | inline std::pair< const charT*, const charT* >
function OutputIterator (line 1296) | inline OutputIterator make_utf32_out(OutputIterator o, mpl::int_<4> ...
function make_utf32_out (line 1301) | inline utf16_output_iterator<OutputIterator> make_utf32_out(O
Copy disabled (too large)
Download .json
Condensed preview — 1098 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (16,185K chars).
[
{
"path": ".clang-tidy",
"chars": 3899,
"preview": "# All rules should have a comment associated\n# Directives that do not have any effect (e.g. disabling a rule that is not"
},
{
"path": ".dockerignore",
"chars": 45,
"preview": "cmake-build-*/\nbuild*/\n\nlocal/\n**/Dockerfile\n"
},
{
"path": ".gdbinit",
"chars": 393,
"preview": "# Skip all std:: and __gnu_debug:: symbols\nskip -rfu ^std::\nskip -rfu ^__gnu_debug::\n\n# Skip all ImGui:: symbols\nskip -r"
},
{
"path": ".gitattributes",
"chars": 78,
"preview": "lib/external/** linguist-vendored\n\ndist/*.sh eol=lf\ndist/**/*Dockerfile eol=lf"
},
{
"path": ".github/FUNDING.yml",
"chars": 85,
"preview": "# Sponsor links\n\ngithub: WerWolv\nko_fi: WerWolv\ncustom: \"https://werwolv.net/donate\"\n"
},
{
"path": ".github/ISSUE_TEMPLATE/bug_report.yaml",
"chars": 1614,
"preview": "name: Bug Report\r\ndescription: Something doesn't work correctly in ImHex.\r\ntitle: \"[Bug] \"\r\nlabels: bug\r\nbody:\r\n- type: "
},
{
"path": ".github/ISSUE_TEMPLATE/feature_request.yaml",
"chars": 826,
"preview": "name: Feature Request\r\ndescription: Something you'd like to see added to ImHex in the future\r\ntitle: \"[Feature] \"\r\nlabel"
},
{
"path": ".github/PULL_REQUEST_TEMPLATE.md",
"chars": 825,
"preview": "<!--\nPlease provide as much information as possible about what your PR aims to do.\nPRs with no description will most lik"
},
{
"path": ".github/codecov.yml",
"chars": 273,
"preview": "comment: false\nignore:\n - \"lib/third_party\" # Third party libraries should be ignored\n - \"lib/external\" # Our own libr"
},
{
"path": ".github/scripts/delete-artifact.sh",
"chars": 318,
"preview": "#!/bin/sh\nset -xe\nARTIFACT_NAME=\"$1\"\n\nARTIFACT_ID=$(gh api repos/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_ID/artifact"
},
{
"path": ".github/workflows/analysis.yml",
"chars": 1718,
"preview": "name: \"CodeQL\"\n\non:\n schedule:\n - cron: '0 0 * * *'\n workflow_dispatch:\n\njobs:\n codeql:\n name: 🐛 CodeQL\n run"
},
{
"path": ".github/workflows/build.yml",
"chars": 44170,
"preview": "name: Build\n\nconcurrency:\n group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}\n cancel"
},
{
"path": ".github/workflows/dl-cache.yml",
"chars": 1428,
"preview": "# https://gist.github.com/iTrooz/d5bacca32c0974edc6c1ac3ad3ee82f3\n# See https://github.com/cli/cli/issues/9125\n# Extract"
},
{
"path": ".github/workflows/nightly_release.yml",
"chars": 4849,
"preview": "permissions:\n contents: write\n\nname: Nightly Release\n\non:\n schedule:\n - cron: '0 0 * * *'\n workflow_dispatch:\n\njob"
},
{
"path": ".github/workflows/release.yml",
"chars": 9904,
"preview": "permissions:\n contents: write\n\nname: Release\n\non:\n release:\n types: [published]\n workflow_dispatch:\n inputs:\n "
},
{
"path": ".github/workflows/stale_issues.yml",
"chars": 1148,
"preview": "name: Close inactive issues\non:\n schedule:\n - cron: \"30 1 * * 0\"\n workflow_dispatch:\n\njobs:\n close-issues:\n if:"
},
{
"path": ".github/workflows/tests.yml",
"chars": 3427,
"preview": "name: \"Unit Tests\"\n\non:\n push:\n branches:\n - 'master'\n - 'releases/**'\n - 'tests/**'\n - 'feature"
},
{
"path": ".gitignore",
"chars": 215,
"preview": "/.vscode/\n/.idea/\n/.kdev4/\n/.vs/\n.venv/\n\n/cmake-build-*/\n/build*/\n/local/\n/venv/\n/.cache/\n/install/\n/out/\n\n/dist/ImHex.r"
},
{
"path": ".gitmodules",
"chars": 1619,
"preview": "[submodule \"lib/third_party/nativefiledialog\"]\n\tpath = lib/third_party/nativefiledialog\n\turl = https://github.com/btzy/n"
},
{
"path": "CMakeLists.txt",
"chars": 5670,
"preview": "cmake_minimum_required(VERSION 3.25)\n\n# Options\n## General\noption(IMHEX_STRIP_RELEASE \"Strip the release bu"
},
{
"path": "CMakePresets.json",
"chars": 2229,
"preview": "{\n \"version\": 2,\n \"cmakeMinimumRequired\": {\n \"major\": 3,\n \"minor\": 20,\n \"patch\": 0\n },\n \"configurePresets\":"
},
{
"path": "CODE_OF_CONDUCT.md",
"chars": 5223,
"preview": "# Contributor Covenant Code of Conduct\n\n## Our Pledge\n\nWe as members, contributors, and leaders pledge to make participa"
},
{
"path": "CONTRIBUTING.md",
"chars": 5349,
"preview": "# Contribution guide\n\n## Introduction\n\nThis document is a guide for developers who want to contribute to ImHex in any wa"
},
{
"path": "INSTALL.md",
"chars": 3428,
"preview": "# Installing ImHex\n\n## Official Releases\n\nThe easiest way to install ImHex is to download the latest release from the [G"
},
{
"path": "LICENSE",
"chars": 18092,
"preview": " GNU GENERAL PUBLIC LICENSE\n Version 2, June 1991\n\n Copyright (C) 1989, 1991 Fr"
},
{
"path": "PLUGINS.md",
"chars": 923,
"preview": "# Plugins\r\n\r\nImHex is entirely built around the possibility to easily load plugins (most of it's features are actually i"
},
{
"path": "PRIVACY.md",
"chars": 1072,
"preview": "# Privacy Policy\n\nImHex collects **anonymous** user statistics based on the user's preferences which are set on first la"
},
{
"path": "README.md",
"chars": 21354,
"preview": "<a href=\"https://imhex.werwolv.net\">\n <h1 align=\"center\">\n <picture>\n <img height=\"300px\" style=\"margin: 0; pad"
},
{
"path": "SECURITY.md",
"chars": 450,
"preview": "# Security Policy\n\n## Supported Versions\n\nSupported is generally only the latest version that can be downloaded from the"
},
{
"path": "VERSION",
"chars": 10,
"preview": "1.39.0.WIP"
},
{
"path": "changelog.md",
"chars": 0,
"preview": ""
},
{
"path": "cmake/build_helpers.cmake",
"chars": 41786,
"preview": "# Some libraries we use set the BUILD_SHARED_LIBS variable to ON, which causes CMake to\n# display a warning about option"
},
{
"path": "cmake/cmake_uninstall.cmake.in",
"chars": 852,
"preview": "if(NOT EXISTS \"@CMAKE_BINARY_DIR@/install_manifest.txt\")\n message(FATAL_ERROR \"Cannot find install manifest: @CMAKE_BIN"
},
{
"path": "cmake/ide_helpers.cmake",
"chars": 5246,
"preview": "\noption(IMHEX_IDE_HELPERS_OVERRIDE_XCODE_COMPILER \"Enable choice of compiler for Xcode builds, despite CMake's best effo"
},
{
"path": "cmake/modules/FindBacktrace.cmake",
"chars": 3526,
"preview": "# Distributed under the OSI-approved BSD 3-Clause License. See accompanying\n# file Copyright.txt or https://cmake.org/l"
},
{
"path": "cmake/modules/FindCapstone.cmake",
"chars": 303,
"preview": "find_path(CAPSTONE_INCLUDE_DIR capstone.h PATH_SUFFIXES capstone)\nfind_library(CAPSTONE_LIBRARY NAMES capstone)\n\ninclude"
},
{
"path": "cmake/modules/FindCoreClrEmbed.cmake",
"chars": 3662,
"preview": "set(CoreClrEmbed_FOUND FALSE)\n\nset(CORECLR_ARCH \"linux-x64\")\nset(CORECLR_SUBARCH \"x64\")\nif (WIN32)\n set(CORECLR_ARCH "
},
{
"path": "cmake/modules/FindGLFW.cmake",
"chars": 5492,
"preview": "#.rst:\n# Find GLFW\n# ---------\n#\n# Finds the GLFW library using its cmake config if that exists, otherwise\n# falls back "
},
{
"path": "cmake/modules/FindLZ4.cmake",
"chars": 1783,
"preview": "find_path(LZ4_INCLUDE_DIR\n NAMES lz4.h\n HINTS \"${LZ4_INCLUDEDIR}\" \"${LZ4_HINTS}/include\"\n PATHS\n "
},
{
"path": "cmake/modules/FindMagic.cmake",
"chars": 288,
"preview": "find_path(LIBMAGIC_INCLUDE_DIR magic.h)\n\nfind_library(LIBMAGIC_LIBRARY NAMES magic)\n\nfind_package_handle_standard_args(M"
},
{
"path": "cmake/modules/FindPackageHandleStandardArgs.cmake",
"chars": 23173,
"preview": "# Distributed under the OSI-approved BSD 3-Clause License. See accompanying\n# file Copyright.txt or https://cmake.org/l"
},
{
"path": "cmake/modules/FindPackageMessage.cmake",
"chars": 1710,
"preview": "# Distributed under the OSI-approved BSD 3-Clause License. See accompanying\n# file Copyright.txt or https://cmake.org/l"
},
{
"path": "cmake/modules/FindYara.cmake",
"chars": 127,
"preview": "find_library(YARA_LIBRARIES NAMES yara)\nfind_file(yara.h YARA_INCLUDE_DIRS)\n\nmark_as_advanced(YARA_LIBRARIES YARA_INCLUD"
},
{
"path": "cmake/modules/FindZSTD.cmake",
"chars": 1421,
"preview": "# Copyright (c) Meta Platforms, Inc. and affiliates.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");"
},
{
"path": "cmake/modules/Findlibssh2.cmake",
"chars": 573,
"preview": "find_path(LIBSSH2_INCLUDE_DIR libssh2.h)\n\nfind_library(LIBSSH2_LIBRARY NAMES ssh2 libssh2)\n\nif(LIBSSH2_INCLUDE_DIR)\n "
},
{
"path": "cmake/modules/FindmbedTLS.cmake",
"chars": 3694,
"preview": "# - Try to find mbedTLS\n# Once done this will define\n#\n# Read-Only variables\n# MBEDTLS_FOUND - system has mbedTLS\n# MB"
},
{
"path": "cmake/modules/ImHexPlugin.cmake",
"chars": 8213,
"preview": "macro(add_imhex_plugin)\n setSDKPaths()\n # Parse arguments\n set(options LIBRARY_PLUGIN)\n set(oneValueArgs NAM"
},
{
"path": "cmake/modules/PostprocessBundle.cmake",
"chars": 3548,
"preview": "# Adapted from the Dolphin project: https://dolphin-emu.org/\n# This module can be used in two different ways.\n#\n# When i"
},
{
"path": "cmake/sdk/CMakeLists.txt",
"chars": 3026,
"preview": "cmake_minimum_required(VERSION 3.20)\nproject(ImHexSDK)\n\nset(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} \"${CMAKE_CURRENT_SOUR"
},
{
"path": "cmake/sdk/template/CMakeLists.txt",
"chars": 3400,
"preview": "# ImHex Plugin Template\n# =====================\n\n# This is the official CMake template for making your own ImHex plugins"
},
{
"path": "cmake/sdk/template/source/example_plugin.cpp",
"chars": 538,
"preview": "#include <hex/plugin.hpp>\n\n// Browse through the headers in lib/libimhex/include/hex/api/ to see what you can do with th"
},
{
"path": "dist/AppImage/AppImageBuilder.yml",
"chars": 8323,
"preview": "# appimage-builder recipe see https://appimage-builder.readthedocs.io for details\nversion: 1\nAppDir:\n path: .AppDir\n a"
},
{
"path": "dist/AppImage/Dockerfile",
"chars": 2736,
"preview": "FROM ubuntu:24.04 as build\n\n# Used to invalidate layer cache but not mount cache\n# See https://github.com/moby/moby/issu"
},
{
"path": "dist/Arch/Dockerfile",
"chars": 974,
"preview": "FROM archlinux:latest\n\nLABEL maintainer=\"hey@werwolv.net WerWolv\"\n\n# Install dependencies\nRUN pacman -Syy --needed --noc"
},
{
"path": "dist/Arch/PKGBUILD",
"chars": 1257,
"preview": "# Maintainer: iTrooz_ <aur at itrooz dot fr>\n# Contributor: Morten Linderud <foxboron@archlinux.org>\n\npkgname=imhex-bin\n"
},
{
"path": "dist/DEBIAN/control.in",
"chars": 452,
"preview": "Package: ImHex\nVersion: ${PROJECT_VERSION}\nSection: editors\nPriority: optional\nArchitecture: amd64\nLicense: GNU GPL-2\nDe"
},
{
"path": "dist/ImHex-9999.ebuild",
"chars": 681,
"preview": "# app-editors/ImHex\n# Copyright 2020 Gentoo Authors\n# Distributed under the terms of the GNU General Public License v2\n\n"
},
{
"path": "dist/cli/imhex.bat",
"chars": 42,
"preview": "@echo off\n\nstart \"\" \"%~dp0..\\imhex.exe\" %*"
},
{
"path": "dist/cli/imhex.sh",
"chars": 130,
"preview": "#!/bin/sh\n\nscript_path=$(readlink -f \"$0\")\nscript_dir=$(dirname \"${script_path}\")\n\"${script_dir}/../imhex\" \"$@\" > /dev/n"
},
{
"path": "dist/compiling/docker.md",
"chars": 3075,
"preview": "For a TLDR of commands see [How to build](#How-to-build)\n\n# Introduction\n\nThe original CI we used (vanilla Github Action"
},
{
"path": "dist/compiling/linux.md",
"chars": 796,
"preview": "### Compiling ImHex on Linux\n\nOn Linux, ImHex is built through regular GCC (or optionally Clang).\n\n1. Clone the repo usi"
},
{
"path": "dist/compiling/macos.md",
"chars": 845,
"preview": "### Compiling ImHex on macOS\n\nOn macOS, ImHex is built through regular GCC and LLVM clang.\n\n1. Clone the repo using `git"
},
{
"path": "dist/compiling/macos_nogpu.md",
"chars": 582,
"preview": "### Compiling and running ImHex on macOS without a GPU\n\nIn order to run ImHex on a macOS installation without a GPU, you"
},
{
"path": "dist/compiling/windows.md",
"chars": 1014,
"preview": "### Compiling ImHex on Windows\n\nOn Windows, ImHex is built through [msys2 / mingw](https://www.msys2.org/)'s gcc.\n\n1. Do"
},
{
"path": "dist/cppcheck.supp",
"chars": 445,
"preview": "missingIncludeSystem\nconstParameter\nunusedFunction\npreprocessorErrorDirective\ncheckersReport\nnoExplicitConstructor\nunmat"
},
{
"path": "dist/flake.nix",
"chars": 1389,
"preview": "{\n description = \"ImHex\";\n\n inputs = {\n nixpkgs.url = \"github:NixOS/nixpkgs/nixos-unstable\";\n };\n\n outputs = { se"
},
{
"path": "dist/flatpak/net.werwolv.ImHex.yaml",
"chars": 3735,
"preview": "app-id: net.werwolv.ImHex\nruntime: org.freedesktop.Platform\nruntime-version: '24.08'\nsdk: org.freedesktop.Sdk\ncommand: i"
},
{
"path": "dist/fonts/move_private_use_area.py",
"chars": 2368,
"preview": "from fontTools.ttLib import TTFont\nfrom fontTools.ttLib.tables._c_m_a_p import CmapSubtable\nimport argparse\n\n# Default P"
},
{
"path": "dist/fonts/ttf_to_header_file.py",
"chars": 2515,
"preview": "import argparse\nfrom fontTools.ttLib import TTFont\nimport os\n\ndef unicode_to_utf8_escape(codepoint):\n return ''.join("
},
{
"path": "dist/gen_release_notes.py",
"chars": 1638,
"preview": "import subprocess\nimport sys\n\ndef get_commits(branch: str, start_tag: str, end_tag: str) -> list[str]:\n try:\n "
},
{
"path": "dist/get_deps_archlinux.sh",
"chars": 428,
"preview": "#!/usr/bin/env sh\n\npacman -S $@ --needed \\\n cmake \\\n gcc \\\n lld \\\n glfw \\\n fon"
},
{
"path": "dist/get_deps_debian.sh",
"chars": 839,
"preview": "#!/usr/bin/env sh\n\n# Install pkgconf (adds minimum dependencies) only if the equivalent pkf-config is not already instal"
},
{
"path": "dist/get_deps_fedora.sh",
"chars": 453,
"preview": "#!/usr/bin/env sh\n\ndnf install -y \\\n cmake \\\n dbus-devel \\\n file-devel \\\n fontconfig-"
},
{
"path": "dist/get_deps_msys2.sh",
"chars": 507,
"preview": "#!/usr/bin/env sh\n\npacman -S --needed --noconfirm pactoys unzip git\npacboy -S --needed --noconfirm \\\n gcc:p "
},
{
"path": "dist/get_deps_tumbleweed.sh",
"chars": 452,
"preview": "#!/usr/bin/env sh\n\nzypper install \\\n cmake \\\n ninja \\\n gcc14 \\\n gcc14-c++ "
},
{
"path": "dist/imhex.desktop",
"chars": 453,
"preview": "[Desktop Entry]\nVersion=1.0\nName=ImHex\nComment=ImHex Hex Editor\nGenericName=Hex Editor\nExec=imhex %U\nIcon=imhex\nType=App"
},
{
"path": "dist/imhex.mime.xml",
"chars": 271,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<mime-info xmlns=\"http://www.freedesktop.org/standards/shared-mime-info\">\n <m"
},
{
"path": "dist/langtool.py",
"chars": 7505,
"preview": "#!/usr/bin/env python3\nfrom pathlib import Path\nimport argparse\nimport json\n\n# This fixes a CJK full-width character inp"
},
{
"path": "dist/macOS/0001-glfw-SW.patch",
"chars": 755,
"preview": "From 9c8665af4c2e2ce66555c15c05c72027bfdf0cb6 Mon Sep 17 00:00:00 2001\nFrom: iTrooz <hey@itrooz.fr>\nDate: Mon, 29 Aug 20"
},
{
"path": "dist/macOS/Brewfile",
"chars": 236,
"preview": "brew \"mbedtls\"\nbrew \"nlohmann-json\"\nbrew \"cmake\"\nbrew \"ccache\"\nbrew \"freetype2\"\nbrew \"libmagic\"\nbrew \"pkg-config\"\nbrew \""
},
{
"path": "dist/macOS/arm64.Dockerfile",
"chars": 6585,
"preview": "# This base image is also known as \"crosscompile\". See arm64.crosscompile.Dockerfile\nFROM ghcr.io/werwolv/macos-crosscom"
},
{
"path": "dist/macOS/arm64.crosscompile.Dockerfile",
"chars": 2513,
"preview": "# This image is provided for reference, but a (probably more up to date) image should be available at https://github.com"
},
{
"path": "dist/macOS/osx_10_15/x64-osx.cmake",
"chars": 406,
"preview": "set(VCPKG_TARGET_ARCHITECTURE x64)\nset(VCPKG_BUILD_TYPE release)\nset(VCPKG_CRT_LINKAGE dynamic)\nset(VCPKG_LIBRARY_LINKAG"
},
{
"path": "dist/msys2/PKGBUILD",
"chars": 1520,
"preview": "_realname=ImHex\npkgbase=mingw-w64-${_realname}\npkgname=\"${MINGW_PACKAGE_PREFIX}-${_realname}\"\npkgver=ci\npkgrel=1\npkgdesc"
},
{
"path": "dist/net.werwolv.ImHex.metainfo.xml",
"chars": 3392,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<component type=\"desktop\">\n <id>net.werwolv.ImHex</id>\n <name>ImHex</name>\n"
},
{
"path": "dist/rpm/imhex.spec",
"chars": 5407,
"preview": "%define source_date_epoch_from_changelog 0\n\nName: imhex\nVersion: VERSION\nRelease: 0%{?dist}\nSumm"
},
{
"path": "dist/snap/snapcraft.yaml",
"chars": 2599,
"preview": "name: imhex\ntitle: ImHex\nbase: core24\nversion: ${IMHEX_VERSION_STRING}\nsummary: Hex editor for reverse engineering\ndescr"
},
{
"path": "dist/web/Dockerfile",
"chars": 4440,
"preview": "FROM emscripten/emsdk:4.0.21 AS build\n\n# Used to invalidate layer cache but not mount cache\n# See https://github.com/mob"
},
{
"path": "dist/web/Host.Dockerfile",
"chars": 112,
"preview": "FROM python:3.12-slim\n\nWORKDIR /imhex\n\nCOPY ./out/ .\n\nEXPOSE 9090\n\nCMD [ \"python\", \"/imhex/start_imhex_web.py\" ]"
},
{
"path": "dist/web/compose.yml",
"chars": 218,
"preview": "# docker compose -f dist/web/compose.yml up --build\nservices:\n imhex_web:\n image: imhex_web:latest\n build:\n "
},
{
"path": "dist/web/plugin-bundle.cpp.in",
"chars": 231,
"preview": "#include <hex/helpers/logger.hpp>\n\nextern \"C\" void forceLinkPlugin_@IMHEX_PLUGIN_NAME@();\n\nnamespace {\nstruct StaticLoad"
},
{
"path": "dist/web/serve.py",
"chars": 576,
"preview": "import http.server\nimport os\n\nclass MyHttpRequestHandler(http.server.SimpleHTTPRequestHandler):\n\n def end_headers(sel"
},
{
"path": "dist/web/source/enable-threads.js",
"chars": 3487,
"preview": "// NOTE: This file creates a service worker that cross-origin-isolates the page (read more here: https://web.dev/coop-co"
},
{
"path": "dist/web/source/index.html",
"chars": 4074,
"preview": "<!doctype html>\n<html lang=\"en-us\">\n<head>\n <title>ImHex Web - Free Online Hex Editor for Reverse Engineers</title>\n\n"
},
{
"path": "dist/web/source/manifest.json",
"chars": 498,
"preview": "{\n \"name\": \"ImHex\",\n \"description\": \"🔍 A Hex Editor for Reverse Engineers, Programmers and people who value their "
},
{
"path": "dist/web/source/robots.txt",
"chars": 70,
"preview": "User-agent: *\nAllow: /\n\nSitemap: https://imhex.werwolv.net/sitemap.xml"
},
{
"path": "dist/web/source/sitemap.xml",
"chars": 1994,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<urlset\n xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\"\n xmlns:xsi"
},
{
"path": "dist/web/source/style.css",
"chars": 3356,
"preview": "html, body {\n height: 100%;\n margin: 0;\n user-select: none;\n}\n\nbody {\n display: flex;\n align-items: cente"
},
{
"path": "dist/web/source/wasm-config.js",
"chars": 7342,
"preview": "let wasmSize = null;\n// See comment in dist/web/Dockerfile about imhex.wasm.size\nfetch(\"imhex.wasm.size\").then(async (re"
},
{
"path": "lib/libimhex/CMakeLists.txt",
"chars": 6539,
"preview": "cmake_minimum_required(VERSION 3.16)\nproject(libimhex)\n\nset(CMAKE_CXX_STANDARD 23)\n\nset(LIBIMHEX_SOURCES\n source/"
},
{
"path": "lib/libimhex/LICENSE",
"chars": 26530,
"preview": " GNU LESSER GENERAL PUBLIC LICENSE\n Version 2.1, February 1999\n\n Copyright (C) 19"
},
{
"path": "lib/libimhex/include/hex/api/achievement_manager.hpp",
"chars": 12350,
"preview": "#pragma once\n\n#include <hex.hpp>\n\n#include <functional>\n#include <list>\n#include <memory>\n#include <span>\n#include <stri"
},
{
"path": "lib/libimhex/include/hex/api/content_registry/background_services.hpp",
"chars": 496,
"preview": "#pragma once\n\n#include <hex.hpp>\n\n#include <functional>\n#include <hex/api/localization_manager.hpp>\n\nEXPORT_MODULE names"
},
{
"path": "lib/libimhex/include/hex/api/content_registry/command_palette.hpp",
"chars": 3766,
"preview": "#pragma once\n\n#include <hex.hpp>\n\n#include <hex/api/localization_manager.hpp>\n\n#include <string>\n#include <functional>\n#"
},
{
"path": "lib/libimhex/include/hex/api/content_registry/communication_interface.hpp",
"chars": 1024,
"preview": "#pragma once\n\n#include <hex.hpp>\n\n#include <nlohmann/json_fwd.hpp>\n\n#include <map>\n#include <string>\n\n#include <hex/mcp/"
},
{
"path": "lib/libimhex/include/hex/api/content_registry/data_formatter.hpp",
"chars": 2613,
"preview": "#pragma once\n\n#include <hex.hpp>\n\n#include <hex/api/localization_manager.hpp>\n\n#include <string>\n#include <functional>\n#"
},
{
"path": "lib/libimhex/include/hex/api/content_registry/data_information.hpp",
"chars": 2812,
"preview": "#pragma once\n\n#include <hex.hpp>\n\n#include <hex/api/task_manager.hpp>\n#include <hex/api/localization_manager.hpp>\n\n#incl"
},
{
"path": "lib/libimhex/include/hex/api/content_registry/data_inspector.hpp",
"chars": 4163,
"preview": "#pragma once\n\n#include <hex.hpp>\n\n#include <hex/api/localization_manager.hpp>\n\n#include <functional>\n#include <optional>"
},
{
"path": "lib/libimhex/include/hex/api/content_registry/data_processor.hpp",
"chars": 1954,
"preview": "#pragma once\n\n#include <hex.hpp>\n\n#include <hex/api/localization_manager.hpp>\n\n#include <functional>\n#include <memory>\n#"
},
{
"path": "lib/libimhex/include/hex/api/content_registry/diffing.hpp",
"chars": 2006,
"preview": "#pragma once\n\n#include <hex.hpp>\n\n#include <hex/api/localization_manager.hpp>\n#include <wolv/container/interval_tree.hpp"
},
{
"path": "lib/libimhex/include/hex/api/content_registry/disassemblers.hpp",
"chars": 1682,
"preview": "#pragma once\n\n#include <hex.hpp>\n\n#include <hex/api/localization_manager.hpp>\n\n#include <string>\n#include <map>\n#include"
},
{
"path": "lib/libimhex/include/hex/api/content_registry/experiments.hpp",
"chars": 892,
"preview": "#pragma once\n\n#include <hex.hpp>\n\n#include <hex/api/localization_manager.hpp>\n\n#include <map>\n#include <string>\n\nEXPORT_"
},
{
"path": "lib/libimhex/include/hex/api/content_registry/file_type_handler.hpp",
"chars": 880,
"preview": "#pragma once\n\n#include <hex.hpp>\n\n#include <hex/helpers/fs.hpp>\n\n#include <vector>\n#include <string>\n#include <functiona"
},
{
"path": "lib/libimhex/include/hex/api/content_registry/hashes.hpp",
"chars": 2651,
"preview": "#pragma once\n\n#include <hex.hpp>\n\n#include <hex/api/localization_manager.hpp>\n\n#include <vector>\n#include <string>\n#incl"
},
{
"path": "lib/libimhex/include/hex/api/content_registry/hex_editor.hpp",
"chars": 3372,
"preview": "#pragma once\n\n#include <hex.hpp>\n\n#include <imgui.h>\n\n#include <hex/api/localization_manager.hpp>\n\n#include <functional>"
},
{
"path": "lib/libimhex/include/hex/api/content_registry/pattern_language.hpp",
"chars": 5566,
"preview": "#pragma once\n\n#include <hex.hpp>\n\n#include <pl/pattern_language.hpp>\n\n#include <functional>\n#include <span>\n#include <st"
},
{
"path": "lib/libimhex/include/hex/api/content_registry/provider.hpp",
"chars": 1569,
"preview": "#pragma once\n\n#include <hex.hpp>\n\n#include <hex/api/localization_manager.hpp>\n#include <hex/providers/provider.hpp>\n\n#in"
},
{
"path": "lib/libimhex/include/hex/api/content_registry/reports.hpp",
"chars": 662,
"preview": "#pragma once\n\n#include <hex.hpp>\n\n#include <functional>\n#include <string>\n#include <vector>\n\nEXPORT_MODULE namespace hex"
},
{
"path": "lib/libimhex/include/hex/api/content_registry/settings.hpp",
"chars": 15073,
"preview": "#pragma once\n\n#include <hex.hpp>\n\n#include <hex/api/localization_manager.hpp>\n#include <hex/helpers/fs.hpp>\n\n#include <s"
},
{
"path": "lib/libimhex/include/hex/api/content_registry/tools.hpp",
"chars": 909,
"preview": "#pragma once\n\n#include <hex.hpp>\n\n#include <hex/api/localization_manager.hpp>\n\n#include <functional>\n#include <vector>\n\n"
},
{
"path": "lib/libimhex/include/hex/api/content_registry/user_interface.hpp",
"chars": 13008,
"preview": "#pragma once\n\n#include <hex.hpp>\n\n#include <hex/api/shortcut_manager.hpp>\n#include <hex/ui/imgui_imhex_extensions.h>\n\n#i"
},
{
"path": "lib/libimhex/include/hex/api/content_registry/views.hpp",
"chars": 2015,
"preview": "#pragma once\n\n#include <hex.hpp>\n\n#include <hex/api/localization_manager.hpp>\n#include <hex/ui/view.hpp>\n\n#include <map>"
},
{
"path": "lib/libimhex/include/hex/api/event_manager.hpp",
"chars": 10044,
"preview": "#pragma once\n\n#include <hex.hpp>\n\n#include <algorithm>\n#include <functional>\n#include <list>\n#include <mutex>\n#include <"
},
{
"path": "lib/libimhex/include/hex/api/events/events_gui.hpp",
"chars": 3500,
"preview": "#pragma once\n\n#include <hex/api/event_manager.hpp>\n\n/* Forward declarations */\nstruct GLFWwindow;\nusing ImGuiID = unsign"
},
{
"path": "lib/libimhex/include/hex/api/events/events_interaction.hpp",
"chars": 5137,
"preview": "#pragma once\n\n#include <hex/api/imhex_api/bookmarks.hpp>\n#include <hex/api/imhex_api/hex_editor.hpp>\n#include <hex/api/e"
},
{
"path": "lib/libimhex/include/hex/api/events/events_lifecycle.hpp",
"chars": 3195,
"preview": "#pragma once\n\n#include <hex/api/event_manager.hpp>\n#include <hex/helpers/semantic_version.hpp>\n\nstruct ImGuiTestEngine;\n"
},
{
"path": "lib/libimhex/include/hex/api/events/events_provider.hpp",
"chars": 3829,
"preview": "#pragma once\n\n#include <hex.hpp>\n#include <hex/api/event_manager.hpp>\n\n/* Provider events definitions */\nnamespace hex {"
},
{
"path": "lib/libimhex/include/hex/api/events/requests_gui.hpp",
"chars": 1155,
"preview": "#pragma once\n\n#include <hex/api/event_manager.hpp>\n\n/* GUI requests definitions */\nnamespace hex {\n\n /**\n * @brie"
},
{
"path": "lib/libimhex/include/hex/api/events/requests_interaction.hpp",
"chars": 2888,
"preview": "#pragma once\n\n#include <hex.hpp>\n#include <hex/api/imhex_api/hex_editor.hpp>\n#include <hex/api/event_manager.hpp>\n\n/* Fo"
},
{
"path": "lib/libimhex/include/hex/api/events/requests_lifecycle.hpp",
"chars": 2382,
"preview": "#pragma once\n\n#include <hex.hpp>\n#include <hex/api/event_manager.hpp>\n\n/* Lifecycle requests definitions */\nnamespace he"
},
{
"path": "lib/libimhex/include/hex/api/events/requests_provider.hpp",
"chars": 854,
"preview": "#pragma once\n\n#include <hex/api/event_manager.hpp>\n\n/* Provider requests definitions */\nnamespace hex {\n\n /**\n * "
},
{
"path": "lib/libimhex/include/hex/api/imhex_api/bookmarks.hpp",
"chars": 1449,
"preview": "#pragma once\n\n#include <hex.hpp>\n\n#include <string>\n\nEXPORT_MODULE namespace hex {\n\n /* Functions to interact with Bo"
},
{
"path": "lib/libimhex/include/hex/api/imhex_api/fonts.hpp",
"chars": 1902,
"preview": "#pragma once\n\n#include <hex.hpp>\n\n#include <hex/api/localization_manager.hpp>\n\n#include <span>\n#include <optional>\n#incl"
},
{
"path": "lib/libimhex/include/hex/api/imhex_api/hex_editor.hpp",
"chars": 8463,
"preview": "#pragma once\n\n#include <hex.hpp>\n\n#include <functional>\n#include <string>\n#include <map>\n#include <optional>\n#include <s"
},
{
"path": "lib/libimhex/include/hex/api/imhex_api/messaging.hpp",
"chars": 819,
"preview": "#pragma once\n\n#include <hex.hpp>\n\n#include <functional>\n#include <string>\n#include <map>\n#include <vector>\n\nEXPORT_MODUL"
},
{
"path": "lib/libimhex/include/hex/api/imhex_api/provider.hpp",
"chars": 4233,
"preview": "#pragma once\n\n#include <hex.hpp>\n\n#include <hex/api/localization_manager.hpp>\n#include <hex/providers/provider.hpp>\n\n#in"
},
{
"path": "lib/libimhex/include/hex/api/imhex_api/system.hpp",
"chars": 11728,
"preview": "#pragma once\n\n#include <hex.hpp>\n\n#include <hex/helpers/semantic_version.hpp>\n#include <hex/helpers/fs.hpp>\n\n#include <c"
},
{
"path": "lib/libimhex/include/hex/api/layout_manager.hpp",
"chars": 2632,
"preview": "#pragma once\n\n#include <hex/helpers/fs.hpp>\n\n#include <string>\n\n#if !defined(HEX_MODULE_EXPORT)\n struct ImGuiTextBuff"
},
{
"path": "lib/libimhex/include/hex/api/localization_manager.hpp",
"chars": 5499,
"preview": "#pragma once\n\n#include <hex.hpp>\n\n#include <map>\n#include <string>\n#include <string_view>\n#include <vector>\n#include <fu"
},
{
"path": "lib/libimhex/include/hex/api/plugin_manager.hpp",
"chars": 5223,
"preview": "#pragma once\n\n#include <functional>\n#include <list>\n#include <span>\n#include <string>\n\n#include <wolv/io/fs.hpp>\n\n#inclu"
},
{
"path": "lib/libimhex/include/hex/api/project_file_manager.hpp",
"chars": 4228,
"preview": "#pragma once\n\n#include <hex/helpers/tar.hpp>\n\n/**\n * @brief Project file manager\n *\n * The project file manager is used "
},
{
"path": "lib/libimhex/include/hex/api/shortcut_manager.hpp",
"chars": 7178,
"preview": "#pragma once\n\n#include <hex.hpp>\n#include <hex/api/localization_manager.hpp>\n#include <hex/helpers/keys.hpp>\n\n#include <"
},
{
"path": "lib/libimhex/include/hex/api/task_manager.hpp",
"chars": 9301,
"preview": "#pragma once\n\n#include <hex.hpp>\n#include <hex/api/localization_manager.hpp>\n\n#include <functional>\n#include <mutex>\n#in"
},
{
"path": "lib/libimhex/include/hex/api/theme_manager.hpp",
"chars": 2800,
"preview": "#pragma once\n\n#include <hex.hpp>\n#include <hex/helpers/fs.hpp>\n\n#include <string>\n#include <variant>\n\n#include <nlohmann"
},
{
"path": "lib/libimhex/include/hex/api/tutorial_manager.hpp",
"chars": 6949,
"preview": "#pragma once\n\n#include <hex.hpp>\n\n#include <hex/api/localization_manager.hpp>\n\n#include <string>\n#include <list>\n#includ"
},
{
"path": "lib/libimhex/include/hex/api/workspace_manager.hpp",
"chars": 1024,
"preview": "#pragma once\n\n#include <wolv/io/fs.hpp>\n#include <hex/helpers/auto_reset.hpp>\n\n#include <map>\n#include <string>\n\nEXPORT_"
},
{
"path": "lib/libimhex/include/hex/api_urls.hpp",
"chars": 167,
"preview": "#pragma once\n\nconstexpr static auto ImHexApiURL = \"https://api.werwolv.net/imhex\";\nconstexpr static auto GitHubApiURL ="
},
{
"path": "lib/libimhex/include/hex/data_processor/attribute.hpp",
"chars": 2034,
"preview": "#pragma once\n\n#include <hex.hpp>\n#include <hex/api/localization_manager.hpp>\n\n#include <string>\n#include <string_view>\n#"
},
{
"path": "lib/libimhex/include/hex/data_processor/link.hpp",
"chars": 462,
"preview": "#pragma once\n\nnamespace hex::dp {\n\n class Link {\n public:\n Link(int from, int to);\n\n [[nodiscard]] i"
},
{
"path": "lib/libimhex/include/hex/data_processor/node.hpp",
"chars": 3507,
"preview": "#pragma once\n\n#include <hex.hpp>\n#include <hex/api/localization_manager.hpp>\n\n#include <hex/data_processor/attribute.hpp"
},
{
"path": "lib/libimhex/include/hex/helpers/auto_reset.hpp",
"chars": 2462,
"preview": "#pragma once\n\n#include <hex/api/imhex_api/system.hpp>\n#include <hex/helpers/logger.hpp>\n\nnamespace hex {\n\n namespace "
},
{
"path": "lib/libimhex/include/hex/helpers/binary_pattern.hpp",
"chars": 594,
"preview": "#pragma once\n\n#include <hex.hpp>\n\n#include <hex/helpers/utils.hpp>\n\n#include <vector>\n\nnamespace hex {\n\n class Binary"
},
{
"path": "lib/libimhex/include/hex/helpers/concepts.hpp",
"chars": 426,
"preview": "#pragma once\n\n#include <type_traits>\n#include <memory>\n\n#include <concepts>\n\nnamespace hex {\n\n template<typename T>\n "
},
{
"path": "lib/libimhex/include/hex/helpers/crypto.hpp",
"chars": 2481,
"preview": "#pragma once\n\n#include <hex.hpp>\n\n#include <wolv/utils/expected.hpp>\n\n#include <array>\n#include <string>\n#include <vecto"
},
{
"path": "lib/libimhex/include/hex/helpers/debugging.hpp",
"chars": 2057,
"preview": "#pragma once\n\n#include <wolv/utils/preproc.hpp>\n\n#include <hex/ui/imgui_imhex_extensions.h>\n\n\n#if defined(DEBUG)\n #de"
},
{
"path": "lib/libimhex/include/hex/helpers/default_paths.hpp",
"chars": 3660,
"preview": "#pragma once\n\n#include <hex/helpers/fs.hpp>\n\n#include <array>\n#include <vector>\n\nnamespace hex::paths {\n\n namespace i"
},
{
"path": "lib/libimhex/include/hex/helpers/encoding_file.hpp",
"chars": 1685,
"preview": "#pragma once\n\n#include <hex.hpp>\n\n#include <map>\n#include <string_view>\n#include <vector>\n#include <span>\n\n#include <wol"
},
{
"path": "lib/libimhex/include/hex/helpers/fmt.hpp",
"chars": 214,
"preview": "#pragma once\n\n#include <string_view>\n#include <fmt/core.h>\n#include <fmt/ranges.h>\n#include <fmt/ostream.h>\n\n#include <f"
},
{
"path": "lib/libimhex/include/hex/helpers/fs.hpp",
"chars": 952,
"preview": "#pragma once\n\n#include <hex.hpp>\n#include <string>\n#include <vector>\n#include <filesystem>\n#include <functional>\n\n#inclu"
},
{
"path": "lib/libimhex/include/hex/helpers/http_requests.hpp",
"chars": 4177,
"preview": "#pragma once\n\n#include <hex.hpp>\n\n#include <future>\n#include <map>\n#include <string>\n#include <vector>\n\n#include <wolv/i"
},
{
"path": "lib/libimhex/include/hex/helpers/http_requests_emscripten.hpp",
"chars": 2773,
"preview": "#pragma once\n\n#if defined(OS_WEB)\n\n #include <future>\n\n #include <emscripten/fetch.h>\n\n namespace hex {\n "
},
{
"path": "lib/libimhex/include/hex/helpers/http_requests_native.hpp",
"chars": 3547,
"preview": "#pragma once\n\n#if !defined(OS_WEB)\n\n #include <string>\n #include <future>\n #include <mutex>\n\n #include <hex/"
},
{
"path": "lib/libimhex/include/hex/helpers/keys.hpp",
"chars": 1351,
"preview": "#pragma once\n\n#if defined(__cplusplus)\nenum class Keys {\n#else\nenum Keys {\n#endif\n Invalid,\n Space,\n Apostrophe"
},
{
"path": "lib/libimhex/include/hex/helpers/literals.hpp",
"chars": 612,
"preview": "#pragma once\n\nnamespace hex::literals {\n\n /* Byte literals */\n\n constexpr static unsigned long long operator\"\"_Byt"
},
{
"path": "lib/libimhex/include/hex/helpers/logger.hpp",
"chars": 4564,
"preview": "#pragma once\n\n#include <hex.hpp>\n\n#include <fmt/core.h>\n#include <fmt/color.h>\n\n#include <wolv/io/file.hpp>\n#include <wo"
},
{
"path": "lib/libimhex/include/hex/helpers/magic.hpp",
"chars": 1551,
"preview": "#pragma once\n\n#include <hex.hpp>\n\n#include <hex/api/task_manager.hpp>\n#include <hex/helpers/literals.hpp>\n#include <hex/"
},
{
"path": "lib/libimhex/include/hex/helpers/menu_items.hpp",
"chars": 953,
"preview": "#pragma once\n#include <hex/api/shortcut_manager.hpp>\n\nnamespace hex::menu {\n\n void enableNativeMenuBar(bool enabled);"
},
{
"path": "lib/libimhex/include/hex/helpers/opengl.hpp",
"chars": 37186,
"preview": "#pragma once\n\n#include <hex.hpp>\n\n#include <hex/helpers/concepts.hpp>\n\n#include <cmath>\n#include <vector>\n#include <map>"
},
{
"path": "lib/libimhex/include/hex/helpers/patches.hpp",
"chars": 1151,
"preview": "#pragma once\n\n#include <hex.hpp>\n\n#include <map>\n#include <vector>\n\n#include <wolv/utils/expected.hpp>\n\nnamespace hex {\n"
},
{
"path": "lib/libimhex/include/hex/helpers/scaling.hpp",
"chars": 290,
"preview": "#pragma once\n\n#include <imgui.h>\n\nnamespace hex {\n\n [[nodiscard]] float operator\"\"_scaled(long double value);\n [[n"
},
{
"path": "lib/libimhex/include/hex/helpers/semantic_version.hpp",
"chars": 880,
"preview": "#pragma once\n\n#include <hex.hpp>\n\n#include <compare>\n#include <string>\n#include <vector>\n\nEXPORT_MODULE namespace hex {\n"
},
{
"path": "lib/libimhex/include/hex/helpers/tar.hpp",
"chars": 1713,
"preview": "#pragma once\n\n#include <hex.hpp>\n\n#include <hex/helpers/fs.hpp>\n\n#include <memory>\n\nstruct mtar_t;\n\nnamespace hex {\n\n "
},
{
"path": "lib/libimhex/include/hex/helpers/types.hpp",
"chars": 2345,
"preview": "#pragma once\n\n#include <cstddef>\n#include <cstdint>\n\n#include <concepts>\n#include <type_traits>\n\n#include <wolv/types.hp"
},
{
"path": "lib/libimhex/include/hex/helpers/udp_server.hpp",
"chars": 1570,
"preview": "#pragma once\n\n#include <hex.hpp>\n\n#include <functional>\n#include <thread>\n#include <atomic>\n#include <span>\n\nnamespace h"
},
{
"path": "lib/libimhex/include/hex/helpers/utils.hpp",
"chars": 13041,
"preview": "#pragma once\n\n#include <hex.hpp>\n\n#include <hex/helpers/concepts.hpp>\n#include <hex/helpers/fs.hpp>\n\n#include <array>\n#i"
},
{
"path": "lib/libimhex/include/hex/helpers/utils_linux.hpp",
"chars": 128,
"preview": "#pragma once\n\n#if defined(OS_LINUX)\n\nnamespace hex {\n void executeCmd(const std::vector<std::string> &argsVector);\n}\n"
},
{
"path": "lib/libimhex/include/hex/helpers/utils_macos.hpp",
"chars": 1162,
"preview": "#pragma once\n\n#include <hex/helpers/keys.hpp>\n\n#if defined(OS_MACOS)\n\n #if !defined(HEX_MODULE_EXPORT)\n struct"
},
{
"path": "lib/libimhex/include/hex/mcp/client.hpp",
"chars": 216,
"preview": "#pragma once\n\n#include <iostream>\n\nnamespace hex::mcp {\n\n class Client {\n public:\n Client() = default;\n "
},
{
"path": "lib/libimhex/include/hex/mcp/server.hpp",
"chars": 3534,
"preview": "#pragma once\n\n#include <hex.hpp>\n\n#include <functional>\n#include <nlohmann/json.hpp>\n#include <wolv/net/socket_server.hp"
},
{
"path": "lib/libimhex/include/hex/plugin.hpp",
"chars": 12363,
"preview": "#pragma once\n\n#include <hex.hpp>\n#include <hex/api/plugin_manager.hpp>\n#include <hex/helpers/logger.hpp>\n\n#include <stri"
},
{
"path": "lib/libimhex/include/hex/providers/buffered_reader.hpp",
"chars": 815,
"preview": "#pragma once\n\n#include <hex/providers/provider.hpp>\n#include <hex/helpers/literals.hpp>\n\n#include <wolv/io/buffered_read"
},
{
"path": "lib/libimhex/include/hex/providers/cached_provider.hpp",
"chars": 1836,
"preview": "#pragma once\n\n#include <hex/providers/provider.hpp>\n\n#include <unordered_map>\n#include <vector>\n#include <mutex>\n#includ"
},
{
"path": "lib/libimhex/include/hex/providers/memory_provider.hpp",
"chars": 2118,
"preview": "#pragma once\n\n#include <hex/providers/provider.hpp>\n\nnamespace hex::prv {\n\n /**\n * This is a simple mock provider"
},
{
"path": "lib/libimhex/include/hex/providers/overlay.hpp",
"chars": 485,
"preview": "#pragma once\n\n#include <hex.hpp>\n\n#include <vector>\n\nnamespace hex::prv {\n\n class Overlay {\n public:\n Overl"
},
{
"path": "lib/libimhex/include/hex/providers/provider.hpp",
"chars": 13707,
"preview": "#pragma once\n\n#include <hex.hpp>\n\n#include <list>\n#include <optional>\n#include <string>\n#include <variant>\n#include <vec"
},
{
"path": "lib/libimhex/include/hex/providers/provider_data.hpp",
"chars": 4736,
"preview": "#pragma once\n\n#include <hex/api/imhex_api/provider.hpp>\n#include <hex/api/events/events_provider.hpp>\n#include <hex/api/"
},
{
"path": "lib/libimhex/include/hex/providers/undo_redo/operations/operation.hpp",
"chars": 692,
"preview": "#pragma once\n\n#include <string>\n#include <vector>\n\n#include <hex/helpers/concepts.hpp>\n\nnamespace hex::prv {\n class P"
},
{
"path": "lib/libimhex/include/hex/providers/undo_redo/operations/operation_group.hpp",
"chars": 2407,
"preview": "#pragma once\n\n#include <hex/providers/undo_redo/operations/operation.hpp>\n\n#include <hex/api/localization_manager.hpp>\n#"
},
{
"path": "lib/libimhex/include/hex/providers/undo_redo/stack.hpp",
"chars": 1649,
"preview": "#pragma once\n\n#include <hex.hpp>\n#include <hex/api/localization_manager.hpp>\n\n#include <hex/providers/undo_redo/operatio"
},
{
"path": "lib/libimhex/include/hex/subcommands/subcommands.hpp",
"chars": 1103,
"preview": "#pragma once\n\n#include <vector>\n#include <string>\n#include <functional>\n\nnamespace hex::subcommands {\n\n /**\n * @b"
},
{
"path": "lib/libimhex/include/hex/test/test_provider.hpp",
"chars": 1900,
"preview": "#pragma once\n\n#include <hex/providers/provider.hpp>\n#include <nlohmann/json.hpp>\n\nnamespace hex::test {\n using namesp"
},
{
"path": "lib/libimhex/include/hex/test/tests.hpp",
"chars": 5239,
"preview": "#pragma once\n\n#include <hex.hpp>\n#include <utility>\n#include <hex/helpers/utils.hpp>\n#include <hex/helpers/fmt.hpp>\n#inc"
},
{
"path": "lib/libimhex/include/hex/ui/banner.hpp",
"chars": 1338,
"preview": "#pragma once\n\n#include <hex.hpp>\n#include <imgui.h>\n#include <imgui_internal.h>\n#include <hex/helpers/scaling.hpp>\n\n#inc"
},
{
"path": "lib/libimhex/include/hex/ui/imgui_imhex_extensions.h",
"chars": 17174,
"preview": "#pragma once\n\n#include <hex.hpp>\n\n#include <cstddef>\n#include <string>\n#include <span>\n\n#include <imgui.h>\n\n#include <he"
},
{
"path": "lib/libimhex/include/hex/ui/popup.hpp",
"chars": 2341,
"preview": "#pragma once\n\n#include <hex.hpp>\n#include <hex/api/localization_manager.hpp>\n\n#include <memory>\n#include <string>\n\n#incl"
},
{
"path": "lib/libimhex/include/hex/ui/toast.hpp",
"chars": 1448,
"preview": "#pragma once\n\n#include <hex.hpp>\n#include <imgui.h>\n\n#include <list>\n#include <memory>\n#include <mutex>\n#include <hex/ap"
},
{
"path": "lib/libimhex/include/hex/ui/view.hpp",
"chars": 7486,
"preview": "#pragma once\n\n#include <hex.hpp>\n\n#include <imgui.h>\n#include <hex/ui/imgui_imhex_extensions.h>\n\n#include <hex/api/short"
},
{
"path": "lib/libimhex/include/hex/ui/widgets.hpp",
"chars": 1770,
"preview": "#pragma once\n\n#include <hex.hpp>\n\n#include <vector>\n#include <string>\n#include <atomic>\n\n#include <hex/api/task_manager."
},
{
"path": "lib/libimhex/include/hex.cppm",
"chars": 1490,
"preview": "module;\n\n#include <cmath>\n#include <map>\n#include <string>\n#include <string_view>\n#include <vector>\n#include <exception>"
},
{
"path": "lib/libimhex/include/hex.hpp",
"chars": 150,
"preview": "#pragma once\n\n#include <hex/helpers/types.hpp>\n\n#if defined(HEX_MODULE_EXPORT)\n #define EXPORT_MODULE export\n#else\n "
}
]
// ... and 898 more files (download for full content)
About this extraction
This page contains the full source code of the WerWolv/ImHex GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 1098 files (21.0 MB), approximately 4.0M tokens, and a symbol index with 13493 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.