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

#ifndef __javax_management_Query__
#define __javax_management_Query__

#pragma interface

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

extern "Java"
{
  namespace javax
  {
    namespace management
    {
        class AttributeValueExp;
        class Query;
        class QueryExp;
        class StringValueExp;
        class ValueExp;
    }
  }
}

class javax::management::Query : public ::java::lang::Object
{

public:
  Query();
  static ::javax::management::QueryExp * and$(::javax::management::QueryExp *, ::javax::management::QueryExp *);
  static ::javax::management::QueryExp * anySubString(::javax::management::AttributeValueExp *, ::javax::management::StringValueExp *);
  static ::javax::management::AttributeValueExp * attr(::java::lang::String *);
  static ::javax::management::AttributeValueExp * attr(::java::lang::String *, ::java::lang::String *);
  static ::javax::management::QueryExp * between(::javax::management::ValueExp *, ::javax::management::ValueExp *, ::javax::management::ValueExp *);
  static ::javax::management::AttributeValueExp * classattr();
  static ::javax::management::ValueExp * div(::javax::management::ValueExp *, ::javax::management::ValueExp *);
  static ::javax::management::QueryExp * eq(::javax::management::ValueExp *, ::javax::management::ValueExp *);
  static ::javax::management::QueryExp * finalSubString(::javax::management::AttributeValueExp *, ::javax::management::StringValueExp *);
  static ::javax::management::QueryExp * geq(::javax::management::ValueExp *, ::javax::management::ValueExp *);
  static ::javax::management::QueryExp * gt(::javax::management::ValueExp *, ::javax::management::ValueExp *);
  static ::javax::management::QueryExp * in(::javax::management::ValueExp *, JArray< ::javax::management::ValueExp * > *);
  static ::javax::management::QueryExp * initialSubString(::javax::management::AttributeValueExp *, ::javax::management::StringValueExp *);
  static ::javax::management::QueryExp * isInstanceOf(::javax::management::StringValueExp *);
  static ::javax::management::QueryExp * leq(::javax::management::ValueExp *, ::javax::management::ValueExp *);
  static ::javax::management::QueryExp * lt(::javax::management::ValueExp *, ::javax::management::ValueExp *);
  static ::javax::management::QueryExp * match(::javax::management::AttributeValueExp *, ::javax::management::StringValueExp *);
  static ::javax::management::ValueExp * minus(::javax::management::ValueExp *, ::javax::management::ValueExp *);
  static ::javax::management::QueryExp * not$(::javax::management::QueryExp *);
  static ::javax::management::QueryExp * or$(::javax::management::QueryExp *, ::javax::management::QueryExp *);
  static ::javax::management::ValueExp * plus(::javax::management::ValueExp *, ::javax::management::ValueExp *);
  static ::javax::management::ValueExp * times(::javax::management::ValueExp *, ::javax::management::ValueExp *);
  static ::javax::management::ValueExp * value(jboolean);
  static ::javax::management::ValueExp * value(jdouble);
  static ::javax::management::ValueExp * value(jfloat);
  static ::javax::management::ValueExp * value(jint);
  static ::javax::management::ValueExp * value(jlong);
  static ::javax::management::ValueExp * value(::java::lang::Number *);
  static ::javax::management::StringValueExp * value(::java::lang::String *);
  static const jint PLUS = 0;
  static const jint MINUS = 1;
  static const jint TIMES = 2;
  static const jint DIV = 3;
  static const jint GT = 0;
  static const jint LT = 1;
  static const jint GE = 2;
  static const jint LE = 3;
  static const jint EQ = 4;
  static ::java::lang::Class class$;
};

#endif // __javax_management_Query__
