OLD | NEW |
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 RUNTIME_PLATFORM_TEXT_BUFFER_H_ | 5 #ifndef RUNTIME_PLATFORM_TEXT_BUFFER_H_ |
6 #define RUNTIME_PLATFORM_TEXT_BUFFER_H_ | 6 #define RUNTIME_PLATFORM_TEXT_BUFFER_H_ |
7 | 7 |
8 #include "vm/allocation.h" | 8 #include "vm/allocation.h" |
9 #include "vm/globals.h" | 9 #include "vm/globals.h" |
10 | 10 |
11 namespace dart { | 11 namespace dart { |
12 | 12 |
13 | 13 |
14 // TextBuffer maintains a dynamic character buffer with a printf-style way to | 14 // TextBuffer maintains a dynamic character buffer with a printf-style way to |
15 // append text. | 15 // append text. |
16 class TextBuffer : ValueObject { | 16 class TextBuffer : ValueObject { |
17 public: | 17 public: |
18 explicit TextBuffer(intptr_t buf_size); | 18 explicit TextBuffer(intptr_t buf_size); |
19 ~TextBuffer(); | 19 ~TextBuffer(); |
20 | 20 |
21 intptr_t Printf(const char* format, ...) PRINTF_ATTRIBUTE(2, 3); | 21 intptr_t Printf(const char* format, ...) PRINTF_ATTRIBUTE(2, 3); |
22 void AddChar(char ch); | 22 void AddChar(char ch); |
23 void EscapeAndAddUTF16CodeUnit(uint16_t cu); | 23 void EscapeAndAddUTF16CodeUnit(uint16_t cu); |
24 void EscapeAndAddCodeUnit(uint32_t cu); | 24 void EscapeAndAddCodeUnit(uint32_t cu); |
25 void AddString(const char* s); | 25 void AddString(const char* s); |
26 void AddEscapedString(const char* s); | 26 void AddEscapedString(const char* s); |
27 void AddRaw(const uint8_t* buffer, | 27 void AddRaw(const uint8_t* buffer, intptr_t buffer_length); |
28 intptr_t buffer_length); | |
29 | 28 |
30 void Clear(); | 29 void Clear(); |
31 | 30 |
32 char* buf() { return buf_; } | 31 char* buf() { return buf_; } |
33 intptr_t length() { return msg_len_; } | 32 intptr_t length() { return msg_len_; } |
34 | 33 |
35 // Steal ownership of the buffer pointer. | 34 // Steal ownership of the buffer pointer. |
36 // NOTE: TextBuffer is empty afterwards. | 35 // NOTE: TextBuffer is empty afterwards. |
37 char* Steal(); | 36 char* Steal(); |
38 | 37 |
39 private: | 38 private: |
40 void EnsureCapacity(intptr_t len); | 39 void EnsureCapacity(intptr_t len); |
41 char* buf_; | 40 char* buf_; |
42 intptr_t buf_size_; | 41 intptr_t buf_size_; |
43 intptr_t msg_len_; | 42 intptr_t msg_len_; |
44 }; | 43 }; |
45 | 44 |
46 } // namespace dart | 45 } // namespace dart |
47 | 46 |
48 #endif // RUNTIME_PLATFORM_TEXT_BUFFER_H_ | 47 #endif // RUNTIME_PLATFORM_TEXT_BUFFER_H_ |
OLD | NEW |