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

#ifndef __gnu_gcj_util_GCInfo__
#define __gnu_gcj_util_GCInfo__

#pragma interface

#include <java/lang/Object.h>
extern "Java"
{
  namespace gnu
  {
    namespace gcj
    {
      namespace util
      {
          class GCInfo;
      }
    }
  }
}

class gnu::gcj::util::GCInfo : public ::java::lang::Object
{

  GCInfo();
  static void checkPermission();
public:
  static void dump(::java::lang::String *);
private:
  static void dump0(::java::lang::String *);
public:
  static void enumerate(::java::lang::String *);
private:
  static void enumerate0(::java::lang::String *);
public:
  static void setOOMDump(::java::lang::String *);
private:
  static void setOOMDump0(::java::lang::String *);
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_gcj_util_GCInfo__
