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

#ifndef __java_util_LinkedList__
#define __java_util_LinkedList__

#pragma interface

#include <java/util/AbstractSequentialList.h>
#include <gcj/array.h>

class ::java::util::LinkedList : public ::java::util::AbstractSequentialList
{
private:
  ::java::util::LinkedList$Entry *getEntry (jint);
  void removeEntry (::java::util::LinkedList$Entry *);
  void checkBoundsInclusive (jint);
  void checkBoundsExclusive (jint);
public:
  LinkedList ();
  LinkedList (::java::util::Collection *);
  virtual ::java::lang::Object *getFirst ();
  virtual ::java::lang::Object *getLast ();
  virtual ::java::lang::Object *removeFirst ();
  virtual ::java::lang::Object *removeLast ();
  virtual void addFirst (::java::lang::Object *);
  virtual void addLast (::java::lang::Object *);
private:
  void addLastEntry (::java::util::LinkedList$Entry *);
public:
  virtual jboolean contains (::java::lang::Object *);
  virtual jint size () { return size__; }
  virtual jboolean add (::java::lang::Object *);
  virtual jboolean remove (::java::lang::Object *);
  virtual jboolean addAll (::java::util::Collection *);
  virtual jboolean addAll (jint, ::java::util::Collection *);
  virtual void clear ();
  virtual ::java::lang::Object *get (jint);
  virtual ::java::lang::Object *set (jint, ::java::lang::Object *);
  virtual void add (jint, ::java::lang::Object *);
  virtual ::java::lang::Object *remove (jint);
  virtual jint indexOf (::java::lang::Object *);
  virtual jint lastIndexOf (::java::lang::Object *);
  virtual ::java::util::ListIterator *listIterator (jint);
  virtual ::java::lang::Object *clone ();
  virtual JArray< ::java::lang::Object *> *toArray ();
  virtual JArray< ::java::lang::Object *> *toArray (JArray< ::java::lang::Object *> *);
private:
  void writeObject (::java::io::ObjectOutputStream *);
  void readObject (::java::io::ObjectInputStream *);
  static const jlong serialVersionUID = 876323262645176354LL;
public: // actually package-private
  ::java::util::LinkedList$Entry *first;
  ::java::util::LinkedList$Entry *last;
  jint size__;
public:

  static ::java::lang::Class class$;
};

#endif /* __java_util_LinkedList__ */
