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

#ifndef __gnu_java_beans_decoder_DummyContext__
#define __gnu_java_beans_decoder_DummyContext__

#pragma interface

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

class gnu::java::beans::decoder::DummyContext : public ::gnu::java::beans::decoder::AbstractContext
{

public:
  DummyContext();
  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();
  virtual void set(jint, ::java::lang::Object *);
  virtual ::java::lang::Object * get(jint);
  virtual ::java::lang::Object * getResult();
private:
  void fail();
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_java_beans_decoder_DummyContext__
