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

#ifndef __java_awt_ComponentOrientation__
#define __java_awt_ComponentOrientation__

#pragma interface

#include <java/lang/Object.h>
extern "Java"
{
  namespace java
  {
    namespace awt
    {
        class ComponentOrientation;
    }
  }
}

class java::awt::ComponentOrientation : public ::java::lang::Object
{

  ComponentOrientation(jint);
public:
  jboolean isHorizontal();
  jboolean isLeftToRight();
  static ::java::awt::ComponentOrientation * getOrientation(::java::util::Locale *);
  static ::java::awt::ComponentOrientation * getOrientation(::java::util::ResourceBundle *);
private:
  static const jlong serialVersionUID = -4113291392143563828LL;
  static const jint UNKNOWN_ID = 1;
  static const jint HORIZONTAL_ID = 2;
  static const jint LEFT_TO_RIGHT_ID = 4;
public:
  static ::java::awt::ComponentOrientation * LEFT_TO_RIGHT;
  static ::java::awt::ComponentOrientation * RIGHT_TO_LEFT;
  static ::java::awt::ComponentOrientation * UNKNOWN;
private:
  jint __attribute__((aligned(__alignof__( ::java::lang::Object)))) orientation;
public:
  static ::java::lang::Class class$;
};

#endif // __java_awt_ComponentOrientation__
