Commit 919f5bc6 authored by Jan Möbius's avatar Jan Möbius

Moved plugin storage vector to a static

parent fa468ff5
...@@ -88,6 +88,8 @@ ...@@ -88,6 +88,8 @@
#include <OpenFlipper/widgets/messageBox/StaysOnTopMessageBox.hh> #include <OpenFlipper/widgets/messageBox/StaysOnTopMessageBox.hh>
#include <OpenFlipper/common/PluginStorage.hh>
#define WIDGET_HEIGHT 800 #define WIDGET_HEIGHT 800
#define WIDGET_WIDTH 800 #define WIDGET_WIDTH 800
...@@ -236,7 +238,7 @@ Core::init() { ...@@ -236,7 +238,7 @@ Core::init() {
Qt::AlignBottom | Qt::AlignLeft , Qt::white); Qt::AlignBottom | Qt::AlignLeft , Qt::white);
} }
coreWidget_ = new CoreWidget(viewModes_ , plugins_, coreSlots_); coreWidget_ = new CoreWidget(viewModes_ , coreSlots_);
spinBoxEventFilter_.registerScrollArea(coreWidget_->getToolboxScrollArea()); spinBoxEventFilter_.registerScrollArea(coreWidget_->getToolboxScrollArea());
spinBoxEventFilter_.registerScrollArea(coreWidget_->getToolboxArea()); spinBoxEventFilter_.registerScrollArea(coreWidget_->getToolboxArea());
...@@ -718,6 +720,12 @@ Core::~Core() ...@@ -718,6 +720,12 @@ Core::~Core()
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
std::vector<PluginInfo>& Core::plugins() {
return PluginStorage::plugins();
};
//-----------------------------------------------------------------------------
void void
Core::slotMouseEventIdentify( QMouseEvent* _event ) Core::slotMouseEventIdentify( QMouseEvent* _event )
{ {
...@@ -1169,8 +1177,8 @@ void Core::slotExit() { ...@@ -1169,8 +1177,8 @@ void Core::slotExit() {
clearAll(); clearAll();
// Notify plugins of imminent exit. // Notify plugins of imminent exit.
for ( uint i = 0 ; i < plugins_.size() ; ++i ){ for ( uint i = 0 ; i < plugins().size() ; ++i ){
BaseInterface* basePlugin = qobject_cast< BaseInterface * >(plugins_[i].plugin); BaseInterface* basePlugin = qobject_cast< BaseInterface * >(plugins()[i].plugin);
// Dont call exit if we cannot get the Plugin // Dont call exit if we cannot get the Plugin
if ( basePlugin ) if ( basePlugin )
...@@ -1178,7 +1186,7 @@ void Core::slotExit() { ...@@ -1178,7 +1186,7 @@ void Core::slotExit() {
} }
// Delete Plugins to actually call their destructor // Delete Plugins to actually call their destructor
for(PluginInfo p : plugins_) for(PluginInfo p : plugins())
delete p.plugin; delete p.plugin;
// close the log file to ensure everything is writeen correctly // close the log file to ensure everything is writeen correctly
...@@ -1300,9 +1308,9 @@ void Core::slotSetSlotDescription(QString _slotName, QString _slotDescrip ...@@ -1300,9 +1308,9 @@ void Core::slotSetSlotDescription(QString _slotName, QString _slotDescrip
//find plugin //find plugin
PluginInfo* pluginInfo = 0; PluginInfo* pluginInfo = 0;
for (uint i=0; i < plugins_.size(); i++) for (uint i=0; i < plugins().size(); i++)
if (plugins_[i].plugin == sender()) if (plugins()[i].plugin == sender())
pluginInfo = &plugins_[i]; pluginInfo = &plugins()[i];
if (pluginInfo == 0){ if (pluginInfo == 0){
emit log(LOGERR, tr("Unable to set slot-description. Plugin not found!")); emit log(LOGERR, tr("Unable to set slot-description. Plugin not found!"));
...@@ -1378,9 +1386,9 @@ void Core::slotGetDescription(QString _function, QString& _fnDescript ...@@ -1378,9 +1386,9 @@ void Core::slotGetDescription(QString _function, QString& _fnDescript
//find plugin //find plugin
PluginInfo* pluginInfo = 0; PluginInfo* pluginInfo = 0;
for (uint i=0; i < plugins_.size(); i++) for (uint i=0; i < plugins().size(); i++)
if (plugins_[i].rpcName == pluginName) if (plugins()[i].rpcName == pluginName)
pluginInfo = &plugins_[i]; pluginInfo = &plugins()[i];
if (pluginInfo == 0){ if (pluginInfo == 0){
emit log(LOGERR, tr("Unable to get slot-description. Plugin not found!")); emit log(LOGERR, tr("Unable to get slot-description. Plugin not found!"));
...@@ -1524,12 +1532,12 @@ void Core::writeVersionNumbers(QString _filename){ ...@@ -1524,12 +1532,12 @@ void Core::writeVersionNumbers(QString _filename){
ini.add_entry( "Core" , "VersionLinux" , OpenFlipper::Options::coreVersion() ); ini.add_entry( "Core" , "VersionLinux" , OpenFlipper::Options::coreVersion() );
//add pluginVersions //add pluginVersions
for (uint i=0; i < plugins_.size(); i++){ for (uint i=0; i < plugins().size(); i++){
if ( OpenFlipper::Options::isWindows() ) if ( OpenFlipper::Options::isWindows() )
ini.add_entry( plugins_[i].name , "VersionWindows" , plugins_[i].version ); ini.add_entry( plugins()[i].name , "VersionWindows" , plugins()[i].version );
else else
ini.add_entry( plugins_[i].name , "VersionLinux" , plugins_[i].version ); ini.add_entry( plugins()[i].name , "VersionLinux" , plugins()[i].version );
} }
ini.disconnect(); ini.disconnect();
......
...@@ -121,7 +121,6 @@ ...@@ -121,7 +121,6 @@
#include <OpenFlipper/threads/JobInfo.hh> #include <OpenFlipper/threads/JobInfo.hh>
#include <OpenFlipper/common/FileTypes.hh>
#include <OpenFlipper/common/InformationPlugins.hh> #include <OpenFlipper/common/InformationPlugins.hh>
#include "SpinBoxEventFilter.hh" #include "SpinBoxEventFilter.hh"
...@@ -1214,11 +1213,9 @@ private slots: ...@@ -1214,11 +1213,9 @@ private slots:
//=========================================================================== //===========================================================================
public : public :
const std::vector<PluginInfo> plugins() const {return plugins_; }; std::vector<PluginInfo>& plugins();
private: private:
/// List of all loaded plugins_
std::vector<PluginInfo> plugins_;
/// Index of Plugins toolbox widget /// Index of Plugins toolbox widget
int toolboxindex_; int toolboxindex_;
......
...@@ -467,11 +467,11 @@ void connectPlugins( Core* c, const std::vector<PluginInfo>& plugins_, QString _ ...@@ -467,11 +467,11 @@ void connectPlugins( Core* c, const std::vector<PluginInfo>& plugins_, QString _
} }
void Core::slotCrossPluginConnect( QString _pluginName1, const char* _signal, QString _pluginName2, const char* _slot) { void Core::slotCrossPluginConnect( QString _pluginName1, const char* _signal, QString _pluginName2, const char* _slot) {
connectPlugins(this, plugins_, _pluginName1, _signal, _pluginName2, _slot, false); connectPlugins(this, plugins(), _pluginName1, _signal, _pluginName2, _slot, false);
} }
void Core::slotCrossPluginConnectQueued( QString _pluginName1, const char* _signal, QString _pluginName2, const char* _slot) { void Core::slotCrossPluginConnectQueued( QString _pluginName1, const char* _signal, QString _pluginName2, const char* _slot) {
connectPlugins(this, plugins_, _pluginName1, _signal, _pluginName2, _slot, true); connectPlugins(this, plugins(), _pluginName1, _signal, _pluginName2, _slot, true);
} }
//======================================================================================== //========================================================================================
......
...@@ -86,6 +86,9 @@ ...@@ -86,6 +86,9 @@
#include <ACG/QtWidgets/QtFileDialog.hh> #include <ACG/QtWidgets/QtFileDialog.hh>
#include "OpenFlipper/widgets/PluginDialog/PluginDialog.hh" #include "OpenFlipper/widgets/PluginDialog/PluginDialog.hh"
#include <OpenFlipper/common/FileTypes.hh>
/** /**
* The number of plugins to load simultaneously. * The number of plugins to load simultaneously.
...@@ -555,7 +558,7 @@ void Core::loadPlugins() ...@@ -555,7 +558,7 @@ void Core::loadPlugins()
emit pluginsInitialized(); emit pluginsInitialized();
emit log(LOGOUT,tr("Loaded %n Plugin(s)","",int(plugins_.size())) ); emit log(LOGOUT,tr("Loaded %n Plugin(s)","",int(plugins().size())) );
} }
/** @brief slot for loading Plugins /** @brief slot for loading Plugins
...@@ -653,7 +656,7 @@ void Core::slotShowPlugins(){ ...@@ -653,7 +656,7 @@ void Core::slotShowPlugins(){
while (ret == 0){ while (ret == 0){
PluginDialog* dialog = new PluginDialog(plugins_, coreWidget_); PluginDialog* dialog = new PluginDialog(plugins(), coreWidget_);
//connect signals //connect signals
connect(dialog, SIGNAL( loadPlugin() ), this, SLOT( slotLoadPlugin() )); connect(dialog, SIGNAL( loadPlugin() ), this, SLOT( slotLoadPlugin() ));
...@@ -678,9 +681,9 @@ void Core::slotBlockPlugin(const QString &_name) ...@@ -678,9 +681,9 @@ void Core::slotBlockPlugin(const QString &_name)
OpenFlipperSettings().setValue("PluginControl/DontLoadNames",dontLoadPlugins); OpenFlipperSettings().setValue("PluginControl/DontLoadNames",dontLoadPlugins);
} }
for (size_t i = 0; i < plugins_.size();++i) for (size_t i = 0; i < plugins().size();++i)
if (plugins_[i].name == _name) if (plugins()[i].name == _name)
plugins_[i].status = PluginInfo::BLOCKED; plugins()[i].status = PluginInfo::BLOCKED;
} }
void Core::slotUnBlockPlugin(const QString &_name) void Core::slotUnBlockPlugin(const QString &_name)
...@@ -689,9 +692,9 @@ void Core::slotUnBlockPlugin(const QString &_name) ...@@ -689,9 +692,9 @@ void Core::slotUnBlockPlugin(const QString &_name)
dontLoadPlugins.removeAll(_name); dontLoadPlugins.removeAll(_name);
OpenFlipperSettings().setValue("PluginControl/DontLoadNames",dontLoadPlugins); OpenFlipperSettings().setValue("PluginControl/DontLoadNames",dontLoadPlugins);
for (size_t i = 0; i < plugins_.size();++i) for (size_t i = 0; i < plugins().size();++i)
if (plugins_[i].name == _name) if (plugins()[i].name == _name)
plugins_[i].status = PluginInfo::UNLOADED; plugins()[i].status = PluginInfo::UNLOADED;
} }
...@@ -756,9 +759,9 @@ void Core::loadPlugin(const QString& _filename,const bool _silent, QString& _lic ...@@ -756,9 +759,9 @@ void Core::loadPlugin(const QString& _filename,const bool _silent, QString& _lic
// Check if a plugin has been loaded // Check if a plugin has been loaded
PluginInfo info; PluginInfo info;
int alreadyLoadedAt = -1; int alreadyLoadedAt = -1;
for (unsigned int k=0; k < plugins_.size(); k++) for (unsigned int k=0; k < plugins().size(); k++)
{ {
if (plugins_[k].path == _filename) if (plugins()[k].path == _filename)
alreadyLoadedAt = static_cast<int>(k); alreadyLoadedAt = static_cast<int>(k);
} }
info.status = PluginInfo::FAILED; info.status = PluginInfo::FAILED;
...@@ -788,15 +791,15 @@ void Core::loadPlugin(const QString& _filename,const bool _silent, QString& _lic ...@@ -788,15 +791,15 @@ void Core::loadPlugin(const QString& _filename,const bool _silent, QString& _lic
} }
//Check if plugin is already loaded //Check if plugin is already loaded
for (unsigned int k=0; k < plugins_.size(); k++){ for (unsigned int k=0; k < plugins().size(); k++){
QString name_nospace = basePlugin->name(); QString name_nospace = basePlugin->name();
name_nospace.remove(" "); name_nospace.remove(" ");
if (plugins_[k].name == name_nospace && plugins_[k].path != _filename && plugins_[k].status == PluginInfo::LOADED){ if (plugins()[k].name == name_nospace && plugins()[k].path != _filename && plugins()[k].status == PluginInfo::LOADED){
if (_silent || OpenFlipper::Options::nogui() ){ //dont load the plugin if (_silent || OpenFlipper::Options::nogui() ){ //dont load the plugin
warnings += tr("Warning: Already loaded from %1").arg( plugins_[k].path) + "\n"; warnings += tr("Warning: Already loaded from %1").arg( plugins()[k].path) + "\n";
printPluginLoadLog(errors, warnings); printPluginLoadLog(errors, warnings);
...@@ -807,11 +810,11 @@ void Core::loadPlugin(const QString& _filename,const bool _silent, QString& _lic ...@@ -807,11 +810,11 @@ void Core::loadPlugin(const QString& _filename,const bool _silent, QString& _lic
tr("Plugin already loaded"), tr("Plugin already loaded"),
tr("A Plugin with the same name was already loaded from %1.\n" tr("A Plugin with the same name was already loaded from %1.\n"
"You can only load the new plugin if you unload the existing one first.\n\n" "You can only load the new plugin if you unload the existing one first.\n\n"
"Do you want to unload the existing plugin first?").arg( plugins_[k].path), "Do you want to unload the existing plugin first?").arg( plugins()[k].path),
QMessageBox::Yes|QMessageBox::No, QMessageBox::No); QMessageBox::Yes|QMessageBox::No, QMessageBox::No);
if (ret == QMessageBox::No) if (ret == QMessageBox::No)
{ {
warnings += tr("Warning: Already loaded from %1.").arg( plugins_[k].path) + "\n"; warnings += tr("Warning: Already loaded from %1.").arg( plugins()[k].path) + "\n";
printPluginLoadLog(errors, warnings); printPluginLoadLog(errors, warnings);
...@@ -2288,10 +2291,10 @@ void Core::loadPlugin(const QString& _filename,const bool _silent, QString& _lic ...@@ -2288,10 +2291,10 @@ void Core::loadPlugin(const QString& _filename,const bool _silent, QString& _lic
info.warnings = warnings; info.warnings = warnings;
if (alreadyLoadedAt != -1) { if (alreadyLoadedAt != -1) {
plugins_[alreadyLoadedAt] = info; plugins()[alreadyLoadedAt] = info;
} }
else else
plugins_.push_back(info); plugins().push_back(info);
printPluginLoadLog(errors, warnings); printPluginLoadLog(errors, warnings);
......
...@@ -68,8 +68,8 @@ ...@@ -68,8 +68,8 @@
void Core::slotPluginExists( QString _pluginName , bool& _exists ) { void Core::slotPluginExists( QString _pluginName , bool& _exists ) {
for ( int i = 0 ; i < (int)plugins_.size(); ++i ) { for ( int i = 0 ; i < (int)plugins().size(); ++i ) {
if ( plugins_[i].rpcName == _pluginName ) { if ( plugins()[i].rpcName == _pluginName ) {
_exists = true; _exists = true;
return; return;
} }
...@@ -82,8 +82,8 @@ void Core::slotFunctionExists( QString _pluginName , QString _functionName , boo ...@@ -82,8 +82,8 @@ void Core::slotFunctionExists( QString _pluginName , QString _functionName , boo
//Find plugin //Find plugin
int plugin = -1; int plugin = -1;
for ( int i = 0 ; i < (int)plugins_.size(); ++i ) { for ( int i = 0 ; i < (int)plugins().size(); ++i ) {
if ( plugins_[i].rpcName == _pluginName ) { if ( plugins()[i].rpcName == _pluginName ) {
plugin = i; plugin = i;
break; break;
} }
...@@ -94,15 +94,15 @@ void Core::slotFunctionExists( QString _pluginName , QString _functionName , boo ...@@ -94,15 +94,15 @@ void Core::slotFunctionExists( QString _pluginName , QString _functionName , boo
return; return;
} }
_exists = plugins_[plugin].rpcFunctions.contains(_functionName); _exists = plugins()[plugin].rpcFunctions.contains(_functionName);
} }
void Core::slotCall( QString _pluginName , QString _functionName , bool& _success ) { void Core::slotCall( QString _pluginName , QString _functionName , bool& _success ) {
//Find plugin //Find plugin
int plugin = -1; int plugin = -1;
for ( int i = 0 ; i < (int)plugins_.size(); ++i ) { for ( int i = 0 ; i < (int)plugins().size(); ++i ) {
if ( plugins_[i].rpcName == _pluginName ) { if ( plugins()[i].rpcName == _pluginName ) {
plugin = i; plugin = i;
break; break;
} }
...@@ -114,7 +114,7 @@ void Core::slotCall( QString _pluginName , QString _functionName , bool& _succes ...@@ -114,7 +114,7 @@ void Core::slotCall( QString _pluginName , QString _functionName , bool& _succes
return; return;
} }
if ( !plugins_[plugin].rpcFunctions.contains(_functionName) ) { if ( !plugins()[plugin].rpcFunctions.contains(_functionName) ) {
_success = false; _success = false;
emit log(LOGERR, tr("Unable to call function from Plugin : ") + _pluginName); emit log(LOGERR, tr("Unable to call function from Plugin : ") + _pluginName);
emit log(LOGERR, tr("Function ") + _functionName + tr(" not found!")); emit log(LOGERR, tr("Function ") + _functionName + tr(" not found!"));
......
...@@ -52,6 +52,9 @@ ...@@ -52,6 +52,9 @@
//#include <ObjectTypes/Light/Light.hh> //#include <ObjectTypes/Light/Light.hh>
#include <OpenFlipper/common/FileTypes.hh>
/// Save Settings (slot is called from CoreWidget's File-Menu) /// Save Settings (slot is called from CoreWidget's File-Menu)
void Core::saveSettings(){ void Core::saveSettings(){
......
...@@ -231,13 +231,13 @@ void Core::setToolBoxSide(QString _side) { ...@@ -231,13 +231,13 @@ void Core::setToolBoxSide(QString _side) {
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
QWidget *Core::getToolbox(QString _pluginName, QString _toolboxName) { QWidget *Core::getToolbox(QString _pluginName, QString _toolboxName) {
std::vector<PluginInfo>::const_iterator pluginIt = plugins_.end(); std::vector<PluginInfo>::const_iterator pluginIt = plugins().end();
for (std::vector<PluginInfo>::const_iterator it = plugins_.begin(), it_end = plugins_.end(); it != it_end; ++it) { for (std::vector<PluginInfo>::const_iterator it = plugins().begin(), it_end = plugins().end(); it != it_end; ++it) {
if (it->name == _pluginName) { if (it->name == _pluginName) {
pluginIt = it; pluginIt = it;
} }
} }
if (pluginIt == plugins_.end()) return 0; if (pluginIt == plugins().end()) return 0;
for (std::vector<std::pair<QString , QWidget*> >::const_iterator it = pluginIt->toolboxWidgets.begin(), it_end = pluginIt->toolboxWidgets.end(); for (std::vector<std::pair<QString , QWidget*> >::const_iterator it = pluginIt->toolboxWidgets.begin(), it_end = pluginIt->toolboxWidgets.end();
it != it_end; ++it) { it != it_end; ++it) {
...@@ -266,8 +266,8 @@ void Core::addToolbox(QString _name ,QWidget* _widget, QIcon* _icon, ...@@ -266,8 +266,8 @@ void Core::addToolbox(QString _name ,QWidget* _widget, QIcon* _icon,
int id = -1; int id = -1;
// Find the plugin which added this Toolbox // Find the plugin which added this Toolbox
for ( uint i = 0 ; i < plugins_.size(); ++i ) { for ( uint i = 0 ; i < plugins().size(); ++i ) {
if ( plugins_[i].plugin == sender() ) { if ( plugins()[i].plugin == sender() ) {
id = i; id = i;
break; break;
} }
...@@ -275,8 +275,8 @@ void Core::addToolbox(QString _name ,QWidget* _widget, QIcon* _icon, ...@@ -275,8 +275,8 @@ void Core::addToolbox(QString _name ,QWidget* _widget, QIcon* _icon,
// Find the scripting plugin because we assign this toolBox to it as we did not find the original sender // Find the scripting plugin because we assign this toolBox to it as we did not find the original sender
if ( id == -1 ) { if ( id == -1 ) {
for ( uint i = 0 ; i < plugins_.size(); ++i ) { for ( uint i = 0 ; i < plugins().size(); ++i ) {
if ( plugins_[i].name == "Scripting" ) { if ( plugins()[i].name == "Scripting" ) {
id = i; id = i;
break; break;
} }
...@@ -290,9 +290,9 @@ void Core::addToolbox(QString _name ,QWidget* _widget, QIcon* _icon, ...@@ -290,9 +290,9 @@ void Core::addToolbox(QString _name ,QWidget* _widget, QIcon* _icon,
} }
spinBoxEventFilter_.hookUpToWidgetTree(_widget); spinBoxEventFilter_.hookUpToWidgetTree(_widget);
plugins_[id].toolboxWidgets.push_back( std::pair< QString,QWidget* >( _name , _widget) ); plugins()[id].toolboxWidgets.push_back( std::pair< QString,QWidget* >( _name , _widget) );
plugins_[id].toolboxIcons.push_back( _icon ); plugins()[id].toolboxIcons.push_back( _icon );
plugins_[id].headerAreaWidgets.push_back( std::pair< QString,QWidget* >( _name , _headerAreaWidget) ); plugins()[id].headerAreaWidgets.push_back( std::pair< QString,QWidget* >( _name , _headerAreaWidget) );
// add widget name to viewMode 'all' // add widget name to viewMode 'all'
if ( !viewModes_[0]->visibleToolboxes.contains(_name) ){ if ( !viewModes_[0]->visibleToolboxes.contains(_name) ){
......
...@@ -58,7 +58,7 @@ ...@@ -58,7 +58,7 @@
/** /**
* \file FileTypes.cc * \file FileTypes.cc
* This File contains the management of file plugins. * This File contains the file type management vectors
*/ */
...@@ -66,14 +66,12 @@ ...@@ -66,14 +66,12 @@
#include <OpenFlipper/common/FileTypes.hh> #include <OpenFlipper/common/FileTypes.hh>
// Stores information about file types supported by the file plugins.
static std::vector<fileTypes> supportedTypes_; static std::vector<fileTypes> supportedTypes_;
std::vector<fileTypes>& supportedTypes() { std::vector<fileTypes>& supportedTypes() {
return supportedTypes_; return supportedTypes_;
} }
//============================================================================= //=============================================================================
//============================================================================= //=============================================================================
...@@ -58,12 +58,11 @@ ...@@ -58,12 +58,11 @@
/** /**
* \file FileTypes.hh * \file FileTypes.hh
* This File contains the management of file plugins. * This File contains the file type management vectors
*/ */
#ifndef FILETYPES_HH #pragma once
#define FILETYPES_HH
#include <QString> #include <QString>
#include <OpenFlipper/common/GlobalDefines.hh> #include <OpenFlipper/common/GlobalDefines.hh>
...@@ -84,10 +83,8 @@ struct fileTypes { ...@@ -84,10 +83,8 @@ struct fileTypes {
// Get vector of supported types // Get vector of supported types
DLLEXPORT DLLEXPORT
std::vector<fileTypes>& std::vector<fileTypes>& supportedTypes();
supportedTypes();
//============================================================================= //=============================================================================
#endif // FILETYPES_HH defined
//============================================================================= //=============================================================================
/*===========================================================================*\
* *
* OpenFlipper *
* Copyright (c) 2001-2015, RWTH-Aachen University *
* Department of Computer Graphics and Multimedia *
* All rights reserved. *
* www.openflipper.org *
* *
*---------------------------------------------------------------------------*
* This file is part of OpenFlipper. *
*---------------------------------------------------------------------------*
* *
* Redistribution and use in source and binary forms, with or without *
* modification, are permitted provided that the following conditions *
* are met: *
* *
* 1. Redistributions of source code must retain the above copyright notice, *
* this list of conditions and the following disclaimer. *
* *
* 2. Redistributions in binary form must reproduce the above copyright *
* notice, this list of conditions and the following disclaimer in the *
* documentation and/or other materials provided with the distribution. *
* *
* 3. Neither the name of the copyright holder nor the names of its *
* contributors may be used to endorse or promote products derived from *
* this software without specific prior written permission. *
* *
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS *
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED *
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A *
* PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER *
* OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, *
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, *
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR *
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF *
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING *
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS *
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *
* *
\*===========================================================================*/
/*===========================================================================*\
* *
* $Revision$ *
* $LastChangedBy$ *
* $Date$ *
* *
\*===========================================================================*/
//=============================================================================
//
// Types
//
//=============================================================================
/**
* \file PluginStorage.cc
* This File contains the management of plugins.
*/
//== INCLUDES =================================================================
#include <OpenFlipper/common/PluginStorage.hh>
namespace PluginStorage {
/// reference to Core plugin list
static std::vector<PluginInfo> plugins_;
std::vector<PluginInfo>& plugins() {
return plugins_;
}
}
//=============================================================================
//=============================================================================
/*===========================================================================*\
* *
* OpenFlipper *
* Copyright (c) 2001-2015, RWTH-Aachen University *
* Department of Computer Graphics and Multimedia *
* All rights reserved. *
* www.openflipper.org *
* *
*---------------------------------------------------------------------------*
* This file is part of OpenFlipper. *
*---------------------------------------------------------------------------*
* *
* Redistribution and use in source and binary forms, with or without *
* modification, are permitted provided that the following conditions *
* are met: *
* *
* 1. Redistributions of source code must retain the above copyright notice, *
* this list of conditions and the following disclaimer. *
* *
* 2. Redistributions in binary form must reproduce the above copyright *
* notice, this list of conditions and the following disclaimer in the *
* documentation and/or other materials provided with the distribution. *
* *