Nim: Avoid using the global object pool

Use the pattern that's currently being established.

Change-Id: Ib716b35473fe5060b9ba5beea240ed46cfb1c5c7
Reviewed-by: Filippo Cucchetto <filippocucchetto@gmail.com>
Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
hjk
2018-02-02 14:37:58 +01:00
parent 204d8d141e
commit 9b3a074438
2 changed files with 21 additions and 23 deletions

View File

@@ -41,26 +41,32 @@
#include <coreplugin/fileiconprovider.h> #include <coreplugin/fileiconprovider.h>
#include <projectexplorer/projectmanager.h> #include <projectexplorer/projectmanager.h>
#include <projectexplorer/toolchainmanager.h> #include <projectexplorer/toolchainmanager.h>
#include <projectexplorer/runconfiguration.h>
#include <texteditor/snippets/snippetprovider.h> #include <texteditor/snippets/snippetprovider.h>
#include <QtPlugin>
using namespace Utils; using namespace Utils;
using namespace ProjectExplorer; using namespace ProjectExplorer;
namespace Nim { namespace Nim {
static NimPlugin *m_instance = 0; class NimPluginRunData
NimPlugin::NimPlugin()
{ {
m_instance = this; public:
} NimSettings settings;
NimEditorFactory editorFactory;
NimBuildConfigurationFactory buildConfigFactory;
NimRunConfigurationFactory runConfigFactory;
NimCompilerBuildStepFactory buildStepFactory;
NimCompilerCleanStepFactory cleanStepFactory;
NimCodeStyleSettingsPage codeStyleSettingsPage;
NimCodeStylePreferencesFactory codeStylePreferencesPage;
NimToolChainFactory toolChainFactory;
};
static NimPluginRunData *m_runData = nullptr;
NimPlugin::~NimPlugin() NimPlugin::~NimPlugin()
{ {
m_instance = 0; delete m_runData;
} }
bool NimPlugin::initialize(const QStringList &arguments, QString *errorMessage) bool NimPlugin::initialize(const QStringList &arguments, QString *errorMessage)
@@ -68,25 +74,18 @@ bool NimPlugin::initialize(const QStringList &arguments, QString *errorMessage)
Q_UNUSED(arguments) Q_UNUSED(arguments)
Q_UNUSED(errorMessage) Q_UNUSED(errorMessage)
ProjectExplorer::ToolChainManager::registerLanguage(Constants::C_NIMLANGUAGE_ID, Constants::C_NIMLANGUAGE_NAME); m_runData = new NimPluginRunData;
ToolChainManager::registerLanguage(Constants::C_NIMLANGUAGE_ID, Constants::C_NIMLANGUAGE_NAME);
RunControl::registerWorker<NimRunConfiguration, SimpleTargetRunner> RunControl::registerWorker<NimRunConfiguration, SimpleTargetRunner>
(ProjectExplorer::Constants::NORMAL_RUN_MODE); (ProjectExplorer::Constants::NORMAL_RUN_MODE);
addAutoReleasedObject(new NimSettings);
addAutoReleasedObject(new NimEditorFactory);
addAutoReleasedObject(new NimBuildConfigurationFactory);
addAutoReleasedObject(new NimRunConfigurationFactory);
addAutoReleasedObject(new NimCompilerBuildStepFactory);
addAutoReleasedObject(new NimCompilerCleanStepFactory);
addAutoReleasedObject(new NimCodeStyleSettingsPage);
addAutoReleasedObject(new NimCodeStylePreferencesFactory);
addAutoReleasedObject(new NimToolChainFactory);
TextEditor::SnippetProvider::registerGroup(Constants::C_NIMSNIPPETSGROUP_ID, TextEditor::SnippetProvider::registerGroup(Constants::C_NIMSNIPPETSGROUP_ID,
tr("Nim", "SnippetProvider"), tr("Nim", "SnippetProvider"),
&NimEditorFactory::decorateEditor); &NimEditorFactory::decorateEditor);
ProjectExplorer::ProjectManager::registerProjectType<NimProject>(Constants::C_NIM_PROJECT_MIMETYPE); ProjectManager::registerProjectType<NimProject>(Constants::C_NIM_PROJECT_MIMETYPE);
return true; return true;
} }

View File

@@ -35,9 +35,8 @@ class NimPlugin : public ExtensionSystem::IPlugin
Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QtCreatorPlugin" FILE "Nim.json") Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QtCreatorPlugin" FILE "Nim.json")
public: public:
NimPlugin(); NimPlugin() = default;
~NimPlugin() final;
~NimPlugin();
bool initialize(const QStringList &arguments, QString *errorMessage) final; bool initialize(const QStringList &arguments, QString *errorMessage) final;
void extensionsInitialized() final; void extensionsInitialized() final;