void Value::DoReset() { if (UnitHasStringValue()) { mValue.mString->Release(); //} else if (UnitHasArrayValue()) { // mValue.mArray->Release(); //} else if (Unit_URL == mUnit) { // mValue.mURL->Release(); //} else if (Unit_Image == mUnit) { // mValue.mImage->Release(); //} else if (Unit_Gradient == mUnit) { // mValue.mGradient->Release(); //} else if (Unit_Pair == mUnit) { // mValue.mPair->Release(); //} else if (Unit_Triplet == mUnit) { // mValue.mTriplet->Release(); } else if (Unit_Rect == mUnit) { mValue.mRect->Release(); //} else if (Unit_List == mUnit) { // mValue.mList->Release(); //} else if (Unit_PairList == mUnit) { // mValue.mPairList->Release(); } mUnit = Unit_Null; }
void nsCSSValue::SetStringValue(const nsString& aValue, nsCSSUnit aUnit) { Reset(); mUnit = aUnit; NS_ABORT_IF_FALSE(UnitHasStringValue(), "not a string unit"); if (UnitHasStringValue()) { mValue.mString = BufferFromString(aValue).get(); if (NS_UNLIKELY(!mValue.mString)) { // XXXbz not much we can do here; just make sure that our promise of a // non-null mValue.mString holds for string units. mUnit = eCSSUnit_Null; } } else mUnit = eCSSUnit_Null; }
Value::Value(const std::string& aValue, Unit aUnit) : mUnit(aUnit) { DCHECK(UnitHasStringValue()); if (UnitHasStringValue()) { mValue.mString = new StringValue(aValue); //if (MOZ_UNLIKELY(!mValue.mString)) { // XXXbz not much we can do here; just make sure that our promise of a // non-null mValue.mString holds for string units. // mUnit = eCSSUnit_Null; //} } else { mUnit = Unit_Null; mValue.mInt = 0; } }
nsCSSValue::nsCSSValue(const nsString& aValue, nsCSSUnit aUnit) : mUnit(aUnit) { NS_ABORT_IF_FALSE(UnitHasStringValue(), "not a string value"); if (UnitHasStringValue()) { mValue.mString = BufferFromString(aValue); if (NS_UNLIKELY(!mValue.mString)) { // XXXbz not much we can do here; just make sure that our promise of a // non-null mValue.mString holds for string units. mUnit = eCSSUnit_Null; } } else { mUnit = eCSSUnit_Null; mValue.mInt = 0; } }
bool nsCSSValue::operator==(const nsCSSValue& aOther) const { NS_ABORT_IF_FALSE(mUnit != eCSSUnit_ListDep && aOther.mUnit != eCSSUnit_ListDep && mUnit != eCSSUnit_PairListDep && aOther.mUnit != eCSSUnit_PairListDep, "don't use operator== with dependent lists"); if (mUnit == aOther.mUnit) { if (mUnit <= eCSSUnit_DummyInherit) { return true; } else if (UnitHasStringValue()) { return (NS_strcmp(GetBufferValue(mValue.mString), GetBufferValue(aOther.mValue.mString)) == 0); } else if ((eCSSUnit_Integer <= mUnit) && (mUnit <= eCSSUnit_EnumColor)) { return mValue.mInt == aOther.mValue.mInt; } else if (eCSSUnit_Color == mUnit) { return mValue.mColor == aOther.mValue.mColor; } else if (UnitHasArrayValue()) { return *mValue.mArray == *aOther.mValue.mArray; } else if (eCSSUnit_URL == mUnit) { return *mValue.mURL == *aOther.mValue.mURL; } else if (eCSSUnit_Image == mUnit) { return *mValue.mImage == *aOther.mValue.mImage; } else if (eCSSUnit_Gradient == mUnit) { return *mValue.mGradient == *aOther.mValue.mGradient; } else if (eCSSUnit_Pair == mUnit) { return *mValue.mPair == *aOther.mValue.mPair; } else if (eCSSUnit_Triplet == mUnit) { return *mValue.mTriplet == *aOther.mValue.mTriplet; } else if (eCSSUnit_Rect == mUnit) { return *mValue.mRect == *aOther.mValue.mRect; } else if (eCSSUnit_List == mUnit) { return *mValue.mList == *aOther.mValue.mList; } else if (eCSSUnit_PairList == mUnit) { return *mValue.mPairList == *aOther.mValue.mPairList; } else { return mValue.mFloat == aOther.mValue.mFloat; } } return false; }
bool Value::IsEqual( Value* aOther ) const { if (mUnit == aOther->mUnit) { //if (mUnit <= Unit_DummyInherit) { // return true; //} //else if (UnitHasStringValue()) { return (mValue.mString->IsEqual(aOther->mValue.mString) == 0); } else if ((Unit_Integer <= mUnit) && (mUnit <= Unit_EnumColor)) { return mValue.mInt == aOther->mValue.mInt; } else if (Unit_Color == mUnit) { return mValue.mColor == aOther->mValue.mColor; } //else if (UnitHasArrayValue()) { // return *mValue.mArray == *aOther->mValue.mArray; //} //else if (Unit_URL == mUnit) { // return *mValue.mURL == *aOther->mValue.mURL; //} //else if (Unit_Image == mUnit) { // return *mValue.mImage == *aOther->mValue.mImage; //} //else if (Unit_Gradient == mUnit) { // return *mValue.mGradient == *aOther->mValue.mGradient; //} //else if (Unit_Pair == mUnit) { // return *mValue.mPair == *aOther->mValue.mPair; //} //else if (Unit_Triplet == mUnit) { // return *mValue.mTriplet == *aOther->mValue.mTriplet; //} else if (Unit_Rect == mUnit) { return mValue.mRect->IsEqual(aOther->mValue.mRect); } //else if (Unit_List == mUnit) { // return *mValue.mList == *aOther->mValue.mList; //} //else if (Unit_PairList == mUnit) { // return *mValue.mPairList == *aOther->mValue.mPairList; //} else { return mValue.mFloat == aOther->mValue.mFloat; } } return false; }
void Value::SetStringValue( const std::string& aValue, Unit aUnit ) { Reset(); mUnit = aUnit; if (UnitHasStringValue()) { mValue.mString = new StringValue(aValue); //if (MOZ_UNLIKELY(!mValue.mString)) { // XXXbz not much we can do here; just make sure that our promise of a // non-null mValue.mString holds for string units. //mUnit = eCSSUnit_Null; //} } else mUnit = Unit_Null; }
const char* Value::GetStringBufferValue() const { DCHECK(UnitHasStringValue()); return mValue.mString->buffer.data(); }
std::string& Value::GetStringValue( std::string& aBuffer ) const { DCHECK(UnitHasStringValue()); aBuffer = mValue.mString->buffer; return aBuffer; }
void Value::Assign( Value* aCopy ) { Reset(); //if (mUnit <= Unit_DummyInherit) { // nothing to do, but put this important case first //} //else if (Unit_Percent <= mUnit) { mValue.mFloat = aCopy->mValue.mFloat; //MOZ_ASSERT(!MOZ_DOUBLE_IS_NaN(mValue.mFloat)); } else if (UnitHasStringValue()) { mValue.mString = aCopy->mValue.mString; mValue.mString->AddRef(); } else if (Unit_Integer <= mUnit && mUnit <= Unit_EnumColor) { mValue.mInt = aCopy->mValue.mInt; } else if (Unit_Color == mUnit) { mValue.mColor = aCopy->mValue.mColor; } //else if (UnitHasArrayValue()) { // mValue.mArray = aCopy->mValue.mArray; // mValue.mArray->AddRef(); //} //else if (Unit_URL == mUnit) { // mValue.mURL = aCopy->mValue.mURL; // mValue.mURL->AddRef(); //} //else if (Unit_Image == mUnit) { // mValue.mImage = aCopy->mValue.mImage; // mValue.mImage->AddRef(); //} //else if (Unit_Gradient == mUnit) { // mValue.mGradient = aCopy->mValue.mGradient; // mValue.mGradient->AddRef(); //} //else if (Unit_Pair == mUnit) { // mValue.mPair = aCopy->mValue.mPair; // mValue.mPair->AddRef(); //} //else if (Unit_Triplet == mUnit) { // mValue.mTriplet = aCopy->mValue.mTriplet; // mValue.mTriplet->AddRef(); //} else if (Unit_Rect == mUnit) { mValue.mRect = aCopy->mValue.mRect; mValue.mRect->AddRef(); } //else if (Unit_List == mUnit) { // mValue.mList = aCopy->mValue.mList; // mValue.mList->AddRef(); //} //else if (Unit_ListDep == mUnit) { // mValue.mListDependent = aCopy->mValue.mListDependent; //} //else if (Unit_PairList == mUnit) { // mValue.mPairList = aCopy->mValue.mPairList; // mValue.mPairList->AddRef(); //} //else if (Unit_PairListDep == mUnit) { // mValue.mPairListDependent = aCopy->mValue.mPairListDependent; //} else { NOTREACHED(); } }
nsCSSValue::nsCSSValue(const nsCSSValue& aCopy) : mUnit(aCopy.mUnit) { if (mUnit <= eCSSUnit_DummyInherit) { // nothing to do, but put this important case first } else if (eCSSUnit_Percent <= mUnit) { mValue.mFloat = aCopy.mValue.mFloat; } else if (UnitHasStringValue()) { mValue.mString = aCopy.mValue.mString; mValue.mString->AddRef(); } else if (eCSSUnit_Integer <= mUnit && mUnit <= eCSSUnit_EnumColor) { mValue.mInt = aCopy.mValue.mInt; } else if (eCSSUnit_Color == mUnit) { mValue.mColor = aCopy.mValue.mColor; } else if (UnitHasArrayValue()) { mValue.mArray = aCopy.mValue.mArray; mValue.mArray->AddRef(); } else if (eCSSUnit_URL == mUnit) { mValue.mURL = aCopy.mValue.mURL; mValue.mURL->AddRef(); } else if (eCSSUnit_Image == mUnit) { mValue.mImage = aCopy.mValue.mImage; mValue.mImage->AddRef(); } else if (eCSSUnit_Gradient == mUnit) { mValue.mGradient = aCopy.mValue.mGradient; mValue.mGradient->AddRef(); } else if (eCSSUnit_Pair == mUnit) { mValue.mPair = aCopy.mValue.mPair; mValue.mPair->AddRef(); } else if (eCSSUnit_Triplet == mUnit) { mValue.mTriplet = aCopy.mValue.mTriplet; mValue.mTriplet->AddRef(); } else if (eCSSUnit_Rect == mUnit) { mValue.mRect = aCopy.mValue.mRect; mValue.mRect->AddRef(); } else if (eCSSUnit_List == mUnit) { mValue.mList = aCopy.mValue.mList; mValue.mList->AddRef(); } else if (eCSSUnit_ListDep == mUnit) { mValue.mListDependent = aCopy.mValue.mListDependent; } else if (eCSSUnit_PairList == mUnit) { mValue.mPairList = aCopy.mValue.mPairList; mValue.mPairList->AddRef(); } else if (eCSSUnit_PairListDep == mUnit) { mValue.mPairListDependent = aCopy.mValue.mPairListDependent; } else { NS_ABORT_IF_FALSE(false, "unknown unit"); } }