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 PLATFORM_TEXT_BUFFER_H_ | 5 #ifndef PLATFORM_TEXT_BUFFER_H_ |
6 #define PLATFORM_TEXT_BUFFER_H_ | 6 #define 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 EscapeAndAddCodeUnit(uint32_t cu); | 23 void EscapeAndAddCodeUnit(uint32_t cu); |
24 void AddString(const char* s); | 24 void AddString(const char* s); |
25 void AddEscapedString(const char* s); | 25 void AddEscapedString(const char* s); |
| 26 void AddRaw(const uint8_t* buffer, |
| 27 intptr_t buffer_length); |
26 | 28 |
27 void Clear(); | 29 void Clear(); |
28 | 30 |
29 char* buf() { return buf_; } | 31 char* buf() { return buf_; } |
30 intptr_t length() { return msg_len_; } | 32 intptr_t length() { return msg_len_; } |
31 | 33 |
32 // Steal ownership of the buffer pointer. | 34 // Steal ownership of the buffer pointer. |
33 // NOTE: TextBuffer is empty afterwards. | 35 // NOTE: TextBuffer is empty afterwards. |
34 const char* Steal(); | 36 const char* Steal(); |
35 | 37 |
36 private: | 38 private: |
37 void EnsureCapacity(intptr_t len); | 39 void EnsureCapacity(intptr_t len); |
38 char* buf_; | 40 char* buf_; |
39 intptr_t buf_size_; | 41 intptr_t buf_size_; |
40 intptr_t msg_len_; | 42 intptr_t msg_len_; |
41 }; | 43 }; |
42 | 44 |
43 } // namespace dart | 45 } // namespace dart |
44 | 46 |
45 #endif // PLATFORM_TEXT_BUFFER_H_ | 47 #endif // PLATFORM_TEXT_BUFFER_H_ |
OLD | NEW |