MCPcopy Create free account
hub / github.com/OpenTTD/OpenTTD / StringBuilder

Class StringBuilder

src/core/string_builder.hpp:65–110  ·  view source on GitHub ↗

* Compose data into a growing std::string. */

Source from the content-addressed store, hash-verified

63 * Compose data into a growing std::string.
64 */
65class StringBuilder final : public BaseStringBuilder {
66 std::string *dest;
67public:
68 /**
69 * Construct StringBuilder into destination string.
70 * @note The lifetime of the string must exceed the lifetime of the StringBuilder.
71 */
72 StringBuilder(std::string &dest) : dest(&dest) {}
73
74 /**
75 * Check whether any bytes have been written.
76 */
77 [[nodiscard]] bool AnyBytesWritten() const noexcept { return !this->dest->empty(); }
78 /**
79 * Get number of already written bytes.
80 */
81 [[nodiscard]] size_type GetBytesWritten() const noexcept { return this->dest->size(); }
82 /**
83 * Get already written data.
84 */
85 [[nodiscard]] const std::string &GetWrittenData() const noexcept { return *dest; }
86 /**
87 * Get mutable already written data.
88 */
89 [[nodiscard]] std::string &GetString() noexcept { return *dest; }
90
91 void PutBuffer(std::span<const char> str) override;
92
93 /**
94 * Append string.
95 */
96 StringBuilder& operator+=(std::string_view str)
97 {
98 this->Put(str);
99 return *this;
100 }
101
102 using back_insert_iterator = std::back_insert_iterator<std::string>;
103 /**
104 * Create a back-insert-iterator.
105 */
106 back_insert_iterator back_inserter()
107 {
108 return back_insert_iterator(*this->dest);
109 }
110};
111
112#endif /* STRING_BUILDER_HPP */

Callers

nothing calls this directly

Calls 1

PutMethod · 0.80

Tested by

no test coverage detected