LCOV - code coverage report
Current view: top level - intl/icu/source/common - unifilt.cpp (source / functions) Hit Total Coverage
Test: output.info Lines: 0 20 0.0 %
Date: 2017-07-14 16:53:18 Functions: 0 8 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) 2001-2012, International Business Machines
       6             : * Corporation and others.  All Rights Reserved.
       7             : **********************************************************************
       8             : *   Date        Name        Description
       9             : *   07/18/01    aliu        Creation.
      10             : **********************************************************************
      11             : */
      12             : 
      13             : #include "unicode/unifilt.h"
      14             : #include "unicode/rep.h"
      15             : #include "unicode/utf16.h"
      16             : 
      17             : U_NAMESPACE_BEGIN
      18           0 : UOBJECT_DEFINE_ABSTRACT_RTTI_IMPLEMENTATION(UnicodeFilter)
      19             : 
      20             : 
      21             : /* Define this here due to the lack of another file.
      22             :    It can't be defined in the header */
      23           0 : UnicodeMatcher::~UnicodeMatcher() {}
      24             : 
      25           0 : UnicodeFilter::~UnicodeFilter() {}
      26             : 
      27             : /**
      28             :  * UnicodeFunctor API.
      29             :  *   Note that UnicodeMatcher is a base class of UnicodeFilter.
      30             :  */
      31           0 : UnicodeMatcher* UnicodeFilter::toMatcher() const {
      32           0 :   return const_cast<UnicodeFilter *>(this);
      33             : }
      34             : 
      35           0 : void UnicodeFilter::setData(const TransliterationRuleData*) {}
      36             : 
      37             : /**
      38             :  * Default implementation of UnicodeMatcher::matches() for Unicode
      39             :  * filters.  Matches a single code point at offset (either one or
      40             :  * two 16-bit code units).
      41             :  */
      42           0 : UMatchDegree UnicodeFilter::matches(const Replaceable& text,
      43             :                                     int32_t& offset,
      44             :                                     int32_t limit,
      45             :                                     UBool incremental) {
      46             :     UChar32 c;
      47           0 :     if (offset < limit &&
      48           0 :         contains(c = text.char32At(offset))) {
      49           0 :         offset += U16_LENGTH(c);
      50           0 :         return U_MATCH;
      51             :     }
      52           0 :     if (offset > limit &&
      53           0 :         contains(c = text.char32At(offset))) {
      54             :         // Backup offset by 1, unless the preceding character is a
      55             :         // surrogate pair -- then backup by 2 (keep offset pointing at
      56             :         // the lead surrogate).
      57           0 :         --offset;
      58           0 :         if (offset >= 0) {
      59           0 :             offset -= U16_LENGTH(text.char32At(offset)) - 1;
      60             :         }
      61           0 :         return U_MATCH;
      62             :     }
      63           0 :     if (incremental && offset == limit) {
      64           0 :         return U_PARTIAL_MATCH;
      65             :     }
      66           0 :     return U_MISMATCH;
      67             : }
      68             : 
      69             : U_NAMESPACE_END
      70             : 
      71             : //eof

Generated by: LCOV version 1.13