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

#ifndef __java_util_concurrent_atomic_AtomicIntegerArray__
#define __java_util_concurrent_atomic_AtomicIntegerArray__

#pragma interface

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

extern "Java"
{
  namespace sun
  {
    namespace misc
    {
        class Unsafe;
    }
  }
}

class java::util::concurrent::atomic::AtomicIntegerArray : public ::java::lang::Object
{

  jlong rawIndex(jint);
public:
  AtomicIntegerArray(jint);
  AtomicIntegerArray(JArray< jint > *);
  virtual jint length();
  virtual jint get(jint);
  virtual void set(jint, jint);
  virtual void lazySet(jint, jint);
  virtual jint getAndSet(jint, jint);
  virtual jboolean compareAndSet(jint, jint, jint);
  virtual jboolean weakCompareAndSet(jint, jint, jint);
  virtual jint getAndIncrement(jint);
  virtual jint getAndDecrement(jint);
  virtual jint getAndAdd(jint, jint);
  virtual jint incrementAndGet(jint);
  virtual jint decrementAndGet(jint);
  virtual jint addAndGet(jint, jint);
  virtual ::java::lang::String * toString();
private:
  static const jlong serialVersionUID = 2862133569453604235LL;
  static ::sun::misc::Unsafe * unsafe;
  static jint base;
  static jint scale;
  JArray< jint > * __attribute__((aligned(__alignof__( ::java::lang::Object)))) array;
public:
  static ::java::lang::Class class$;
};

#endif // __java_util_concurrent_atomic_AtomicIntegerArray__
