]> vaikene.ee Git - evaf/blobdiff - src/libs/Plugins/pluginmanager.cpp
Mac OS changes and switched to c++11.
[evaf] / src / libs / Plugins / pluginmanager.cpp
index 5d08dcb10ddff65bf4ed64d207371d139ec542d6..5fea828802b894e6468da1037a9627f6bad3af90 100644 (file)
@@ -35,7 +35,7 @@ namespace Plugins {
 namespace Internal {
 
     // Plugin manager interface implementation
-    static eVaf::Plugins::PluginManager * mPluginManager = 0;
+    static eVaf::Plugins::PluginManager * mPluginManager = nullptr;
 
 } // namespace eVaf::Plugins::Internal
 } // namespace eVaf::Plugins
@@ -49,21 +49,20 @@ using namespace eVaf::Plugins;
 
 PluginManager::PluginManager()
     : QObject()
+    , d(new Internal::PluginManagerPrivate)
 {
     setObjectName(QString("%1-PluginManager").arg(VER_MODULE_NAME_STR));
 
     Internal::mPluginManager = this;
 
-    d = new Internal::PluginManagerPrivate;
-
     EVAF_INFO("%s created", qPrintable(objectName()));
 }
 
 PluginManager::~PluginManager()
 {
-    delete d;
+    d.reset();
 
-    Internal::mPluginManager = 0;
+    Internal::mPluginManager = nullptr;
 
     EVAF_INFO("%s destroyed", qPrintable(objectName()));
 }
