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

#ifndef __gnu_classpath_jdwp_util_VariableTable__
#define __gnu_classpath_jdwp_util_VariableTable__

#pragma interface

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

extern "Java"
{
  namespace gnu
  {
    namespace classpath
    {
      namespace jdwp
      {
        namespace util
        {
            class VariableTable;
        }
      }
    }
  }
}

class gnu::classpath::jdwp::util::VariableTable : public ::java::lang::Object
{

public:
  VariableTable(jint, jint, JArray< jlong > *, JArray< ::java::lang::String * > *, JArray< ::java::lang::String * > *, JArray< jint > *, JArray< jint > *);
  virtual void write(::java::io::DataOutputStream *);
private:
  jint __attribute__((aligned(__alignof__( ::java::lang::Object)))) argCnt;
  jint slots;
  JArray< jlong > * lineCI;
  JArray< jint > * slot;
  JArray< jint > * lengths;
  JArray< ::java::lang::String * > * sigs;
  JArray< ::java::lang::String * > * names;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_classpath_jdwp_util_VariableTable__
