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

#ifndef __gnu_java_nio_charset_EncodingHelper__
#define __gnu_java_nio_charset_EncodingHelper__

#pragma interface

#include <java/lang/Object.h>
extern "Java"
{
  namespace gnu
  {
    namespace java
    {
      namespace nio
      {
        namespace charset
        {
            class EncodingHelper;
        }
      }
    }
  }
  namespace java
  {
    namespace nio
    {
      namespace charset
      {
          class Charset;
      }
    }
  }
}

class gnu::java::nio::charset::EncodingHelper : public ::java::lang::Object
{

public:
  EncodingHelper();
  static ::java::lang::String * getDefaultEncoding();
  static ::java::lang::String * getOldCanonical(::java::lang::String *);
  static jboolean isISOLatin1(::java::lang::String *);
  static ::java::nio::charset::Charset * getCharset(::java::lang::String *);
  static ::java::nio::charset::Charset * getDefaultCharset();
private:
  static ::java::util::HashMap * canonicalNames;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_java_nio_charset_EncodingHelper__
