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

#ifndef __gnu_classpath_jdwp_util_MethodResult__
#define __gnu_classpath_jdwp_util_MethodResult__

#pragma interface

#include <java/lang/Object.h>
extern "Java"
{
  namespace gnu
  {
    namespace classpath
    {
      namespace jdwp
      {
        namespace util
        {
            class MethodResult;
        }
        namespace value
        {
            class Value;
        }
      }
    }
  }
}

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

public:
  MethodResult(::gnu::classpath::jdwp::value::Value *, ::java::lang::Throwable *);
  virtual ::gnu::classpath::jdwp::value::Value * getReturnedValue();
  virtual ::java::lang::Throwable * getThrownException();
private:
  ::gnu::classpath::jdwp::value::Value * __attribute__((aligned(__alignof__( ::java::lang::Object)))) returnedValue;
  ::java::lang::Throwable * thrownException;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_classpath_jdwp_util_MethodResult__
