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

#ifndef __javax_sound_midi_spi_MidiFileReader__
#define __javax_sound_midi_spi_MidiFileReader__

#pragma interface

#include <java/lang/Object.h>
extern "Java"
{
  namespace java
  {
    namespace net
    {
        class URL;
    }
  }
  namespace javax
  {
    namespace sound
    {
      namespace midi
      {
          class MidiFileFormat;
          class Sequence;
        namespace spi
        {
            class MidiFileReader;
        }
      }
    }
  }
}

class javax::sound::midi::spi::MidiFileReader : public ::java::lang::Object
{

public:
  MidiFileReader();
  virtual ::javax::sound::midi::MidiFileFormat * getMidiFileFormat(::java::io::InputStream *) = 0;
  virtual ::javax::sound::midi::MidiFileFormat * getMidiFileFormat(::java::net::URL *) = 0;
  virtual ::javax::sound::midi::MidiFileFormat * getMidiFileFormat(::java::io::File *) = 0;
  virtual ::javax::sound::midi::Sequence * getSequence(::java::io::InputStream *) = 0;
  virtual ::javax::sound::midi::Sequence * getSequence(::java::net::URL *) = 0;
  virtual ::javax::sound::midi::Sequence * getSequence(::java::io::File *) = 0;
  static ::java::lang::Class class$;
};

#endif // __javax_sound_midi_spi_MidiFileReader__
