Add final keyword to WebCore/svg classes
[WebKit-https.git] / Source / WebCore / svg / SVGUnitTypes.h
index d30132c..19a6561 100644 (file)
 #ifndef SVGUnitTypes_h
 #define SVGUnitTypes_h
 
-#if ENABLE(SVG)
-
+#include "SVGPropertyTraits.h"
 #include <wtf/RefCounted.h>
 
 namespace WebCore {
 
-class SVGUnitTypes : public RefCounted<SVGUnitTypes> {
+class SVGUnitTypes final : public RefCounted<SVGUnitTypes> {
 public:
     enum SVGUnitType {
         SVG_UNIT_TYPE_UNKNOWN               = 0,
@@ -38,9 +37,35 @@ private:
     SVGUnitTypes() { }
 };
 
-static inline SVGUnitTypes::SVGUnitType toUnitType(int type) { return static_cast<SVGUnitTypes::SVGUnitType>(type); }
+template<>
+struct SVGPropertyTraits<SVGUnitTypes::SVGUnitType> {
+    static unsigned highestEnumValue() { return SVGUnitTypes::SVG_UNIT_TYPE_OBJECTBOUNDINGBOX; }
+
+    static String toString(SVGUnitTypes::SVGUnitType type)
+    {
+        switch (type) {
+        case SVGUnitTypes::SVG_UNIT_TYPE_UNKNOWN:
+            return emptyString();
+        case SVGUnitTypes::SVG_UNIT_TYPE_USERSPACEONUSE:
+            return ASCIILiteral("userSpaceOnUse");
+        case SVGUnitTypes::SVG_UNIT_TYPE_OBJECTBOUNDINGBOX:
+            return ASCIILiteral("objectBoundingBox");
+        }
+
+        ASSERT_NOT_REACHED();
+        return emptyString();
+    }
+
+    static SVGUnitTypes::SVGUnitType fromString(const String& value)
+    {
+        if (value == "userSpaceOnUse")
+            return SVGUnitTypes::SVG_UNIT_TYPE_USERSPACEONUSE;
+        if (value == "objectBoundingBox")
+            return SVGUnitTypes::SVG_UNIT_TYPE_OBJECTBOUNDINGBOX;
+        return SVGUnitTypes::SVG_UNIT_TYPE_UNKNOWN;
+    }
+};
 
 }
 
 #endif
-#endif