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

#ifndef __java_text_SimpleDateFormat$CompiledField__
#define __java_text_SimpleDateFormat$CompiledField__

#pragma interface

#include <java/lang/Object.h>
extern "Java"
{
  namespace java
  {
    namespace text
    {
        class SimpleDateFormat;
        class SimpleDateFormat$CompiledField;
    }
  }
}

class java::text::SimpleDateFormat$CompiledField : public ::java::lang::Object
{

public:
  SimpleDateFormat$CompiledField(::java::text::SimpleDateFormat *, jint, jint, jchar);
  virtual jint getField();
  virtual jint getSize();
  virtual jchar getCharacter();
  virtual ::java::lang::String * toString();
public: // actually package-private
  jint __attribute__((aligned(__alignof__( ::java::lang::Object)))) field;
  jint size;
private:
  jchar character;
public: // actually package-private
  ::java::text::SimpleDateFormat * this$0;
public:
  static ::java::lang::Class class$;
};

#endif // __java_text_SimpleDateFormat$CompiledField__
