aboutsummaryrefslogtreecommitdiff
path: root/libjava/prims.cc
diff options
context:
space:
mode:
Diffstat (limited to 'libjava/prims.cc')
-rw-r--r--libjava/prims.cc22
1 files changed, 20 insertions, 2 deletions
diff --git a/libjava/prims.cc b/libjava/prims.cc
index 7f73047..2a413ae 100644
--- a/libjava/prims.cc
+++ b/libjava/prims.cc
@@ -16,8 +16,6 @@ details. */
#include <string.h>
#include <signal.h>
-#pragma implementation "gcj/array.h"
-
#include <gcj/cni.h>
#include <jvm.h>
#include <java-signal.h>
@@ -143,6 +141,26 @@ _Jv_equal (Utf8Const* a, jstring str, jint hash)
return true;
}
+/* Like _Jv_equal, but stop after N characters. */
+jboolean
+_Jv_equaln (Utf8Const *a, jstring str, jint n)
+{
+ jint len = str->length();
+ jint i = 0;
+ jchar *sptr = _Jv_GetStringChars (str);
+ register unsigned char* ptr = (unsigned char*) a->data;
+ register unsigned char* limit = ptr + a->length;
+ for (; n-- > 0; i++, sptr++)
+ {
+ int ch = UTF8_GET (ptr, limit);
+ if (i == len)
+ return ch < 0;
+ if (ch != *sptr)
+ return false;
+ }
+ return true;
+}
+
/* Count the number of Unicode chars encoded in a given Ut8 string. */
int
_Jv_strLengthUtf8(char* str, int len)