]> git.saurik.com Git - apple/icu.git/blobdiff - icuSources/i18n/measure.cpp
ICU-64260.0.1.tar.gz
[apple/icu.git] / icuSources / i18n / measure.cpp
index 7b91677a3c085d1980820bc2adc823b6ba276332..d9084f87db2baa1d77146aa1e7da4bebf67ba866 100644 (file)
@@ -1,6 +1,8 @@
+// © 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 **********************************************************************
-* Copyright (c) 2004-2010, International Business Machines
+* Copyright (c) 2004-2014, International Business Machines
 * Corporation and others.  All Rights Reserved.
 **********************************************************************
 * Author: Alan Liu
@@ -8,7 +10,7 @@
 * Since: ICU 3.0
 **********************************************************************
 */
-#include <typeinfo>  // for 'typeid' to work
+#include "utypeinfo.h"  // for 'typeid' to work
 
 #include "unicode/utypes.h"
 
@@ -19,6 +21,8 @@
 
 U_NAMESPACE_BEGIN
 
+UOBJECT_DEFINE_RTTI_IMPLEMENTATION(Measure)
+
 Measure::Measure() {}
 
 Measure::Measure(const Formattable& _number, MeasureUnit* adoptedUnit,
@@ -44,24 +48,27 @@ Measure& Measure::operator=(const Measure& other) {
     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());
+    if (this == &other) {  // Same object, equal
+        return TRUE;
+    }
+    if (typeid(*this) != typeid(other)) { // Different types, not equal
+        return FALSE;
+    }
+    const Measure &m = static_cast<const Measure&>(other);
+    return number == m.number &&
+        ((unit == NULL) == (m.unit == NULL)) &&
+        (unit == NULL || *unit == *m.unit);
 }
 
-//----------------------------------------------------------------------
-// MeasureUnit implementation
-
-MeasureUnit:: MeasureUnit() {}
-
-MeasureUnit::~MeasureUnit() {}
-
 U_NAMESPACE_END
 
 #endif // !UCONFIG_NO_FORMATTING