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

#ifndef __gnu_java_lang_management_RuntimeMXBeanImpl__
#define __gnu_java_lang_management_RuntimeMXBeanImpl__

#pragma interface

#include <gnu/java/lang/management/BeanImpl.h>
extern "Java"
{
  namespace gnu
  {
    namespace java
    {
      namespace lang
      {
        namespace management
        {
            class RuntimeMXBeanImpl;
        }
      }
    }
  }
}

class gnu::java::lang::management::RuntimeMXBeanImpl : public ::gnu::java::lang::management::BeanImpl
{

public:
  RuntimeMXBeanImpl();
  ::java::lang::String * getBootClassPath();
  ::java::lang::String * getClassPath();
  ::java::util::List * getInputArguments();
  ::java::lang::String * getLibraryPath();
  ::java::lang::String * getManagementSpecVersion();
  ::java::lang::String * getName();
  ::java::lang::String * getSpecName();
  ::java::lang::String * getSpecVendor();
  ::java::lang::String * getSpecVersion();
  jlong getStartTime();
  ::java::util::Map * getSystemProperties();
  jlong getUptime();
  ::java::lang::String * getVmName();
  ::java::lang::String * getVmVendor();
  ::java::lang::String * getVmVersion();
  jboolean isBootClassPathSupported();
private:
  static ::java::lang::String * SUN_BOOT_CLASS_PATH;
  static ::java::lang::String * JAVA_BOOT_CLASS_PATH;
  jlong __attribute__((aligned(__alignof__( ::gnu::java::lang::management::BeanImpl)))) startTime;
  ::java::lang::String * bootClassPath;
  jboolean bootClassPathSupported;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_java_lang_management_RuntimeMXBeanImpl__
