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

#ifndef __javax_swing_text_DefaultHighlighter$HighlightEntry__
#define __javax_swing_text_DefaultHighlighter$HighlightEntry__

#pragma interface

#include <java/lang/Object.h>
extern "Java"
{
  namespace javax
  {
    namespace swing
    {
      namespace text
      {
          class DefaultHighlighter;
          class DefaultHighlighter$HighlightEntry;
          class Highlighter$HighlightPainter;
          class Position;
      }
    }
  }
}

class javax::swing::text::DefaultHighlighter$HighlightEntry : public ::java::lang::Object
{

public:
  DefaultHighlighter$HighlightEntry(::javax::swing::text::DefaultHighlighter *, ::javax::swing::text::Position *, ::javax::swing::text::Position *, ::javax::swing::text::Highlighter$HighlightPainter *);
  virtual jint getStartOffset();
  virtual jint getEndOffset();
  virtual ::javax::swing::text::Highlighter$HighlightPainter * getPainter();
public: // actually package-private
  ::javax::swing::text::Position * __attribute__((aligned(__alignof__( ::java::lang::Object)))) p0;
  ::javax::swing::text::Position * p1;
  ::javax::swing::text::Highlighter$HighlightPainter * painter;
  ::javax::swing::text::DefaultHighlighter * this$0;
public:
  static ::java::lang::Class class$;
};

#endif // __javax_swing_text_DefaultHighlighter$HighlightEntry__
