diff --git a/cmake/build_helpers.cmake b/cmake/build_helpers.cmake index d965a120c..c49917401 100644 --- a/cmake/build_helpers.cmake +++ b/cmake/build_helpers.cmake @@ -570,7 +570,7 @@ endmacro() macro(setupCompilerFlags target) # IMHEX_COMMON_FLAGS: flags common for C, C++, Objective C, etc.. compilers - if(CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang") + if (CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang") # Define strict compilation flags if (IMHEX_STRICT_WARNINGS) set(IMHEX_COMMON_FLAGS "${IMHEX_COMMON_FLAGS} -Wall -Wextra -Wpedantic -Werror") @@ -584,6 +584,8 @@ macro(setupCompilerFlags target) # Disable some warnings set(IMHEX_C_CXX_FLAGS "-Wno-array-bounds -Wno-deprecated-declarations -Wno-unknown-pragmas") + elseif (CMAKE_CXX_COMPILER_ID MATCHES "MSVC") + set(IMHEX_CXX_FLAGS "/EHsc") endif() if (CMAKE_CXX_COMPILER_ID MATCHES "GNU") diff --git a/lib/external/disassembler b/lib/external/disassembler index 33b751c17..bc4a5d997 160000 --- a/lib/external/disassembler +++ b/lib/external/disassembler @@ -1 +1 @@ -Subproject commit 33b751c17e47318355e052c285a198502507de16 +Subproject commit bc4a5d99756387850007d71b64d216c3f2d8d30a diff --git a/lib/external/libwolv b/lib/external/libwolv index ed607b348..9d38dd5b4 160000 --- a/lib/external/libwolv +++ b/lib/external/libwolv @@ -1 +1 @@ -Subproject commit ed607b3487756c80a3be10bdd86648e1ecb18a86 +Subproject commit 9d38dd5b48e429d4f1d7c71dc2684a6ab42b6f92 diff --git a/lib/libimhex/include/hex/api/content_registry.hpp b/lib/libimhex/include/hex/api/content_registry.hpp index a8575732f..c14a40384 100644 --- a/lib/libimhex/include/hex/api/content_registry.hpp +++ b/lib/libimhex/include/hex/api/content_registry.hpp @@ -721,7 +721,7 @@ namespace hex { add(impl::Entry { unlocalizedCategory, unlocalizedName, - [=, ...args = std::forward(args)] mutable { + [=, ...args = std::forward(args)]() mutable { auto node = std::make_unique(std::forward(args)...); node->setUnlocalizedName(unlocalizedName); return node; @@ -1002,7 +1002,7 @@ namespace hex { void add(bool addToList = true) { auto typeName = T().getTypeName(); - impl::add(typeName, [] -> std::unique_ptr { + impl::add(typeName, []() -> std::unique_ptr { return std::make_unique(); }); diff --git a/lib/libimhex/source/data_processor/node.cpp b/lib/libimhex/source/data_processor/node.cpp index 59e24c51f..3f8282891 100644 --- a/lib/libimhex/source/data_processor/node.cpp +++ b/lib/libimhex/source/data_processor/node.cpp @@ -41,7 +41,7 @@ namespace hex::dp { const i128& Node::getIntegerOnInput(u32 index) { auto attribute = this->getConnectedInputAttribute(index); - auto &outputData = [&] -> std::vector& { + auto &outputData = [&]() -> std::vector&{ if (attribute != nullptr) { if (attribute->getType() != Attribute::Type::Integer) throwNodeError("Tried to read integer from non-integer attribute"); @@ -68,7 +68,7 @@ namespace hex::dp { const double& Node::getFloatOnInput(u32 index) { auto attribute = this->getConnectedInputAttribute(index); - auto &outputData = [&] -> std::vector& { + auto &outputData = [&]() -> std::vector&{ if (attribute != nullptr) { if (attribute->getType() != Attribute::Type::Float) throwNodeError("Tried to read integer from non-float attribute"); diff --git a/lib/third_party/imgui/CMakeLists.txt b/lib/third_party/imgui/CMakeLists.txt index c53cd36dd..b29e9ced2 100644 --- a/lib/third_party/imgui/CMakeLists.txt +++ b/lib/third_party/imgui/CMakeLists.txt @@ -1,7 +1,7 @@ cmake_minimum_required(VERSION 3.16) project(imgui) -set(CMAKE_CXX_STANDARD 17) +set(CMAKE_CXX_STANDARD 23) add_library(imgui_all_includes INTERFACE) diff --git a/lib/third_party/imgui/ColorTextEditor/CMakeLists.txt b/lib/third_party/imgui/ColorTextEditor/CMakeLists.txt index c2124839f..a42eecaf1 100644 --- a/lib/third_party/imgui/ColorTextEditor/CMakeLists.txt +++ b/lib/third_party/imgui/ColorTextEditor/CMakeLists.txt @@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.16) # https://github.com/BalazsJako/ImGuiColorTextEdit project(imgui_color_text_editor) -set(CMAKE_CXX_STANDARD 20) +set(CMAKE_CXX_STANDARD 23) if (NOT IMHEX_EXTERNAL_PLUGIN_BUILD) add_library(imgui_color_text_editor OBJECT diff --git a/lib/third_party/imgui/backend/CMakeLists.txt b/lib/third_party/imgui/backend/CMakeLists.txt index f9085aea3..506978153 100644 --- a/lib/third_party/imgui/backend/CMakeLists.txt +++ b/lib/third_party/imgui/backend/CMakeLists.txt @@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.16) # https://github.com/ocornut/imgui backends with custom modifications made to the OpenGL 3 and GLFW backends project(imgui_backend) -set(CMAKE_CXX_STANDARD 17) +set(CMAKE_CXX_STANDARD 23) if (NOT IMHEX_EXTERNAL_PLUGIN_BUILD) add_library(imgui_backend OBJECT diff --git a/lib/third_party/imgui/cimgui/CMakeLists.txt b/lib/third_party/imgui/cimgui/CMakeLists.txt index 04e4f8321..9a5391ae0 100644 --- a/lib/third_party/imgui/cimgui/CMakeLists.txt +++ b/lib/third_party/imgui/cimgui/CMakeLists.txt @@ -3,7 +3,7 @@ cmake_minimum_required(VERSION 3.16) # https://github.com/cimgui/cimgui project(imgui_cimgui) -set(CMAKE_CXX_STANDARD 17) +set(CMAKE_CXX_STANDARD 23) if (NOT IMHEX_EXTERNAL_PLUGIN_BUILD) add_library(imgui_cimgui OBJECT diff --git a/lib/third_party/imgui/imgui/CMakeLists.txt b/lib/third_party/imgui/imgui/CMakeLists.txt index c8ad6c285..26981cf9f 100644 --- a/lib/third_party/imgui/imgui/CMakeLists.txt +++ b/lib/third_party/imgui/imgui/CMakeLists.txt @@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.16) # https://github.com/ocornut/imgui project(imgui_imgui) -set(CMAKE_CXX_STANDARD 17) +set(CMAKE_CXX_STANDARD 23) if (NOT IMHEX_EXTERNAL_PLUGIN_BUILD) add_library(imgui_imgui OBJECT diff --git a/lib/third_party/imgui/imnodes/CMakeLists.txt b/lib/third_party/imgui/imnodes/CMakeLists.txt index 928422c0b..3214147fa 100644 --- a/lib/third_party/imgui/imnodes/CMakeLists.txt +++ b/lib/third_party/imgui/imnodes/CMakeLists.txt @@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.16) # https://github.com/Nelarius/imnodes project(imgui_imnodes) -set(CMAKE_CXX_STANDARD 17) +set(CMAKE_CXX_STANDARD 23) if (NOT IMHEX_EXTERNAL_PLUGIN_BUILD) add_library(imgui_imnodes OBJECT diff --git a/lib/third_party/imgui/implot/CMakeLists.txt b/lib/third_party/imgui/implot/CMakeLists.txt index 4e2d764ea..ea074e7aa 100644 --- a/lib/third_party/imgui/implot/CMakeLists.txt +++ b/lib/third_party/imgui/implot/CMakeLists.txt @@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.16) # https://github.com/epezent/implot project(imgui_implot) -set(CMAKE_CXX_STANDARD 17) +set(CMAKE_CXX_STANDARD 23) if (NOT IMHEX_EXTERNAL_PLUGIN_BUILD) add_library(imgui_implot OBJECT diff --git a/lib/third_party/imgui/implot3d/CMakeLists.txt b/lib/third_party/imgui/implot3d/CMakeLists.txt index bbdd45318..174d03d5f 100644 --- a/lib/third_party/imgui/implot3d/CMakeLists.txt +++ b/lib/third_party/imgui/implot3d/CMakeLists.txt @@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.16) # https://github.com/brenocq/implot3d project(imgui_implot3d) -set(CMAKE_CXX_STANDARD 17) +set(CMAKE_CXX_STANDARD 23) if (NOT IMHEX_EXTERNAL_PLUGIN_BUILD) add_library(imgui_implot3d OBJECT diff --git a/main/gui/source/window/win_window.cpp b/main/gui/source/window/win_window.cpp index c4fa0cf04..1901d9026 100644 --- a/main/gui/source/window/win_window.cpp +++ b/main/gui/source/window/win_window.cpp @@ -255,7 +255,7 @@ namespace hex { return HTCAPTION; } - std::string_view hoveredWindowName = GImGui->HoveredWindow == nullptr ? "" : GImGui->HoveredWindow->Name; + std::string_view hoveredWindowName = ImGui::GetCurrentContext()->HoveredWindow == nullptr ? "" : GImGui->HoveredWindow->Name; if (!ImHexApi::System::impl::isWindowResizable()) { if (result != RegionClient) { diff --git a/main/gui/source/window/window.cpp b/main/gui/source/window/window.cpp index 48e72052b..e6f3fcb92 100644 --- a/main/gui/source/window/window.cpp +++ b/main/gui/source/window/window.cpp @@ -546,7 +546,7 @@ namespace hex { const auto maxWindowPos = ImHexApi::System::getMainWindowPosition() + ImHexApi::System::getMainWindowSize(); if (currWindowPos.x > maxWindowPos.x || currWindowPos.y > maxWindowPos.y || currWindowPos.x < minWindowPos.x || currWindowPos.y < minWindowPos.y) { positionSet = false; - GImGui->MovingWindow = nullptr; + ImGui::GetCurrentContext()->MovingWindow = nullptr; } } @@ -1142,7 +1142,7 @@ namespace hex { Duration requestedFrameTime = {}, remainingUnlockedTime = {}; float targetFps = 0; - const auto nativeFps = [] -> float { + const auto nativeFps = []() -> float { if (const auto monitor = glfwGetPrimaryMonitor(); monitor != nullptr) { if (const auto videoMode = glfwGetVideoMode(monitor); videoMode != nullptr) { return videoMode->refreshRate; diff --git a/plugins/builtin/source/content/providers/disk_provider.cpp b/plugins/builtin/source/content/providers/disk_provider.cpp index 2afe6c543..e20c011fb 100644 --- a/plugins/builtin/source/content/providers/disk_provider.cpp +++ b/plugins/builtin/source/content/providers/disk_provider.cpp @@ -270,7 +270,7 @@ namespace hex::plugin::builtin { std::memcpy(static_cast(buffer) + (offset - startOffset), m_sectorBuffer.data() + (offset & (m_sectorSize - 1)), std::min(m_sectorSize, size)); - size = std::max(static_cast(size) - m_sectorSize, 0); + size = std::max(static_cast(size) - m_sectorSize, 0); offset += m_sectorSize; } diff --git a/plugins/builtin/source/content/settings_entries.cpp b/plugins/builtin/source/content/settings_entries.cpp index 01d4dfba5..50bbd84ef 100644 --- a/plugins/builtin/source/content/settings_entries.cpp +++ b/plugins/builtin/source/content/settings_entries.cpp @@ -64,7 +64,7 @@ namespace hex::plugin::builtin { class FPSWidget : public ContentRegistry::Settings::Widgets::Widget { public: bool draw(const std::string &name) override { - auto format = [this] -> std::string { + auto format = [this]() -> std::string { if (m_value > 200) return "hex.builtin.setting.interface.fps.unlocked"_lang; else if (m_value < 15) @@ -177,7 +177,7 @@ namespace hex::plugin::builtin { class ScalingWidget : public ContentRegistry::Settings::Widgets::Widget { public: bool draw(const std::string &name) override { - auto format = [this] -> std::string { + auto format = [this]() -> std::string { if (m_value == 0) return hex::format("{} (x{:.1f})", "hex.builtin.setting.interface.scaling.native"_lang, ImHexApi::System::getNativeScale()); else @@ -219,7 +219,7 @@ namespace hex::plugin::builtin { class AutoBackupWidget : public ContentRegistry::Settings::Widgets::Widget { public: bool draw(const std::string &name) override { - auto format = [this] -> std::string { + auto format = [this]() -> std::string { auto value = m_value * 30; if (value == 0) return "hex.ui.common.off"_lang; diff --git a/plugins/builtin/source/content/themes.cpp b/plugins/builtin/source/content/themes.cpp index cc72007fb..b859304b8 100644 --- a/plugins/builtin/source/content/themes.cpp +++ b/plugins/builtin/source/content/themes.cpp @@ -203,11 +203,11 @@ namespace hex::plugin::builtin { ThemeManager::addThemeHandler("imhex", ImHexColorMap, [](u32 colorId) -> ImColor { - return static_cast(GImGui->IO.UserData)->Colors[colorId]; + return static_cast(ImGui::GetCurrentContext()->IO.UserData)->Colors[colorId]; }, [](u32 colorId, ImColor color) { - static_cast(GImGui->IO.UserData)->Colors[colorId] = color; + static_cast(ImGui::GetCurrentContext()->IO.UserData)->Colors[colorId] = color; } ); } diff --git a/plugins/builtin/source/content/tools/color_picker.cpp b/plugins/builtin/source/content/tools/color_picker.cpp index 981ada27d..542284b5d 100644 --- a/plugins/builtin/source/content/tools/color_picker.cpp +++ b/plugins/builtin/source/content/tools/color_picker.cpp @@ -181,7 +181,7 @@ namespace hex::plugin::builtin { return hex::format("{{ {}%, {}%, {}%, {}% }}", u32(floatColor[0] * 100), u32(floatColor[1] * 100), u32(floatColor[2] * 100), u32(floatColor[3] * 100)); }); - drawValue("hex.builtin.tools.color.formats.color_name"_lang, [&] -> std::string { + drawValue("hex.builtin.tools.color.formats.color_name"_lang, [&]() -> std::string { const static auto ColorTable = [] { auto colorMap = nlohmann::json::parse(romfs::get("assets/common/color_names.json").string()).get>(); diff --git a/plugins/builtin/source/content/tools/file_tool_shredder.cpp b/plugins/builtin/source/content/tools/file_tool_shredder.cpp index c9a49d17b..230672d64 100644 --- a/plugins/builtin/source/content/tools/file_tool_shredder.cpp +++ b/plugins/builtin/source/content/tools/file_tool_shredder.cpp @@ -69,7 +69,7 @@ namespace hex::plugin::builtin { } else { /* Gutmann's method. Secure for magnetic storage */ std::random_device rd; - std::uniform_int_distribution dist(0x00, 0xFF); + std::uniform_int_distribution dist(0x00, 0xFF); /* Fill fixed patterns */ overwritePattern = { @@ -111,9 +111,9 @@ namespace hex::plugin::builtin { /* Fill random patterns */ for (u8 i = 0; i < 4; i++) - overwritePattern[i] = { dist(rd), dist(rd), dist(rd) }; + overwritePattern[i] = { u8(dist(rd)), u8(dist(rd)), u8(dist(rd)) }; for (u8 i = 0; i < 4; i++) - overwritePattern[overwritePattern.size() - 1 - i] = { dist(rd), dist(rd), dist(rd) }; + overwritePattern[overwritePattern.size() - 1 - i] = { u8(dist(rd)), u8(dist(rd)), u8(dist(rd)) }; } size_t fileSize = file.getSize(); diff --git a/plugins/builtin/source/content/tools/graphing_calc.cpp b/plugins/builtin/source/content/tools/graphing_calc.cpp index 8cf3e6d3c..791baf0f9 100644 --- a/plugins/builtin/source/content/tools/graphing_calc.cpp +++ b/plugins/builtin/source/content/tools/graphing_calc.cpp @@ -2,6 +2,8 @@ #include +#include + #include #include #include diff --git a/plugins/builtin/source/content/views/view_data_processor.cpp b/plugins/builtin/source/content/views/view_data_processor.cpp index 6e8e6adf3..743f49586 100644 --- a/plugins/builtin/source/content/views/view_data_processor.cpp +++ b/plugins/builtin/source/content/views/view_data_processor.cpp @@ -86,7 +86,7 @@ namespace hex::plugin::builtin { } private: - std::string m_name = Lang(this->getUnlocalizedName()); + std::string m_name = Lang(this->getUnlocalizedName()).get(); int m_type = 0; std::variant> m_value; @@ -156,7 +156,7 @@ namespace hex::plugin::builtin { } private: - std::string m_name = Lang(this->getUnlocalizedName()); + std::string m_name = Lang(this->getUnlocalizedName()).get(); int m_type = 0; std::variant> m_value; @@ -344,7 +344,7 @@ namespace hex::plugin::builtin { } private: - std::string m_name = "hex.builtin.nodes.custom.custom.header"_lang; + std::string m_name = "hex.builtin.nodes.custom.custom.header"_lang.get(); bool m_editable = false; diff --git a/plugins/builtin/source/content/views/view_find.cpp b/plugins/builtin/source/content/views/view_find.cpp index 48978ce86..5cb9cd8b8 100644 --- a/plugins/builtin/source/content/views/view_find.cpp +++ b/plugins/builtin/source/content/views/view_find.cpp @@ -199,7 +199,7 @@ namespace hex::plugin::builtin { reader.seek(searchRegion.getStartAddress()); reader.setEndAddress(searchRegion.getEndAddress()); - const auto [decodeType, endian] = [&] -> std::pair { + const auto [decodeType, endian] = [&]() -> std::pair { if (settings.type == ASCII) return { Occurrence::DecodeType::ASCII, std::endian::native }; if (settings.type == UTF8) @@ -344,7 +344,7 @@ namespace hex::plugin::builtin { auto occurrence = reader.begin(); u64 progress = 0; - auto searchPredicate = [&] -> bool(*)(u8, u8) { + auto searchPredicate = [&]() -> bool(*)(u8, u8) { if (!settings.ignoreCase) return [](u8 left, u8 right) -> bool { return left == right; diff --git a/plugins/builtin/source/content/views/view_hex_editor.cpp b/plugins/builtin/source/content/views/view_hex_editor.cpp index 970938e75..4c5b6decf 100644 --- a/plugins/builtin/source/content/views/view_hex_editor.cpp +++ b/plugins/builtin/source/content/views/view_hex_editor.cpp @@ -1200,7 +1200,7 @@ namespace hex::plugin::builtin { auto encoding = EncodingFile(EncodingFile::Type::Thingy, path); ImHexApi::Provider::markDirty(); - TaskManager::doLater([this, encoding = std::move(encoding)] mutable { + TaskManager::doLater([this, encoding = std::move(encoding)]() mutable { m_hexEditor.setCustomEncoding(std::move(encoding)); }); }); diff --git a/plugins/builtin/source/content/views/view_pattern_editor.cpp b/plugins/builtin/source/content/views/view_pattern_editor.cpp index d7c1735f5..56b5b6626 100644 --- a/plugins/builtin/source/content/views/view_pattern_editor.cpp +++ b/plugins/builtin/source/content/views/view_pattern_editor.cpp @@ -327,7 +327,7 @@ namespace hex::plugin::builtin { if (ImHexApi::Provider::isValid() && provider->isAvailable()) { static float height = 0; static bool dragging = false; - const ImGuiContext& g = *GImGui; + const ImGuiContext& g = *ImGui::GetCurrentContext(); if (g.CurrentWindow->Appearing) return; const auto availableSize = g.CurrentWindow->Size; @@ -1292,7 +1292,7 @@ namespace hex::plugin::builtin { ImGui::TableNextColumn(); if (ImGuiExt::DimmedIconButton(ICON_VS_OPEN_PREVIEW, ImGui::GetStyleColorVec4(ImGuiCol_Text))) { auto dataProvider = std::make_shared(section.data); - auto hexEditor = auto(m_sectionHexEditor); + auto hexEditor = ui::HexEditor(m_sectionHexEditor); hexEditor.setBackgroundHighlightCallback([this, id, &runtime](u64 address, const u8 *, size_t) -> std::optional { if (m_runningEvaluators != 0) @@ -1318,14 +1318,14 @@ namespace hex::plugin::builtin { auto patternProvider = ImHexApi::Provider::get(); - m_sectionWindowDrawer[patternProvider] = [this, id, patternProvider, dataProvider, hexEditor, patternDrawer = std::make_shared(), &runtime] mutable { + m_sectionWindowDrawer[patternProvider] = [this, id, patternProvider, dataProvider, hexEditor, patternDrawer = std::make_shared(), &runtime]() mutable { hexEditor.setProvider(dataProvider.get()); hexEditor.draw(480_scaled); patternDrawer->setSelectionCallback([&](const pl::ptrn::Pattern *pattern) { hexEditor.setSelection(Region { pattern->getOffset(), pattern->getSize() }); }); - const auto &patterns = [&, this] -> const auto& { + const auto &patterns = [&, this]() -> const auto& { if (patternProvider->isReadable() && *m_executionDone) { return runtime.getPatterns(id); } else { @@ -1556,7 +1556,7 @@ namespace hex::plugin::builtin { // Format: [ AA BB CC DD ] @ 0x12345678 runtime.addPragma("magic", [provider, &foundCorrectType](pl::PatternLanguage &, const std::string &value) -> bool { - const auto pattern = [value = value] mutable -> std::optional { + const auto pattern = [value = value]() mutable -> std::optional { value = wolv::util::trim(value); if (value.empty()) @@ -1577,7 +1577,7 @@ namespace hex::plugin::builtin { return BinaryPattern(value); }(); - const auto address = [value = value, provider] mutable -> std::optional { + const auto address = [value = value, provider]() mutable -> std::optional { value = wolv::util::trim(value); if (value.empty()) diff --git a/plugins/script_loader/source/loaders/dotnet/dotnet_loader.cpp b/plugins/script_loader/source/loaders/dotnet/dotnet_loader.cpp index 1fffef1e2..d95dd6e93 100644 --- a/plugins/script_loader/source/loaders/dotnet/dotnet_loader.cpp +++ b/plugins/script_loader/source/loaders/dotnet/dotnet_loader.cpp @@ -111,7 +111,7 @@ namespace hex::script::loader { = getExport(hostfxrLibrary, "hostfxr_set_error_writer"); } - hostfxr_set_error_writer([] HOSTFXR_CALLTYPE (const char_t *) { }); + hostfxr_set_error_writer([] (const char_t *) { }); return hostfxr_initialize_for_runtime_config != nullptr && @@ -146,7 +146,7 @@ namespace hex::script::loader { hostfxr_set_runtime_property_value(ctx, STRING("PINVOKE_OVERRIDE"), hex::format("{}", (void*)pInvokeOverride).c_str()); #endif - hostfxr_set_error_writer([] HOSTFXR_CALLTYPE (const char_t *message) { + hostfxr_set_error_writer([](const char_t *message) { #if defined(OS_WINDOWS) log::error("{}", utf16ToUtf8(message)); #else diff --git a/plugins/script_loader/support/c/source/script_api/v1/mem.cpp b/plugins/script_loader/support/c/source/script_api/v1/mem.cpp index 30c36450b..08fc1a249 100644 --- a/plugins/script_loader/support/c/source/script_api/v1/mem.cpp +++ b/plugins/script_loader/support/c/source/script_api/v1/mem.cpp @@ -102,7 +102,7 @@ SCRIPT_API(void registerProvider, const char *typeName, const char *name, Script auto typeNameString = std::string(typeName); auto nameString = std::string(name); - hex::ContentRegistry::Provider::impl::add(typeNameString, [typeNameString, nameString, readFunc, writeFunc, getSizeFunc] -> std::unique_ptr { + hex::ContentRegistry::Provider::impl::add(typeNameString, [typeNameString, nameString, readFunc, writeFunc, getSizeFunc]() -> std::unique_ptr { auto provider = std::make_unique(); provider->setTypeName(typeNameString); provider->setName(nameString);