00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef _SOPRANO_BACKEND_H_
00023 #define _SOPRANO_BACKEND_H_
00024
00025 #include "plugin.h"
00026 #include "error.h"
00027 #include "soprano_export.h"
00028 #include "sopranotypes.h"
00029
00030 #include <QtCore/QStringList>
00031 #include <QtCore/QVariant>
00032 #include <QtCore/QSharedDataPointer>
00033
00034
00035 namespace Soprano
00036 {
00037 class StorageModel;
00038
00052 class SOPRANO_EXPORT BackendSetting
00053 {
00054 public:
00059 BackendSetting();
00060
00064 BackendSetting( BackendOption option );
00065
00069 BackendSetting( BackendOption s, const QVariant& value_ );
00070
00074 BackendSetting( const QString& userOption, const QVariant& value_ );
00075
00079 BackendSetting( const BackendSetting& other );
00080
00084 ~BackendSetting();
00085
00089 BackendSetting& operator=( const BackendSetting& other );
00090
00095 BackendOption option() const;
00096
00100 QString userOptionName() const;
00101
00105 QVariant value() const;
00106
00110 void setValue( const QVariant& value );
00111
00112 private:
00113 class Private;
00114 QSharedDataPointer<Private> d;
00115 };
00116
00122 typedef QList<BackendSetting> BackendSettings;
00123
00136 SOPRANO_EXPORT bool isOptionInSettings( const BackendSettings& settings, BackendOption option, const QString& userOptionName = QString() );
00137
00150 SOPRANO_EXPORT BackendSetting& settingInSettings( BackendSettings& settings, BackendOption option, const QString& userOptionName = QString() );
00151
00165 SOPRANO_EXPORT QVariant valueInSettings( const BackendSettings& settings, BackendOption option, const QString& userOptionName = QString() );
00166
00167
00181 class SOPRANO_EXPORT Backend : public Plugin, public Error::ErrorCache
00182 {
00183 public:
00184 Backend( const QString& name );
00185 virtual ~Backend();
00186
00198 virtual StorageModel* createModel( const BackendSettings& settings = BackendSettings() ) const = 0;
00199
00215 virtual bool deleteModelData( const BackendSettings& settings ) const = 0;
00216
00224 virtual BackendFeatures supportedFeatures() const = 0;
00225
00235 virtual QStringList supportedUserFeatures() const;
00236
00243 bool supportsFeatures( BackendFeatures feature, const QStringList& userFeatures = QStringList() ) const;
00244
00245 private:
00246 class Private;
00247 Private* const d;
00248 };
00249 }
00250
00251 Q_DECLARE_INTERFACE(Soprano::Backend, "org.soprano.plugins.Backend/2.1")
00252
00253 #endif