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

#ifndef __javax_print_SimpleDoc__
#define __javax_print_SimpleDoc__

#pragma interface

#include <java/lang/Object.h>
extern "Java"
{
  namespace javax
  {
    namespace print
    {
        class DocFlavor;
        class SimpleDoc;
      namespace attribute
      {
          class DocAttributeSet;
      }
    }
  }
}

class javax::print::SimpleDoc : public ::java::lang::Object
{

public:
  SimpleDoc(::java::lang::Object *, ::javax::print::DocFlavor *, ::javax::print::attribute::DocAttributeSet *);
  ::javax::print::attribute::DocAttributeSet * getAttributes();
  ::javax::print::DocFlavor * getDocFlavor();
  ::java::lang::Object * getPrintData();
  ::java::io::Reader * getReaderForText();
  ::java::io::InputStream * getStreamForBytes();
private:
  ::java::lang::Object * __attribute__((aligned(__alignof__( ::java::lang::Object)))) printData;
  ::javax::print::DocFlavor * flavor;
  ::javax::print::attribute::DocAttributeSet * attributes;
  ::java::io::InputStream * stream;
  ::java::io::Reader * reader;
public:
  static ::java::lang::Class class$;
};

#endif // __javax_print_SimpleDoc__
