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

#ifndef __gnu_java_util_regex_BacktrackStack__
#define __gnu_java_util_regex_BacktrackStack__

#pragma interface

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

extern "Java"
{
  namespace gnu
  {
    namespace java
    {
      namespace util
      {
        namespace regex
        {
            class BacktrackStack;
            class BacktrackStack$Backtrack;
        }
      }
    }
  }
}

class gnu::java::util::regex::BacktrackStack : public ::java::lang::Object
{

public: // actually package-private
  BacktrackStack();
  jboolean empty();
  ::gnu::java::util::regex::BacktrackStack$Backtrack * peek();
  ::gnu::java::util::regex::BacktrackStack$Backtrack * pop();
  void clear();
  void push(::gnu::java::util::regex::BacktrackStack$Backtrack *);
  JArray< ::gnu::java::util::regex::BacktrackStack$Backtrack * > * __attribute__((aligned(__alignof__( ::java::lang::Object)))) stack;
private:
  jint size;
  jint capacity;
  static const jint INITIAL_CAPACITY = 32;
  static const jint CAPACITY_INCREMENT = 16;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_java_util_regex_BacktrackStack__
