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

#ifndef __java_util_Deque__
#define __java_util_Deque__

#pragma interface

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


class java::util::Deque : 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 ::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 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 ::java::lang::Object * remove() = 0;
  virtual ::java::lang::Object * poll() = 0;
  virtual ::java::lang::Object * element() = 0;
  virtual ::java::lang::Object * peek() = 0;
  virtual void push(::java::lang::Object *) = 0;
  virtual ::java::lang::Object * pop() = 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 ::java::util::Iterator * descendingIterator() = 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;
  static ::java::lang::Class class$;
} __attribute__ ((java_interface));

#endif // __java_util_Deque__
