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

#ifndef __javax_sound_sampled_AudioSystem__
#define __javax_sound_sampled_AudioSystem__

#pragma interface

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

extern "Java"
{
  namespace java
  {
    namespace net
    {
        class URL;
    }
  }
  namespace javax
  {
    namespace sound
    {
      namespace sampled
      {
          class AudioFileFormat;
          class AudioFileFormat$Type;
          class AudioFormat;
          class AudioFormat$Encoding;
          class AudioInputStream;
          class AudioSystem;
          class Clip;
          class Line;
          class Line$Info;
          class Mixer;
          class Mixer$Info;
          class SourceDataLine;
          class TargetDataLine;
      }
    }
  }
}

class javax::sound::sampled::AudioSystem : public ::java::lang::Object
{

  AudioSystem();
public:
  static ::javax::sound::sampled::AudioFileFormat * getAudioFileFormat(::java::io::File *);
  static ::javax::sound::sampled::AudioFileFormat * getAudioFileFormat(::java::io::InputStream *);
  static ::javax::sound::sampled::AudioFileFormat * getAudioFileFormat(::java::net::URL *);
  static JArray< ::javax::sound::sampled::AudioFileFormat$Type * > * getAudioFileTypes();
  static JArray< ::javax::sound::sampled::AudioFileFormat$Type * > * getAudioFileTypes(::javax::sound::sampled::AudioInputStream *);
  static ::javax::sound::sampled::AudioInputStream * getAudioInputStream(::javax::sound::sampled::AudioFormat$Encoding *, ::javax::sound::sampled::AudioInputStream *);
  static ::javax::sound::sampled::AudioInputStream * getAudioInputStream(::javax::sound::sampled::AudioFormat *, ::javax::sound::sampled::AudioInputStream *);
  static ::javax::sound::sampled::AudioInputStream * getAudioInputStream(::java::io::File *);
  static ::javax::sound::sampled::AudioInputStream * getAudioInputStream(::java::io::InputStream *);
  static ::javax::sound::sampled::AudioInputStream * getAudioInputStream(::java::net::URL *);
  static ::javax::sound::sampled::Clip * getClip();
  static ::javax::sound::sampled::Clip * getClip(::javax::sound::sampled::Mixer$Info *);
  static ::javax::sound::sampled::Line * getLine(::javax::sound::sampled::Line$Info *);
  static ::javax::sound::sampled::Mixer * getMixer(::javax::sound::sampled::Mixer$Info *);
  static JArray< ::javax::sound::sampled::Mixer$Info * > * getMixerInfo();
  static ::javax::sound::sampled::SourceDataLine * getSourceDataLine(::javax::sound::sampled::AudioFormat *);
  static ::javax::sound::sampled::SourceDataLine * getSourceDataLine(::javax::sound::sampled::AudioFormat *, ::javax::sound::sampled::Mixer$Info *);
  static JArray< ::javax::sound::sampled::Line$Info * > * getSourceLineInfo(::javax::sound::sampled::Line$Info *);
  static ::javax::sound::sampled::TargetDataLine * getTargetDataLine(::javax::sound::sampled::AudioFormat *);
  static ::javax::sound::sampled::TargetDataLine * getTargetDataLine(::javax::sound::sampled::AudioFormat *, ::javax::sound::sampled::Mixer$Info *);
  static JArray< ::javax::sound::sampled::AudioFormat$Encoding * > * getTargetEncodings(::javax::sound::sampled::AudioFormat$Encoding *);
  static JArray< ::javax::sound::sampled::AudioFormat$Encoding * > * getTargetEncodings(::javax::sound::sampled::AudioFormat *);
  static JArray< ::javax::sound::sampled::AudioFormat * > * getTargetFormats(::javax::sound::sampled::AudioFormat$Encoding *, ::javax::sound::sampled::AudioFormat *);
  static JArray< ::javax::sound::sampled::Line$Info * > * getTargetLineInfo(::javax::sound::sampled::Line$Info *);
  static jboolean isConversionSupported(::javax::sound::sampled::AudioFormat$Encoding *, ::javax::sound::sampled::AudioFormat *);
  static jboolean isConversionSupported(::javax::sound::sampled::AudioFormat *, ::javax::sound::sampled::AudioFormat *);
private:
  static jboolean isFileTypeSupported(JArray< ::javax::sound::sampled::AudioFileFormat$Type * > *, ::javax::sound::sampled::AudioFileFormat$Type *);
public:
  static jboolean isFileTypeSupported(::javax::sound::sampled::AudioFileFormat$Type *);
  static jboolean isFileTypeSupported(::javax::sound::sampled::AudioFileFormat$Type *, ::javax::sound::sampled::AudioInputStream *);
  static jboolean isLineSupported(::javax::sound::sampled::Line$Info *);
  static jint write(::javax::sound::sampled::AudioInputStream *, ::javax::sound::sampled::AudioFileFormat$Type *, ::java::io::File *);
  static jint write(::javax::sound::sampled::AudioInputStream *, ::javax::sound::sampled::AudioFileFormat$Type *, ::java::io::OutputStream *);
  static const jint NOT_SPECIFIED = -1;
  static ::java::lang::Class class$;
};

#endif // __javax_sound_sampled_AudioSystem__