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

#ifndef __java_lang_String__
#define __java_lang_String__

#pragma interface

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

extern "Java"
{
  namespace gnu
  {
    namespace gcj
    {
      namespace runtime
      {
        class StringBuffer;
      }
    }
  }
};

class ::java::lang::String : public ::java::lang::Object
{
public:
  String ();
  String (::java::lang::String *);
  String (::java::lang::StringBuffer *);
public: // actually package-private
  String (::gnu::gcj::runtime::StringBuffer *);
public:
  String (jcharArray);
  String (jcharArray, jint, jint);
  String (jbyteArray);
  String (jbyteArray, jint, jint);
  String (jbyteArray, ::java::lang::String *);
  String (jbyteArray, jint, jint, ::java::lang::String *);
  static ::java::lang::String *copyValueOf (jcharArray);
  static ::java::lang::String *copyValueOf (jcharArray, jint, jint);
  String (jbyteArray, jint);
  String (jbyteArray, jint, jint, jint);
  ::java::lang::String *toString () { return this; }
  jboolean equals (::java::lang::Object *);
  jint hashCode ();
  jint length () { return count; }
  jchar charAt (jint);
  void getChars (jint, jint, jcharArray, jint);
  jbyteArray getBytes ();
  jbyteArray getBytes (::java::lang::String *);
  void getBytes (jint, jint, jbyteArray, jint);
  jcharArray toCharArray ();
  jboolean equalsIgnoreCase (::java::lang::String *);
  jint compareTo (::java::lang::String *);
  jint compareTo (::java::lang::Object *);
  jint compareToIgnoreCase (::java::lang::String *);
  jboolean regionMatches (jint, ::java::lang::String *, jint, jint);
  jboolean regionMatches (jboolean, jint, ::java::lang::String *, jint, jint);
  jboolean startsWith (::java::lang::String *);
  jboolean startsWith (::java::lang::String *, jint);
  jboolean endsWith (::java::lang::String *);
  jint indexOf (jint);
  jint indexOf (jint, jint);
  jint indexOf (::java::lang::String *);
  jint indexOf (::java::lang::String *, jint);
  jint lastIndexOf (jint);
  jint lastIndexOf (jint, jint);
  jint lastIndexOf (::java::lang::String *);
  jint lastIndexOf (::java::lang::String *, jint);
  ::java::lang::CharSequence *subSequence (jint, jint);
  ::java::lang::String *substring (jint);
  ::java::lang::String *substring (jint, jint);
  ::java::lang::String *concat (::java::lang::String *);
  ::java::lang::String *replace (jchar, jchar);
  ::java::lang::String *toLowerCase (::java::util::Locale *);
  ::java::lang::String *toUpperCase (::java::util::Locale *);
  ::java::lang::String *toLowerCase ();
  ::java::lang::String *toUpperCase ();
  ::java::lang::String *trim ();
  static ::java::lang::String *valueOf (::java::lang::Object *);
  static ::java::lang::String *valueOf (jcharArray);
  static ::java::lang::String *valueOf (jcharArray, jint, jint);
  static ::java::lang::String *valueOf (jboolean);
  static ::java::lang::String *valueOf (jchar);
  static ::java::lang::String *valueOf (jint);
  static ::java::lang::String *valueOf (jlong);
  static ::java::lang::String *valueOf (jfloat);
  static ::java::lang::String *valueOf (jdouble);
  ::java::lang::String *intern ();
private:
  void init ();
  void init (jcharArray, jint, jint, jboolean);
  void init (jbyteArray, jint, jint, jint);
  void init (jbyteArray, jint, jint, ::java::lang::String *);
  static void rehash ();
  ::java::lang::Object *data;
  jint boffset;
  jint count;
  static const jlong serialVersionUID = -6849794470754667710LL;
public:
  static ::java::util::Comparator *CASE_INSENSITIVE_ORDER;
  friend jchar* _Jv_GetStringChars (jstring str);
  friend jstring* _Jv_StringFindSlot (jchar*, jint, jint);
  friend jstring* _Jv_StringGetSlot (jstring);
  friend jstring _Jv_NewStringUtf8Const (_Jv_Utf8Const* str);
  friend jstring _Jv_NewStringLatin1 (const char*, jsize);
  friend jstring _Jv_AllocString (jsize);

  static ::java::lang::Class class$;
};

#endif /* __java_lang_String__ */
