⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 natstring.cc

📁 gcc的组建
💻 CC
📖 第 1 页 / 共 2 页
字号:
    return false;  jstring other = (jstring) anObject;  if (count != other->count)    return false;  /* if both are interned, return false. */  jint i = count;  jchar *xptr = JvGetStringChars (this);  jchar *yptr = JvGetStringChars (other);  while (--i >= 0)    {      if (*xptr++ != *yptr++)	return false;    }  return true;}jbooleanjava::lang::String::contentEquals(java::lang::StringBuffer* buffer){  if (buffer == NULL)    throw new NullPointerException;  JvSynchronize sync(buffer);  if (count != buffer->count)    return false;  if (data == buffer->value)    return true; // Possible if shared.  jint i = count;  jchar *xptr = JvGetStringChars(this);  jchar *yptr = elements(buffer->value);  while (--i >= 0)    if (*xptr++ != *yptr++)      return false;  return true;}jbooleanjava::lang::String::contentEquals(java::lang::CharSequence *seq){  if (seq->length() != count)    return false;  jchar *value = JvGetStringChars(this);  for (int i = 0; i < count; ++i)    if (value[i] != seq->charAt(i))      return false;  return true;}jcharjava::lang::String::charAt(jint i){  if (i < 0 || i >= count)    throw new java::lang::StringIndexOutOfBoundsException(i);  return JvGetStringChars(this)[i];}voidjava::lang::String::getChars(jint srcBegin, jint srcEnd,			     jcharArray dst, jint dstBegin){  jint dst_length = JvGetArrayLength (dst);  if (srcBegin < 0 || srcBegin > srcEnd || srcEnd > count)    throw new java::lang::StringIndexOutOfBoundsException;  // The 2nd part of the test below is equivalent to   // dstBegin + (srcEnd-srcBegin) > dst_length  // except that it does not overflow.  if (dstBegin < 0 || dstBegin > dst_length - (srcEnd-srcBegin))    throw new ArrayIndexOutOfBoundsException;  jchar *dPtr = elements (dst) + dstBegin;  jchar *sPtr = JvGetStringChars (this) + srcBegin;  jint i = srcEnd-srcBegin;  while (--i >= 0)    *dPtr++ = *sPtr++;}jbyteArrayjava::lang::String::getBytes (jstring enc){  jint todo = length();  jint buflen = todo;  jbyteArray buffer = JvNewByteArray(todo);  jint bufpos = 0;  jint offset = 0;  gnu::gcj::convert::UnicodeToBytes *converter    = gnu::gcj::convert::UnicodeToBytes::getEncoder(enc);  while (todo > 0 || converter->havePendingBytes())    {      converter->setOutput(buffer, bufpos);      int converted = converter->write(this, offset, todo, NULL);      bufpos = converter->count;      if (converted == 0 && bufpos == converter->count)	{	  buflen *= 2;	  jbyteArray newbuffer = JvNewByteArray(buflen);	  memcpy (elements (newbuffer), elements (buffer), bufpos);	  buffer = newbuffer;	}      else	bufpos = converter->count;      offset += converted;      todo -= converted;    }  converter->done ();  if (bufpos == buflen)    return buffer;  jbyteArray result = JvNewByteArray(bufpos);  memcpy (elements (result), elements (buffer), bufpos);  return result;}voidjava::lang::String::getBytes(jint srcBegin, jint srcEnd,			     jbyteArray dst, jint dstBegin){  jint dst_length = JvGetArrayLength (dst);  if (srcBegin < 0 || srcBegin > srcEnd || srcEnd > count)    throw new java::lang::StringIndexOutOfBoundsException;  // The 2nd part of the test below is equivalent to   // dstBegin + (srcEnd-srcBegin) > dst_length  // except that it does not overflow.  if (dstBegin < 0 || dstBegin > dst_length - (srcEnd-srcBegin))    throw new ArrayIndexOutOfBoundsException;  jbyte *dPtr = elements (dst) + dstBegin;  jchar *sPtr = JvGetStringChars (this) + srcBegin;  jint i = srcEnd-srcBegin;  while (--i >= 0)    *dPtr++ = (jbyte) *sPtr++;}jcharArrayjava::lang::String::toCharArray(){  jcharArray array = JvNewCharArray(count);  jchar *dPtr = elements (array);  jchar *sPtr = JvGetStringChars (this);  jint i = count;  while (--i >= 0)    *dPtr++ = *sPtr++;  return array;}jbooleanjava::lang::String::equalsIgnoreCase (jstring anotherString){  if (anotherString == NULL || count != anotherString->count)    return false;  jchar *tptr = JvGetStringChars (this);  jchar *optr = JvGetStringChars (anotherString);  jint i = count;  while (--i >= 0)    {      jchar tch = *tptr++;      jchar och = *optr++;      if (tch != och	  && (java::lang::Character::toLowerCase (tch)	      != java::lang::Character::toLowerCase (och))	  && (java::lang::Character::toUpperCase (tch)	      != java::lang::Character::toUpperCase (och)))	return false;    }  return true;}jbooleanjava::lang::String::regionMatches (jint toffset,				   jstring other, jint ooffset, jint len){  if (toffset < 0 || ooffset < 0 || len < 0      || toffset > count - len      || ooffset > other->count - len)    return false;  jchar *tptr = JvGetStringChars (this) + toffset;  jchar *optr = JvGetStringChars (other) + ooffset;  jint i = len;  while (--i >= 0)    {      if (*tptr++ != *optr++)	return false;    }  return true;}jintjava::lang::String::compareTo (jstring anotherString){  jchar *tptr = JvGetStringChars (this);  jchar *optr = JvGetStringChars (anotherString);  jint tlen = this->count;  jint olen = anotherString->count;  jint i = tlen > olen ? olen : tlen;  while (--i >= 0)    {      jchar tch = *tptr++;      jchar och = *optr++;      if (tch != och)	return (jint) tch - (jint) och;    }  return tlen - olen;}jbooleanjava::lang::String::regionMatches (jboolean ignoreCase, jint toffset,				   jstring other, jint ooffset, jint len){  if (toffset < 0 || ooffset < 0 || len < 0      || toffset > count - len      || ooffset > other->count - len)    return false;  jchar *tptr = JvGetStringChars (this) + toffset;  jchar *optr = JvGetStringChars (other) + ooffset;  jint i = len;  if (ignoreCase)    while (--i >= 0)      {	jchar tch = *tptr++;	jchar och = *optr++;	if ((java::lang::Character::toLowerCase (tch)	     != java::lang::Character::toLowerCase (och))	    && (java::lang::Character::toUpperCase (tch)		!= java::lang::Character::toUpperCase (och)))	  return false;      }  else    while (--i >= 0)      {	jchar tch = *tptr++;	jchar och = *optr++;	if (tch != och)	  return false;      }  return true;}jbooleanjava::lang::String::startsWith (jstring prefix, jint toffset){  jint i = prefix->count;  if (toffset < 0 || toffset > count - i)    return false;  jchar *xptr = JvGetStringChars (this) + toffset;  jchar *yptr = JvGetStringChars (prefix);  while (--i >= 0)    {      if (*xptr++ != *yptr++)	return false;    }  return true;}jintjava::lang::String::indexOf (jint ch, jint fromIndex){  if (fromIndex < 0)    fromIndex = 0;  jchar *ptr = JvGetStringChars(this);  for (;; ++fromIndex)    {      if (fromIndex >= count)	return -1;      if (ptr[fromIndex] == ch)	return fromIndex;    }}jintjava::lang::String::indexOf (jstring s, jint fromIndex){  const jchar *const xchars = JvGetStringChars(s);  const jchar *const ychars = JvGetStringChars(this) + fromIndex;    const int xlength = s->length ();  const int ylength = length () - fromIndex;    int i = 0;  int j = 0;  while (i < ylength && j < xlength)    {      if (xchars[j] != ychars[i])	{	  i = i - j + 1;	  j = 0;	}      else	i++, j++;    }  if (j >= xlength)    return fromIndex + i - xlength;  else    return -1;}    jintjava::lang::String::lastIndexOf (jint ch, jint fromIndex){  if (fromIndex >= count)    fromIndex = count - 1;  jchar *ptr = JvGetStringChars(this);  for (;; --fromIndex)    {      if (fromIndex < 0)	return -1;      if (ptr[fromIndex] == ch)	return fromIndex;    }}jstringjava::lang::String::substring (jint beginIndex, jint endIndex){  if (beginIndex < 0 || endIndex > count || beginIndex > endIndex)    throw new StringIndexOutOfBoundsException;  if (beginIndex == 0 && endIndex == count)    return this;  jint newCount = endIndex - beginIndex;  // For very small strings, just allocate a new one.  For other  // substrings, allocate a new one unless the substring is over half  // of the original string.  if (newCount <= 8 || newCount < (count >> 1))    return JvNewString(JvGetStringChars(this) + beginIndex, newCount);  jstring s = new String();  s->data = data;  s->count = newCount;  s->boffset = boffset + sizeof(jchar) * beginIndex;  return s;}jstringjava::lang::String::concat(jstring str){  jint str_count = str->count;  if (str_count == 0)    return this;  jstring result = JvAllocString(count + str_count);  jchar *dstPtr = JvGetStringChars(result);  jchar *srcPtr = JvGetStringChars(this);  jint i = count;  while (--i >= 0)    *dstPtr++ = *srcPtr++;  srcPtr = JvGetStringChars(str);  i = str->count;  while (--i >= 0)    *dstPtr++ = *srcPtr++;  return result;}jstringjava::lang::String::replace (jchar oldChar, jchar newChar){  jint i;  jchar* chrs = JvGetStringChars (this);  for (i = 0;  ;  i++)    {      if (i == count)	return this;      if (chrs[i] == oldChar)	break;    }  jstring result = JvAllocString (count);  jchar *dPtr = JvGetStringChars (result);  for (int j = 0;  j < i;  j++)    *dPtr++ = chrs[j];  for (; i < count;  i++)    {      jchar ch = chrs[i];      if (ch == oldChar)	ch = newChar;      *dPtr++ = ch;    }  return result;}jstringjava::lang::String::toLowerCase (java::util::Locale *locale){  jint i;  jchar* chrs = JvGetStringChars(this);  jchar ch = 0;  bool handle_tr = false;  if (locale != NULL)    {      String *lang = locale->getLanguage ();      if (lang->length () == 2	  && lang->charAt (0) == 't'	  && lang->charAt (1) == 'r')	handle_tr = true;    }  for (i = 0;  ;  i++)    {      if (i == count)	return this;      jchar origChar = chrs[i];      if (handle_tr && (origChar == CAPITAL_I			|| origChar == CAPITAL_I_WITH_DOT))	break;      ch = java::lang::Character::toLowerCase(origChar);      if (ch != origChar)	break;    }  jstring result = JvAllocString(count);  jchar *dPtr = JvGetStringChars (result);  for (int j = 0;  j < i;  j++)    *dPtr++ = chrs[j];  *dPtr++ = ch;  i++;  for (; i < count;  i++)    {      if (handle_tr && chrs[i] == CAPITAL_I)	*dPtr++ = SMALL_DOTLESS_I;      else if (handle_tr && chrs[i] == CAPITAL_I_WITH_DOT)	*dPtr++ = SMALL_I;      else	*dPtr++ = java::lang::Character::toLowerCase(chrs[i]);    }  return result;}jstringjava::lang::String::toUpperCase (java::util::Locale *locale){  jint i;  jchar* chrs = JvGetStringChars(this);  jchar ch;  // When handling a specific locale there might be special rules.  // Currently all existing rules are simply handled inline, as there  // are only two and they are documented in the online 1.2 docs.  bool handle_esset = locale != NULL;  bool handle_tr = false;  if (locale != NULL)    {      String *lang = locale->getLanguage ();      if (lang->length () == 2	  && lang->charAt (0) == 't'	  && lang->charAt (1) == 'r')	handle_tr = true;    }  int new_count = count;  bool new_string = false;  for (i = 0;  ;  i++)    {      if (i == count)	break;      jchar origChar = chrs[i];      if (handle_esset && origChar == ESSET)	{	  ++new_count;	  new_string = true;	}      else if (handle_tr && (origChar == SMALL_I			     || origChar == SMALL_DOTLESS_I))	new_string = true;      else	{	  ch = java::lang::Character::toUpperCase(origChar);	  if (ch != origChar)	    new_string = true;	}      if (new_string && ! handle_esset)	break;    }  if (! new_string)    return this;  jstring result = JvAllocString(new_count);  jchar *dPtr = JvGetStringChars (result);  for (i = 0; i < count;  i++)    {      if (handle_esset && chrs[i] == ESSET)	{	  *dPtr++ = CAPITAL_S;	  *dPtr++ = CAPITAL_S;	}      else if (handle_tr && chrs[i] == SMALL_I)	*dPtr++ = CAPITAL_I_WITH_DOT;      else if (handle_tr && chrs[i] == SMALL_DOTLESS_I)	*dPtr++ = CAPITAL_I;      else	*dPtr++ = java::lang::Character::toUpperCase(chrs[i]);    }  return result;}jstringjava::lang::String::trim (){  jchar* chrs = JvGetStringChars(this);  if (count == 0 || (chrs[0] > ' ' && chrs[count-1] > ' '))    return this;  jint preTrim = 0;  for (;; preTrim++)    {      if (preTrim == count)	return new String();      if (chrs[preTrim] > ' ')	break;    }  jint endTrim = count;  while (chrs[endTrim-1] <= ' ')    endTrim--;  return substring(preTrim, endTrim);}jstringjava::lang::String::valueOf(jcharArray data, jint offset, jint count){  jint data_length = JvGetArrayLength (data);  if (offset < 0 || count < 0 || offset > data_length - count)    throw new ArrayIndexOutOfBoundsException;  jstring result = JvAllocString(count);  jchar *sPtr = elements (data) + offset;  jchar *dPtr = JvGetStringChars(result);  while (--count >= 0)    *dPtr++ = *sPtr++;  return result;}jstringjava::lang::String::valueOf(jchar c){  jstring result = JvAllocString(1);  JvGetStringChars (result)[0] = c;  return result;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -