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

#ifndef __java_util_concurrent_BlockingDeque__
#define __java_util_concurrent_BlockingDeque__

#pragma interface

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


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

public:
  virtual void addFirst(::java::lang::Object *) = 0;
  virtual void addLast(::java::lang::Object *) = 0;
  virtual jboolean offerFirst(::java::lang::Object *) = 0;
  virtual jboolean offerLast(::java::lang::Object *) = 0;
  virtual void putFirst(::java::lang::Object *) = 0;
  virtual void putLast(::java::lang::Object *) = 0;
  virtual jboolean offerFirst(::java::lang::Object *, jlong, ::java::util::concurrent::TimeUnit *) = 0;
  virtual jboolean offerLast(::java::lang::Object *, jlong, ::java::util::concurrent::TimeUnit *) = 0;
  virtual ::java::lang::Object * takeFirst() = 0;
  virtual ::java::lang::Object * takeLast() = 0;
  virtual ::java::lang::Object * pollFirst(jlong, ::java::util::concurrent::TimeUnit *) = 0;
  virtual ::java::lang::Object * pollLast(jlong, ::java::util::concurrent::TimeUnit *) = 0;
  virtual jboolean removeFirstOccurrence(::java::lang::Object *) = 0;
  virtual jboolean removeLastOccurrence(::java::lang::Object *) = 0;
  virtual jboolean add(::java::lang::Object *) = 0;
  virtual jboolean offer(::java::lang::Object *) = 0;
  virtual void put(::java::lang::Object *) = 0;
  virtual jboolean offer(::java::lang::Object *, jlong, ::java::util::concurrent::TimeUnit *) = 0;
  virtual ::java::lang::Object * remove() = 0;
  virtual ::java::lang::Object * poll() = 0;
  virtual ::java::lang::Object * take() = 0;
  virtual ::java::lang::Object * poll(jlong, ::java::util::concurrent::TimeUnit *) = 0;
  virtual ::java::lang::Object * element() = 0;
  virtual ::java::lang::Object * peek() = 0;
  virtual jboolean remove(::java::lang::Object *) = 0;
  virtual jboolean contains(::java::lang::Object *) = 0;
  virtual jint size() = 0;
  virtual ::java::util::Iterator * iterator() = 0;
  virtual void push(::java::lang::Object *) = 0;
  virtual jint remainingCapacity() = 0;
  virtual jint drainTo(::java::util::Collection *) = 0;
  virtual jint drainTo(::java::util::Collection *, jint) = 0;
  virtual jboolean addAll(::java::util::Collection *) = 0;
  virtual void clear() = 0;
  virtual jboolean containsAll(::java::util::Collection *) = 0;
  virtual jboolean isEmpty() = 0;
  virtual jboolean removeAll(::java::util::Collection *) = 0;
  virtual jboolean retainAll(::java::util::Collection *) = 0;
  virtual JArray< ::java::lang::Object * > * toArray() = 0;
  virtual JArray< ::java::lang::Object * > * toArray(JArray< ::java::lang::Object * > *) = 0;
  virtual ::java::lang::Object * removeFirst() = 0;
  virtual ::java::lang::Object * removeLast() = 0;
  virtual ::java::lang::Object * pollFirst() = 0;
  virtual ::java::lang::Object * pollLast() = 0;
  virtual ::java::lang::Object * getFirst() = 0;
  virtual ::java::lang::Object * getLast() = 0;
  virtual ::java::lang::Object * peekFirst() = 0;
  virtual ::java::lang::Object * peekLast() = 0;
  virtual ::java::lang::Object * pop() = 0;
  virtual ::java::util::Iterator * descendingIterator() = 0;
  static ::java::lang::Class class$;
} __attribute__ ((java_interface));

#endif // __java_util_concurrent_BlockingDeque__
