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

#ifndef __javax_print_MultiDocPrintJob__
#define __javax_print_MultiDocPrintJob__

#pragma interface

#include <java/lang/Object.h>
extern "Java"
{
  namespace javax
  {
    namespace print
    {
        class Doc;
        class MultiDoc;
        class MultiDocPrintJob;
        class PrintService;
      namespace attribute
      {
          class PrintJobAttributeSet;
          class PrintRequestAttributeSet;
      }
      namespace event
      {
          class PrintJobAttributeListener;
          class PrintJobListener;
      }
    }
  }
}

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

public:
  virtual void print(::javax::print::MultiDoc *, ::javax::print::attribute::PrintRequestAttributeSet *) = 0;
  virtual void addPrintJobAttributeListener(::javax::print::event::PrintJobAttributeListener *, ::javax::print::attribute::PrintJobAttributeSet *) = 0;
  virtual void addPrintJobListener(::javax::print::event::PrintJobListener *) = 0;
  virtual ::javax::print::attribute::PrintJobAttributeSet * getAttributes() = 0;
  virtual ::javax::print::PrintService * getPrintService() = 0;
  virtual void print(::javax::print::Doc *, ::javax::print::attribute::PrintRequestAttributeSet *) = 0;
  virtual void removePrintJobAttributeListener(::javax::print::event::PrintJobAttributeListener *) = 0;
  virtual void removePrintJobListener(::javax::print::event::PrintJobListener *) = 0;
  static ::java::lang::Class class$;
} __attribute__ ((java_interface));

#endif // __javax_print_MultiDocPrintJob__
