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

#ifndef __java_lang_ThreadLocal__
#define __java_lang_ThreadLocal__

#pragma interface

#include <java/lang/Object.h>
extern "Java"
{
  namespace gnu
  {
    namespace gcj
    {
        class RawData;
    }
  }
}

class java::lang::ThreadLocal : public ::java::lang::Object
{

  jint computeNextHash();
public:
  ThreadLocal();
public: // actually protected
  virtual ::java::lang::Object * initialValue();
public:
  virtual ::java::lang::Object * get();
private:
  ::java::lang::Object * internalGet();
public:
  virtual void set(::java::lang::Object *);
private:
  void internalSet(::java::lang::Object *);
public:
  virtual void remove();
private:
  void internalRemove();
public: // actually protected
  virtual void finalize();
private:
  void constructNative();
public: // actually package-private
  static ::java::lang::Object * sentinel;
private:
  static jint nextHashBase;
public: // actually package-private
  jint __attribute__((aligned(__alignof__( ::java::lang::Object)))) fastHash;
private:
  ::gnu::gcj::RawData * TLSPointer;
public:
  static ::java::lang::Class class$;
};

#endif // __java_lang_ThreadLocal__
