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

#ifndef __gnu_classpath_jdwp_processor_StackFrameCommandSet__
#define __gnu_classpath_jdwp_processor_StackFrameCommandSet__

#pragma interface

#include <gnu/classpath/jdwp/processor/CommandSet.h>
extern "Java"
{
  namespace gnu
  {
    namespace classpath
    {
      namespace jdwp
      {
        namespace processor
        {
            class StackFrameCommandSet;
        }
      }
    }
  }
  namespace java
  {
    namespace nio
    {
        class ByteBuffer;
    }
  }
}

class gnu::classpath::jdwp::processor::StackFrameCommandSet : public ::gnu::classpath::jdwp::processor::CommandSet
{

public:
  StackFrameCommandSet();
  virtual jboolean runCommand(::java::nio::ByteBuffer *, ::java::io::DataOutputStream *, jbyte);
private:
  void executeGetValues(::java::nio::ByteBuffer *, ::java::io::DataOutputStream *);
  void executeSetValues(::java::nio::ByteBuffer *, ::java::io::DataOutputStream *);
  void executeThisObject(::java::nio::ByteBuffer *, ::java::io::DataOutputStream *);
  void executePopFrames(::java::nio::ByteBuffer *, ::java::io::DataOutputStream *);
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_classpath_jdwp_processor_StackFrameCommandSet__
