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

#ifndef __java_math_BigDecimal__
#define __java_math_BigDecimal__

#pragma interface

#include <java/lang/Number.h>

extern "Java"
{
  namespace java
  {
    namespace math
    {
      class BigDecimal;
      class BigInteger;
    }
  }
}

class java::math::BigDecimal : public ::java::lang::Number
{
public:
  BigDecimal (::java::math::BigInteger *);
  BigDecimal (::java::math::BigInteger *, jint);
  BigDecimal (jdouble);
  BigDecimal (::java::lang::String *);
  static ::java::math::BigDecimal *valueOf (jlong);
  static ::java::math::BigDecimal *valueOf (jlong, jint);
  virtual ::java::math::BigDecimal *add (::java::math::BigDecimal *);
  virtual ::java::math::BigDecimal *subtract (::java::math::BigDecimal *);
  virtual ::java::math::BigDecimal *multiply (::java::math::BigDecimal *);
  virtual ::java::math::BigDecimal *divide (::java::math::BigDecimal *, jint);
  virtual ::java::math::BigDecimal *divide (::java::math::BigDecimal *, jint, jint);
  virtual jint compareTo (::java::math::BigDecimal *);
  virtual jint compareTo (::java::lang::Object *);
  virtual jboolean equals (::java::lang::Object *);
  virtual jint hashCode ();
  virtual ::java::math::BigDecimal *max (::java::math::BigDecimal *);
  virtual ::java::math::BigDecimal *min (::java::math::BigDecimal *);
  virtual ::java::math::BigDecimal *movePointLeft (jint);
  virtual ::java::math::BigDecimal *movePointRight (jint);
  virtual jint signum ();
  virtual jint scale () { return scale__; }
  virtual ::java::math::BigInteger *unscaledValue () { return intVal; }
  virtual ::java::math::BigDecimal *abs ();
  virtual ::java::math::BigDecimal *negate ();
  virtual ::java::lang::String *toString ();
  virtual ::java::math::BigInteger *toBigInteger ();
  virtual jint intValue ();
  virtual jlong longValue ();
  virtual jfloat floatValue ();
  virtual jdouble doubleValue ();
  virtual ::java::math::BigDecimal *setScale (jint);
  virtual ::java::math::BigDecimal *setScale (jint, jint);
private:
  ::java::math::BigInteger * __attribute__((aligned(__alignof__( ::java::lang::Number )))) intVal;
  jint scale__;
  static const jlong serialVersionUID = 6108874887143696463LL;
  static ::java::math::BigDecimal *ZERO;
  static ::java::math::BigDecimal *ONE;
public:
  static const jint ROUND_UP = 0L;
  static const jint ROUND_DOWN = 1L;
  static const jint ROUND_CEILING = 2L;
  static const jint ROUND_FLOOR = 3L;
  static const jint ROUND_HALF_UP = 4L;
  static const jint ROUND_HALF_DOWN = 5L;
  static const jint ROUND_HALF_EVEN = 6L;
  static const jint ROUND_UNNECESSARY = 7L;

  static ::java::lang::Class class$;
};

#endif /* __java_math_BigDecimal__ */
