Index: source/i18n/measunit.cpp |
diff --git a/source/i18n/measunit.cpp b/source/i18n/measunit.cpp |
new file mode 100644 |
index 0000000000000000000000000000000000000000..73ba0ac55e6164939474f20af17bd9d3c143f812 |
--- /dev/null |
+++ b/source/i18n/measunit.cpp |
@@ -0,0 +1,1148 @@ |
+/* |
+********************************************************************** |
+* 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/measunit.h" |
+ |
+#if !UCONFIG_NO_FORMATTING |
+ |
+#include "unicode/uenum.h" |
+#include "ustrenum.h" |
+#include "cstring.h" |
+#include "uassert.h" |
+ |
+U_NAMESPACE_BEGIN |
+ |
+UOBJECT_DEFINE_RTTI_IMPLEMENTATION(MeasureUnit) |
+ |
+// All code between the "Start generated code" comment and |
+// the "End generated code" comment is auto generated code |
+// and must not be edited manually. For instructions on how to correctly |
+// update this code, refer to: |
+// https://sites.google.com/site/icusite/design/formatting/measureformat/updating-measure-unit |
+// |
+// Start generated code |
+ |
+static const int32_t gOffsets[] = { |
+ 0, |
+ 2, |
+ 6, |
+ 15, |
+ 17, |
+ 277, |
+ 287, |
+ 297, |
+ 301, |
+ 307, |
+ 311, |
+ 329, |
+ 330, |
+ 341, |
+ 347, |
+ 352, |
+ 353, |
+ 356, |
+ 359, |
+ 381 |
+}; |
+ |
+static const int32_t gIndexes[] = { |
+ 0, |
+ 2, |
+ 6, |
+ 15, |
+ 17, |
+ 17, |
+ 27, |
+ 37, |
+ 41, |
+ 47, |
+ 51, |
+ 69, |
+ 70, |
+ 81, |
+ 87, |
+ 92, |
+ 93, |
+ 96, |
+ 99, |
+ 121 |
+}; |
+ |
+static const char * const gTypes[] = { |
+ "acceleration", |
+ "angle", |
+ "area", |
+ "consumption", |
+ "currency", |
+ "digital", |
+ "duration", |
+ "electric", |
+ "energy", |
+ "frequency", |
+ "length", |
+ "light", |
+ "mass", |
+ "power", |
+ "pressure", |
+ "proportion", |
+ "speed", |
+ "temperature", |
+ "volume" |
+}; |
+ |
+static const char * const gSubTypes[] = { |
+ "g-force", |
+ "meter-per-second-squared", |
+ "arc-minute", |
+ "arc-second", |
+ "degree", |
+ "radian", |
+ "acre", |
+ "hectare", |
+ "square-centimeter", |
+ "square-foot", |
+ "square-inch", |
+ "square-kilometer", |
+ "square-meter", |
+ "square-mile", |
+ "square-yard", |
+ "liter-per-kilometer", |
+ "mile-per-gallon", |
+ "ADP", |
+ "AED", |
+ "AFA", |
+ "AFN", |
+ "ALL", |
+ "AMD", |
+ "ANG", |
+ "AOA", |
+ "AON", |
+ "AOR", |
+ "ARA", |
+ "ARP", |
+ "ARS", |
+ "ATS", |
+ "AUD", |
+ "AWG", |
+ "AYM", |
+ "AZM", |
+ "AZN", |
+ "BAD", |
+ "BAM", |
+ "BBD", |
+ "BDT", |
+ "BEC", |
+ "BEF", |
+ "BEL", |
+ "BGL", |
+ "BGN", |
+ "BHD", |
+ "BIF", |
+ "BMD", |
+ "BND", |
+ "BOB", |
+ "BOV", |
+ "BRC", |
+ "BRE", |
+ "BRL", |
+ "BRN", |
+ "BRR", |
+ "BSD", |
+ "BTN", |
+ "BWP", |
+ "BYB", |
+ "BYR", |
+ "BZD", |
+ "CAD", |
+ "CDF", |
+ "CHC", |
+ "CHE", |
+ "CHF", |
+ "CHW", |
+ "CLF", |
+ "CLP", |
+ "CNY", |
+ "COP", |
+ "COU", |
+ "CRC", |
+ "CSD", |
+ "CSK", |
+ "CUC", |
+ "CUP", |
+ "CVE", |
+ "CYP", |
+ "CZK", |
+ "DDM", |
+ "DEM", |
+ "DJF", |
+ "DKK", |
+ "DOP", |
+ "DZD", |
+ "ECS", |
+ "ECV", |
+ "EEK", |
+ "EGP", |
+ "ERN", |
+ "ESA", |
+ "ESB", |
+ "ESP", |
+ "ETB", |
+ "EUR", |
+ "FIM", |
+ "FJD", |
+ "FKP", |
+ "FRF", |
+ "GBP", |
+ "GEK", |
+ "GEL", |
+ "GHC", |
+ "GHP", |
+ "GHS", |
+ "GIP", |
+ "GMD", |
+ "GNF", |
+ "GQE", |
+ "GRD", |
+ "GTQ", |
+ "GWP", |
+ "GYD", |
+ "HKD", |
+ "HNL", |
+ "HRD", |
+ "HRK", |
+ "HTG", |
+ "HUF", |
+ "IDR", |
+ "IEP", |
+ "ILS", |
+ "INR", |
+ "IQD", |
+ "IRR", |
+ "ISK", |
+ "ITL", |
+ "JMD", |
+ "JOD", |
+ "JPY", |
+ "KES", |
+ "KGS", |
+ "KHR", |
+ "KMF", |
+ "KPW", |
+ "KRW", |
+ "KWD", |
+ "KYD", |
+ "KZT", |
+ "LAK", |
+ "LBP", |
+ "LKR", |
+ "LRD", |
+ "LSL", |
+ "LTL", |
+ "LTT", |
+ "LUC", |
+ "LUF", |
+ "LUL", |
+ "LVL", |
+ "LVR", |
+ "LYD", |
+ "MAD", |
+ "MDL", |
+ "MGA", |
+ "MGF", |
+ "MKD", |
+ "MLF", |
+ "MMK", |
+ "MNT", |
+ "MOP", |
+ "MRO", |
+ "MTL", |
+ "MUR", |
+ "MVR", |
+ "MWK", |
+ "MXN", |
+ "MXV", |
+ "MYR", |
+ "MZM", |
+ "MZN", |
+ "NAD", |
+ "NGN", |
+ "NIO", |
+ "NLG", |
+ "NOK", |
+ "NPR", |
+ "NZD", |
+ "OMR", |
+ "PAB", |
+ "PEI", |
+ "PEN", |
+ "PES", |
+ "PGK", |
+ "PHP", |
+ "PKR", |
+ "PLN", |
+ "PLZ", |
+ "PTE", |
+ "PYG", |
+ "QAR", |
+ "ROL", |
+ "RON", |
+ "RSD", |
+ "RUB", |
+ "RUR", |
+ "RWF", |
+ "SAR", |
+ "SBD", |
+ "SCR", |
+ "SDD", |
+ "SDG", |
+ "SEK", |
+ "SGD", |
+ "SHP", |
+ "SIT", |
+ "SKK", |
+ "SLL", |
+ "SOS", |
+ "SRD", |
+ "SRG", |
+ "SSP", |
+ "STD", |
+ "SVC", |
+ "SYP", |
+ "SZL", |
+ "THB", |
+ "TJR", |
+ "TJS", |
+ "TMM", |
+ "TMT", |
+ "TND", |
+ "TOP", |
+ "TPE", |
+ "TRL", |
+ "TRY", |
+ "TTD", |
+ "TWD", |
+ "TZS", |
+ "UAH", |
+ "UAK", |
+ "UGX", |
+ "USD", |
+ "USN", |
+ "USS", |
+ "UYI", |
+ "UYU", |
+ "UZS", |
+ "VEB", |
+ "VEF", |
+ "VND", |
+ "VUV", |
+ "WST", |
+ "XAF", |
+ "XAG", |
+ "XAU", |
+ "XBA", |
+ "XBB", |
+ "XBC", |
+ "XBD", |
+ "XCD", |
+ "XDR", |
+ "XEU", |
+ "XOF", |
+ "XPD", |
+ "XPF", |
+ "XPT", |
+ "XSU", |
+ "XTS", |
+ "XUA", |
+ "XXX", |
+ "YDD", |
+ "YER", |
+ "YUM", |
+ "YUN", |
+ "ZAL", |
+ "ZAR", |
+ "ZMK", |
+ "ZMW", |
+ "ZRN", |
+ "ZRZ", |
+ "ZWD", |
+ "ZWL", |
+ "ZWN", |
+ "ZWR", |
+ "bit", |
+ "byte", |
+ "gigabit", |
+ "gigabyte", |
+ "kilobit", |
+ "kilobyte", |
+ "megabit", |
+ "megabyte", |
+ "terabit", |
+ "terabyte", |
+ "day", |
+ "hour", |
+ "microsecond", |
+ "millisecond", |
+ "minute", |
+ "month", |
+ "nanosecond", |
+ "second", |
+ "week", |
+ "year", |
+ "ampere", |
+ "milliampere", |
+ "ohm", |
+ "volt", |
+ "calorie", |
+ "foodcalorie", |
+ "joule", |
+ "kilocalorie", |
+ "kilojoule", |
+ "kilowatt-hour", |
+ "gigahertz", |
+ "hertz", |
+ "kilohertz", |
+ "megahertz", |
+ "astronomical-unit", |
+ "centimeter", |
+ "decimeter", |
+ "fathom", |
+ "foot", |
+ "furlong", |
+ "inch", |
+ "kilometer", |
+ "light-year", |
+ "meter", |
+ "micrometer", |
+ "mile", |
+ "millimeter", |
+ "nanometer", |
+ "nautical-mile", |
+ "parsec", |
+ "picometer", |
+ "yard", |
+ "lux", |
+ "carat", |
+ "gram", |
+ "kilogram", |
+ "metric-ton", |
+ "microgram", |
+ "milligram", |
+ "ounce", |
+ "ounce-troy", |
+ "pound", |
+ "stone", |
+ "ton", |
+ "gigawatt", |
+ "horsepower", |
+ "kilowatt", |
+ "megawatt", |
+ "milliwatt", |
+ "watt", |
+ "hectopascal", |
+ "inch-hg", |
+ "millibar", |
+ "millimeter-of-mercury", |
+ "pound-per-square-inch", |
+ "karat", |
+ "kilometer-per-hour", |
+ "meter-per-second", |
+ "mile-per-hour", |
+ "celsius", |
+ "fahrenheit", |
+ "kelvin", |
+ "acre-foot", |
+ "bushel", |
+ "centiliter", |
+ "cubic-centimeter", |
+ "cubic-foot", |
+ "cubic-inch", |
+ "cubic-kilometer", |
+ "cubic-meter", |
+ "cubic-mile", |
+ "cubic-yard", |
+ "cup", |
+ "deciliter", |
+ "fluid-ounce", |
+ "gallon", |
+ "hectoliter", |
+ "liter", |
+ "megaliter", |
+ "milliliter", |
+ "pint", |
+ "quart", |
+ "tablespoon", |
+ "teaspoon" |
+}; |
+ |
+MeasureUnit *MeasureUnit::createGForce(UErrorCode &status) { |
+ return MeasureUnit::create(0, 0, status); |
+} |
+ |
+MeasureUnit *MeasureUnit::createMeterPerSecondSquared(UErrorCode &status) { |
+ return MeasureUnit::create(0, 1, status); |
+} |
+ |
+MeasureUnit *MeasureUnit::createArcMinute(UErrorCode &status) { |
+ return MeasureUnit::create(1, 0, status); |
+} |
+ |
+MeasureUnit *MeasureUnit::createArcSecond(UErrorCode &status) { |
+ return MeasureUnit::create(1, 1, status); |
+} |
+ |
+MeasureUnit *MeasureUnit::createDegree(UErrorCode &status) { |
+ return MeasureUnit::create(1, 2, status); |
+} |
+ |
+MeasureUnit *MeasureUnit::createRadian(UErrorCode &status) { |
+ return MeasureUnit::create(1, 3, status); |
+} |
+ |
+MeasureUnit *MeasureUnit::createAcre(UErrorCode &status) { |
+ return MeasureUnit::create(2, 0, status); |
+} |
+ |
+MeasureUnit *MeasureUnit::createHectare(UErrorCode &status) { |
+ return MeasureUnit::create(2, 1, status); |
+} |
+ |
+MeasureUnit *MeasureUnit::createSquareCentimeter(UErrorCode &status) { |
+ return MeasureUnit::create(2, 2, status); |
+} |
+ |
+MeasureUnit *MeasureUnit::createSquareFoot(UErrorCode &status) { |
+ return MeasureUnit::create(2, 3, status); |
+} |
+ |
+MeasureUnit *MeasureUnit::createSquareInch(UErrorCode &status) { |
+ return MeasureUnit::create(2, 4, status); |
+} |
+ |
+MeasureUnit *MeasureUnit::createSquareKilometer(UErrorCode &status) { |
+ return MeasureUnit::create(2, 5, status); |
+} |
+ |
+MeasureUnit *MeasureUnit::createSquareMeter(UErrorCode &status) { |
+ return MeasureUnit::create(2, 6, status); |
+} |
+ |
+MeasureUnit *MeasureUnit::createSquareMile(UErrorCode &status) { |
+ return MeasureUnit::create(2, 7, status); |
+} |
+ |
+MeasureUnit *MeasureUnit::createSquareYard(UErrorCode &status) { |
+ return MeasureUnit::create(2, 8, status); |
+} |
+ |
+MeasureUnit *MeasureUnit::createLiterPerKilometer(UErrorCode &status) { |
+ return MeasureUnit::create(3, 0, status); |
+} |
+ |
+MeasureUnit *MeasureUnit::createMilePerGallon(UErrorCode &status) { |
+ return MeasureUnit::create(3, 1, status); |
+} |
+ |
+MeasureUnit *MeasureUnit::createBit(UErrorCode &status) { |
+ return MeasureUnit::create(5, 0, status); |
+} |
+ |
+MeasureUnit *MeasureUnit::createByte(UErrorCode &status) { |
+ return MeasureUnit::create(5, 1, status); |
+} |
+ |
+MeasureUnit *MeasureUnit::createGigabit(UErrorCode &status) { |
+ return MeasureUnit::create(5, 2, status); |
+} |
+ |
+MeasureUnit *MeasureUnit::createGigabyte(UErrorCode &status) { |
+ return MeasureUnit::create(5, 3, status); |
+} |
+ |
+MeasureUnit *MeasureUnit::createKilobit(UErrorCode &status) { |
+ return MeasureUnit::create(5, 4, status); |
+} |
+ |
+MeasureUnit *MeasureUnit::createKilobyte(UErrorCode &status) { |
+ return MeasureUnit::create(5, 5, status); |
+} |
+ |
+MeasureUnit *MeasureUnit::createMegabit(UErrorCode &status) { |
+ return MeasureUnit::create(5, 6, status); |
+} |
+ |
+MeasureUnit *MeasureUnit::createMegabyte(UErrorCode &status) { |
+ return MeasureUnit::create(5, 7, status); |
+} |
+ |
+MeasureUnit *MeasureUnit::createTerabit(UErrorCode &status) { |
+ return MeasureUnit::create(5, 8, status); |
+} |
+ |
+MeasureUnit *MeasureUnit::createTerabyte(UErrorCode &status) { |
+ return MeasureUnit::create(5, 9, status); |
+} |
+ |
+MeasureUnit *MeasureUnit::createDay(UErrorCode &status) { |
+ return MeasureUnit::create(6, 0, status); |
+} |
+ |
+MeasureUnit *MeasureUnit::createHour(UErrorCode &status) { |
+ return MeasureUnit::create(6, 1, status); |
+} |
+ |
+MeasureUnit *MeasureUnit::createMicrosecond(UErrorCode &status) { |
+ return MeasureUnit::create(6, 2, status); |
+} |
+ |
+MeasureUnit *MeasureUnit::createMillisecond(UErrorCode &status) { |
+ return MeasureUnit::create(6, 3, status); |
+} |
+ |
+MeasureUnit *MeasureUnit::createMinute(UErrorCode &status) { |
+ return MeasureUnit::create(6, 4, status); |
+} |
+ |
+MeasureUnit *MeasureUnit::createMonth(UErrorCode &status) { |
+ return MeasureUnit::create(6, 5, status); |
+} |
+ |
+MeasureUnit *MeasureUnit::createNanosecond(UErrorCode &status) { |
+ return MeasureUnit::create(6, 6, status); |
+} |
+ |
+MeasureUnit *MeasureUnit::createSecond(UErrorCode &status) { |
+ return MeasureUnit::create(6, 7, status); |
+} |
+ |
+MeasureUnit *MeasureUnit::createWeek(UErrorCode &status) { |
+ return MeasureUnit::create(6, 8, status); |
+} |
+ |
+MeasureUnit *MeasureUnit::createYear(UErrorCode &status) { |
+ return MeasureUnit::create(6, 9, status); |
+} |
+ |
+MeasureUnit *MeasureUnit::createAmpere(UErrorCode &status) { |
+ return MeasureUnit::create(7, 0, status); |
+} |
+ |
+MeasureUnit *MeasureUnit::createMilliampere(UErrorCode &status) { |
+ return MeasureUnit::create(7, 1, status); |
+} |
+ |
+MeasureUnit *MeasureUnit::createOhm(UErrorCode &status) { |
+ return MeasureUnit::create(7, 2, status); |
+} |
+ |
+MeasureUnit *MeasureUnit::createVolt(UErrorCode &status) { |
+ return MeasureUnit::create(7, 3, status); |
+} |
+ |
+MeasureUnit *MeasureUnit::createCalorie(UErrorCode &status) { |
+ return MeasureUnit::create(8, 0, status); |
+} |
+ |
+MeasureUnit *MeasureUnit::createFoodcalorie(UErrorCode &status) { |
+ return MeasureUnit::create(8, 1, status); |
+} |
+ |
+MeasureUnit *MeasureUnit::createJoule(UErrorCode &status) { |
+ return MeasureUnit::create(8, 2, status); |
+} |
+ |
+MeasureUnit *MeasureUnit::createKilocalorie(UErrorCode &status) { |
+ return MeasureUnit::create(8, 3, status); |
+} |
+ |
+MeasureUnit *MeasureUnit::createKilojoule(UErrorCode &status) { |
+ return MeasureUnit::create(8, 4, status); |
+} |
+ |
+MeasureUnit *MeasureUnit::createKilowattHour(UErrorCode &status) { |
+ return MeasureUnit::create(8, 5, status); |
+} |
+ |
+MeasureUnit *MeasureUnit::createGigahertz(UErrorCode &status) { |
+ return MeasureUnit::create(9, 0, status); |
+} |
+ |
+MeasureUnit *MeasureUnit::createHertz(UErrorCode &status) { |
+ return MeasureUnit::create(9, 1, status); |
+} |
+ |
+MeasureUnit *MeasureUnit::createKilohertz(UErrorCode &status) { |
+ return MeasureUnit::create(9, 2, status); |
+} |
+ |
+MeasureUnit *MeasureUnit::createMegahertz(UErrorCode &status) { |
+ return MeasureUnit::create(9, 3, status); |
+} |
+ |
+MeasureUnit *MeasureUnit::createAstronomicalUnit(UErrorCode &status) { |
+ return MeasureUnit::create(10, 0, status); |
+} |
+ |
+MeasureUnit *MeasureUnit::createCentimeter(UErrorCode &status) { |
+ return MeasureUnit::create(10, 1, status); |
+} |
+ |
+MeasureUnit *MeasureUnit::createDecimeter(UErrorCode &status) { |
+ return MeasureUnit::create(10, 2, status); |
+} |
+ |
+MeasureUnit *MeasureUnit::createFathom(UErrorCode &status) { |
+ return MeasureUnit::create(10, 3, status); |
+} |
+ |
+MeasureUnit *MeasureUnit::createFoot(UErrorCode &status) { |
+ return MeasureUnit::create(10, 4, status); |
+} |
+ |
+MeasureUnit *MeasureUnit::createFurlong(UErrorCode &status) { |
+ return MeasureUnit::create(10, 5, status); |
+} |
+ |
+MeasureUnit *MeasureUnit::createInch(UErrorCode &status) { |
+ return MeasureUnit::create(10, 6, status); |
+} |
+ |
+MeasureUnit *MeasureUnit::createKilometer(UErrorCode &status) { |
+ return MeasureUnit::create(10, 7, status); |
+} |
+ |
+MeasureUnit *MeasureUnit::createLightYear(UErrorCode &status) { |
+ return MeasureUnit::create(10, 8, status); |
+} |
+ |
+MeasureUnit *MeasureUnit::createMeter(UErrorCode &status) { |
+ return MeasureUnit::create(10, 9, status); |
+} |
+ |
+MeasureUnit *MeasureUnit::createMicrometer(UErrorCode &status) { |
+ return MeasureUnit::create(10, 10, status); |
+} |
+ |
+MeasureUnit *MeasureUnit::createMile(UErrorCode &status) { |
+ return MeasureUnit::create(10, 11, status); |
+} |
+ |
+MeasureUnit *MeasureUnit::createMillimeter(UErrorCode &status) { |
+ return MeasureUnit::create(10, 12, status); |
+} |
+ |
+MeasureUnit *MeasureUnit::createNanometer(UErrorCode &status) { |
+ return MeasureUnit::create(10, 13, status); |
+} |
+ |
+MeasureUnit *MeasureUnit::createNauticalMile(UErrorCode &status) { |
+ return MeasureUnit::create(10, 14, status); |
+} |
+ |
+MeasureUnit *MeasureUnit::createParsec(UErrorCode &status) { |
+ return MeasureUnit::create(10, 15, status); |
+} |
+ |
+MeasureUnit *MeasureUnit::createPicometer(UErrorCode &status) { |
+ return MeasureUnit::create(10, 16, status); |
+} |
+ |
+MeasureUnit *MeasureUnit::createYard(UErrorCode &status) { |
+ return MeasureUnit::create(10, 17, status); |
+} |
+ |
+MeasureUnit *MeasureUnit::createLux(UErrorCode &status) { |
+ return MeasureUnit::create(11, 0, status); |
+} |
+ |
+MeasureUnit *MeasureUnit::createCarat(UErrorCode &status) { |
+ return MeasureUnit::create(12, 0, status); |
+} |
+ |
+MeasureUnit *MeasureUnit::createGram(UErrorCode &status) { |
+ return MeasureUnit::create(12, 1, status); |
+} |
+ |
+MeasureUnit *MeasureUnit::createKilogram(UErrorCode &status) { |
+ return MeasureUnit::create(12, 2, status); |
+} |
+ |
+MeasureUnit *MeasureUnit::createMetricTon(UErrorCode &status) { |
+ return MeasureUnit::create(12, 3, status); |
+} |
+ |
+MeasureUnit *MeasureUnit::createMicrogram(UErrorCode &status) { |
+ return MeasureUnit::create(12, 4, status); |
+} |
+ |
+MeasureUnit *MeasureUnit::createMilligram(UErrorCode &status) { |
+ return MeasureUnit::create(12, 5, status); |
+} |
+ |
+MeasureUnit *MeasureUnit::createOunce(UErrorCode &status) { |
+ return MeasureUnit::create(12, 6, status); |
+} |
+ |
+MeasureUnit *MeasureUnit::createOunceTroy(UErrorCode &status) { |
+ return MeasureUnit::create(12, 7, status); |
+} |
+ |
+MeasureUnit *MeasureUnit::createPound(UErrorCode &status) { |
+ return MeasureUnit::create(12, 8, status); |
+} |
+ |
+MeasureUnit *MeasureUnit::createStone(UErrorCode &status) { |
+ return MeasureUnit::create(12, 9, status); |
+} |
+ |
+MeasureUnit *MeasureUnit::createTon(UErrorCode &status) { |
+ return MeasureUnit::create(12, 10, status); |
+} |
+ |
+MeasureUnit *MeasureUnit::createGigawatt(UErrorCode &status) { |
+ return MeasureUnit::create(13, 0, status); |
+} |
+ |
+MeasureUnit *MeasureUnit::createHorsepower(UErrorCode &status) { |
+ return MeasureUnit::create(13, 1, status); |
+} |
+ |
+MeasureUnit *MeasureUnit::createKilowatt(UErrorCode &status) { |
+ return MeasureUnit::create(13, 2, status); |
+} |
+ |
+MeasureUnit *MeasureUnit::createMegawatt(UErrorCode &status) { |
+ return MeasureUnit::create(13, 3, status); |
+} |
+ |
+MeasureUnit *MeasureUnit::createMilliwatt(UErrorCode &status) { |
+ return MeasureUnit::create(13, 4, status); |
+} |
+ |
+MeasureUnit *MeasureUnit::createWatt(UErrorCode &status) { |
+ return MeasureUnit::create(13, 5, status); |
+} |
+ |
+MeasureUnit *MeasureUnit::createHectopascal(UErrorCode &status) { |
+ return MeasureUnit::create(14, 0, status); |
+} |
+ |
+MeasureUnit *MeasureUnit::createInchHg(UErrorCode &status) { |
+ return MeasureUnit::create(14, 1, status); |
+} |
+ |
+MeasureUnit *MeasureUnit::createMillibar(UErrorCode &status) { |
+ return MeasureUnit::create(14, 2, status); |
+} |
+ |
+MeasureUnit *MeasureUnit::createMillimeterOfMercury(UErrorCode &status) { |
+ return MeasureUnit::create(14, 3, status); |
+} |
+ |
+MeasureUnit *MeasureUnit::createPoundPerSquareInch(UErrorCode &status) { |
+ return MeasureUnit::create(14, 4, status); |
+} |
+ |
+MeasureUnit *MeasureUnit::createKarat(UErrorCode &status) { |
+ return MeasureUnit::create(15, 0, status); |
+} |
+ |
+MeasureUnit *MeasureUnit::createKilometerPerHour(UErrorCode &status) { |
+ return MeasureUnit::create(16, 0, status); |
+} |
+ |
+MeasureUnit *MeasureUnit::createMeterPerSecond(UErrorCode &status) { |
+ return MeasureUnit::create(16, 1, status); |
+} |
+ |
+MeasureUnit *MeasureUnit::createMilePerHour(UErrorCode &status) { |
+ return MeasureUnit::create(16, 2, status); |
+} |
+ |
+MeasureUnit *MeasureUnit::createCelsius(UErrorCode &status) { |
+ return MeasureUnit::create(17, 0, status); |
+} |
+ |
+MeasureUnit *MeasureUnit::createFahrenheit(UErrorCode &status) { |
+ return MeasureUnit::create(17, 1, status); |
+} |
+ |
+MeasureUnit *MeasureUnit::createKelvin(UErrorCode &status) { |
+ return MeasureUnit::create(17, 2, status); |
+} |
+ |
+MeasureUnit *MeasureUnit::createAcreFoot(UErrorCode &status) { |
+ return MeasureUnit::create(18, 0, status); |
+} |
+ |
+MeasureUnit *MeasureUnit::createBushel(UErrorCode &status) { |
+ return MeasureUnit::create(18, 1, status); |
+} |
+ |
+MeasureUnit *MeasureUnit::createCentiliter(UErrorCode &status) { |
+ return MeasureUnit::create(18, 2, status); |
+} |
+ |
+MeasureUnit *MeasureUnit::createCubicCentimeter(UErrorCode &status) { |
+ return MeasureUnit::create(18, 3, status); |
+} |
+ |
+MeasureUnit *MeasureUnit::createCubicFoot(UErrorCode &status) { |
+ return MeasureUnit::create(18, 4, status); |
+} |
+ |
+MeasureUnit *MeasureUnit::createCubicInch(UErrorCode &status) { |
+ return MeasureUnit::create(18, 5, status); |
+} |
+ |
+MeasureUnit *MeasureUnit::createCubicKilometer(UErrorCode &status) { |
+ return MeasureUnit::create(18, 6, status); |
+} |
+ |
+MeasureUnit *MeasureUnit::createCubicMeter(UErrorCode &status) { |
+ return MeasureUnit::create(18, 7, status); |
+} |
+ |
+MeasureUnit *MeasureUnit::createCubicMile(UErrorCode &status) { |
+ return MeasureUnit::create(18, 8, status); |
+} |
+ |
+MeasureUnit *MeasureUnit::createCubicYard(UErrorCode &status) { |
+ return MeasureUnit::create(18, 9, status); |
+} |
+ |
+MeasureUnit *MeasureUnit::createCup(UErrorCode &status) { |
+ return MeasureUnit::create(18, 10, status); |
+} |
+ |
+MeasureUnit *MeasureUnit::createDeciliter(UErrorCode &status) { |
+ return MeasureUnit::create(18, 11, status); |
+} |
+ |
+MeasureUnit *MeasureUnit::createFluidOunce(UErrorCode &status) { |
+ return MeasureUnit::create(18, 12, status); |
+} |
+ |
+MeasureUnit *MeasureUnit::createGallon(UErrorCode &status) { |
+ return MeasureUnit::create(18, 13, status); |
+} |
+ |
+MeasureUnit *MeasureUnit::createHectoliter(UErrorCode &status) { |
+ return MeasureUnit::create(18, 14, status); |
+} |
+ |
+MeasureUnit *MeasureUnit::createLiter(UErrorCode &status) { |
+ return MeasureUnit::create(18, 15, status); |
+} |
+ |
+MeasureUnit *MeasureUnit::createMegaliter(UErrorCode &status) { |
+ return MeasureUnit::create(18, 16, status); |
+} |
+ |
+MeasureUnit *MeasureUnit::createMilliliter(UErrorCode &status) { |
+ return MeasureUnit::create(18, 17, status); |
+} |
+ |
+MeasureUnit *MeasureUnit::createPint(UErrorCode &status) { |
+ return MeasureUnit::create(18, 18, status); |
+} |
+ |
+MeasureUnit *MeasureUnit::createQuart(UErrorCode &status) { |
+ return MeasureUnit::create(18, 19, status); |
+} |
+ |
+MeasureUnit *MeasureUnit::createTablespoon(UErrorCode &status) { |
+ return MeasureUnit::create(18, 20, status); |
+} |
+ |
+MeasureUnit *MeasureUnit::createTeaspoon(UErrorCode &status) { |
+ return MeasureUnit::create(18, 21, status); |
+} |
+ |
+// End generated code |
+ |
+static int32_t binarySearch( |
+ const char * const * array, int32_t start, int32_t end, const char * key) { |
+ while (start < end) { |
+ int32_t mid = (start + end) / 2; |
+ int32_t cmp = uprv_strcmp(array[mid], key); |
+ if (cmp < 0) { |
+ start = mid + 1; |
+ continue; |
+ } |
+ if (cmp == 0) { |
+ return mid; |
+ } |
+ end = mid; |
+ } |
+ return -1; |
+} |
+ |
+MeasureUnit::MeasureUnit(const MeasureUnit &other) |
+ : fTypeId(other.fTypeId), fSubTypeId(other.fSubTypeId) { |
+ uprv_strcpy(fCurrency, other.fCurrency); |
+} |
+ |
+MeasureUnit &MeasureUnit::operator=(const MeasureUnit &other) { |
+ if (this == &other) { |
+ return *this; |
+ } |
+ fTypeId = other.fTypeId; |
+ fSubTypeId = other.fSubTypeId; |
+ uprv_strcpy(fCurrency, other.fCurrency); |
+ return *this; |
+} |
+ |
+UObject *MeasureUnit::clone() const { |
+ return new MeasureUnit(*this); |
+} |
+ |
+MeasureUnit::~MeasureUnit() { |
+} |
+ |
+const char *MeasureUnit::getType() const { |
+ return gTypes[fTypeId]; |
+} |
+ |
+const char *MeasureUnit::getSubtype() const { |
+ return fCurrency[0] == 0 ? gSubTypes[getOffset()] : fCurrency; |
+} |
+ |
+UBool MeasureUnit::operator==(const UObject& other) const { |
+ if (this == &other) { // Same object, equal |
+ return TRUE; |
+ } |
+ if (typeid(*this) != typeid(other)) { // Different types, not equal |
+ return FALSE; |
+ } |
+ const MeasureUnit &rhs = static_cast<const MeasureUnit&>(other); |
+ return ( |
+ fTypeId == rhs.fTypeId |
+ && fSubTypeId == rhs.fSubTypeId |
+ && uprv_strcmp(fCurrency, rhs.fCurrency) == 0); |
+} |
+ |
+int32_t MeasureUnit::getIndex() const { |
+ return gIndexes[fTypeId] + fSubTypeId; |
+} |
+ |
+int32_t MeasureUnit::getAvailable( |
+ MeasureUnit *dest, |
+ int32_t destCapacity, |
+ UErrorCode &errorCode) { |
+ if (U_FAILURE(errorCode)) { |
+ return 0; |
+ } |
+ if (destCapacity < UPRV_LENGTHOF(gSubTypes)) { |
+ errorCode = U_BUFFER_OVERFLOW_ERROR; |
+ return UPRV_LENGTHOF(gSubTypes); |
+ } |
+ int32_t idx = 0; |
+ for (int32_t typeIdx = 0; typeIdx < UPRV_LENGTHOF(gTypes); ++typeIdx) { |
+ int32_t len = gOffsets[typeIdx + 1] - gOffsets[typeIdx]; |
+ for (int32_t subTypeIdx = 0; subTypeIdx < len; ++subTypeIdx) { |
+ dest[idx].setTo(typeIdx, subTypeIdx); |
+ ++idx; |
+ } |
+ } |
+ U_ASSERT(idx == UPRV_LENGTHOF(gSubTypes)); |
+ return UPRV_LENGTHOF(gSubTypes); |
+} |
+ |
+int32_t MeasureUnit::getAvailable( |
+ const char *type, |
+ MeasureUnit *dest, |
+ int32_t destCapacity, |
+ UErrorCode &errorCode) { |
+ if (U_FAILURE(errorCode)) { |
+ return 0; |
+ } |
+ int32_t typeIdx = binarySearch(gTypes, 0, UPRV_LENGTHOF(gTypes), type); |
+ if (typeIdx == -1) { |
+ return 0; |
+ } |
+ int32_t len = gOffsets[typeIdx + 1] - gOffsets[typeIdx]; |
+ if (destCapacity < len) { |
+ errorCode = U_BUFFER_OVERFLOW_ERROR; |
+ return len; |
+ } |
+ for (int subTypeIdx = 0; subTypeIdx < len; ++subTypeIdx) { |
+ dest[subTypeIdx].setTo(typeIdx, subTypeIdx); |
+ } |
+ return len; |
+} |
+ |
+StringEnumeration* MeasureUnit::getAvailableTypes(UErrorCode &errorCode) { |
+ UEnumeration *uenum = uenum_openCharStringsEnumeration( |
+ gTypes, UPRV_LENGTHOF(gTypes), &errorCode); |
+ if (U_FAILURE(errorCode)) { |
+ uenum_close(uenum); |
+ return NULL; |
+ } |
+ StringEnumeration *result = new UStringEnumeration(uenum); |
+ if (result == NULL) { |
+ errorCode = U_MEMORY_ALLOCATION_ERROR; |
+ uenum_close(uenum); |
+ return NULL; |
+ } |
+ return result; |
+} |
+ |
+int32_t MeasureUnit::getIndexCount() { |
+ return gIndexes[UPRV_LENGTHOF(gIndexes) - 1]; |
+} |
+ |
+MeasureUnit *MeasureUnit::create(int typeId, int subTypeId, UErrorCode &status) { |
+ if (U_FAILURE(status)) { |
+ return NULL; |
+ } |
+ MeasureUnit *result = new MeasureUnit(typeId, subTypeId); |
+ if (result == NULL) { |
+ status = U_MEMORY_ALLOCATION_ERROR; |
+ } |
+ return result; |
+} |
+ |
+void MeasureUnit::initTime(const char *timeId) { |
+ int32_t result = binarySearch(gTypes, 0, UPRV_LENGTHOF(gTypes), "duration"); |
+ U_ASSERT(result != -1); |
+ fTypeId = result; |
+ result = binarySearch(gSubTypes, gOffsets[fTypeId], gOffsets[fTypeId + 1], timeId); |
+ U_ASSERT(result != -1); |
+ fSubTypeId = result - gOffsets[fTypeId]; |
+} |
+ |
+void MeasureUnit::initCurrency(const char *isoCurrency) { |
+ int32_t result = binarySearch(gTypes, 0, UPRV_LENGTHOF(gTypes), "currency"); |
+ U_ASSERT(result != -1); |
+ fTypeId = result; |
+ result = binarySearch( |
+ gSubTypes, gOffsets[fTypeId], gOffsets[fTypeId + 1], isoCurrency); |
+ if (result != -1) { |
+ fSubTypeId = result - gOffsets[fTypeId]; |
+ } else { |
+ uprv_strncpy(fCurrency, isoCurrency, UPRV_LENGTHOF(fCurrency)); |
+ } |
+} |
+ |
+void MeasureUnit::setTo(int32_t typeId, int32_t subTypeId) { |
+ fTypeId = typeId; |
+ fSubTypeId = subTypeId; |
+ fCurrency[0] = 0; |
+} |
+ |
+int32_t MeasureUnit::getOffset() const { |
+ return gOffsets[fTypeId] + fSubTypeId; |
+} |
+ |
+U_NAMESPACE_END |
+ |
+#endif /* !UNCONFIG_NO_FORMATTING */ |