Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1256)

Unified Diff: runtime/vm/object.h

Issue 11368138: Add some support for the code-point code-unit distinction. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Implemented feedback from patch set 3 Created 8 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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() {
« no previous file with comments | « runtime/vm/dart_api_message.cc ('k') | runtime/vm/object.cc » ('j') | runtime/vm/scanner.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698