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

#ifndef __javax_sound_sampled_AudioFormat$Encoding__
#define __javax_sound_sampled_AudioFormat$Encoding__

#pragma interface

#include <java/lang/Object.h>
extern "Java"
{
  namespace javax
  {
    namespace sound
    {
      namespace sampled
      {
          class AudioFormat$Encoding;
      }
    }
  }
}

class javax::sound::sampled::AudioFormat$Encoding : public ::java::lang::Object
{

public:
  AudioFormat$Encoding(::java::lang::String *);
  virtual jboolean equals(::java::lang::Object *);
  virtual jint hashCode();
  virtual ::java::lang::String * toString();
  static ::javax::sound::sampled::AudioFormat$Encoding * ALAW;
  static ::javax::sound::sampled::AudioFormat$Encoding * PCM_SIGNED;
  static ::javax::sound::sampled::AudioFormat$Encoding * PCM_UNSIGNED;
  static ::javax::sound::sampled::AudioFormat$Encoding * ULAW;
private:
  ::java::lang::String * __attribute__((aligned(__alignof__( ::java::lang::Object)))) name;
public:
  static ::java::lang::Class class$;
};

#endif // __javax_sound_sampled_AudioFormat$Encoding__
