//
//     Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
//     Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
//     may also apply


//                 Generated by preSip
//            module khtml  version KDE 3.5.3


// This software is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License as
// published by the Free Software Foundation; either version 2 of
// the License, or (at your option) any later version.
//
// This software 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 library; see the file COPYING.
// If not, write to the Free Software Foundation, Inc.,
// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

namespace DOM
{

class RangeException
{
%TypeHeaderCode
#include <dom2_range.h>
%End


public:
                         RangeException (ushort);
                         RangeException (const DOM::RangeException&);

    enum RangeExceptionCode
    {
        BAD_BOUNDARYPOINTS_ERR, 
        INVALID_NODE_TYPE_ERR, 
        _EXCEPTION_OFFSET, 
        _EXCEPTION_MAX
    };

    ushort               code;

};  // class RangeException


class Range
{
%TypeHeaderCode
#include <dom2_range.h>
%End


public:
                         Range ();
                         Range (const DOM::Document);
                         Range (const DOM::Range&);
                         Range (const DOM::Node, const long, const DOM::Node, const long);
    DOM::Node            startContainer () const;
    long                 startOffset () const;
    DOM::Node            endContainer () const;
    long                 endOffset () const;
    bool                 collapsed () const;
    DOM::Node            commonAncestorContainer ();
    void                 setStart (const DOM::Node&, long);
    void                 setEnd (const DOM::Node&, long);
    void                 setStartBefore (const DOM::Node&);
    void                 setStartAfter (const DOM::Node&);
    void                 setEndBefore (const DOM::Node&);
    void                 setEndAfter (const DOM::Node&);
    void                 collapse (bool);
    void                 selectNode (const DOM::Node&);
    void                 selectNodeContents (const DOM::Node&);

    enum CompareHow
    {
        START_TO_START, 
        START_TO_END, 
        END_TO_END, 
        END_TO_START
    };

    short                compareBoundaryPoints (DOM::Range::CompareHow, const DOM::Range&);
    bool                 boundaryPointsValid ();
    void                 deleteContents ();
    DOM::DocumentFragment extractContents ();
    DOM::DocumentFragment cloneContents ();
    void                 insertNode (const DOM::Node&);
    void                 surroundContents (const DOM::Node&);
    DOM::Range           cloneRange ();
    DOM::DOMString       toString ();
    DOM::DOMString       toHTML ();

%If ( KDE_3_2_0 -  )
    DOM::DocumentFragment createContextualFragment (const DOM::DOMString&);
%End

    void                 detach ();
    bool                 isDetached () const;
//ig     RangeImpl*           handle () const;
    bool                 isNull () const;

protected:
//ig                          Range (RangeImpl*);

};  // class Range

};  // namespace DOM

