
// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-

#ifndef __org_w3c_dom_ranges_Range__
#define __org_w3c_dom_ranges_Range__

#pragma interface

#include <java/lang/Object.h>
extern "Java"
{
  namespace org
  {
    namespace w3c
    {
      namespace dom
      {
          class DocumentFragment;
          class Node;
        namespace ranges
        {
            class Range;
        }
      }
    }
  }
}

class org::w3c::dom::ranges::Range : public ::java::lang::Object
{

public:
  virtual ::org::w3c::dom::Node * getStartContainer() = 0;
  virtual jint getStartOffset() = 0;
  virtual ::org::w3c::dom::Node * getEndContainer() = 0;
  virtual jint getEndOffset() = 0;
  virtual jboolean getCollapsed() = 0;
  virtual ::org::w3c::dom::Node * getCommonAncestorContainer() = 0;
  virtual void setStart(::org::w3c::dom::Node *, jint) = 0;
  virtual void setEnd(::org::w3c::dom::Node *, jint) = 0;
  virtual void setStartBefore(::org::w3c::dom::Node *) = 0;
  virtual void setStartAfter(::org::w3c::dom::Node *) = 0;
  virtual void setEndBefore(::org::w3c::dom::Node *) = 0;
  virtual void setEndAfter(::org::w3c::dom::Node *) = 0;
  virtual void collapse(jboolean) = 0;
  virtual void selectNode(::org::w3c::dom::Node *) = 0;
  virtual void selectNodeContents(::org::w3c::dom::Node *) = 0;
  virtual jshort compareBoundaryPoints(jshort, ::org::w3c::dom::ranges::Range *) = 0;
  virtual void deleteContents() = 0;
  virtual ::org::w3c::dom::DocumentFragment * extractContents() = 0;
  virtual ::org::w3c::dom::DocumentFragment * cloneContents() = 0;
  virtual void insertNode(::org::w3c::dom::Node *) = 0;
  virtual void surroundContents(::org::w3c::dom::Node *) = 0;
  virtual ::org::w3c::dom::ranges::Range * cloneRange() = 0;
  virtual ::java::lang::String * toString() = 0;
  virtual void detach() = 0;
  static const jshort START_TO_START = 0;
  static const jshort START_TO_END = 1;
  static const jshort END_TO_END = 2;
  static const jshort END_TO_START = 3;
  static ::java::lang::Class class$;
} __attribute__ ((java_interface));

#endif // __org_w3c_dom_ranges_Range__
