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

#ifndef __javax_sound_sampled_Clip__
#define __javax_sound_sampled_Clip__

#pragma interface

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

extern "Java"
{
  namespace javax
  {
    namespace sound
    {
      namespace sampled
      {
          class AudioFormat;
          class AudioInputStream;
          class Clip;
          class Control;
          class Control$Type;
          class Line$Info;
          class LineListener;
      }
    }
  }
}

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

public:
  virtual jint getFrameLength() = 0;
  virtual jlong getMicrosecondLength() = 0;
  virtual void loop(jint) = 0;
  virtual void open(::javax::sound::sampled::AudioFormat *, JArray< jbyte > *, jint, jint) = 0;
  virtual void open(::javax::sound::sampled::AudioInputStream *) = 0;
  virtual void setFramePosition(jint) = 0;
  virtual void setLoopPoints(jint, jint) = 0;
  virtual void setMicrosecondPosition(jlong) = 0;
  virtual jint available() = 0;
  virtual void drain() = 0;
  virtual void flush() = 0;
  virtual jint getBufferSize() = 0;
  virtual ::javax::sound::sampled::AudioFormat * getFormat() = 0;
  virtual jint getFramePosition() = 0;
  virtual jfloat getLevel() = 0;
  virtual jlong getLongFramePosition() = 0;
  virtual jlong getMicrosecondPosition() = 0;
  virtual jboolean isActive() = 0;
  virtual jboolean isRunning() = 0;
  virtual void start() = 0;
  virtual void stop() = 0;
  virtual void addLineListener(::javax::sound::sampled::LineListener *) = 0;
  virtual void close() = 0;
  virtual ::javax::sound::sampled::Control * getControl(::javax::sound::sampled::Control$Type *) = 0;
  virtual JArray< ::javax::sound::sampled::Control * > * getControls() = 0;
  virtual ::javax::sound::sampled::Line$Info * getLineInfo() = 0;
  virtual jboolean isControlSupported(::javax::sound::sampled::Control$Type *) = 0;
  virtual jboolean isOpen() = 0;
  virtual void open() = 0;
  virtual void removeLineListener(::javax::sound::sampled::LineListener *) = 0;
  static const jint LOOP_CONTINUOUSLY = -1;
  static ::java::lang::Class class$;
} __attribute__ ((java_interface));

#endif // __javax_sound_sampled_Clip__
