]> git.saurik.com Git - apple/icu.git/blobdiff - icuSources/i18n/udatintv.cpp
ICU-59117.0.1.tar.gz
[apple/icu.git] / icuSources / i18n / udatintv.cpp
index 85cb1229623bbb97d5408272b4715aba0982b0e5..49c5aca61185413dcfcffb8a607cdcce8218da45 100644 (file)
@@ -1,6 +1,6 @@
 /*
 *****************************************************************************************
-* Copyright (C) 2010 Apple Inc. All Rights Reserved.
+* Copyright (C) 2010-2011 Apple Inc. All Rights Reserved.
 *****************************************************************************************
 */
 
@@ -8,11 +8,8 @@
 
 #if !UCONFIG_NO_FORMATTING
 
+#include "unicode/udateintervalformat.h"
 #include "unicode/udatintv.h"
-#include "unicode/dtitvfmt.h"
-#include "unicode/dtintrv.h"
-#include "unicode/locid.h"
-#include "unicode/unistr.h"
 
 U_NAMESPACE_USE
 
@@ -23,18 +20,14 @@ udatintv_open(const char*  locale,
               int32_t      skeletonLength,
               UErrorCode*  status)
 {
-    if (U_FAILURE(*status)) {
-        return 0;
-    }
-    UnicodeString skel((UBool)(skeletonLength == -1), skeleton, skeletonLength);
-    return (UDateIntervalFormat*)DateIntervalFormat::createInstance(skel, Locale(locale), *status);
+    return udtitvfmt_open(locale, skeleton, skeletonLength, NULL, 0, status);
 }
 
 
 U_CAPI void U_EXPORT2
 udatintv_close(UDateIntervalFormat *datintv)
 {
-    delete (DateIntervalFormat*)datintv;
+    udtitvfmt_close(datintv);
 }
 
 
@@ -47,31 +40,7 @@ udatintv_format(const UDateIntervalFormat* datintv,
                 UFieldPosition* position,
                 UErrorCode*     status)
 {
-    if (U_FAILURE(*status)) {
-        return -1;
-    }
-    UnicodeString res;
-    if (!(result==NULL && resultCapacity==0)) {
-        // NULL destination for pure preflighting: empty dummy string
-        // otherwise, alias the destination buffer (copied from udat_format)
-        res.setTo(result, 0, resultCapacity);
-    }
-    FieldPosition fp;
-    if (position != 0) {
-        fp.setField(position->field);
-    }
-
-    DateInterval interval = DateInterval(fromDate,toDate);
-    ((const DateIntervalFormat*)datintv)->format( &interval, res, fp, *status );
-    if (U_FAILURE(*status)) {
-        return -1;
-    }
-    if (position != 0) {
-        position->beginIndex = fp.getBeginIndex();
-        position->endIndex = fp.getEndIndex();
-    }
-
-    return res.extract(result, resultCapacity, *status);
+    return udtitvfmt_format(datintv, fromDate, toDate, result, resultCapacity, position, status);
 }