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

#ifndef __java_util_concurrent_ConcurrentNavigableMap__
#define __java_util_concurrent_ConcurrentNavigableMap__

#pragma interface

#include <java/lang/Object.h>

class java::util::concurrent::ConcurrentNavigableMap : public ::java::lang::Object
{

public:
  virtual ::java::util::concurrent::ConcurrentNavigableMap * subMap(::java::lang::Object *, jboolean, ::java::lang::Object *, jboolean) = 0;
  virtual ::java::util::concurrent::ConcurrentNavigableMap * headMap(::java::lang::Object *, jboolean) = 0;
  virtual ::java::util::concurrent::ConcurrentNavigableMap * tailMap(::java::lang::Object *, jboolean) = 0;
  virtual ::java::util::concurrent::ConcurrentNavigableMap * subMap(::java::lang::Object *, ::java::lang::Object *) = 0;
  virtual ::java::util::concurrent::ConcurrentNavigableMap * headMap(::java::lang::Object *) = 0;
  virtual ::java::util::concurrent::ConcurrentNavigableMap * tailMap(::java::lang::Object *) = 0;
  virtual ::java::util::concurrent::ConcurrentNavigableMap * descendingMap() = 0;
  virtual ::java::util::NavigableSet * navigableKeySet() = 0;
  virtual ::java::util::NavigableSet * keySet() = 0;
  virtual ::java::util::NavigableSet * descendingKeySet() = 0;
  virtual ::java::lang::Object * putIfAbsent(::java::lang::Object *, ::java::lang::Object *) = 0;
  virtual jboolean remove(::java::lang::Object *, ::java::lang::Object *) = 0;
  virtual jboolean replace(::java::lang::Object *, ::java::lang::Object *, ::java::lang::Object *) = 0;
  virtual ::java::lang::Object * replace(::java::lang::Object *, ::java::lang::Object *) = 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;
  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::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;
  static ::java::lang::Class class$;
} __attribute__ ((java_interface));

#endif // __java_util_concurrent_ConcurrentNavigableMap__
