DeprecatedCSSOMValue.cpp [plain text]
#include "config.h"
#include "DeprecatedCSSOMValue.h"
#include "DeprecatedCSSOMPrimitiveValue.h"
#include "DeprecatedCSSOMValueList.h"
namespace WebCore {
template<class ChildClassType>
inline static bool compareCSSOMValues(const DeprecatedCSSOMValue& first, const DeprecatedCSSOMValue& second)
{
return static_cast<const ChildClassType&>(first).equals(static_cast<const ChildClassType&>(second));
}
bool DeprecatedCSSOMValue::equals(const DeprecatedCSSOMValue& other) const
{
if (m_classType == other.m_classType) {
switch (m_classType) {
case DeprecatedComplexValueClass:
return compareCSSOMValues<DeprecatedCSSOMComplexValue>(*this, other);
case DeprecatedPrimitiveValueClass:
return compareCSSOMValues<DeprecatedCSSOMPrimitiveValue>(*this, other);
case DeprecatedValueListClass:
return compareCSSOMValues<DeprecatedCSSOMValueList>(*this, other);
}
}
return false;
}
void DeprecatedCSSOMValue::destroy()
{
switch (classType()) {
case DeprecatedComplexValueClass: {
delete downcast<DeprecatedCSSOMComplexValue>(this);
return;
}
case DeprecatedPrimitiveValueClass: {
delete downcast<DeprecatedCSSOMPrimitiveValue>(this);
return;
}
case DeprecatedValueListClass: {
delete downcast<DeprecatedCSSOMValueList>(this);
return;
}
}
ASSERT_NOT_REACHED();
delete this;
}
unsigned DeprecatedCSSOMValue::cssValueType() const
{
switch (m_classType) {
case DeprecatedComplexValueClass:
return downcast<DeprecatedCSSOMComplexValue>(*this).cssValueType();
case DeprecatedPrimitiveValueClass:
return downcast<DeprecatedCSSOMPrimitiveValue>(*this).cssValueType();
case DeprecatedValueListClass:
return downcast<DeprecatedCSSOMValueList>(*this).cssValueType();
}
ASSERT_NOT_REACHED();
return CSS_CUSTOM;
}
String DeprecatedCSSOMValue::cssText() const
{
switch (m_classType) {
case DeprecatedComplexValueClass:
return downcast<DeprecatedCSSOMComplexValue>(*this).cssText();
case DeprecatedPrimitiveValueClass:
return downcast<DeprecatedCSSOMPrimitiveValue>(*this).cssText();
case DeprecatedValueListClass:
return downcast<DeprecatedCSSOMValueList>(*this).cssText();
}
ASSERT_NOT_REACHED();
return "";
}
}