]> git.saurik.com Git - apple/icu.git/blob - icuSources/i18n/measure.cpp
ICU-400.38.tar.gz
[apple/icu.git] / icuSources / i18n / measure.cpp
1 /*
2 **********************************************************************
3 * Copyright (c) 2004-2008, International Business Machines
4 * Corporation and others. All Rights Reserved.
5 **********************************************************************
6 * Author: Alan Liu
7 * Created: April 26, 2004
8 * Since: ICU 3.0
9 **********************************************************************
10 */
11 #include "unicode/utypes.h"
12
13 #if !UCONFIG_NO_FORMATTING
14
15 #include "unicode/measure.h"
16 #include "unicode/measunit.h"
17
18 U_NAMESPACE_BEGIN
19
20 Measure::Measure() {}
21
22 Measure::Measure(const Formattable& _number, MeasureUnit* adoptedUnit,
23 UErrorCode& ec) :
24 number(_number), unit(adoptedUnit) {
25 if (U_SUCCESS(ec) &&
26 (!number.isNumeric() || adoptedUnit == 0)) {
27 ec = U_ILLEGAL_ARGUMENT_ERROR;
28 }
29 }
30
31 Measure::Measure(const Measure& other) :
32 UObject(other), unit(0) {
33 *this = other;
34 }
35
36 Measure& Measure::operator=(const Measure& other) {
37 if (this != &other) {
38 delete unit;
39 number = other.number;
40 unit = (MeasureUnit*) other.unit->clone();
41 }
42 return *this;
43 }
44
45 Measure::~Measure() {
46 delete unit;
47 }
48
49 UBool Measure::operator==(const UObject& other) const {
50 const Measure* m = (const Measure*) &other;
51 return getDynamicClassID() == other.getDynamicClassID() &&
52 number == m->getNumber() &&
53 (unit != NULL && *unit == m->getUnit());
54 }
55
56 //----------------------------------------------------------------------
57 // MeasureUnit implementation
58
59 MeasureUnit:: MeasureUnit() {}
60
61 MeasureUnit::~MeasureUnit() {}
62
63 U_NAMESPACE_END
64
65 #endif // !UCONFIG_NO_FORMATTING