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

#ifndef __java_util_NavigableMap__
#define __java_util_NavigableMap__

#pragma interface

#include <java/lang/Object.h>

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

public:
  virtual ::java::util::Map$Entry * lowerEntry(::java::lang::Object *) = 0;
  virtual ::java::lang::Object * lowerKey(::java::lang::Object *) = 0;
  virtual ::java::util::Map$Entry * floorEntry(::java::lang::Object *) = 0;
  virtual ::java::lang::Object * floorKey(::java::lang::Object *) = 0;
  virtual ::java::util::Map$Entry * ceilingEntry(::java::lang::Object *) = 0;
  virtual ::java::lang::Object * ceilingKey(::java::lang::Object *) = 0;
  virtual ::java::util::Map$Entry * higherEntry(::java::lang::Object *) = 0;
  virtual ::java::lang::Object * higherKey(::java::lang::Object *) = 0;
  virtual ::java::util::Map$Entry * firstEntry() = 0;
  virtual ::java::util::Map$Entry * lastEntry() = 0;
  virtual ::java::util::Map$Entry * pollFirstEntry() = 0;
  virtual ::java::util::Map$Entry * pollLastEntry() = 0;
  virtual ::java::util::NavigableMap * descendingMap() = 0;
  virtual ::java::util::NavigableSet * navigableKeySet() = 0;
  virtual ::java::util::NavigableSet * descendingKeySet() = 0;
  virtual ::java::util::NavigableMap * subMap(::java::lang::Object *, jboolean, ::java::lang::Object *, jboolean) = 0;
  virtual ::java::util::NavigableMap * headMap(::java::lang::Object *, jboolean) = 0;
  virtual ::java::util::NavigableMap * tailMap(::java::lang::Object *, jboolean) = 0;
  virtual ::java::util::SortedMap * subMap(::java::lang::Object *, ::java::lang::Object *) = 0;
  virtual ::java::util::SortedMap * headMap(::java::lang::Object *) = 0;
  virtual ::java::util::SortedMap * tailMap(::java::lang::Object *) = 0;
  virtual ::java::util::Comparator * comparator() = 0;
  virtual ::java::lang::Object * firstKey() = 0;
  virtual ::java::lang::Object * lastKey() = 0;
  virtual void clear() = 0;
  virtual jboolean containsKey(::java::lang::Object *) = 0;
  virtual jboolean containsValue(::java::lang::Object *) = 0;
  virtual ::java::util::Set * entrySet() = 0;
  virtual ::java::lang::Object * get(::java::lang::Object *) = 0;
  virtual ::java::lang::Object * put(::java::lang::Object *, ::java::lang::Object *) = 0;
  virtual jboolean isEmpty() = 0;
  virtual ::java::util::Set * keySet() = 0;
  virtual void putAll(::java::util::Map *) = 0;
  virtual ::java::lang::Object * remove(::java::lang::Object *) = 0;
  virtual jint size() = 0;
  virtual ::java::util::Collection * values() = 0;
  static ::java::lang::Class class$;
} __attribute__ ((java_interface));

#endif // __java_util_NavigableMap__
