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

#ifndef __gnu_java_beans_encoder_elements_ObjectReference__
#define __gnu_java_beans_encoder_elements_ObjectReference__

#pragma interface

#include <gnu/java/beans/encoder/elements/Element.h>
extern "Java"
{
  namespace gnu
  {
    namespace java
    {
      namespace beans
      {
        namespace encoder
        {
            class ObjectId;
            class Writer;
          namespace elements
          {
              class ObjectReference;
          }
        }
      }
    }
  }
}

class gnu::java::beans::encoder::elements::ObjectReference : public ::gnu::java::beans::encoder::elements::Element
{

public:
  ObjectReference(::gnu::java::beans::encoder::ObjectId *);
  virtual void writeStart(::gnu::java::beans::encoder::Writer *);
public: // actually package-private
  ::gnu::java::beans::encoder::ObjectId * __attribute__((aligned(__alignof__( ::gnu::java::beans::encoder::elements::Element)))) id;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_java_beans_encoder_elements_ObjectReference__
