Plugin: typedef DescriptorList + more const improvements

Instead of writing QVector<Plugin::Descriptor> everywhere, mit up
iterators etc. centrally define Plugin::DescriptorList and use it
everywhere.

Additionally made pointers to Plugin::Descriptor and
Plugin::Descriptor::SubPluginFeatures::Key const in various places
so we can use ConstIterator everywhere when iterating through
Plugin::DescriptorList.
This commit is contained in:
Tobias Doerffel
2009-08-26 01:44:12 +02:00
parent 1c76c77d22
commit 2287eca802
12 changed files with 34 additions and 41 deletions

View File

@@ -55,7 +55,7 @@ protected slots:
private:
Ui::EffectSelectDialog * ui;
QVector<Plugin::Descriptor> m_pluginDescriptors;
Plugin::DescriptorList m_pluginDescriptors;
EffectKeyList m_effectKeys;
EffectKey m_currentSelection;

View File

@@ -70,7 +70,7 @@ typedef struct PortDescription
inline Plugin::Descriptor::SubPluginFeatures::Key ladspaKeyToSubPluginKey(
Plugin::Descriptor * _desc,
const Plugin::Descriptor * _desc,
const QString & _name,
const ladspa_key_t & _key )
{

View File

@@ -2,7 +2,7 @@
* Plugin.h - class plugin, the base-class and generic interface for all plugins
*
* Copyright (c) 2005-2009 Tobias Doerffel <tobydox/at/users.sourceforge.net>
*
*
* This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net
*
* This program is free software; you can redistribute it and/or
@@ -22,14 +22,12 @@
*
*/
#ifndef _PLUGIN_H
#define _PLUGIN_H
#include <QtCore/QString>
#include <QtCore/QStringList>
#include <QtCore/QVector>
#include <QtCore/QList>
#include <QtXml/QDomDocument>
#include "JournallingObject.h"
@@ -96,7 +94,7 @@ public:
{
typedef QMap<QString, QString> AttributeMap;
inline Key( Plugin::Descriptor * _desc = NULL,
inline Key( const Plugin::Descriptor * _desc = NULL,
const QString & _name = QString(),
const AttributeMap & _am = AttributeMap() )
:
@@ -116,7 +114,7 @@ public:
name != QString::null;
}
Plugin::Descriptor * desc;
const Plugin::Descriptor * desc;
QString name;
AttributeMap attributes;
} ;
@@ -151,6 +149,9 @@ public:
} ;
// typedef a list so we can easily work with list of plugin descriptors
typedef QList<Descriptor> DescriptorList;
// contructor of a plugin
Plugin( const Descriptor * _descriptor, Model * _parent );
virtual ~Plugin();
@@ -188,9 +189,8 @@ public:
static Plugin * instantiate( const QString & _plugin_name,
Model * _parent, void * _data );
// fills given vector with descriptors of all available plugins
static void getDescriptorsOfAvailPlugins(
QVector<Descriptor> & _plugin_descs );
// fills given list with descriptors of all available plugins
static void getDescriptorsOfAvailPlugins( DescriptorList & _plugin_descs );
// create a view for the model
PluginView * createView( QWidget * _parent );

View File

@@ -1,8 +1,8 @@
/*
* plugin_browser.h - include file for pluginBrowser
*
* Copyright (c) 2005-2007 Tobias Doerffel <tobydox/at/users.sourceforge.net>
*
* Copyright (c) 2005-2009 Tobias Doerffel <tobydox/at/users.sourceforge.net>
*
* This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net
*
* This program is free software; you can redistribute it and/or
@@ -22,15 +22,12 @@
*
*/
#ifndef _PLUGIN_BROWSER_H
#define _PLUGIN_BROWSER_H
#include <QtCore/QTimer>
#include <QtCore/QVector>
#include <QtGui/QPixmap>
#include "side_bar_widget.h"
#include "Plugin.h"
@@ -47,7 +44,7 @@ public:
private:
QVector<Plugin::Descriptor> m_pluginDescriptors;
Plugin::DescriptorList m_pluginDescriptors;
QWidget * m_view;

View File

