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

#ifndef __javax_swing_tree_TreePath__
#define __javax_swing_tree_TreePath__

#pragma interface

#include <java/lang/Object.h>
#include <gcj/array.h>

extern "Java"
{
  namespace javax
  {
    namespace swing
    {
      namespace tree
      {
          class TreePath;
      }
    }
  }
}

class javax::swing::tree::TreePath : public ::java::lang::Object
{

public:
  TreePath(JArray< ::java::lang::Object * > *);
  TreePath(::java::lang::Object *);
public: // actually protected
  TreePath(::javax::swing::tree::TreePath *, ::java::lang::Object *);
  TreePath(JArray< ::java::lang::Object * > *, jint);
  TreePath();
public:
  virtual jint hashCode();
  virtual jboolean equals(::java::lang::Object *);
  virtual ::java::lang::String * toString();
  virtual JArray< ::java::lang::Object * > * getPath();
  virtual ::java::lang::Object * getLastPathComponent();
  virtual jint getPathCount();
  virtual ::java::lang::Object * getPathComponent(jint);
  virtual jboolean isDescendant(::javax::swing::tree::TreePath *);
  virtual ::javax::swing::tree::TreePath * pathByAddingChild(::java::lang::Object *);
  virtual ::javax::swing::tree::TreePath * getParentPath();
public: // actually package-private
  static const jlong serialVersionUID = 4380036194768077479LL;
private:
  JArray< ::java::lang::Object * > * __attribute__((aligned(__alignof__( ::java::lang::Object)))) path;
  ::javax::swing::tree::TreePath * parentPath;
public:
  static ::java::lang::Class class$;
};

#endif // __javax_swing_tree_TreePath__
