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

#ifndef __javax_management_Query$NumericValueExp__
#define __javax_management_Query$NumericValueExp__

#pragma interface

#include <javax/management/QueryEval.h>
extern "Java"
{
  namespace javax
  {
    namespace management
    {
        class ObjectName;
        class Query$NumericValueExp;
        class ValueExp;
    }
  }
}

class javax::management::Query$NumericValueExp : public ::javax::management::QueryEval
{

public:
  Query$NumericValueExp(::java::lang::Number *);
  ::javax::management::ValueExp * apply(::javax::management::ObjectName *);
  ::java::lang::Number * getValue();
  ::java::lang::String * toString();
  ::javax::management::Query$NumericValueExp * plus(::javax::management::Query$NumericValueExp *);
  ::javax::management::Query$NumericValueExp * minus(::javax::management::Query$NumericValueExp *);
  ::javax::management::Query$NumericValueExp * times(::javax::management::Query$NumericValueExp *);
  ::javax::management::Query$NumericValueExp * div(::javax::management::Query$NumericValueExp *);
private:
  static const jlong serialVersionUID = -4679739485102359104LL;
  ::java::lang::Number * __attribute__((aligned(__alignof__( ::javax::management::QueryEval)))) val;
public:
  static ::java::lang::Class class$;
};

#endif // __javax_management_Query$NumericValueExp__
