//Auto-generated by kalyptus. DO NOT EDIT.
namespace Soprano.Inference {
    using Soprano;
    using System;
    using Qyoto;
    using System.Collections.Generic;
    /// <remarks>
    ///  \class RuleSet inferenceruleset.h Soprano/Inference/RuleSet
    ///  \brief A set of inference rules.
    ///  RuleSet represents a set of inference rules. Each Rule
    ///  has a unique name.
    ///  \author Sebastian Trueg <trueg@kde.org>
    ///          </remarks>        <short>    \class RuleSet inferenceruleset.</short>
    [SmokeClass("Soprano::Inference::RuleSet")]
    public class RuleSet : Object, IDisposable {
        protected SmokeInvocation interceptor = null;
        private IntPtr smokeObject;
        protected RuleSet(Type dummy) {}
        protected void CreateProxy() {
            interceptor = new SmokeInvocation(typeof(RuleSet), this);
        }
        private static SmokeInvocation staticInterceptor = null;
        static RuleSet() {
            staticInterceptor = new SmokeInvocation(typeof(RuleSet), null);
        }
        /// <remarks>
        ///  Create an empty RuleSet.
        ///              </remarks>        <short>    Create an empty RuleSet.</short>
        public RuleSet() : this((Type) null) {
            CreateProxy();
            interceptor.Invoke("RuleSet", "RuleSet()", typeof(void));
        }
        /// <remarks>
        ///  Copy constructor.
        ///              </remarks>        <short>    Copy constructor.</short>
        public RuleSet(Soprano.Inference.RuleSet arg1) : this((Type) null) {
            CreateProxy();
            interceptor.Invoke("RuleSet#", "RuleSet(const Soprano::Inference::RuleSet&)", typeof(void), typeof(Soprano.Inference.RuleSet), arg1);
        }
        public void Clear() {
            interceptor.Invoke("clear", "clear()", typeof(void));
        }
        /// <remarks>
        ///  Add a Rule to the set.
        ///  \param name The name the new rule is supposed to be
        ///  stored under.
        ///  \param rule The new rule to store in the set.
        ///              </remarks>        <short>    Add a Rule to the set.</short>
        public void Insert(string name, Soprano.Inference.Rule rule) {
            interceptor.Invoke("insert$#", "insert(const QString&, const Soprano::Inference::Rule&)", typeof(void), typeof(string), name, typeof(Soprano.Inference.Rule), rule);
        }
        /// <remarks>
        ///  Number of rules in the set.
        ///  \return The number of rules.
        ///              </remarks>        <short>    Number of rules in the set.</short>
        public int Count() {
            return (int) interceptor.Invoke("count", "count() const", typeof(int));
        }
        public Soprano.Inference.Rule At(int index) {
            return (Soprano.Inference.Rule) interceptor.Invoke("at$", "at(int) const", typeof(Soprano.Inference.Rule), typeof(int), index);
        }
        public Soprano.Inference.Rule Rule(string name) {
            return (Soprano.Inference.Rule) interceptor.Invoke("rule$", "rule(const QString&) const", typeof(Soprano.Inference.Rule), typeof(string), name);
        }
        public List<string> RuleNames() {
            return (List<string>) interceptor.Invoke("ruleNames", "ruleNames() const", typeof(List<string>));
        }
        public List<Soprano.Inference.Rule> AllRules() {
            return (List<Soprano.Inference.Rule>) interceptor.Invoke("allRules", "allRules() const", typeof(List<Soprano.Inference.Rule>));
        }
        ~RuleSet() {
            interceptor.Invoke("~RuleSet", "~RuleSet()", typeof(void));
        }
        public void Dispose() {
            interceptor.Invoke("~RuleSet", "~RuleSet()", typeof(void));
        }
        /// <remarks>
        ///  Read a standard %Soprano rulset.
        ///  \sa RuleParser
        ///              </remarks>        <short>    Read a standard %Soprano rulset.</short>
        public static Soprano.Inference.RuleSet standardRuleSet(Soprano.Inference.StandardRuleSet arg1) {
            return (Soprano.Inference.RuleSet) staticInterceptor.Invoke("standardRuleSet$", "standardRuleSet(Soprano::Inference::StandardRuleSet)", typeof(Soprano.Inference.RuleSet), typeof(Soprano.Inference.StandardRuleSet), arg1);
        }
    }
}
