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

#ifndef __gnu_java_beans_encoder_Root__
#define __gnu_java_beans_encoder_Root__

#pragma interface

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

class gnu::java::beans::encoder::Root : public ::java::lang::Object
{

public:
  Root();
  virtual void addChild(::gnu::java::beans::encoder::elements::Element *);
  virtual void end();
  virtual void deleteLast();
  virtual void traverse(::gnu::java::beans::encoder::Writer *);
  virtual void close(::gnu::java::beans::encoder::Writer *);
private:
  void traverse(::gnu::java::beans::encoder::Writer *, ::java::util::Iterator *);
  ::java::util::Stack * __attribute__((aligned(__alignof__( ::java::lang::Object)))) parents;
  ::gnu::java::beans::encoder::elements::Element * rootElement;
  ::gnu::java::beans::encoder::elements::Element * current;
  jboolean started;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_java_beans_encoder_Root__
