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

#ifndef __java_lang_Byte__
#define __java_lang_Byte__

#pragma interface

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


class java::lang::Byte : public ::java::lang::Number
{

public:
  Byte(jbyte);
  Byte(::java::lang::String *);
  static ::java::lang::String * toString(jbyte);
  static jbyte parseByte(::java::lang::String *);
  static jbyte parseByte(::java::lang::String *, jint);
  static ::java::lang::Byte * valueOf(::java::lang::String *, jint);
  static ::java::lang::Byte * valueOf(::java::lang::String *);
  static ::java::lang::Byte * valueOf(jbyte);
  static ::java::lang::Byte * decode(::java::lang::String *);
  jbyte byteValue();
  jshort shortValue();
  jint intValue();
  jlong longValue();
  jfloat floatValue();
  jdouble doubleValue();
  ::java::lang::String * toString();
  jint hashCode();
  jboolean equals(::java::lang::Object *);
  jint Byte$compareTo(::java::lang::Byte *);
  static jint compare(jbyte, jbyte);
  jint compareTo(::java::lang::Object *);
private:
  static const jlong serialVersionUID = -7183698231559129828LL;
public:
  static const jbyte MIN_VALUE = -128;
  static const jbyte MAX_VALUE = 127;
  static ::java::lang::Class * TYPE;
  static const jint SIZE = 8;
private:
  static JArray< ::java::lang::Byte * > * byteCache;
  jbyte __attribute__((aligned(__alignof__( ::java::lang::Number)))) value;
public:
  static ::java::lang::Class class$;
};

#endif // __java_lang_Byte__
