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

#ifndef __java_nio_charset_CoderResult$Cache__
#define __java_nio_charset_CoderResult$Cache__

#pragma interface

#include <java/lang/Object.h>
extern "Java"
{
  namespace java
  {
    namespace nio
    {
      namespace charset
      {
          class CoderResult;
          class CoderResult$Cache;
      }
    }
  }
}

class java::nio::charset::CoderResult$Cache : public ::java::lang::Object
{

public: // actually package-private
  CoderResult$Cache();
  virtual ::java::nio::charset::CoderResult * get(jint);
public: // actually protected
  virtual ::java::nio::charset::CoderResult * make(jint) = 0;
private:
  ::java::util::HashMap * __attribute__((aligned(__alignof__( ::java::lang::Object)))) cache;
public:
  static ::java::lang::Class class$;
};

#endif // __java_nio_charset_CoderResult$Cache__
