Index: tools/gn/string_utils.h |
diff --git a/tools/gn/string_utils.h b/tools/gn/string_utils.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..7fff1d8560286053e8a00be10e0d0c7bfb94f944 |
--- /dev/null |
+++ b/tools/gn/string_utils.h |
@@ -0,0 +1,51 @@ |
+// Copyright (c) 2013 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#ifndef TOOLS_GN_STRING_UTILS_H_ |
+#define TOOLS_GN_STRING_UTILS_H_ |
+ |
+#include "base/strings/string_piece.h" |
+ |
+class Err; |
+class Scope; |
+class Token; |
+class Value; |
+ |
+inline std::string operator+(const std::string& a, const base::StringPiece& b) { |
+ std::string ret; |
+ ret.reserve(a.size() + b.size()); |
+ ret.assign(a); |
+ ret.append(b.data(), b.size()); |
+ return ret; |
+} |
+ |
+inline std::string operator+(const base::StringPiece& a, const std::string& b) { |
+ std::string ret; |
+ ret.reserve(a.size() + b.size()); |
+ ret.assign(a.data(), a.size()); |
+ ret.append(b); |
+ return ret; |
+} |
+ |
+// Unescapes and expands variables in the given literal, writing the result |
+// to the given value. On error, sets |err| and returns false. |
+bool ExpandStringLiteral(Scope* scope, |
+ const Token& literal, |
+ Value* result, |
+ Err* err); |
+ |
+// Removes the given prefix from the string. Asserts if the string does |
+// not have the given prefix. |
+// |
+// Note: could potentially return a StringPiece into the str. |
+std::string RemovePrefix(const std::string& str, const std::string& prefix); |
+ |
+// Appends the given string piece to the given string. This avoids an |
+// intermediate copy. |
+inline void AppendStringPiece(std::string* dest, |
+ const base::StringPiece& piece) { |
+ dest->append(piece.data(), piece.size()); |
+} |
+ |
+#endif // TOOLS_GN_STRING_UTILS_H_ |