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

Side by Side Diff: runtime/vm/object.h

Issue 11411092: Revert "Add some support for the code-point code-unit distinction." (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 8 years 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « runtime/vm/dart_api_message.cc ('k') | runtime/vm/object.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 #ifndef VM_OBJECT_H_ 5 #ifndef VM_OBJECT_H_
6 #define VM_OBJECT_H_ 6 #define VM_OBJECT_H_
7 7
8 #include "include/dart_api.h" 8 #include "include/dart_api.h"
9 #include "platform/assert.h" 9 #include "platform/assert.h"
10 #include "platform/utils.h" 10 #include "platform/utils.h"
11 #include "vm/bitmap.h" 11 #include "vm/bitmap.h"
12 #include "vm/dart.h" 12 #include "vm/dart.h"
13 #include "vm/globals.h" 13 #include "vm/globals.h"
14 #include "vm/handles.h" 14 #include "vm/handles.h"
15 #include "vm/heap.h" 15 #include "vm/heap.h"
16 #include "vm/isolate.h" 16 #include "vm/isolate.h"
17 #include "vm/os.h" 17 #include "vm/os.h"
18 #include "vm/raw_object.h" 18 #include "vm/raw_object.h"
19 #include "vm/scanner.h" 19 #include "vm/scanner.h"
20 #include "vm/unicode.h"
21 20
22 namespace dart { 21 namespace dart {
23 22
24 // Forward declarations. 23 // Forward declarations.
25 #define DEFINE_FORWARD_DECLARATION(clazz) \ 24 #define DEFINE_FORWARD_DECLARATION(clazz) \
26 class clazz; 25 class clazz;
27 CLASS_LIST(DEFINE_FORWARD_DECLARATION) 26 CLASS_LIST(DEFINE_FORWARD_DECLARATION)
28 #undef DEFINE_FORWARD_DECLARATION 27 #undef DEFINE_FORWARD_DECLARATION
29 class Api; 28 class Api;
30 class Assembler; 29 class Assembler;
(...skipping 3714 matching lines...) Expand 10 before | Expand all | Expand 10 after
3745 }; 3744 };
3746 3745
3747 intptr_t Length() const { return Smi::Value(raw_ptr()->length_); } 3746 intptr_t Length() const { return Smi::Value(raw_ptr()->length_); }
3748 static intptr_t length_offset() { return OFFSET_OF(RawString, length_); } 3747 static intptr_t length_offset() { return OFFSET_OF(RawString, length_); }
3749 3748
3750 virtual intptr_t Hash() const; 3749 virtual intptr_t Hash() const;
3751 static intptr_t hash_offset() { return OFFSET_OF(RawString, hash_); } 3750 static intptr_t hash_offset() { return OFFSET_OF(RawString, hash_); }
3752 static intptr_t Hash(const String& str, intptr_t begin_index, intptr_t len); 3751 static intptr_t Hash(const String& str, intptr_t begin_index, intptr_t len);
3753 static intptr_t Hash(const uint8_t* characters, intptr_t len); 3752 static intptr_t Hash(const uint8_t* characters, intptr_t len);
3754 static intptr_t Hash(const uint16_t* characters, intptr_t len); 3753 static intptr_t Hash(const uint16_t* characters, intptr_t len);
3755 static intptr_t Hash(const int32_t* characters, intptr_t len); 3754 static intptr_t Hash(const uint32_t* characters, intptr_t len);
3756 3755
3757 // Despite the name, this does not return the character. It returns the
3758 // UTF-16 code unit at an index. UTF-16 is a superset of ASCII (and Latin1)
3759 // so you can always use this if you are looking for ASCII. If you need to
3760 // support arbitrary Unicode characters then you should perhaps be using
3761 // Utf16::CharCodeAt(string, index), which returns the full 21 bit code
3762 // point.
3763 int32_t CharAt(intptr_t index) const; 3756 int32_t CharAt(intptr_t index) const;
3764 3757
3765 intptr_t CharSize() const; 3758 intptr_t CharSize() const;
3766 3759
3767 inline bool Equals(const String& str) const; 3760 inline bool Equals(const String& str) const;
3768 inline bool Equals(const String& str, 3761 inline bool Equals(const String& str,
3769 intptr_t begin_index, // begin index on 'str'. 3762 intptr_t begin_index, // begin index on 'str'.
3770 intptr_t len) const; // len on 'str'. 3763 intptr_t len) const; // len on 'str'.
3771 bool Equals(const char* str) const; 3764 bool Equals(const char* str) const;
3772 bool Equals(const uint8_t* characters, intptr_t len) const; 3765 bool Equals(const uint8_t* characters, intptr_t len) const;
3773 bool Equals(const uint16_t* characters, intptr_t len) const; 3766 bool Equals(const uint16_t* characters, intptr_t len) const;
3767 bool Equals(const uint32_t* characters, intptr_t len) const;
3774 3768
3775 virtual bool Equals(const Instance& other) const; 3769 virtual bool Equals(const Instance& other) const;
3776 3770
3777 intptr_t CompareTo(const String& other) const; 3771 intptr_t CompareTo(const String& other) const;
3778 3772
3779 bool StartsWith(const String& other) const; 3773 bool StartsWith(const String& other) const;
3780 3774
3781 virtual RawInstance* Canonicalize() const; 3775 virtual RawInstance* Canonicalize() const;
3782 3776
3783 bool IsSymbol() const { return raw()->IsCanonical(); } 3777 bool IsSymbol() const { return raw()->IsCanonical(); }
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
3825 static RawString* New(const uint8_t* utf8_array, 3819 static RawString* New(const uint8_t* utf8_array,
3826 intptr_t array_len, 3820 intptr_t array_len,
3827 Heap::Space space = Heap::kNew); 3821 Heap::Space space = Heap::kNew);
3828 3822
3829 // Creates a new String object from an array of UTF-16 encoded characters. 3823 // Creates a new String object from an array of UTF-16 encoded characters.
3830 static RawString* New(const uint16_t* utf16_array, 3824 static RawString* New(const uint16_t* utf16_array,
3831 intptr_t array_len, 3825 intptr_t array_len,
3832 Heap::Space space = Heap::kNew); 3826 Heap::Space space = Heap::kNew);
3833 3827
3834 // Creates a new String object from an array of UTF-32 encoded characters. 3828 // Creates a new String object from an array of UTF-32 encoded characters.
3835 static RawString* New(const int32_t* utf32_array, 3829 static RawString* New(const uint32_t* utf32_array,
3836 intptr_t array_len, 3830 intptr_t array_len,
3837 Heap::Space space = Heap::kNew); 3831 Heap::Space space = Heap::kNew);
3838 3832
3839 // Create a new String object from another Dart String instance. 3833 // Create a new String object from another Dart String instance.
3840 static RawString* New(const String& str, Heap::Space space = Heap::kNew); 3834 static RawString* New(const String& str, Heap::Space space = Heap::kNew);
3841 3835
3842 // Creates a new External String object using the specified array of 3836 // Creates a new External String object using the specified array of
3843 // UTF-8 encoded characters as the external reference. 3837 // UTF-8 encoded characters as the external reference.
3844 static RawString* NewExternal(const uint8_t* utf8_array, 3838 static RawString* NewExternal(const uint8_t* utf8_array,
3845 intptr_t array_len, 3839 intptr_t array_len,
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after
3971 return New(reinterpret_cast<const uint8_t*>(c_string), 3965 return New(reinterpret_cast<const uint8_t*>(c_string),
3972 strlen(c_string), 3966 strlen(c_string),
3973 space); 3967 space);
3974 } 3968 }
3975 static RawOneByteString* New(const uint8_t* characters, 3969 static RawOneByteString* New(const uint8_t* characters,
3976 intptr_t len, 3970 intptr_t len,
3977 Heap::Space space); 3971 Heap::Space space);
3978 static RawOneByteString* New(const uint16_t* characters, 3972 static RawOneByteString* New(const uint16_t* characters,
3979 intptr_t len, 3973 intptr_t len,
3980 Heap::Space space); 3974 Heap::Space space);
3981 static RawOneByteString* New(const int32_t* characters, 3975 static RawOneByteString* New(const uint32_t* characters,
3982 intptr_t len, 3976 intptr_t len,
3983 Heap::Space space); 3977 Heap::Space space);
3984 static RawOneByteString* New(const String& str, 3978 static RawOneByteString* New(const String& str,
3985 Heap::Space space); 3979 Heap::Space space);
3986 3980
3987 static RawOneByteString* Concat(const String& str1, 3981 static RawOneByteString* Concat(const String& str1,
3988 const String& str2, 3982 const String& str2,
3989 Heap::Space space); 3983 Heap::Space space);
3990 static RawOneByteString* ConcatAll(const Array& strings, 3984 static RawOneByteString* ConcatAll(const Array& strings,
3991 intptr_t len, 3985 intptr_t len,
3992 Heap::Space space); 3986 Heap::Space space);
3993 3987
3994 static RawOneByteString* Transform(int32_t (*mapping)(int32_t ch), 3988 static RawOneByteString* Transform(int32_t (*mapping)(int32_t ch),
3995 const String& str, 3989 const String& str,
3996 intptr_t out_length,
3997 Heap::Space space); 3990 Heap::Space space);
3998 3991
3999 static const ClassId kClassId = kOneByteStringCid; 3992 static const ClassId kClassId = kOneByteStringCid;
4000 3993
4001 static RawOneByteString* null() { 3994 static RawOneByteString* null() {
4002 return reinterpret_cast<RawOneByteString*>(Object::null()); 3995 return reinterpret_cast<RawOneByteString*>(Object::null());
4003 } 3996 }
4004 3997
4005 private: 3998 private:
4006 static RawOneByteString* raw(const String& str) { 3999 static RawOneByteString* raw(const String& str) {
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
4055 return String::RoundedAllocationSize( 4048 return String::RoundedAllocationSize(
4056 sizeof(RawTwoByteString) + (len * kBytesPerElement)); 4049 sizeof(RawTwoByteString) + (len * kBytesPerElement));
4057 } 4050 }
4058 4051
4059 static RawTwoByteString* New(intptr_t len, 4052 static RawTwoByteString* New(intptr_t len,
4060 Heap::Space space); 4053 Heap::Space space);
4061 static RawTwoByteString* New(const uint16_t* characters, 4054 static RawTwoByteString* New(const uint16_t* characters,
4062 intptr_t len, 4055 intptr_t len,
4063 Heap::Space space); 4056 Heap::Space space);
4064 static RawTwoByteString* New(intptr_t utf16_len, 4057 static RawTwoByteString* New(intptr_t utf16_len,
4065 const int32_t* characters, 4058 const uint32_t* characters,
4066 intptr_t len, 4059 intptr_t len,
4067 Heap::Space space); 4060 Heap::Space space);
4068 static RawTwoByteString* New(const String& str, 4061 static RawTwoByteString* New(const String& str,
4069 Heap::Space space); 4062 Heap::Space space);
4070 4063
4071 static RawTwoByteString* Concat(const String& str1, 4064 static RawTwoByteString* Concat(const String& str1,
4072 const String& str2, 4065 const String& str2,
4073 Heap::Space space); 4066 Heap::Space space);
4074 static RawTwoByteString* ConcatAll(const Array& strings, 4067 static RawTwoByteString* ConcatAll(const Array& strings,
4075 intptr_t len, 4068 intptr_t len,
4076 Heap::Space space); 4069 Heap::Space space);
4077 4070
4078 static RawTwoByteString* Transform(int32_t (*mapping)(int32_t ch), 4071 static RawTwoByteString* Transform(int32_t (*mapping)(int32_t ch),
4079 const String& str, 4072 const String& str,
4080 intptr_t out_length,
4081 Heap::Space space); 4073 Heap::Space space);
4082 4074
4083 static RawTwoByteString* null() { 4075 static RawTwoByteString* null() {
4084 return reinterpret_cast<RawTwoByteString*>(Object::null()); 4076 return reinterpret_cast<RawTwoByteString*>(Object::null());
4085 } 4077 }
4086 4078
4087 4079
4088 static const ClassId kClassId = kTwoByteStringCid; 4080 static const ClassId kClassId = kTwoByteStringCid;
4089 4081
4090 private: 4082 private:
(...skipping 1873 matching lines...) Expand 10 before | Expand all | Expand 10 after
5964 if (this->CharAt(i) != str.CharAt(begin_index + i)) { 5956 if (this->CharAt(i) != str.CharAt(begin_index + i)) {
5965 return false; 5957 return false;
5966 } 5958 }
5967 } 5959 }
5968 return true; 5960 return true;
5969 } 5961 }
5970 5962
5971 } // namespace dart 5963 } // namespace dart
5972 5964
5973 #endif // VM_OBJECT_H_ 5965 #endif // VM_OBJECT_H_
OLDNEW
« no previous file with comments | « runtime/vm/dart_api_message.cc ('k') | runtime/vm/object.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698