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

#ifndef __javax_swing_tree_DefaultMutableTreeNode$PreorderEnumeration__
#define __javax_swing_tree_DefaultMutableTreeNode$PreorderEnumeration__

#pragma interface

#include <java/lang/Object.h>
extern "Java"
{
  namespace javax
  {
    namespace swing
    {
      namespace tree
      {
          class DefaultMutableTreeNode$PreorderEnumeration;
          class TreeNode;
      }
    }
  }
}

class javax::swing::tree::DefaultMutableTreeNode$PreorderEnumeration : public ::java::lang::Object
{

public: // actually package-private
  DefaultMutableTreeNode$PreorderEnumeration(::javax::swing::tree::TreeNode *);
public:
  virtual jboolean hasMoreElements();
  virtual ::javax::swing::tree::TreeNode * DefaultMutableTreeNode$PreorderEnumeration$nextElement();
private:
  ::javax::swing::tree::TreeNode * traverse(::java::util::Enumeration *);
public:
  virtual ::java::lang::Object * nextElement();
public: // actually package-private
  ::javax::swing::tree::TreeNode * __attribute__((aligned(__alignof__( ::java::lang::Object)))) next;
  ::java::util::Stack * childrenEnums;
public:
  static ::java::lang::Class class$;
};

#endif // __javax_swing_tree_DefaultMutableTreeNode$PreorderEnumeration__
