LCOV - code coverage report
Current view: top level - intl/icu/source/i18n - format.cpp (source / functions) Hit Total Coverage
Test: output.info Lines: 0 58 0.0 %
Date: 2017-07-14 16:53:18 Functions: 0 18 0.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : // © 2016 and later: Unicode, Inc. and others.
       2             : // License & terms of use: http://www.unicode.org/copyright.html
       3             : /*
       4             : *******************************************************************************
       5             : * Copyright (C) 1997-2012, International Business Machines Corporation and    *
       6             : * others. All Rights Reserved.                                                *
       7             : *******************************************************************************
       8             : *
       9             : * File FORMAT.CPP
      10             : *
      11             : * Modification History:
      12             : *
      13             : *   Date        Name        Description
      14             : *   02/19/97    aliu        Converted from java.
      15             : *   03/17/97    clhuang     Implemented with new APIs.
      16             : *   03/27/97    helena      Updated to pass the simple test after code review.
      17             : *   07/20/98    stephen        Added explicit init values for Field/ParsePosition
      18             : ********************************************************************************
      19             : */
      20             : // *****************************************************************************
      21             : // This file was generated from the java source file Format.java
      22             : // *****************************************************************************
      23             : 
      24             : #include "utypeinfo.h"  // for 'typeid' to work
      25             : 
      26             : #include "unicode/utypes.h"
      27             : 
      28             : #ifndef U_I18N_IMPLEMENTATION
      29             : #error U_I18N_IMPLEMENTATION not set - must be set for all ICU source files in i18n/ - see http://userguide.icu-project.org/howtouseicu
      30             : #endif
      31             : 
      32             : /*
      33             :  * Dummy code:
      34             :  * If all modules in the I18N library are switched off, then there are no
      35             :  * library exports and MSVC 6 writes a .dll but not a .lib file.
      36             :  * Unless we export _something_ in that case...
      37             :  */
      38             : #if UCONFIG_NO_COLLATION && UCONFIG_NO_FORMATTING && UCONFIG_NO_TRANSLITERATION
      39             : U_CAPI int32_t U_EXPORT2
      40             : uprv_icuin_lib_dummy(int32_t i) {
      41             :     return -i;
      42             : }
      43             : #endif
      44             : 
      45             : /* Format class implementation ---------------------------------------------- */
      46             : 
      47             : #if !UCONFIG_NO_FORMATTING
      48             : 
      49             : #include "unicode/format.h"
      50             : #include "unicode/ures.h"
      51             : #include "cstring.h"
      52             : #include "locbased.h"
      53             : 
      54             : // *****************************************************************************
      55             : // class Format
      56             : // *****************************************************************************
      57             : 
      58             : U_NAMESPACE_BEGIN
      59             : 
      60           0 : UOBJECT_DEFINE_RTTI_IMPLEMENTATION(FieldPosition)
      61             : 
      62           0 : FieldPosition::~FieldPosition() {}
      63             : 
      64             : FieldPosition *
      65           0 : FieldPosition::clone() const {
      66           0 :     return new FieldPosition(*this);
      67             : }
      68             : 
      69             : // -------------------------------------
      70             : // default constructor
      71             : 
      72           0 : Format::Format()
      73           0 :     : UObject()
      74             : {
      75           0 :     *validLocale = *actualLocale = 0;
      76           0 : }
      77             : 
      78             : // -------------------------------------
      79             : 
      80           0 : Format::~Format()
      81             : {
      82           0 : }
      83             : 
      84             : // -------------------------------------
      85             : // copy constructor
      86             : 
      87           0 : Format::Format(const Format &that)
      88           0 :     : UObject(that)
      89             : {
      90           0 :     *this = that;
      91           0 : }
      92             : 
      93             : // -------------------------------------
      94             : // assignment operator
      95             : 
      96             : Format&
      97           0 : Format::operator=(const Format& that)
      98             : {
      99           0 :     if (this != &that) {
     100           0 :         uprv_strcpy(validLocale, that.validLocale);
     101           0 :         uprv_strcpy(actualLocale, that.actualLocale);
     102             :     }
     103           0 :     return *this;
     104             : }
     105             : 
     106             : // -------------------------------------
     107             : // Formats the obj and append the result in the buffer, toAppendTo.
     108             : // This calls the actual implementation in the concrete subclasses.
     109             : 
     110             : UnicodeString&
     111           0 : Format::format(const Formattable& obj,
     112             :                UnicodeString& toAppendTo,
     113             :                UErrorCode& status) const
     114             : {
     115           0 :     if (U_FAILURE(status)) return toAppendTo;
     116             : 
     117           0 :     FieldPosition pos(FieldPosition::DONT_CARE);
     118             : 
     119           0 :     return format(obj, toAppendTo, pos, status);
     120             : }
     121             : 
     122             : // -------------------------------------
     123             : // Default implementation sets unsupported error; subclasses should
     124             : // override.
     125             : 
     126             : UnicodeString&
     127           0 : Format::format(const Formattable& /* unused obj */,
     128             :                UnicodeString& toAppendTo,
     129             :                FieldPositionIterator* /* unused posIter */,
     130             :                UErrorCode& status) const
     131             : {
     132           0 :     if (!U_FAILURE(status)) {
     133           0 :       status = U_UNSUPPORTED_ERROR;
     134             :     }
     135           0 :     return toAppendTo;
     136             : }
     137             : 
     138             : // -------------------------------------
     139             : // Parses the source string and create the corresponding
     140             : // result object.  Checks the parse position for errors.
     141             : 
     142             : void
     143           0 : Format::parseObject(const UnicodeString& source,
     144             :                     Formattable& result,
     145             :                     UErrorCode& status) const
     146             : {
     147           0 :     if (U_FAILURE(status)) return;
     148             : 
     149           0 :     ParsePosition parsePosition(0);
     150           0 :     parseObject(source, result, parsePosition);
     151           0 :     if (parsePosition.getIndex() == 0) {
     152           0 :         status = U_INVALID_FORMAT_ERROR;
     153             :     }
     154             : }
     155             : 
     156             : // -------------------------------------
     157             : 
     158             : UBool
     159           0 : Format::operator==(const Format& that) const
     160             : {
     161             :     // Subclasses: Call this method and then add more specific checks.
     162           0 :     return typeid(*this) == typeid(that);
     163             : }
     164             : //---------------------------------------
     165             : 
     166             : /**
     167             :  * Simple function for initializing a UParseError from a UnicodeString.
     168             :  *
     169             :  * @param pattern The pattern to copy into the parseError
     170             :  * @param pos The position in pattern where the error occured
     171             :  * @param parseError The UParseError object to fill in
     172             :  * @draft ICU 2.4
     173             :  */
     174           0 : void Format::syntaxError(const UnicodeString& pattern,
     175             :                          int32_t pos,
     176             :                          UParseError& parseError) {
     177           0 :     parseError.offset = pos;
     178           0 :     parseError.line=0;  // we are not using line number
     179             : 
     180             :     // for pre-context
     181           0 :     int32_t start = (pos < U_PARSE_CONTEXT_LEN)? 0 : (pos - (U_PARSE_CONTEXT_LEN-1
     182           0 :                                                              /* subtract 1 so that we have room for null*/));
     183           0 :     int32_t stop  = pos;
     184           0 :     pattern.extract(start,stop-start,parseError.preContext,0);
     185             :     //null terminate the buffer
     186           0 :     parseError.preContext[stop-start] = 0;
     187             : 
     188             :     //for post-context
     189           0 :     start = pos+1;
     190           0 :     stop  = ((pos+U_PARSE_CONTEXT_LEN)<=pattern.length()) ? (pos+(U_PARSE_CONTEXT_LEN-1)) :
     191             :         pattern.length();
     192           0 :     pattern.extract(start,stop-start,parseError.postContext,0);
     193             :     //null terminate the buffer
     194           0 :     parseError.postContext[stop-start]= 0;
     195           0 : }
     196             : 
     197             : Locale
     198           0 : Format::getLocale(ULocDataLocaleType type, UErrorCode& status) const {
     199           0 :     U_LOCALE_BASED(locBased, *this);
     200           0 :     return locBased.getLocale(type, status);
     201             : }
     202             : 
     203             : const char *
     204           0 : Format::getLocaleID(ULocDataLocaleType type, UErrorCode& status) const {
     205           0 :     U_LOCALE_BASED(locBased, *this);
     206           0 :     return locBased.getLocaleID(type, status);
     207             : }
     208             : 
     209             : void
     210           0 : Format::setLocaleIDs(const char* valid, const char* actual) {
     211           0 :     U_LOCALE_BASED(locBased, *this);
     212           0 :     locBased.setLocaleIDs(valid, actual);
     213           0 : }
     214             : 
     215             : U_NAMESPACE_END
     216             : 
     217             : #endif /* #if !UCONFIG_NO_FORMATTING */
     218             : 
     219             : //eof

Generated by: LCOV version 1.13