
// 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 *);
  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__
