/* ********************************************************************** * Copyright (c) 2004-2014, International Business Machines * Corporation and others. All Rights Reserved. ********************************************************************** * Author: Alan Liu * Created: April 26, 2004 * Since: ICU 3.0 ********************************************************************** */ #include "utypeinfo.h" // for 'typeid' to work #include "unicode/utypes.h" #if !UCONFIG_NO_FORMATTING #include "unicode/measure.h" #include "unicode/measunit.h" U_NAMESPACE_BEGIN Measure::Measure() {} Measure::Measure(const Formattable& _number, MeasureUnit* adoptedUnit, UErrorCode& ec) : number(_number), unit(adoptedUnit) { if (U_SUCCESS(ec) && (!number.isNumeric() || adoptedUnit == 0)) { ec = U_ILLEGAL_ARGUMENT_ERROR; } } Measure::Measure(const Measure& other) : UObject(other), unit(0) { *this = other; } Measure& Measure::operator=(const Measure& other) { if (this != &other) { delete unit; number = other.number; unit = (MeasureUnit*) other.unit->clone(); } return *this; } UObject *Measure::clone() const { return new Measure(*this); } Measure::~Measure() { delete unit; } UBool Measure::operator==(const UObject& other) const { const Measure* m = (const Measure*) &other; return typeid(*this) == typeid(other) && number == m->getNumber() && (unit != NULL && *unit == m->getUnit()); } U_NAMESPACE_END #endif // !UCONFIG_NO_FORMATTING