00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef _SOPRANO_PLUGIN_MANAGER_H_
00023 #define _SOPRANO_PLUGIN_MANAGER_H_
00024
00025 #include "sopranotypes.h"
00026 #include "soprano_export.h"
00027
00028 #include <QtCore/QObject>
00029 #include <QtCore/QStringList>
00030
00031
00032 namespace Soprano
00033 {
00034 class Backend;
00035 class Parser;
00036 class Serializer;
00037
00038 namespace Query {
00039 class Parser;
00040 class Serializer;
00041 }
00042
00055 class SOPRANO_EXPORT PluginManager : public QObject
00056 {
00057 Q_OBJECT
00058
00059 public:
00060 ~PluginManager();
00061
00063
00075 void setPluginSearchPath( const QStringList& path, bool useDefaults = true );
00076
00091 bool loadCustomPlugin( const QString& path );
00092
00106 const Backend* loadCustomBackend( const QString& path );
00107
00121 const Parser* loadCustomParser( const QString& path );
00122
00136 const Serializer* loadCustomSerializer( const QString& path );
00138
00140
00146 const Backend* discoverBackendByName( const QString& name );
00147
00156 const Backend* discoverBackendByFeatures( BackendFeatures features, const QStringList& userFeatures = QStringList() );
00157
00158 QList<const Backend*> allBackends();
00160
00162
00168 const Parser* discoverParserByName( const QString& name );
00169
00182 const Parser* discoverParserForSerialization( RdfSerialization serialization, const QString& userSerialization = QString() );
00183
00184 QList<const Parser*> allParsers();
00186
00188
00194 const Serializer* discoverSerializerByName( const QString& name );
00195
00208 const Serializer* discoverSerializerForSerialization( RdfSerialization serialization, const QString& userSerialization = QString() );
00209
00210 QList<const Serializer*> allSerializers();
00212
00222
00223
00234
00235
00236
00238
00240
00246
00247
00258
00259
00260
00262
00268 static PluginManager* instance();
00269
00270 private:
00271 PluginManager( QObject* parent = 0 );
00272 void loadAllPlugins();
00273 void loadPlugin( const QString& path );
00274 void loadPlugins( const QString& path );
00275
00276 class Private;
00277 Private* const d;
00278
00279 friend class PluginManagerFactory;
00280 };
00281 }
00282
00283 #endif