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

#ifndef __gnu_java_io_PlatformHelper__
#define __gnu_java_io_PlatformHelper__

#pragma interface

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

class gnu::java::io::PlatformHelper : public ::java::lang::Object
{

public:
  PlatformHelper();
  static jint beginWithRootPathPrefix(::java::lang::String *);
  static jboolean isRootDirectory(::java::lang::String *);
  static jboolean endWithSeparator(::java::lang::String *);
  static ::java::lang::String * removeTailSeparator(::java::lang::String *);
  static jint lastIndexOfSeparator(::java::lang::String *);
  static jboolean isWindows;
  static ::java::lang::String * separator;
  static jchar separatorChar;
  static ::java::lang::String * pathSeparator;
  static jchar pathSeparatorChar;
  static const jint INITIAL_MAX_PATH = 130;
  static ::java::lang::Class class$;
};

#endif // __gnu_java_io_PlatformHelper__