@@ -188,7 +187,7 @@ bool PluginManagerPrivate::loadPlugins()
                 if (!isPlugins && !isQtPlugins) {
                     if (xml.name() == "plugins") {
                         // Check for windows and linux only sections
-#ifdef Q_OS_LINUX
+#if defined(Q_OS_LINUX) || defined(Q_OS_MACOS)
                         if (Common::isTrue(xml.attributes().value("windowsonly").toString()))
                             continue;
 #endif
@@ -201,7 +200,7 @@ bool PluginManagerPrivate::loadPlugins()
 
                     else if (xml.name() == "qtplugins") {
                         // Check for windows and linux only sections
-#ifdef Q_OS_LINUX
+#if defined(Q_OS_LINUX) || defined(Q_OS_MACOS)
                         if (Common::isTrue(xml.attributes().value("windowsonly").toString()))
                             continue;
 #endif
@@ -217,7 +216,7 @@ bool PluginManagerPrivate::loadPlugins()
                 // An individual plugin?
                 else if (isPlugins && xml.name() == "plugin") {
                     // Check for windows and linux only plugins
-#ifdef Q_OS_LINUX
+#if defined(Q_OS_LINUX) || defined(Q_OS_MACOS)
                     if (Common::isTrue(xml.attributes().value("windowsonly").toString())) {
                         EVAF_INFO("Plugin '%s' is for Windows only", qPrintable(xml.attributes().value("name").toString()));
                         continue;
@@ -252,7 +251,7 @@ bool PluginManagerPrivate::loadPlugins()
                 // An individual Qt plugin?
                 else if (isQtPlugins && xml.name() == "plugin") {
                     // Check for windows and linux only plugins
-#ifdef Q_OS_LINUX
+#if defined(Q_OS_LINUX) || defined(Q_OS_MACOS)
                     if (Common::isTrue(xml.attributes().value("windowsonly").toString())) {
                         EVAF_INFO("Qt plugin '%s' is for Windows only", qPrintable(xml.attributes().value("name").toString()));
                         continue;
@@ -339,7 +338,7 @@ Module * PluginManagerPrivate::moduleByName(QString const & name) const
         if (mModules.at(i)->name() == name)
             return mModules.at(i).data();
     }
-    return 0;
+    return nullptr;
 }
 
 
@@ -348,17 +347,16 @@ Module * PluginManagerPrivate::moduleByName(QString const & name) const
 Module::Module(QString const & name)
     : QSharedData()
     , mName(name)
-    , mLoader(0)
-    , mRoot(0)
-    , mPlugin(0)
-    , mPluginFactory(0)
+    , mRoot(nullptr)
+    , mPlugin(nullptr)
+    , mPluginFactory(nullptr)
 {}
 
 Module::~Module()
 {
     if (mLoader) {
         mLoader->unload();
-        delete mLoader;
+        mLoader.reset();
     }
 }
 
@@ -378,29 +376,28 @@ bool Module::load()
     QObject * root = p->instance();
 
     // Does the module implement the iPluginFactory interface?
-    if ((mPluginFactory = qobject_cast<iPluginFactory *>(root)) == 0) {
+    if ((mPluginFactory = qobject_cast<iPluginFactory *>(root)) == nullptr) {
 
         // If not, then it has to implement the iPlugin interface
-        if (qobject_cast<iPlugin *>(root) == 0) {
+        if (qobject_cast<iPlugin *>(root) == nullptr) {
             EVAF_FATAL_ERROR("Module '%s' is not a valid eVaf module", qPrintable(mName));
             return false;
         }
     }
 
     mRoot = root;
-    mLoader = p.take();
+    mLoader.reset(p.take());
     return true;
 }
 
 void Module::unload()
 {
-    mRoot = 0;
-    mPluginFactory = 0;
-    mPlugin = 0;
+    mRoot = nullptr;
+    mPluginFactory = nullptr;
+    mPlugin = nullptr;
     if (mLoader) {
         mLoader->unload();
-        delete mLoader;
-        mLoader = 0;
+        mLoader.reset();
     }
 }
 
@@ -409,18 +406,18 @@ iPlugin * Module::create(QString const & name)
     // If the module is not loaded, load it now
     if (!mLoader) {
         if (!load())
-            return 0;
+            return nullptr;
     }
 
-    iPlugin * i = 0;
+    iPlugin * i = nullptr;
 
     // Does the module implement the iPluginFactory interface?
     if (mPluginFactory) {
         // Use the iPluginFactory interface to create the requested interface
         i = qobject_cast<iPlugin *>(mPluginFactory->create(name));
-        if (i == 0) {
+        if (i == nullptr) {
             EVAF_FATAL_ERROR("Module '%s' failed to create the iPlugin interface with name '%s'", qPrintable(mName), qPrintable(name));
-            return 0;
+            return nullptr;
         }
     }
 
@@ -429,13 +426,13 @@ iPlugin * Module::create(QString const & name)
         if (mPlugin) {
             EVAF_FATAL_ERROR("Module '%s' can implement only one iPlugin interface and one with the name '%s' is already created",
                              qPrintable(mName), qPrintable(mPlugin->objectName()));
-            return 0;
+            return nullptr;
         }
 
         i = qobject_cast<iPlugin *>(mRoot);
-        if (i == 0) {
+        if (i == nullptr) {
             EVAF_FATAL_ERROR("Module '%s' does not implement the iPlugin interface", qPrintable(mName));
-            return 0;
+            return nullptr;
         }
 
         mPlugin = i;
@@ -452,7 +449,7 @@ Plugin::Plugin(Module * module, QString const & name, QString const & args)
     , mModule(module)
     , mName(name)
     , mArgs(args)
-    , mPlugin(0)
+    , mPlugin(nullptr)
 {}
 
 Plugin::~Plugin()
@@ -464,12 +461,12 @@ bool Plugin::load()
     mPlugin = mModule->create(mName);
     if (mPlugin && !mPlugin->objectName().isEmpty())
         mName = mPlugin->objectName();
-    return mPlugin != 0;
+    return mPlugin != nullptr;
 }
 
 void Plugin::unload()
 {
-    mPlugin = 0;
+    mPlugin = nullptr;
 }
 
 bool Plugin::init()