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

#ifndef __gnu_classpath_SystemProperties__
#define __gnu_classpath_SystemProperties__

#pragma interface

#include <java/lang/Object.h>
extern "Java"
{
  namespace gnu
  {
    namespace classpath
    {
        class SystemProperties;
    }
  }
}

class gnu::classpath::SystemProperties : public ::java::lang::Object
{

public:
  SystemProperties();
private:
  static void insertSystemProperties(::java::util::Properties *);
public:
  static ::java::lang::String * getProperty(::java::lang::String *);
  static ::java::lang::String * getProperty(::java::lang::String *, ::java::lang::String *);
  static ::java::lang::String * setProperty(::java::lang::String *, ::java::lang::String *);
  static ::java::util::Properties * getProperties();
  static void setProperties(::java::util::Properties *);
private:
  static jboolean isWordsBigEndian();
public:
  static ::java::lang::String * remove(::java::lang::String *);
private:
  static ::java::util::Properties * properties;
  static ::java::util::Properties * defaultProperties;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_classpath_SystemProperties__
