Index: Source/core/css/CSSStringValueBase.h |
diff --git a/Source/core/css/CSSStringValueBase.h b/Source/core/css/CSSStringValueBase.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..53b21ea8a914c81b5cf87e8dbee2f567cbc601c3 |
--- /dev/null |
+++ b/Source/core/css/CSSStringValueBase.h |
@@ -0,0 +1,55 @@ |
+// Copyright 2015 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 CSSStringValueBase_h |
+#define CSSStringValueBase_h |
+ |
+#include "core/CoreExport.h" |
+#include "core/css/CSSValue.h" |
+#include "wtf/PassRefPtr.h" |
+#include "wtf/RefCounted.h" |
+ |
+namespace blink { |
+ |
+template <int T> |
+class CORE_EXPORT CSSStringValueBase : public CSSValue { |
+public: |
+ static PassRefPtrWillBeRawPtr<CSSStringValueBase> create(const String& str) |
+ { |
+ return adoptRefWillBeNoop(new CSSStringValueBase(str)); |
+ } |
+ |
+ String value() const { return m_string; } |
+ |
+ String customCSSText() const; |
+ |
+ bool equals(const CSSStringValueBase& other) const |
+ { |
+ return m_string == other.m_string; |
+ } |
+ |
+ DEFINE_INLINE_TRACE_AFTER_DISPATCH() |
+ { |
+ CSSValue::traceAfterDispatch(visitor); |
+ } |
+ |
+private: |
+ CSSStringValueBase(const String& str) |
+ : CSSValue(static_cast<ClassType>(T)) |
alancutter (OOO until 2018)
2015/09/17 02:59:29
Is the static_cast necessary?
sashab
2015/09/17 04:19:49
Yes, but turns out you can add types to template a
|
+ , m_string(str) { } |
+ |
+ String m_string; |
+}; |
+ |
+using CSSStringValue = CSSStringValueBase<CSSValue::StringClass>; |
+using CSSCustomIdentValue = CSSStringValueBase<CSSValue::CustomIdentClass>; |
+using CSSURIValue = CSSStringValueBase<CSSValue::URIClass>; |
+ |
+DEFINE_CSS_VALUE_TYPE_CASTS(CSSStringValue, isStringValue()); |
+DEFINE_CSS_VALUE_TYPE_CASTS(CSSCustomIdentValue, isCustomIdentValue()); |
+DEFINE_CSS_VALUE_TYPE_CASTS(CSSURIValue, isURIValue()); |
+ |
+} // namespace blink |
+ |
+#endif // CSSStringValueBase_h |