Index: third_party/inspector_protocol/lib/ErrorSupport_cpp.template |
diff --git a/third_party/inspector_protocol/lib/ErrorSupport_cpp.template b/third_party/inspector_protocol/lib/ErrorSupport_cpp.template |
new file mode 100644 |
index 0000000000000000000000000000000000000000..34593ec13de84d3f3a948fbb3022f1a645683d81 |
--- /dev/null |
+++ b/third_party/inspector_protocol/lib/ErrorSupport_cpp.template |
@@ -0,0 +1,70 @@ |
+// Copyright 2016 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. |
+ |
+//#include "ErrorSupport.h" |
+ |
+{% for namespace in config.protocol.namespace %} |
+namespace {{namespace}} { |
+{% endfor %} |
+ |
+ErrorSupport::ErrorSupport() : m_errorString(nullptr) { } |
+ErrorSupport::ErrorSupport(String* errorString) : m_errorString(errorString) { } |
+ErrorSupport::~ErrorSupport() |
+{ |
+ if (m_errorString && hasErrors()) { |
+ StringBuilder builder; |
+ builder.append("Internal error(s): "); |
+ builder.append(errors()); |
+ *m_errorString = builder.toString(); |
+ } |
+} |
+ |
+void ErrorSupport::setName(const String& name) |
+{ |
+ DCHECK(m_path.size()); |
+ m_path[m_path.size() - 1] = name; |
+} |
+ |
+void ErrorSupport::push() |
+{ |
+ m_path.push_back(String()); |
+} |
+ |
+void ErrorSupport::pop() |
+{ |
+ m_path.pop_back(); |
+} |
+ |
+void ErrorSupport::addError(const String& error) |
+{ |
+ StringBuilder builder; |
+ for (size_t i = 0; i < m_path.size(); ++i) { |
+ if (i) |
+ builder.append('.'); |
+ builder.append(m_path[i]); |
+ } |
+ builder.append(": "); |
+ builder.append(error); |
+ m_errors.push_back(builder.toString()); |
+} |
+ |
+bool ErrorSupport::hasErrors() |
+{ |
+ return m_errors.size(); |
+} |
+ |
+String ErrorSupport::errors() |
+{ |
+ StringBuilder builder; |
+ for (size_t i = 0; i < m_errors.size(); ++i) { |
+ if (i) |
+ builder.append("; "); |
+ builder.append(m_errors[i]); |
+ } |
+ return builder.toString(); |
+} |
+ |
+{% for namespace in config.protocol.namespace %} |
+} // namespace {{namespace}} |
+{% endfor %} |