blob: 4880fa1e7cf16d74ff2b04543085e62cd4d208dd [file] [log] [blame]
Dynamic Tools Team517193e2019-09-11 14:48:41 +00001//===-- string_utils.h ------------------------------------------*- C++ -*-===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8
9#ifndef SCUDO_STRING_UTILS_H_
10#define SCUDO_STRING_UTILS_H_
11
12#include "internal_defs.h"
13#include "vector.h"
14
15#include <stdarg.h>
16
17namespace scudo {
18
19class ScopedString {
20public:
21 explicit ScopedString(uptr MaxLength) : String(MaxLength), Length(0) {
22 String[0] = '\0';
23 }
24 uptr length() { return Length; }
25 const char *data() { return String.data(); }
26 void clear() {
27 String[0] = '\0';
28 Length = 0;
29 }
30 void append(const char *Format, va_list Args);
31 void append(const char *Format, ...);
Dynamic Tools Team3e8c65b2019-10-18 20:00:32 +000032 void output() const { outputRaw(String.data()); }
Dynamic Tools Team517193e2019-09-11 14:48:41 +000033
34private:
35 Vector<char> String;
36 uptr Length;
37};
38
Kostya Kortchinsky4d022f52021-05-24 09:26:21 -070039int formatString(char *Buffer, uptr BufferLength, const char *Format, ...);
Dynamic Tools Team517193e2019-09-11 14:48:41 +000040void Printf(const char *Format, ...);
41
42} // namespace scudo
43
44#endif // SCUDO_STRING_UTILS_H_