flatten ModuleController a little

no need to allocate these maps separately

Change-Id: If83f6540933716ab720778740a1e20f0bb14fd7d
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/127649
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
diff --git a/sd/source/ui/framework/module/ModuleController.cxx b/sd/source/ui/framework/module/ModuleController.cxx
index 855a4bd..acd12ec 100644
--- a/sd/source/ui/framework/module/ModuleController.cxx
+++ b/sd/source/ui/framework/module/ModuleController.cxx
@@ -24,8 +24,6 @@

#include <tools/ConfigurationAccess.hxx>
#include <comphelper/processfactory.hxx>
#include <cppuhelper/weakref.hxx>
#include <unordered_map>

#include <tools/diagnose_ex.h>
#include <sal/log.hxx>
@@ -40,24 +38,6 @@ namespace sd::framework {
const sal_uInt32 snFactoryPropertyCount (2);
const sal_uInt32 snStartupPropertyCount (1);

class ModuleController::ResourceToFactoryMap
    : public std::unordered_map<
    OUString,
    OUString>
{
public:
    ResourceToFactoryMap() {}
};

class ModuleController::LoadedFactoryContainer
    : public std::unordered_map<
    OUString,
    WeakReference<XInterface>>
{
public:
    LoadedFactoryContainer() {}
};

//===== ModuleController ======================================================
Reference<XModuleController> ModuleController::CreateInstance (
    const Reference<XComponentContext>& rxContext)
@@ -66,8 +46,6 @@ Reference<XModuleController> ModuleController::CreateInstance (
}

ModuleController::ModuleController (const Reference<XComponentContext>& rxContext)
    : mpResourceToFactoryMap(new ResourceToFactoryMap()),
      mpLoadedFactories(new LoadedFactoryContainer())
{
    /** Load a list of URL to service mappings from the
        /org.openoffice.Office.Impress/MultiPaneGUI/Framework/ResourceFactories
@@ -106,8 +84,8 @@ ModuleController::~ModuleController() noexcept
void ModuleController::disposing(std::unique_lock<std::mutex>&)
{
    // Break the cyclic reference back to DrawController object
    mpLoadedFactories.reset();
    mpResourceToFactoryMap.reset();
    maLoadedFactories.clear();
    maResourceToFactoryMap.clear();
    mxController.clear();
}

@@ -132,7 +110,7 @@ void ModuleController::ProcessFactory (const ::std::vector<Any>& rValues)
    // Add the resource URLs to the map.
    for (const auto& rResource : aURLs)
    {
        (*mpResourceToFactoryMap)[rResource] = sServiceName;
        maResourceToFactoryMap[rResource] = sServiceName;
        SAL_INFO("sd.fwk", __func__ << ":    " << rResource);
    }
}
@@ -196,16 +174,15 @@ void ModuleController::ProcessStartupService (const ::std::vector<Any>& rValues)

void SAL_CALL ModuleController::requestResource (const OUString& rsResourceURL)
{
    ResourceToFactoryMap::const_iterator iFactory (mpResourceToFactoryMap->find(rsResourceURL));
    if (iFactory == mpResourceToFactoryMap->end())
    auto iFactory = maResourceToFactoryMap.find(rsResourceURL);
    if (iFactory == maResourceToFactoryMap.end())
        return;

    // Check that the factory has already been loaded and not been
    // destroyed in the meantime.
    Reference<XInterface> xFactory;
    LoadedFactoryContainer::const_iterator iLoadedFactory (
        mpLoadedFactories->find(iFactory->second));
    if (iLoadedFactory != mpLoadedFactories->end())
    auto iLoadedFactory = maLoadedFactories.find(iFactory->second);
    if (iLoadedFactory != maLoadedFactories.end())
        xFactory.set(iLoadedFactory->second, UNO_QUERY);
    if (  xFactory.is())
        return;
@@ -229,7 +206,7 @@ void SAL_CALL ModuleController::requestResource (const OUString& rsResourceURL)
    }

    // Remember that this factory has been instanced.
    (*mpLoadedFactories)[iFactory->second] = xFactory;
    maLoadedFactories[iFactory->second] = xFactory;
}

//----- XInitialization -------------------------------------------------------
diff --git a/sd/source/ui/inc/framework/ModuleController.hxx b/sd/source/ui/inc/framework/ModuleController.hxx
index fb9e4bc..cd4d4e9 100644
--- a/sd/source/ui/inc/framework/ModuleController.hxx
+++ b/sd/source/ui/inc/framework/ModuleController.hxx
@@ -22,8 +22,10 @@
#include <com/sun/star/drawing/framework/XModuleController.hpp>
#include <com/sun/star/lang/XInitialization.hpp>
#include <comphelper/compbase.hxx>
#include <cppuhelper/weakref.hxx>

#include <memory>
#include <unordered_map>

namespace com::sun::star::frame { class XController; }
namespace com::sun::star::uno { class XComponentContext; }
@@ -78,10 +80,8 @@ private:
    css::uno::Reference<
        css::frame::XController> mxController;

    class ResourceToFactoryMap;
    std::unique_ptr<ResourceToFactoryMap> mpResourceToFactoryMap;
    class LoadedFactoryContainer;
    std::unique_ptr<LoadedFactoryContainer> mpLoadedFactories;
    std::unordered_map<OUString, OUString> maResourceToFactoryMap;
    std::unordered_map<OUString, css::uno::WeakReference<css::uno::XInterface>> maLoadedFactories;

    /// @throws std::exception
    ModuleController (