Index: runtime/vm/object.h |
diff --git a/runtime/vm/object.h b/runtime/vm/object.h |
index 07cb5bf6810a4918fbf3a6ffd74f419c27709944..bef8ee930710372ec757474deb64189907db6f95 100644 |
--- a/runtime/vm/object.h |
+++ b/runtime/vm/object.h |
@@ -17,6 +17,7 @@ |
#include "vm/os.h" |
#include "vm/raw_object.h" |
#include "vm/scanner.h" |
+#include "vm/unicode.h" |
namespace dart { |
@@ -3716,8 +3717,14 @@ class String : public Instance { |
static intptr_t Hash(const String& str, intptr_t begin_index, intptr_t len); |
static intptr_t Hash(const uint8_t* characters, intptr_t len); |
static intptr_t Hash(const uint16_t* characters, intptr_t len); |
- static intptr_t Hash(const uint32_t* characters, intptr_t len); |
- |
+ static intptr_t Hash(const int32_t* characters, intptr_t len); |
+ |
+ // Despite the name, this does not return the character. It returns the |
+ // UTF-16 code unit at an index. UTF-16 is a superset of ASCII (and Latin1) |
+ // so you can always use this if you are looking for ASCII. If you need to |
+ // support arbitrary Unicode characters then you should perhaps be using |
+ // Utf16::CharCodeAt(string, index), which returns the full 21 bit code |
+ // point. |
int32_t CharAt(intptr_t index) const; |
intptr_t CharSize() const; |
@@ -3729,7 +3736,6 @@ class String : public Instance { |
bool Equals(const char* str) const; |
bool Equals(const uint8_t* characters, intptr_t len) const; |
bool Equals(const uint16_t* characters, intptr_t len) const; |
- bool Equals(const uint32_t* characters, intptr_t len) const; |
virtual bool Equals(const Instance& other) const; |
@@ -3791,7 +3797,7 @@ class String : public Instance { |
Heap::Space space = Heap::kNew); |
// Creates a new String object from an array of UTF-32 encoded characters. |
- static RawString* New(const uint32_t* utf32_array, |
+ static RawString* New(const int32_t* utf32_array, |
intptr_t array_len, |
Heap::Space space = Heap::kNew); |
@@ -3937,7 +3943,7 @@ class OneByteString : public AllStatic { |
static RawOneByteString* New(const uint16_t* characters, |
intptr_t len, |
Heap::Space space); |
- static RawOneByteString* New(const uint32_t* characters, |
+ static RawOneByteString* New(const int32_t* characters, |
intptr_t len, |
Heap::Space space); |
static RawOneByteString* New(const String& str, |
@@ -3952,6 +3958,7 @@ class OneByteString : public AllStatic { |
static RawOneByteString* Transform(int32_t (*mapping)(int32_t ch), |
const String& str, |
+ intptr_t out_length, |
Heap::Space space); |
static const ClassId kClassId = kOneByteStringCid; |
@@ -4020,7 +4027,7 @@ class TwoByteString : public AllStatic { |
intptr_t len, |
Heap::Space space); |
static RawTwoByteString* New(intptr_t utf16_len, |
- const uint32_t* characters, |
+ const int32_t* characters, |
intptr_t len, |
Heap::Space space); |
static RawTwoByteString* New(const String& str, |
@@ -4035,6 +4042,7 @@ class TwoByteString : public AllStatic { |
static RawTwoByteString* Transform(int32_t (*mapping)(int32_t ch), |
const String& str, |
+ intptr_t out_length, |
Heap::Space space); |
static RawTwoByteString* null() { |