Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(18)

Unified Diff: third_party/inspector_protocol/lib/Maybe_h.template

Issue 2447323002: [inspector] use own copy of third_party/inspector_protocol (Closed)
Patch Set: updated README.v8 Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/inspector_protocol/lib/Maybe_h.template
diff --git a/third_party/inspector_protocol/lib/Maybe_h.template b/third_party/inspector_protocol/lib/Maybe_h.template
new file mode 100644
index 0000000000000000000000000000000000000000..2096572ba7ba60a803638aa8aceb2a0e72d88fc6
--- /dev/null
+++ b/third_party/inspector_protocol/lib/Maybe_h.template
@@ -0,0 +1,80 @@
+// 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.
+
+#ifndef {{"_".join(config.protocol.namespace)}}_Maybe_h
+#define {{"_".join(config.protocol.namespace)}}_Maybe_h
+
+//#include "Forward.h"
+
+{% for namespace in config.protocol.namespace %}
+namespace {{namespace}} {
+{% endfor %}
+
+template<typename T>
+class Maybe {
+public:
+ Maybe() : m_value() { }
+ Maybe(std::unique_ptr<T> value) : m_value(std::move(value)) { }
+ void operator=(std::unique_ptr<T> value) { m_value = std::move(value); }
+ T* fromJust() const { DCHECK(m_value); return m_value.get(); }
+ T* fromMaybe(T* defaultValue) const { return m_value ? m_value.get() : defaultValue; }
+ bool isJust() const { return !!m_value; }
+ std::unique_ptr<T> takeJust() { DCHECK(m_value); return m_value.release(); }
+private:
+ std::unique_ptr<T> m_value;
+};
+
+template<typename T>
+class MaybeBase {
+public:
+ MaybeBase() : m_isJust(false) { }
+ MaybeBase(T value) : m_isJust(true), m_value(value) { }
+ void operator=(T value) { m_value = value; m_isJust = true; }
+ T fromJust() const { DCHECK(m_isJust); return m_value; }
+ T fromMaybe(const T& defaultValue) const { return m_isJust ? m_value : defaultValue; }
+ bool isJust() const { return m_isJust; }
+ T takeJust() { DCHECK(m_isJust); return m_value; }
+
+protected:
+ bool m_isJust;
+ T m_value;
+};
+
+template<>
+class Maybe<bool> : public MaybeBase<bool> {
+public:
+ Maybe() { }
+ Maybe(bool value) : MaybeBase(value) { }
+ using MaybeBase::operator=;
+};
+
+template<>
+class Maybe<int> : public MaybeBase<int> {
+public:
+ Maybe() { }
+ Maybe(int value) : MaybeBase(value) { }
+ using MaybeBase::operator=;
+};
+
+template<>
+class Maybe<double> : public MaybeBase<double> {
+public:
+ Maybe() { }
+ Maybe(double value) : MaybeBase(value) { }
+ using MaybeBase::operator=;
+};
+
+template<>
+class Maybe<String> : public MaybeBase<String> {
+public:
+ Maybe() { }
+ Maybe(const String& value) : MaybeBase(value) { }
+ using MaybeBase::operator=;
+};
+
+{% for namespace in config.protocol.namespace %}
+} // namespace {{namespace}}
+{% endfor %}
+
+#endif // !defined({{"_".join(config.protocol.namespace)}}_Maybe_h)

Powered by Google App Engine
This is Rietveld 408576698