示例#1
0
	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;
	}
示例#2
0
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;
}
示例#3
0
	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;
		}
	}
示例#4
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;
  }
}
示例#5
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;
}
示例#6
0
	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;
	}
示例#7
0
	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;
	}
示例#8
0
	const char* Value::GetStringBufferValue() const
	{
		DCHECK(UnitHasStringValue());
		return mValue.mString->buffer.data();
	}
示例#9
0
	std::string& Value::GetStringValue( std::string& aBuffer ) const
	{
		DCHECK(UnitHasStringValue());
		aBuffer = mValue.mString->buffer;
		return aBuffer;
	}
示例#10
0
	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();
		}
	}
示例#11
0
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");
  }
}