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

#ifndef __java_awt_dnd_DropTargetContext$TransferableProxy__
#define __java_awt_dnd_DropTargetContext$TransferableProxy__

#pragma interface

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

extern "Java"
{
  namespace java
  {
    namespace awt
    {
      namespace datatransfer
      {
          class DataFlavor;
          class Transferable;
      }
      namespace dnd
      {
          class DropTargetContext;
          class DropTargetContext$TransferableProxy;
      }
    }
  }
}

class java::awt::dnd::DropTargetContext$TransferableProxy : public ::java::lang::Object
{

public: // actually package-private
  DropTargetContext$TransferableProxy(::java::awt::dnd::DropTargetContext *, ::java::awt::datatransfer::Transferable *, jboolean);
public:
  virtual JArray< ::java::awt::datatransfer::DataFlavor * > * getTransferDataFlavors();
  virtual jboolean isDataFlavorSupported(::java::awt::datatransfer::DataFlavor *);
  virtual ::java::lang::Object * getTransferData(::java::awt::datatransfer::DataFlavor *);
public: // actually protected
  jboolean __attribute__((aligned(__alignof__( ::java::lang::Object)))) isLocal;
  ::java::awt::datatransfer::Transferable * transferable;
public: // actually package-private
  ::java::awt::dnd::DropTargetContext * this$0;
public:
  static ::java::lang::Class class$;
};

#endif // __java_awt_dnd_DropTargetContext$TransferableProxy__
