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

#ifndef __gnu_java_beans_decoder_PropertyContext__
#define __gnu_java_beans_decoder_PropertyContext__

#pragma interface

#include <gnu/java/beans/decoder/AbstractObjectContext.h>
extern "Java"
{
  namespace gnu
  {
    namespace java
    {
      namespace beans
      {
        namespace decoder
        {
            class Context;
            class PropertyContext;
        }
      }
    }
  }
}

class gnu::java::beans::decoder::PropertyContext : public ::gnu::java::beans::decoder::AbstractObjectContext
{

public: // actually package-private
  PropertyContext(::java::lang::String *, ::java::lang::String *);
public:
  virtual void addParameterObject(::java::lang::Object *);
  virtual void notifyStatement(::gnu::java::beans::decoder::Context *);
  virtual ::java::lang::Object * endContext(::gnu::java::beans::decoder::Context *);
  virtual jboolean subContextFailed();
private:
  ::java::lang::Object * __attribute__((aligned(__alignof__( ::gnu::java::beans::decoder::AbstractObjectContext)))) argument;
  ::java::lang::String * propertyName;
  ::java::lang::String * prefix;
  jboolean methodCalled;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_java_beans_decoder_PropertyContext__
