//Auto-generated by kalyptus. DO NOT EDIT.
namespace KTextEditor {
    using Kimono;
    using System;
    using Qyoto;
    using System.Collections.Generic;
    /// <remarks>
    ///  \short An item model for providing code completion, and meta information for
    ///         enhanced presentation.
    ///  \section compmodel_intro Introduction
    ///  The CodeCompletionModel is the actual workhorse to provide code completions
    ///  in a KTextEditor.View. It is meant to be used in conjunction with the
    ///  CodeCompletionInterface. The CodeCompletionModel is not meant to be used as
    ///  is. Rather you need to implement a subclass of CodeCompletionModel to actually
    ///  generate completions appropriate for your type of Document.
    ///  \section compmodel_implementing Implementing a CodeCompletionModel
    ///  The CodeCompletionModel is a QAbstractItemModel, and can be subclassed in the
    ///  same way. It provides default implementations of several members, however, so
    ///  in most cases (if your completions are essentially a non-hierarchical, flat list
    ///  of matches) you will only need to overload few functions.
    ///  \section compmodel_flatlist Implementing a CodeCompletionModel for a flat list
    ///  For the simple case of a flat list of completions, you will need to:
    ///   - Implement completionInvoked() to actually generate/update the list of completion
    ///  matches
    ///   - implement itemData() (or QAbstractItemModel.Data()) to return the information that
    ///  should be displayed for each match.
    ///   - use setRowCount() to reflect the number of matches.
    ///  \section compmodel_roles_columns Columns and roles
    ///  \todo document the meaning and usage of the columns and roles used by the
    ///  CodeCompletionInterface
    ///  \section compmodel_usage Using the new CodeCompletionModel
    ///  To start using your CodeCompletionModel, refer to CodeCompletionInterface.
    /// </remarks>        <author> Hamish Rodda <rodda@kde.org>
    ///  </author>
    ///         <short>    \short An item model for providing code completion, and meta information for         enhanced presentation.</short>
    [SmokeClass("KTextEditor::CodeCompletionModel")]
    public partial class CodeCompletionModel : QAbstractItemModel, IDisposable {
        protected CodeCompletionModel(Type dummy) : base((Type) null) {}
        protected new void CreateProxy() {
            interceptor = new SmokeInvocation(typeof(CodeCompletionModel), this);
        }
        private static SmokeInvocation staticInterceptor = null;
        static CodeCompletionModel() {
            staticInterceptor = new SmokeInvocation(typeof(CodeCompletionModel), null);
        }
        public enum Columns {
            Prefix = 0,
            Icon = 1,
            Scope = 2,
            Name = 3,
            Arguments = 4,
            Postfix = 5,
        }
        public enum CompletionProperty {
            NoProperty = 0x0,
            FirstProperty = 0x1,
            Public = 0x1,
            Protected = 0x2,
            Private = 0x4,
            Static = 0x8,
            Const = 0x10,
            Namespace = 0x20,
            Class = 0x40,
            Struct = 0x80,
            Union = 0x100,
            Function = 0x200,
            Variable = 0x400,
            Enum = 0x800,
            Template = 0x1000,
            TypeAlias = 0x2000,
            Virtual = 0x4000,
            Override = 0x8000,
            Inline = 0x10000,
            Friend = 0x20000,
            Signal = 0x40000,
            Slot = 0x80000,
            LocalScope = 0x100000,
            NamespaceScope = 0x200000,
            GlobalScope = 0x400000,
            LastProperty = GlobalScope,
        }
        public enum HighlightMethod {
            NoHighlighting = 0x0,
            InternalHighlighting = 0x1,
            CustomHighlighting = 0x2,
        }
        public enum ExtraItemDataRoles {
            CompletionRole = Qt.ItemDataRole.UserRole,
            ScopeIndex = 0,
            MatchQuality = 1,
            SetMatchContext = 2,
            HighlightingMethod = 3,
            CustomHighlight = 4,
            InheritanceDepth = 5,
            IsExpandable = 6,
            ExpandingWidget = 7,
            ItemSelected = 8,
            ArgumentHintDepth = 9,
            BestMatchesCount = 10,
            AccessibilityNext = 11,
            AccessibilityPrevious = 12,
            AccessibilityAccept = 13,
            GroupRole = 14,
        }
        public enum InvocationType {
            AutomaticInvocation = 0,
            UserInvocation = 1,
            ManualInvocation = 2,
        }
        public static int columnCount() {
            return (int) staticInterceptor.Invoke("ColumnCount", "ColumnCount()", typeof(int));
        }
        public static int LastItemDataRole() {
            return (int) staticInterceptor.Invoke("LastItemDataRole", "LastItemDataRole()", typeof(int));
        }
        public CodeCompletionModel(QObject parent) : this((Type) null) {
            CreateProxy();
            interceptor.Invoke("CodeCompletionModel#", "CodeCompletionModel(QObject*)", typeof(void), typeof(QObject), parent);
        }
        public void SetRowCount(int rowCount) {
            interceptor.Invoke("setRowCount$", "setRowCount(int)", typeof(void), typeof(int), rowCount);
        }
        /// <remarks>
        ///  This function is responsible to generating / updating the list of current
        ///  completions. The default implementation does nothing.
        ///  When implementing this function, remember to call setRowCount() (or implement
        ///  rowCount()), and to generate the appropriate change notifications (for instance
        ///  by calling QAbstractItemModel.Reset()).
        /// <param> name="view" The view to generate completions for
        /// </param><param> name="range" The range of text to generate completions for
        ///  </param></remarks>        <short>    This function is responsible to generating / updating the list of current  completions.</short>
        [SmokeMethod("completionInvoked(KTextEditor::View*, const KTextEditor::Range&, KTextEditor::CodeCompletionModel::InvocationType)")]
        public virtual void CompletionInvoked(KTextEditor.View view, KTextEditor.Range range, KTextEditor.CodeCompletionModel.InvocationType invocationType) {
            interceptor.Invoke("completionInvoked##$", "completionInvoked(KTextEditor::View*, const KTextEditor::Range&, KTextEditor::CodeCompletionModel::InvocationType)", typeof(void), typeof(KTextEditor.View), view, typeof(KTextEditor.Range), range, typeof(KTextEditor.CodeCompletionModel.InvocationType), invocationType);
        }
        /// <remarks>
        ///  Reimplemented from QAbstractItemModel.ColumnCount(). The default implementation
        ///  returns ColumnCount for all indices.
        ///  </remarks>        <short>    Reimplemented from QAbstractItemModel.ColumnCount().</short>
        [SmokeMethod("columnCount(const QModelIndex&) const")]
        public override int ColumnCount(QModelIndex parent) {
            return (int) interceptor.Invoke("columnCount#", "columnCount(const QModelIndex&) const", typeof(int), typeof(QModelIndex), parent);
        }
        [SmokeMethod("columnCount() const")]
        public virtual int ColumnCount() {
            return (int) interceptor.Invoke("columnCount", "columnCount() const", typeof(int));
        }
        /// <remarks>
        ///  Reimplemented from QAbstractItemModel.Index(). The default implementation
        ///  returns a standard QModelIndex as long as the row and column are valid.
        ///  </remarks>        <short>    Reimplemented from QAbstractItemModel.Index().</short>
        [SmokeMethod("index(int, int, const QModelIndex&) const")]
        public override QModelIndex Index(int row, int column, QModelIndex parent) {
            return (QModelIndex) interceptor.Invoke("index$$#", "index(int, int, const QModelIndex&) const", typeof(QModelIndex), typeof(int), row, typeof(int), column, typeof(QModelIndex), parent);
        }
        [SmokeMethod("index(int, int) const")]
        public virtual QModelIndex Index(int row, int column) {
            return (QModelIndex) interceptor.Invoke("index$$", "index(int, int) const", typeof(QModelIndex), typeof(int), row, typeof(int), column);
        }
        /// <remarks>
        ///  Reimplemented from QAbstractItemModel.ItemData(). The default implementation
        ///  returns a map with the QAbstractItemModel.Data() for all roles that are used
        ///  by the CodeCompletionInterface. You will need to reimplement either this
        ///  function or QAbstractItemModel.Data() in your CodeCompletionModel.
        ///  </remarks>        <short>    Reimplemented from QAbstractItemModel.ItemData().</short>
        [SmokeMethod("itemData(const QModelIndex&) const")]
        public override Dictionary<int, QVariant> ItemData(QModelIndex index) {
            return (Dictionary<int, QVariant>) interceptor.Invoke("itemData#", "itemData(const QModelIndex&) const", typeof(Dictionary<int, QVariant>), typeof(QModelIndex), index);
        }
        /// <remarks>
        ///  Reimplemented from QAbstractItemModel.Parent(). The default implementation
        ///  returns an invalid QModelIndex for all items. This is appropriate for
        ///  non-hierarchical / flat lists of completions.
        ///  </remarks>        <short>    Reimplemented from QAbstractItemModel.Parent().</short>
        [SmokeMethod("parent(const QModelIndex&) const")]
        public override QModelIndex Parent(QModelIndex index) {
            return (QModelIndex) interceptor.Invoke("parent#", "parent(const QModelIndex&) const", typeof(QModelIndex), typeof(QModelIndex), index);
        }
        /// <remarks>
        ///  Reimplemented from QAbstractItemModel.RowCount(). The default implementation
        ///  returns the value set by setRowCount() for invalid (toplevel) indices, and 0
        ///  for all other indices. This is appropriate for non-hierarchical / flat lists
        ///  of completions
        ///  </remarks>        <short>    Reimplemented from QAbstractItemModel.RowCount().</short>
        [SmokeMethod("rowCount(const QModelIndex&) const")]
        public override int RowCount(QModelIndex parent) {
            return (int) interceptor.Invoke("rowCount#", "rowCount(const QModelIndex&) const", typeof(int), typeof(QModelIndex), parent);
        }
        [SmokeMethod("rowCount() const")]
        public virtual int RowCount() {
            return (int) interceptor.Invoke("rowCount", "rowCount() const", typeof(int));
        }
        ~CodeCompletionModel() {
            interceptor.Invoke("~CodeCompletionModel", "~CodeCompletionModel()", typeof(void));
        }
        public new void Dispose() {
            interceptor.Invoke("~CodeCompletionModel", "~CodeCompletionModel()", typeof(void));
        }
        protected new ICodeCompletionModelSignals Emit {
            get { return (ICodeCompletionModelSignals) Q_EMIT; }
        }
    }

    public interface ICodeCompletionModelSignals : IQAbstractItemModelSignals {
    }
}
