//Auto-generated by kalyptus. DO NOT EDIT.
namespace KTextEditor {
    using Kimono;
    using System;
    using Qyoto;
    /// <remarks>
    ///  You must inherit your completion-model from CodeCompletionModel2 if you want to
    ///  use a hierarchical structure and want to receive execution-feedback.
    /// </remarks>        <short>    You must inherit your completion-model from CodeCompletionModel2 if you want to  use a hierarchical structure and want to receive execution-feedback.</short>
    ///         <see> CodeCompletionModel.GroupRole</see>
    [SmokeClass("KTextEditor::CodeCompletionModel2")]
    public class CodeCompletionModel2 : KTextEditor.CodeCompletionModel, IDisposable {
        protected CodeCompletionModel2(Type dummy) : base((Type) null) {}
        protected new void CreateProxy() {
            interceptor = new SmokeInvocation(typeof(CodeCompletionModel2), this);
        }
        public CodeCompletionModel2(QObject parent) : this((Type) null) {
            CreateProxy();
            interceptor.Invoke("CodeCompletionModel2#", "CodeCompletionModel2(QObject*)", typeof(void), typeof(QObject), parent);
        }
        /// <remarks>
        ///  This function is responsible for inserting a selected completion into the
        ///  document. The default implementation replaces the text that the completions
        ///  were based on with the Qt.DisplayRole of the Name column of the given match.
        /// <param> name="document" The document to insert the completion into
        /// </param><param> name="word" The Range that the completions are based on (what the user entered
        ///  so far)
        /// </param><param> name="row" The row of the completion match to insert
        ///  </param></remarks>        <short>    This function is responsible for inserting a selected completion into the  document.</short>
        [SmokeMethod("executeCompletionItem2(KTextEditor::Document*, const KTextEditor::Range&, const QModelIndex&) const")]
        public virtual void ExecuteCompletionItem2(KTextEditor.Document document, KTextEditor.Range word, QModelIndex index) {
            interceptor.Invoke("executeCompletionItem2###", "executeCompletionItem2(KTextEditor::Document*, const KTextEditor::Range&, const QModelIndex&) const", typeof(void), typeof(KTextEditor.Document), document, typeof(KTextEditor.Range), word, typeof(QModelIndex), index);
        }
        ~CodeCompletionModel2() {
            interceptor.Invoke("~CodeCompletionModel2", "~CodeCompletionModel2()", typeof(void));
        }
        public new void Dispose() {
            interceptor.Invoke("~CodeCompletionModel2", "~CodeCompletionModel2()", typeof(void));
        }
        protected new ICodeCompletionModel2Signals Emit {
            get { return (ICodeCompletionModel2Signals) Q_EMIT; }
        }
    }

    public interface ICodeCompletionModel2Signals : KTextEditor.ICodeCompletionModelSignals {
    }
}
