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

#ifndef __javax_sound_midi_MidiMessage__
#define __javax_sound_midi_MidiMessage__

#pragma interface

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

extern "Java"
{
  namespace javax
  {
    namespace sound
    {
      namespace midi
      {
          class MidiMessage;
      }
    }
  }
}

class javax::sound::midi::MidiMessage : public ::java::lang::Object
{

public: // actually protected
  MidiMessage(JArray< jbyte > *);
  virtual void setMessage(JArray< jbyte > *, jint);
public:
  virtual JArray< jbyte > * getMessage();
  virtual jint getStatus();
  virtual jint getLength();
  virtual ::java::lang::Object * clone() = 0;
public: // actually protected
  JArray< jbyte > * __attribute__((aligned(__alignof__( ::java::lang::Object)))) data;
  jint length;
public:
  static ::java::lang::Class class$;
};

#endif // __javax_sound_midi_MidiMessage__
