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
00138 SOPRANO_EXPORT bool isOptionInSettings( const BackendSettings& settings, BackendOption option, const QString& userOptionName = QString() );
00139
00154 SOPRANO_EXPORT BackendSetting& settingInSettings( BackendSettings& settings, BackendOption option, const QString& userOptionName = QString() );
00155
00171 SOPRANO_EXPORT QVariant valueInSettings( const BackendSettings& settings, BackendOption option, const QString& userOptionName = QString() );
00172
00173
00187 class SOPRANO_EXPORT Backend : public Plugin, public Error::ErrorCache
00188 {
00189 public:
00190 Backend( const QString& name );
00191 virtual ~Backend();
00192
00204 virtual StorageModel* createModel( const BackendSettings& settings = BackendSettings() ) const = 0;
00205
00221 virtual bool deleteModelData( const BackendSettings& settings ) const = 0;
00222
00230 virtual BackendFeatures supportedFeatures() const = 0;
00231
00241 virtual QStringList supportedUserFeatures() const;
00242
00249 bool supportsFeatures( BackendFeatures feature, const QStringList& userFeatures = QStringList() ) const;
00250
00251 private:
00252 class Private;
00253 Private* const d;
00254 };
00255 }
00256
00257 Q_DECLARE_INTERFACE(Soprano::Backend, "org.soprano.plugins.Backend/2.1")
00258
00259 #endif