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

#ifndef __java_util_NavigableSet__
#define __java_util_NavigableSet__

#pragma interface

#include <java/lang/Object.h>
#include <gcj/array.h>


class java::util::NavigableSet : public ::java::lang::Object
{

public:
  virtual ::java::lang::Object * lower(::java::lang::Object *) = 0;
  virtual ::java::lang::Object * floor(::java::lang::Object *) = 0;
  virtual ::java::lang::Object * ceiling(::java::lang::Object *) = 0;
  virtual ::java::lang::Object * higher(::java::lang::Object *) = 0;
  virtual ::java::lang::Object * pollFirst() = 0;
  virtual ::java::lang::Object * pollLast() = 0;
  virtual ::java::util::Iterator * iterator() = 0;
  virtual ::java::util::NavigableSet * descendingSet() = 0;
  virtual ::java::util::Iterator * descendingIterator() = 0;
  virtual ::java::util::NavigableSet * subSet(::java::lang::Object *, jboolean, ::java::lang::Object *, jboolean) = 0;
  virtual ::java::util::NavigableSet * headSet(::java::lang::Object *, jboolean) = 0;
  virtual ::java::util::NavigableSet * tailSet(::java::lang::Object *, jboolean) = 0;
  virtual ::java::util::SortedSet * subSet(::java::lang::Object *, ::java::lang::Object *) = 0;
  virtual ::java::util::SortedSet * headSet(::java::lang::Object *) = 0;
  virtual ::java::util::SortedSet * tailSet(::java::lang::Object *) = 0;
  virtual ::java::util::Comparator * comparator() = 0;
  virtual ::java::lang::Object * first() = 0;
  virtual ::java::lang::Object * last() = 0;
  virtual jboolean add(::java::lang::Object *) = 0;
  virtual jboolean addAll(::java::util::Collection *) = 0;
  virtual void clear() = 0;
  virtual jboolean contains(::java::lang::Object *) = 0;
  virtual jboolean containsAll(::java::util::Collection *) = 0;
  virtual jboolean isEmpty() = 0;
  virtual jboolean remove(::java::lang::Object *) = 0;
  virtual jboolean removeAll(::java::util::Collection *) = 0;
  virtual jboolean retainAll(::java::util::Collection *) = 0;
  virtual jint size() = 0;
  virtual JArray< ::java::lang::Object * > * toArray() = 0;
  virtual JArray< ::java::lang::Object * > * toArray(JArray< ::java::lang::Object * > *) = 0;
  static ::java::lang::Class class$;
} __attribute__ ((java_interface));

#endif // __java_util_NavigableSet__
