//Auto-generated by kalyptus. DO NOT EDIT.
namespace Soprano {
    using Soprano;
    using System;
    using Qyoto;
    /// <remarks>
    ///  \class BackendSetting backend.h Soprano/BackendSetting
    ///  \brief Wraps one setting for Model creation.
    ///  A BackendSetting consists of an option type and an option value. The option type can either be a predefined
    ///  value from Soprano.BackendOption or a user defined string value that depends on the Backend implementation. In the 
    ///  latter case option has to be set to Soprano.BackendOptionUser.
    ///  \sa Backend.CreateModel(), BackendSettings, isOptionInSettings, settingInSettings, valueInSettings
    ///  \author Sebastian Trueg <trueg@kde.org>
    ///      </remarks>        <short>    \class BackendSetting backend.</short>
    [SmokeClass("Soprano::BackendSetting")]
    public class BackendSetting : Object, IDisposable {
        protected SmokeInvocation interceptor = null;
        private IntPtr smokeObject;
        protected BackendSetting(Type dummy) {}
        protected void CreateProxy() {
            interceptor = new SmokeInvocation(typeof(BackendSetting), this);
        }
        /// <remarks>
        ///  Create an empty setting.
        ///  \sa Soprano.BackendOptionNone
        ///          </remarks>        <short>    Create an empty setting.</short>
        public BackendSetting() : this((Type) null) {
            CreateProxy();
            interceptor.Invoke("BackendSetting", "BackendSetting()", typeof(void));
        }
        /// <remarks>
        ///  Create a boolean setting with a default true value.
        ///          </remarks>        <short>    Create a boolean setting with a default true value.</short>
        public BackendSetting(Soprano.BackendOption option) : this((Type) null) {
            CreateProxy();
            interceptor.Invoke("BackendSetting$", "BackendSetting(Soprano::BackendOption)", typeof(void), typeof(Soprano.BackendOption), option);
        }
        /// <remarks>
        ///  Create a standard setting with option <pre>s</pre> and value <pre>value_</pre>.
        ///          </remarks>        <short>    Create a standard setting with option \p s and value \p value_.</short>
        public BackendSetting(Soprano.BackendOption s, QVariant value_) : this((Type) null) {
            CreateProxy();
            interceptor.Invoke("BackendSetting$#", "BackendSetting(Soprano::BackendOption, const QVariant&)", typeof(void), typeof(Soprano.BackendOption), s, typeof(QVariant), value_);
        }
        /// <remarks>
        ///  Create a user setting with user option name <pre>userOption</pre> and value <pre>value_</pre>.
        ///          </remarks>        <short>    Create a user setting with user option name \p userOption and value \p value_.</short>
        public BackendSetting(string userOption, QVariant value_) : this((Type) null) {
            CreateProxy();
            interceptor.Invoke("BackendSetting$#", "BackendSetting(const QString&, const QVariant&)", typeof(void), typeof(string), userOption, typeof(QVariant), value_);
        }
        /// <remarks>
        ///  Copy constructor.
        ///          </remarks>        <short>    Copy constructor.</short>
        public BackendSetting(Soprano.BackendSetting other) : this((Type) null) {
            CreateProxy();
            interceptor.Invoke("BackendSetting#", "BackendSetting(const Soprano::BackendSetting&)", typeof(void), typeof(Soprano.BackendSetting), other);
        }
        /// <remarks>
        ///  The option that this setting sets. If Soprano.BackendOptionUser 
        ///  the option is identified by userOptionName().
        ///          </remarks>        <short>    The option that this setting sets.</short>
        public Soprano.BackendOption Option() {
            return (Soprano.BackendOption) interceptor.Invoke("option", "option() const", typeof(Soprano.BackendOption));
        }
        /// <remarks>
        ///  The name of the user option if option() is Soprano.BackendOptionUser.
        ///          </remarks>        <short>    The name of the user option if option() is Soprano.BackendOptionUser.</short>
        public string UserOptionName() {
            return (string) interceptor.Invoke("userOptionName", "userOptionName() const", typeof(string));
        }
        /// <remarks>
        ///  The value of the setting.
        ///          </remarks>        <short>    The value of the setting.</short>
        public QVariant Value() {
            return (QVariant) interceptor.Invoke("value", "value() const", typeof(QVariant));
        }
        /// <remarks>
        ///  Set the value of the Setting.
        ///          </remarks>        <short>    Set the value of the Setting.</short>
        public void SetValue(QVariant value) {
            interceptor.Invoke("setValue#", "setValue(const QVariant&)", typeof(void), typeof(QVariant), value);
        }
        ~BackendSetting() {
            interceptor.Invoke("~BackendSetting", "~BackendSetting()", typeof(void));
        }
        public void Dispose() {
            interceptor.Invoke("~BackendSetting", "~BackendSetting()", typeof(void));
        }
    }
}
