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

#ifndef __gnu_java_beans_decoder_AbstractCreatableObjectContext__
#define __gnu_java_beans_decoder_AbstractCreatableObjectContext__

#pragma interface

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

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

public: // actually package-private
  AbstractCreatableObjectContext();
public:
  virtual void addParameterObject(::java::lang::Object *);
public: // actually protected
  virtual void addParameterObjectImpl(::java::lang::Object *) = 0;
public:
  virtual void notifyStatement(::gnu::java::beans::decoder::Context *);
public: // actually protected
  virtual ::java::lang::Object * createObject(::gnu::java::beans::decoder::Context *) = 0;
public:
  virtual ::java::lang::Object * endContext(::gnu::java::beans::decoder::Context *);
  virtual jboolean subContextFailed();
  static ::java::lang::Class class$;
};

#endif // __gnu_java_beans_decoder_AbstractCreatableObjectContext__
