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

#ifndef __gnu_javax_sound_sampled_gstreamer_lines_GstPipeline$State__
#define __gnu_javax_sound_sampled_gstreamer_lines_GstPipeline$State__

#pragma interface

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

extern "Java"
{
  namespace gnu
  {
    namespace javax
    {
      namespace sound
      {
        namespace sampled
        {
          namespace gstreamer
          {
            namespace lines
            {
                class GstPipeline$State;
            }
          }
        }
      }
    }
  }
}

class gnu::javax::sound::sampled::gstreamer::lines::GstPipeline$State : public ::java::lang::Enum
{

  GstPipeline$State(::java::lang::String *, jint);
public:
  static JArray< ::gnu::javax::sound::sampled::gstreamer::lines::GstPipeline$State * > * values();
  static ::gnu::javax::sound::sampled::gstreamer::lines::GstPipeline$State * valueOf(::java::lang::String *);
  static ::gnu::javax::sound::sampled::gstreamer::lines::GstPipeline$State * PLAY;
  static ::gnu::javax::sound::sampled::gstreamer::lines::GstPipeline$State * PAUSE;
  static ::gnu::javax::sound::sampled::gstreamer::lines::GstPipeline$State * STOP;
  static ::gnu::javax::sound::sampled::gstreamer::lines::GstPipeline$State * CLOSE;
private:
  static JArray< ::gnu::javax::sound::sampled::gstreamer::lines::GstPipeline$State * > * ENUM$VALUES;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_javax_sound_sampled_gstreamer_lines_GstPipeline$State__
