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

#ifndef __javax_activation_DataSourceDataContentHandler__
#define __javax_activation_DataSourceDataContentHandler__

#pragma interface

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

extern "Java"
{
  namespace java
  {
    namespace awt
    {
      namespace datatransfer
      {
          class DataFlavor;
      }
    }
  }
  namespace javax
  {
    namespace activation
    {
        class DataContentHandler;
        class DataSource;
        class DataSourceDataContentHandler;
    }
  }
}

class javax::activation::DataSourceDataContentHandler : public ::java::lang::Object
{

public:
  DataSourceDataContentHandler(::javax::activation::DataContentHandler *, ::javax::activation::DataSource *);
  virtual ::java::lang::Object * getContent(::javax::activation::DataSource *);
  virtual ::java::lang::Object * getTransferData(::java::awt::datatransfer::DataFlavor *, ::javax::activation::DataSource *);
  virtual JArray< ::java::awt::datatransfer::DataFlavor * > * getTransferDataFlavors();
  virtual void writeTo(::java::lang::Object *, ::java::lang::String *, ::java::io::OutputStream *);
private:
  ::javax::activation::DataSource * __attribute__((aligned(__alignof__( ::java::lang::Object)))) ds;
  JArray< ::java::awt::datatransfer::DataFlavor * > * flavors;
  ::javax::activation::DataContentHandler * dch;
public:
  static ::java::lang::Class class$;
};

#endif // __javax_activation_DataSourceDataContentHandler__