@@ -1778,10 +1778,10 @@ p->putValue( jt->pos, value, false );
// process all effects
EffectKeyList effKeys;
QVector<Plugin::Descriptor> pluginDescs;
Plugin::DescriptorList pluginDescs;
Plugin::getDescriptorsOfAvailPlugins( pluginDescs );
for( QVector<Plugin::Descriptor>::Iterator it = pluginDescs.begin();
it != pluginDescs.end(); ++it )
for( Plugin::DescriptorList::ConstIterator it = pluginDescs.begin();
it != pluginDescs.end(); ++it )
{
if( it->type != Plugin::Effect )
{

View File

@@ -52,7 +52,7 @@ ImportFilter::~ImportFilter()
void ImportFilter::import( const QString & _file_to_import,
trackContainer * _tc )
{
QVector<Descriptor> d;
DescriptorList d;
Plugin::getDescriptorsOfAvailPlugins( d );
bool successful = false;
@@ -63,8 +63,8 @@ void ImportFilter::import( const QString & _file_to_import,
const bool j = engine::projectJournal()->isJournalling();
engine::projectJournal()->setJournalling( false );
for( QVector<Plugin::Descriptor>::Iterator it = d.begin();
it != d.end(); ++it )
for( Plugin::DescriptorList::ConstIterator it = d.begin();
it != d.end(); ++it )
{
if( it->type == Plugin::ImportFilter )
{

View File

@@ -131,7 +131,7 @@ Plugin * Plugin::instantiate( const QString & _plugin_name, Model * _parent,
void Plugin::getDescriptorsOfAvailPlugins( QVector<Descriptor> & _plugin_descs )
void Plugin::getDescriptorsOfAvailPlugins( DescriptorList & _plugin_descs )
{
QDir directory( configManager::inst()->pluginDir() );
#ifdef LMMS_BUILD_WIN32

View File

@@ -119,11 +119,11 @@ case ResourceItem::TypePluginSpecificResource:
}
// iterate through all plugins
QVector<Plugin::Descriptor> descriptors;
Plugin::DescriptorList descriptors;
Plugin::getDescriptorsOfAvailPlugins( descriptors );
for( QVector<Plugin::Descriptor>::iterator it = descriptors.begin();
it != descriptors.end(); ++it )
for( Plugin::DescriptorList::ConstIterator it = descriptors.begin();
it != descriptors.end(); ++it )
{
if( it->supportsFileType( ext ) )
{

View File

@@ -213,9 +213,9 @@ void engine::updateFramesPerTick()
void engine::initPluginFileHandling()
{
QVector<Plugin::Descriptor> pluginDescriptors;
Plugin::DescriptorList pluginDescriptors;
Plugin::getDescriptorsOfAvailPlugins( pluginDescriptors );
for( QVector<Plugin::Descriptor>::Iterator it = pluginDescriptors.begin();
for( Plugin::DescriptorList::ConstIterator it = pluginDescriptors.begin();
it != pluginDescriptors.end(); ++it )
{
if( it->type == Plugin::Instrument )

View File

@@ -44,7 +44,7 @@ EffectSelectDialog::EffectSelectDialog( QWidget * _parent ) :
// query effects
Plugin::getDescriptorsOfAvailPlugins( m_pluginDescriptors );
for( QVector<Plugin::Descriptor>::Iterator it = m_pluginDescriptors.begin();
for( Plugin::DescriptorList::ConstIterator it = m_pluginDescriptors.begin();
it != m_pluginDescriptors.end(); ++it )
{
if( it->type != Plugin::Effect )

View File

@@ -268,9 +268,9 @@ void MainWindow::finalize()
m_toolsMenu = new QMenu( this );
QVector<Plugin::Descriptor> pluginDescriptors;
Plugin::DescriptorList pluginDescriptors;
Plugin::getDescriptorsOfAvailPlugins( pluginDescriptors );
for( QVector<Plugin::Descriptor>::iterator it = pluginDescriptors.begin();
for( Plugin::DescriptorList::ConstIterator it = pluginDescriptors.begin();
it != pluginDescriptors.end(); ++it )
{
if( it->type == Plugin::Tool )

View File

@@ -1,8 +1,8 @@
/*
* plugin_browser.cpp - implementation of the plugin-browser
*
* Copyright (c) 2005-2008 Tobias Doerffel <tobydox/at/users.sourceforge.net>
*
* Copyright (c) 2005-2009 Tobias Doerffel <tobydox/at/users.sourceforge.net>
*
* This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net
*
* This program is free software; you can redistribute it and/or
@@ -22,13 +22,11 @@
*
*/
#include <QtGui/QLabel>
#include <QtGui/QPainter>
#include <QtGui/QCursor>
#include <QtGui/QMouseEvent>
#include "plugin_browser.h"
#include "embed.h"
#include "debug.h"
@@ -64,14 +62,12 @@ pluginBrowser::pluginBrowser( QWidget * _parent ) :
Plugin::getDescriptorsOfAvailPlugins( m_pluginDescriptors );
for( QVector<Plugin::Descriptor>::iterator it =
m_pluginDescriptors.begin();
it != m_pluginDescriptors.end(); ++it )
for( Plugin::DescriptorList::ConstIterator it = m_pluginDescriptors.begin();
it != m_pluginDescriptors.end(); ++it )
{
if( it->type == Plugin::Instrument )
{
pluginDescWidget * p = new pluginDescWidget( *it,
m_view );
pluginDescWidget * p = new pluginDescWidget( *it, m_view );
p->show();
view_layout->addWidget( p );
}