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

#ifndef __javax_sound_midi_Sequencer$SyncMode__
#define __javax_sound_midi_Sequencer$SyncMode__

#pragma interface

#include <java/lang/Object.h>
extern "Java"
{
  namespace javax
  {
    namespace sound
    {
      namespace midi
      {
          class Sequencer$SyncMode;
      }
    }
  }
}

class javax::sound::midi::Sequencer$SyncMode : public ::java::lang::Object
{

public: // actually protected
  Sequencer$SyncMode(::java::lang::String *);
public:
  virtual jboolean equals(::java::lang::Object *);
  virtual jint hashCode();
  virtual ::java::lang::String * toString();
  static ::javax::sound::midi::Sequencer$SyncMode * INTERNAL_CLOCK;
  static ::javax::sound::midi::Sequencer$SyncMode * MIDI_SYNC;
  static ::javax::sound::midi::Sequencer$SyncMode * MIDI_TIME_CODE;
  static ::javax::sound::midi::Sequencer$SyncMode * NO_SYNC;
private:
  ::java::lang::String * __attribute__((aligned(__alignof__( ::java::lang::Object)))) name;
public:
  static ::java::lang::Class class$;
};

#endif // __javax_sound_midi_Sequencer$SyncMode__
