Bug 1325940 part 1 - Added a constructor for nsCSSValue to accept enumerations. r=xidorn draft
authorGajanan <grhegde09@gmail.com>
Thu, 21 Dec 2017 12:23:36 +1100
changeset 713886 fde6132848ba0c7d5d6e21a8cb063edf2ac10b03
parent 713819 d2d6cbad21e7c8dbd96bcb3bc84781c72c2b5d03
child 713887 33c7f0f432387199bfab43470234b8f80c235453
child 713891 f1545eb96f3125401f0ef205878cc06e58895ff1
push id93789
push userxquan@mozilla.com
push dateThu, 21 Dec 2017 05:11:13 +0000
reviewersxidorn
bugs1325940
milestone59.0a1
Bug 1325940 part 1 - Added a constructor for nsCSSValue to accept enumerations. r=xidorn MozReview-Commit-ID: 5Vns9QGA8c5
layout/style/nsCSSValue.h
--- a/layout/style/nsCSSValue.h
+++ b/layout/style/nsCSSValue.h
@@ -617,16 +617,26 @@ public:
   explicit nsCSSValue(mozilla::SharedFontList* aValue);
   nsCSSValue(const nsCSSValue& aCopy);
   nsCSSValue(nsCSSValue&& aOther)
     : mUnit(aOther.mUnit)
     , mValue(aOther.mValue)
   {
     aOther.mUnit = eCSSUnit_Null;
   }
+  template<typename T,
+           typename = typename std::enable_if<std::is_enum<T>::value>::type>
+  explicit nsCSSValue(T aValue)
+    : mUnit(eCSSUnit_Enumerated)
+  {
+    static_assert(mozilla::EnumTypeFitsWithin<T, int32_t>::value,
+                  "aValue must be an enum that fits within mValue.mInt");
+    mValue.mInt = static_cast<int32_t>(aValue);
+  }
+
   ~nsCSSValue() { Reset(); }
 
   nsCSSValue&  operator=(const nsCSSValue& aCopy);
   nsCSSValue&  operator=(nsCSSValue&& aCopy);
   bool        operator==(const nsCSSValue& aOther) const;
 
   bool operator!=(const nsCSSValue& aOther) const
   {