LCOV - code coverage report
Current view: top level - intl/icu/source/common - ucnv_cnv.cpp (source / functions) Hit Total Coverage
Test: output.info Lines: 0 71 0.0 %
Date: 2017-07-14 16:53:18 Functions: 0 5 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             : *
       6             : *   Copyright (C) 1999-2004, International Business Machines
       7             : *   Corporation and others.  All Rights Reserved.
       8             : *
       9             : ******************************************************************************
      10             : *
      11             : *   uconv_cnv.c:
      12             : *   Implements all the low level conversion functions
      13             : *   T_UnicodeConverter_{to,from}Unicode_$ConversionType
      14             : *
      15             : *   Change history:
      16             : *
      17             : *   06/29/2000  helena      Major rewrite of the callback APIs.
      18             : */
      19             : 
      20             : #include "unicode/utypes.h"
      21             : 
      22             : #if !UCONFIG_NO_CONVERSION
      23             : 
      24             : #include "unicode/ucnv_err.h"
      25             : #include "unicode/ucnv.h"
      26             : #include "unicode/uset.h"
      27             : #include "ucnv_cnv.h"
      28             : #include "ucnv_bld.h"
      29             : #include "cmemory.h"
      30             : 
      31             : U_CFUNC void
      32           0 : ucnv_getCompleteUnicodeSet(const UConverter *cnv,
      33             :                    const USetAdder *sa,
      34             :                    UConverterUnicodeSet which,
      35             :                    UErrorCode *pErrorCode) {
      36             :     (void)cnv;
      37             :     (void)which;
      38             :     (void)pErrorCode;
      39           0 :     sa->addRange(sa->set, 0, 0x10ffff);
      40           0 : }
      41             : 
      42             : U_CFUNC void
      43           0 : ucnv_getNonSurrogateUnicodeSet(const UConverter *cnv,
      44             :                                const USetAdder *sa,
      45             :                                UConverterUnicodeSet which,
      46             :                                UErrorCode *pErrorCode) {
      47             :     (void)cnv;
      48             :     (void)which;
      49             :     (void)pErrorCode;
      50           0 :     sa->addRange(sa->set, 0, 0xd7ff);
      51           0 :     sa->addRange(sa->set, 0xe000, 0x10ffff);
      52           0 : }
      53             : 
      54             : U_CFUNC void
      55           0 : ucnv_fromUWriteBytes(UConverter *cnv,
      56             :                      const char *bytes, int32_t length,
      57             :                      char **target, const char *targetLimit,
      58             :                      int32_t **offsets,
      59             :                      int32_t sourceIndex,
      60             :                      UErrorCode *pErrorCode) {
      61           0 :     char *t=*target;
      62             :     int32_t *o;
      63             : 
      64             :     /* write bytes */
      65           0 :     if(offsets==NULL || (o=*offsets)==NULL) {
      66           0 :         while(length>0 && t<targetLimit) {
      67           0 :             *t++=*bytes++;
      68           0 :             --length;
      69             :         }
      70             :     } else {
      71             :         /* output with offsets */
      72           0 :         while(length>0 && t<targetLimit) {
      73           0 :             *t++=*bytes++;
      74           0 :             *o++=sourceIndex;
      75           0 :             --length;
      76             :         }
      77           0 :         *offsets=o;
      78             :     }
      79           0 :     *target=t;
      80             : 
      81             :     /* write overflow */
      82           0 :     if(length>0) {
      83           0 :         if(cnv!=NULL) {
      84           0 :             t=(char *)cnv->charErrorBuffer;
      85           0 :             cnv->charErrorBufferLength=(int8_t)length;
      86           0 :             do {
      87           0 :                 *t++=(uint8_t)*bytes++;
      88             :             } while(--length>0);
      89             :         }
      90           0 :         *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
      91             :     }
      92           0 : }
      93             : 
      94             : U_CFUNC void
      95           0 : ucnv_toUWriteUChars(UConverter *cnv,
      96             :                     const UChar *uchars, int32_t length,
      97             :                     UChar **target, const UChar *targetLimit,
      98             :                     int32_t **offsets,
      99             :                     int32_t sourceIndex,
     100             :                     UErrorCode *pErrorCode) {
     101           0 :     UChar *t=*target;
     102             :     int32_t *o;
     103             : 
     104             :     /* write UChars */
     105           0 :     if(offsets==NULL || (o=*offsets)==NULL) {
     106           0 :         while(length>0 && t<targetLimit) {
     107           0 :             *t++=*uchars++;
     108           0 :             --length;
     109             :         }
     110             :     } else {
     111             :         /* output with offsets */
     112           0 :         while(length>0 && t<targetLimit) {
     113           0 :             *t++=*uchars++;
     114           0 :             *o++=sourceIndex;
     115           0 :             --length;
     116             :         }
     117           0 :         *offsets=o;
     118             :     }
     119           0 :     *target=t;
     120             : 
     121             :     /* write overflow */
     122           0 :     if(length>0) {
     123           0 :         if(cnv!=NULL) {
     124           0 :             t=cnv->UCharErrorBuffer;
     125           0 :             cnv->UCharErrorBufferLength=(int8_t)length;
     126           0 :             do {
     127           0 :                 *t++=*uchars++;
     128             :             } while(--length>0);
     129             :         }
     130           0 :         *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
     131             :     }
     132           0 : }
     133             : 
     134             : U_CFUNC void
     135           0 : ucnv_toUWriteCodePoint(UConverter *cnv,
     136             :                        UChar32 c,
     137             :                        UChar **target, const UChar *targetLimit,
     138             :                        int32_t **offsets,
     139             :                        int32_t sourceIndex,
     140             :                        UErrorCode *pErrorCode) {
     141             :     UChar *t;
     142             :     int32_t *o;
     143             : 
     144           0 :     t=*target;
     145             : 
     146           0 :     if(t<targetLimit) {
     147           0 :         if(c<=0xffff) {
     148           0 :             *t++=(UChar)c;
     149           0 :             c=U_SENTINEL;
     150             :         } else /* c is a supplementary code point */ {
     151           0 :             *t++=U16_LEAD(c);
     152           0 :             c=U16_TRAIL(c);
     153           0 :             if(t<targetLimit) {
     154           0 :                 *t++=(UChar)c;
     155           0 :                 c=U_SENTINEL;
     156             :             }
     157             :         }
     158             : 
     159             :         /* write offsets */
     160           0 :         if(offsets!=NULL && (o=*offsets)!=NULL) {
     161           0 :             *o++=sourceIndex;
     162           0 :             if((*target+1)<t) {
     163           0 :                 *o++=sourceIndex;
     164             :             }
     165           0 :             *offsets=o;
     166             :         }
     167             :     }
     168             : 
     169           0 :     *target=t;
     170             : 
     171             :     /* write overflow from c */
     172           0 :     if(c>=0) {
     173           0 :         if(cnv!=NULL) {
     174           0 :             int8_t i=0;
     175           0 :             U16_APPEND_UNSAFE(cnv->UCharErrorBuffer, i, c);
     176           0 :             cnv->UCharErrorBufferLength=i;
     177             :         }
     178           0 :         *pErrorCode=U_BUFFER_OVERFLOW_ERROR;
     179             :     }
     180           0 : }
     181             : 
     182             : #endif

Generated by: LCOV version 1.13