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

#ifndef __java_io_ObjectOutputStream$1__
#define __java_io_ObjectOutputStream$1__

#pragma interface

#include <java/io/ObjectOutputStream$PutField.h>
#include <gcj/array.h>


class java::io::ObjectOutputStream$1 : public ::java::io::ObjectOutputStream$PutField
{

public: // actually package-private
  ObjectOutputStream$1(::java::io::ObjectOutputStream *);
private:
  ::java::io::ObjectStreamField * getField(::java::lang::String *);
public:
  void put(::java::lang::String *, jboolean);
  void put(::java::lang::String *, jbyte);
  void put(::java::lang::String *, jchar);
  void put(::java::lang::String *, jdouble);
  void put(::java::lang::String *, jfloat);
  void put(::java::lang::String *, jint);
  void put(::java::lang::String *, jlong);
  void put(::java::lang::String *, jshort);
  void put(::java::lang::String *, ::java::lang::Object *);
  void write(::java::io::ObjectOutput *);
private:
  void checkType(::java::io::ObjectStreamField *, jchar);
  JArray< jbyte > * __attribute__((aligned(__alignof__( ::java::io::ObjectOutputStream$PutField)))) prim_field_data;
  JArray< ::java::lang::Object * > * objs;
public: // actually package-private
  ::java::io::ObjectOutputStream * this$0;
public:
  static ::java::lang::Class class$;
};

#endif // __java_io_ObjectOutputStream$1__
