]> git.saurik.com Git - apple/icu.git/blobdiff - icuSources/i18n/format.cpp
ICU-6.2.4.tar.gz
[apple/icu.git] / icuSources / i18n / format.cpp
index 3141c85f6f459deb67e1e84d242e58f87ce326f0..e93642c6ade9913560ae21487872f55036e34b14 100644 (file)
@@ -1,6 +1,6 @@
 /*
 *******************************************************************************
-* Copyright (C) 1997-2003, International Business Machines Corporation and    *
+* Copyright (C) 1997-2004, International Business Machines Corporation and    *
 * others. All Rights Reserved.                                                *
 *******************************************************************************
 *
@@ -39,6 +39,9 @@ uprv_icuin_lib_dummy(int32_t i) {
 #if !UCONFIG_NO_FORMATTING
 
 #include "unicode/format.h"
+#include "unicode/ures.h"
+#include "cstring.h"
+#include "locbased.h"
 
 // *****************************************************************************
 // class Format
@@ -46,7 +49,14 @@ uprv_icuin_lib_dummy(int32_t i) {
 
 U_NAMESPACE_BEGIN
 
-const char FieldPosition::fgClassID=0;
+UOBJECT_DEFINE_RTTI_IMPLEMENTATION(FieldPosition)
+
+FieldPosition::~FieldPosition() {}
+
+FieldPosition *
+FieldPosition::clone() const {
+    return new FieldPosition(*this);
+}
 
 // -------------------------------------
 // default constructor
@@ -54,6 +64,7 @@ const char FieldPosition::fgClassID=0;
 Format::Format()
     : UObject()
 {
+    *validLocale = *actualLocale = 0;
 }
 
 // -------------------------------------
@@ -68,14 +79,17 @@ Format::~Format()
 Format::Format(const Format &that)
     : UObject(that)
 {
+    *this = that;
 }
 
 // -------------------------------------
 // assignment operator
 
 Format&
-Format::operator=(const Format& /*that*/)
+Format::operator=(const Format& that)
 {
+    uprv_strcpy(validLocale, that.validLocale);
+    uprv_strcpy(actualLocale, that.actualLocale);
     return *this;
 }
 
@@ -90,9 +104,7 @@ Format::format(const Formattable& obj,
 {
     if (U_FAILURE(status)) return toAppendTo;
 
-    // {sfb} should really be FieldPosition::DONT_CARE, not 0
-    // leave at 0 for now, to keep in sync with Java
-    FieldPosition pos(0);
+    FieldPosition pos(FieldPosition::DONT_CARE);
 
     return format(obj, toAppendTo, pos, status);
 }
@@ -118,10 +130,10 @@ Format::parseObject(const UnicodeString& source,
 // -------------------------------------
 
 UBool
-Format::operator==(const Format& /*that*/) const
+Format::operator==(const Format& that) const
 {
-    // Add this implementation to make linker happy.
-    return TRUE;
+    // Subclasses: Call this method and then add more specific checks.
+    return getDynamicClassID() == that.getDynamicClassID();
 }
 //---------------------------------------
 
@@ -156,6 +168,24 @@ void Format::syntaxError(const UnicodeString& pattern,
     parseError.postContext[stop-start]= 0;
 }
 
+Locale 
+Format::getLocale(ULocDataLocaleType type, UErrorCode& status) const {
+    U_LOCALE_BASED(locBased, *this);
+    return locBased.getLocale(type, status);
+}
+
+const char *
+Format::getLocaleID(ULocDataLocaleType type, UErrorCode& status) const {
+    U_LOCALE_BASED(locBased, *this);
+    return locBased.getLocaleID(type, status);
+}
+
+void
+Format::setLocaleIDs(const char* valid, const char* actual) {
+    U_LOCALE_BASED(locBased, *this);
+    locBased.setLocaleIDs(valid, actual);
+}
+
 U_NAMESPACE_END
 
 #endif /* #if !UCONFIG_NO_FORMATTING */