//
//     Copyright 2007 Jim Bublitz <jbublitz@nwinternet.com>
//     Earlier copyrights 1998 - 2006 Jim Bublitz also apply


//                 Generated by preSip


// This file is part of PyKDE4.

// PyKDE4 is free software; you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as
// published by the Free Software Foundation; either version 2.1 of
// the License, or (at your option) any later version.

// PyKDE4 is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.

// You should have received a copy of the GNU General Public License
// along with this program.  If not, see <http://www.gnu.org/licenses/>.

namespace KTextEditor
{

class Range
{
%TypeHeaderCode
#include <ktexteditor/range.h>
%End


public:
                            Range ();
                            Range (const KTextEditor::Cursor& start, const KTextEditor::Cursor& end);
                            Range (const KTextEditor::Cursor& start, int width);
                            Range (const KTextEditor::Cursor& start, int endLine, int endColumn);
                            Range (int startLine, int startColumn, int endLine, int endColumn);
                            Range (const KTextEditor::Range& copy);
    virtual bool            isValid () const;
    static KTextEditor::Range  invalid ();
//ig    KTextEditor::Cursor&    start ();
//ig    KTextEditor::Cursor&    end ();
    void                    setBothLines (int line);
    void                    setBothColumns (int column);
    virtual void            setRange (const KTextEditor::Range& range);
    void                    setRange (const KTextEditor::Cursor& start, const KTextEditor::Cursor& end);
    virtual bool            expandToRange (const KTextEditor::Range& range);
    virtual bool            confineToRange (const KTextEditor::Range& range);
    bool                    onSingleLine () const;
    int                     numberOfLines () const;
    int                     columnWidth () const;
    bool                    isEmpty () const;
    bool                    contains (const KTextEditor::Range& range) const;
    bool                    contains (const KTextEditor::Cursor& cursor) const;
    bool                    containsLine (int line) const;
//ig    bool                    containsColumn (int column) const;
    bool                    overlaps (const KTextEditor::Range& range) const;
    bool                    overlapsLine (int line) const;
    bool                    overlapsColumn (int column) const;
    int                     positionRelativeToCursor (const KTextEditor::Cursor& cursor) const;
    int                     positionRelativeToLine (int line) const;
    bool                    boundaryAtCursor (const KTextEditor::Cursor& cursor) const;
    bool                    boundaryOnLine (int line) const;
//ig    bool                    boundaryOnColumn (int column) const;
    KTextEditor::Range      intersect (const KTextEditor::Range& range) const;
    KTextEditor::Range      encompass (const KTextEditor::Range& range) const;
//ig    KTextEditor::Range      operator + (const KTextEditor::Range& r1, const KTextEditor::Range& r2);
//ig    KTextEditor::Range&     operator += (KTextEditor::Range& r1, const KTextEditor::Range& r2);
//ig    KTextEditor::Range      operator - (const KTextEditor::Range& r1, const KTextEditor::Range& r2);
//ig    KTextEditor::Range&     operator -= (KTextEditor::Range& r1, const KTextEditor::Range& r2);
//ig    KTextEditor::Range      operator & (const KTextEditor::Range& r1, const KTextEditor::Range& r2);
//ig    KTextEditor::Range&     operator &= (KTextEditor::Range& r1, const KTextEditor::Range& r2);
//ig    bool                    operator == (const KTextEditor::Range& r1, const KTextEditor::Range& r2);
//ig    bool                    operator != (const KTextEditor::Range& r1, const KTextEditor::Range& r2);
//ig    bool                    operator > (const KTextEditor::Range& r1, const KTextEditor::Range& r2);
//ig    bool                    operator < (const KTextEditor::Range& r1, const KTextEditor::Range& r2);


//mt  undefined symbol: QDebug -- need mapped type?
//mt  undefined symbol: QDebug -- need mapped type?
//mt     QDebug               operator << (QDebug, const KTextEditor::Range&);


protected:
                            Range (KTextEditor::Cursor* start, KTextEditor::Cursor* end);
    virtual void            rangeChanged (KTextEditor::Cursor* cursor, const KTextEditor::Range& from);




public:
    virtual ~Range ();
    const KTextEditor::Cursor&  start () const;
    const KTextEditor::Cursor&  end () const;
//ig    QDebug                  operator << (QDebug s, const KTextEditor::Range& range);
};
// class Range

};
// namespace KTextEditor

%ModuleHeaderCode
//ctscc
#include <ktexteditor/range.h>
%End
