
// 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
{

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:
  ::gnu::gcj::RawData * __attribute__((aligned(__alignof__( ::java::lang::Object)))) TLSPointer;
public:
  static ::java::lang::Class class$;
};

#endif // __java_lang_ThreadLocal__
