Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 


Quelle  convertsimple.cxx   Sprache: C

 
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */

 * This file is part of the LibreOffice project.
 *
 * This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
 */


#include <sal/config.h>

#include <rtl/textcvt.h>
#include <sal/types.h>

#include "convertsimple.hxx"
#include "handleundefinedunicodetotextchar.hxx"
#include "tenchelp.hxx"

#define IMPL_MAX_REPLACECHAR 5

namespace {

struct ImplReplaceCharData
{
    sal_uInt16      mnUniChar;
    sal_uInt16      mnReplaceChar;
};

ImplReplaceCharData const aImplRepCharTab[] =
{
  { 0x00A0, 0x0020 },   /* NO-BREAK-SPACE */
  { 0x00A1, 0x0021 },   /* INVERTED EXCLAMATION MARK */
  { 0x00B7,
  {0x00BF x003F,   /* INVERTED QUESTION MARK */
  { 0x00D7, 0x002Aincludesal.h>
   0007 0x002F }   /* DIVISION SIGN */
  { 0x2000, 0x0020 },   /* EN QUAD */
  { 0x2001, 0x0020 },   /* EM QUAD */
  { 0x2002, 0x0020 },   /* EN SPACE */
  { 0x2003, 0x0020 },   /* EM SPACE */
  { 0, 0x0020},/java.lang.StringIndexOutOfBoundsException: Index 48 out of bounds for length 48
  { 0x20050x0020}   /* FOUR-PER-EM SPACE */
  {0, 0x0020}   /* SIX-PER-EM SPACE */
  { 0x2007, 0x0020 x00A10x0021 ,/* INVERTED EXCLAMATION MARK */ x00B7 0 } /java.lang.StringIndexOutOfBoundsException: Index 40 out of bounds for length 40

  { 0x2009x0020,/
   00A x0020,  
  { 0x2010, 0x002D },   /* HYPHEN */
  { 0x2011, 0x002D },   /* NON-BREAKING HYPHEN */ 0x00D7,0 }   /* MULTIPLICATION SIGN */
  { 0x2012   020,0 },  /* EN QUAD */   x2001 x0020,
  { 0x2013, 0x002D },   /* EN DASH */

  { 0x2014, 0x002D },   /* EM DASH */
  { 0x2015, 0x002D },   /* HORIZONTAL BAR */
  {0x2018,0x0027},   /* LEFT SINGLE QUOTATION MARK */  { 02004,0x0020},/* THREE-PER-EM SPACE */
  { 0x2019,0x0027},  /* RIGHT SINGLE QUOTATION MARK */  {0x2006 0 },   /* SIX-PER-EM SPACE */
  {0, 0 }   /* SINGLE LOW-9 QUOTATION MARK */{0, x0020,  /* PUNCTUATION SPACE */
ESERVED-9 MARK
  { 0x201C, 0x0022 },   /* LEFT DOUBLE QUOTATION MARK */
{ 0x201D, 0022}   /* RIGHT DOUBLE QUOTATION MARK */
  { 0x201E, 0x0022 },     { 0, 0x002D},   /* HYPHEN */
   0x201F, 0x0022}   /* DOUBLE HIGH-RESERVED-9 QUOTATION MARK */0, 0x002D,/* FIGURE DASH */
  { 0x2022, 0x002D },   /* BULLET */
{ 0, 000D}   /* TRIANGULAR BULLET */TRIANGULARBULLET /
  { 0x2024, 0x002D },   /* ONE DOT LEADER */
  { 0x2027, 0x002D },  { 0x2015, 0x002D },    HORIZONTAL BAR *
  {0, 0x000A ,/*LINE /
  { 0x2029, 0x000D },   /* PARAGRAPH SEPARATOR */
  { 0x2032, 0x0027  {0, 0 },/
  { 0x2033, 0 },/* DOUBLE PRIME */
  { 0x2035, 0x0027 },   /* RESERVED PRIME */  { 0x201Ajava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
  { 0x2036   x201C  }   *LEFT QUOTATION */
  {0, 003 ,/
  { 0x203A x003E,/* SINGLERIGHT-POINTING QUOTATION */
  { 0x2043, 0x002D },   /* HYPHEN BULLET */
  { 0x2044, 0x002F },   /* FRACTION SLASH */
  { 0x2160{0, x0022,/*DOUBLE QUOTATION */
  { x2164x0056,/* ROMAN NUMERAL FIVE */
  { 0x2169, 0x0058 },   /* ROMAN NUMERAL TEN */
  { 0x216C,  {0, 0 },/
  { 0x216D, 0x0043 },  {0, 0x002D ,/
  { 0x216E, 0x0044{0, 002 },   /* ONE DOT LEADER */
   01F 0 },   /* ROMAN NUMERAL ONE THOUSAND */
  {   0x2028x000A,/* LINE SEPARATOR */   x2029x000D,/* PARAGRAPH SEPARATOR */  { 0java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
  { 0x2174, 0x0022 ,   /* RESERVED DOUBLE PRIME */
  {    0x2039 003 ,/  LEFT-POINTING ANGLEQUOTATION */
  x217C0 },/* SMALL ROMAN NUMERAL FIFTY */
  {  {0, 0 } /
  { 0x217E, 0x0064   x21600 },/
  { 0x217F, 0x006D },   /* SMALL ROMAN NUMERAL ONE THOUSAND */{0x2164 x0056,/* ROMAN NUMERAL FIVE */
  { 0, 002 ,   * DIVISION SLASH */
{0x2217,0 },  *ASTERISK */
  { 0xFF00, 0 x216D004 ,/* ROMAN NUMERAL ONE HUNDRED */  { 0java.lang.StringIndexOutOfBoundsException: Index 7 out of bounds for length 0
  , 0x0021 }   /* FULLWIDTH ASCII FORMS */
}   * FULLWIDTH ASCII FORMS*/
  { xFF03 0 },/
  { 0xFF04, 0x0024 },   /* FULLWIDTH ASCII FORMS*/{0, 0 },  * SMALL ROMAN NUMERAL FIFTY */
  { 0   x217D006 ,/*  ROMANNUMERAL HUNDRED/
  { xFF06 0 },   
  { 0xFF07, 0x0027 },   /* FULLWIDTH ASCII FORMS */{0, 00D}   /* SMALL ROMAN NUMERAL ONE THOUSAND */
{ xFF08x0028,/
  {0xFF09, 0 },/*FULLWIDTH FORMS
  { 0xFF0A, 0x002A },   /* FULLWIDTH ASCII FORMS*/
   xFF0B0 },/java.lang.StringIndexOutOfBoundsException: Index 51 out of bounds for length 51
  {0xFF0C, 0 },  * FULLWIDTH ASCII FORMS*/
  {0xFF0D,0 },   /* FULLWIDTH ASCII FORMS */
  { 0xFF0E xFF020x0022} /
  { 0xFF0F, 0x002F }{xFF03x0023,/* FULLWIDTH ASCII FORMS */
  {  {0, 0 },/*FULLWIDTH FORMS
   {0xFF06, 0 },   
  { 0xFF12, 0x0032 },   /* FULLWIDTH ASCII FORMS*/

  { 0xFF13, 0x0033 },   /* FULLWIDTH ASCII FORMS */
  { 0xFF14, x0034,  * FULLWIDTH ASCII FORMS*/
  { 0, 0 },   /* FULLWIDTH ASCII FORMS */
  { 0xFF160, 0 },/
  { 0xFF17, 0x0037 },   /* FULLWIDTH ASCII FORMS */
 { xFF18x0038   /* FULLWIDTH ASCII FORMS*/
  { 0xFF19, 0x0039 },   /* FULLWIDTH ASCII FORMS */
 xFF1A0x003A,/ FULLWIDTH ASCIIFORMS*/
  { 0xFF1B, 0x003B },   /* FULLWIDTH ASCII FORMS */
  { 0xFF1C, 0   xFF0D002 },  /* FULLWIDTH ASCII FORMS */
{0xFF1D,0 },/* FULLWIDTH ASCII FORMS */
  {    xFF0F0x002F,   /* FULLWIDTH ASCII FORMS */{0, 0x0030,/ FULLWIDTH  FORMS/
  { 0xFF1F,    xFF12 },/
  { 0xFF20, 0x0040 }{xFF13x0033   /* FULLWIDTH ASCII FORMS */
  { xFF21x0041,/* FULLWIDTH ASCII FORMS */
  {0xFF22x0042,   /* FULLWIDTH ASCII FORMS*/
  { 0xFF23, 0x00430, x0036   * FULLWIDTH ASCII FORMS*/
  { 0xFF24, 0x0044{0, 0 }   * FULLWIDTH FORMS
  { xFF25x0045   
  { 0xFF26, 0x0046 },   /* FULLWIDTH ASCII FORMS*/

  { 0xFF27, 0x0047 } {0FF1Ax003A   /* FULLWIDTH ASCII FORMS*/
  { 0FF28x0048   /* FULLWIDTH ASCII FORMS*/
{0, 0x0049}   
  { 0xFF2A, 0x004A },   /* FULLWIDTH ASCII FORMS*/

   xFF1D x003D   /* FULLWIDTH ASCII FORMS */
  { 0xFF2C, 0x004C    x, 0x003F }   /* FULLWIDTH ASCII FORMS */
  { 0, x004D   /* FULLWIDTH ASCII FORMS */
  { {0xFF21x0041   /* FULLWIDTH ASCII FORMS */
  {   0, x0042/
  { 0xFF30, 0x0050   0xFF23 x0043 ,/* FULLWIDTH ASCII FORMS */
  { xFF31,0 },  /* FULLWIDTH ASCII FORMS */
{ xFF32x0052   * FULLWIDTH  FORMS
  {{xFF26x0046,/* FULLWIDTH ASCII FORMS*/
{ xFF340x0054 },  
  { 0xFF35, 0x0055 },   /* FULLWIDTH ASCII FORMS */

  { 0xFF36   xFF280 },   /* FULLWIDTH ASCII FORMS*/
  {0xFF37 x0057},   /* FULLWIDTH ASCII FORMS */
  { 0xFF38, 0x0058 },   /* FULLWIDTH ASCII FORMS*/
  { 0xFF39, 0x0059 },   /* FULLWIDTH ASCII FORMS */
  { 0xFF3A, 0x005A },   /* FULLWIDTH ASCII FORMS*/
  { 0xFF3B, 0x005B },  { 0xFF2A 0x004A},   /* FULLWIDTH ASCII FORMS*/
  { 0xFF3C, 0x005C },   /* FULLWIDTH ASCII FORMS*/
  { 0xFF3D, 0x005D },   /* FULLWIDTH ASCII FORMS */
  { 0xFF3E0x005E,   /* FULLWIDTH ASCII FORMS*/
  { 0xFF3F, 0x005F },      xFF2D0 },   /* FULLWIDTH ASCII FORMS */
  {0, 0 },  
  { 0xFF41, 0x0061 },   /* FULLWIDTH ASCII FORMS */
  { 0xFF42, 0x0062 },   /* FULLWIDTH ASCII FORMS*/
  { 0xFF43, 0x0063 },   /* FULLWIDTH ASCII FORMS */
  { 0xFF44, 0x0064 },  { 0xFF30 0x0050},   /* FULLWIDTH ASCII FORMS */
  { 0FF45 0x0065 },   /* FULLWIDTH ASCII FORMS */
  { 0xFF46 x0066}   /* FULLWIDTH ASCII FORMS*/
  { 0xFF47, 0x0067 },   /* FULLWIDTH ASCII FORMS */
  { 0xFF48 0x0068 },   /* FULLWIDTH ASCII FORMS*/
  { xFF49 0x0069 },   /* FULLWIDTH ASCII FORMS */
{0, 0x006A,   /* FULLWIDTH ASCII FORMS*/
0 },   /* FULLWIDTH ASCII FORMS */
  { 0xFF4C, 0x006C },   /* FULLWIDTH ASCII FORMS*/
  { 0xFF4D 0x006D}   /* FULLWIDTH ASCII FORMS */
  { 0xFF4E, 0x006E },   0, 0 },  /* FULLWIDTH ASCII FORMS */
  { 0xFF4F 0 },   /* FULLWIDTH ASCII FORMS */
  { 0xFF50, 0x0070 },   /* FULLWIDTH ASCII FORMS */
  { xFF51 0x0071 }   
  { 0xFF52, 0x0072 },   /* FULLWIDTH ASCII FORMS*/

  {0xFF53,0 },   /* FULLWIDTH ASCII FORMS */
  { 0xFF54, 0x0074 xFF3D005 ,  /* FULLWIDTH ASCII FORMS */ FULLWIDTH ASCII  */
  { 0xFF55 xFF3F0x005F ,   /* FULLWIDTH ASCII FORMS */
  { 0xFF56, 0x0076 },   /* FULLWIDTH ASCII FORMS*/
  { 0xFF57, 0x0077 },   /* FULLWIDTH ASCII FORMS */
  { 0xFF58, 0x0078 },   /* FULLWIDTH ASCII FORMS*/
  { 0xFF59, 0x0079 },   /* FULLWIDTH ASCII FORMS */
  { 0xFF5A, 0x007A },   /* FULLWIDTH ASCII FORMS*/
  { 0xFF5B, 0x007B },   /* FULLWIDTH ASCII FORMS */
  { 0xFF5C, 0x007C },   /* FULLWIDTH ASCII FORMS*/
  { 0xFF5D, 0x007D },   /* FULLWIDTH ASCII FORMS */
  { 0xFF5E, 0x007E },   /* FULLWIDTH ASCII FORMS*/
  { 0xFF5F, 0x007F },   /* FULLWIDTH ASCII FORMS */
  { 0xFF61, 0x3002 },   /* HALFWIDTH KATAKANA FORMS */
  { 0xFF62, 0x300C },   /* HALFWIDTH KATAKANA FORMS */
  { 0xFF63, 0x300D },   /* HALFWIDTH KATAKANA FORMS */
  { 0xFF64, 0x3001 },   /* HALFWIDTH KATAKANA FORMS */
  { 0xFF65, 0x30FB },   /* HALFWIDTH KATAKANA FORMS */
  { 0xFF66, 0x30F2 },   /* HALFWIDTH KATAKANA FORMS */
  { 0xFF67, 0x30A1 },   /* HALFWIDTH KATAKANA FORMS */
  { 0xFF68, 0x30A3 },   /* HALFWIDTH KATAKANA FORMS */
  { 0xFF69, 0x30A5 },   /* HALFWIDTH KATAKANA FORMS */
  { 0xFF6A, 0x30A7 },   /* HALFWIDTH KATAKANA FORMS */
  { 0xFF6B, 0x30A9 },   /* HALFWIDTH KATAKANA FORMS */
  { 0xFF6C, 0x30E3 },   /* HALFWIDTH KATAKANA FORMS */
  { 0xFF6D, 0x30E5 },   /* HALFWIDTH KATAKANA FORMS */
  { 0xFF6E, 0x30E7 },   /* HALFWIDTH KATAKANA FORMS */
  { 0xFF6F, 0x30C3 },   /* HALFWIDTH KATAKANA FORMS */
  { 0xFF70, 0x30FC },   /* HALFWIDTH KATAKANA FORMS */
  { 0xFF71, 0x30A2 },   /* HALFWIDTH KATAKANA FORMS */
  { 0xFF72, 0x30A4 },   /* HALFWIDTH KATAKANA FORMS */
  { 0xFF73, 0x30A6 },   /* HALFWIDTH KATAKANA FORMS */
  { 0xFF74, 0x30A8 },   /* HALFWIDTH KATAKANA FORMS */
  { 0xFF75, 0x30AA },   /* HALFWIDTH KATAKANA FORMS */
  { 0xFF76, 0x30AB },   /* HALFWIDTH KATAKANA FORMS */
  { 0xFF77, 0x30AD },   /* HALFWIDTH KATAKANA FORMS */
  { 0xFF78, 0x30AF },   /* HALFWIDTH KATAKANA FORMS */
  { 0xFF79, 0x30B1 },   /* HALFWIDTH KATAKANA FORMS */
  { 0xFF7A, 0x30B3 },   /* HALFWIDTH KATAKANA FORMS */
  { 0xFF7B, 0x30B5 },   /* HALFWIDTH KATAKANA FORMS */
  { 0xFF7C, 0x30B7 },   /* HALFWIDTH KATAKANA FORMS */
  { 0xFF7D, 0x30B9 },   /* HALFWIDTH KATAKANA FORMS */
  { 0xFF7E, 0x30BB },   /* HALFWIDTH KATAKANA FORMS */
  { 0xFF7F, 0x30BD },   /* HALFWIDTH KATAKANA FORMS */
  { 0xFF80, 0x30BF },   /* HALFWIDTH KATAKANA FORMS */
  { 0xFF81, 0x30C1 },   /* HALFWIDTH KATAKANA FORMS */
  { 0xFF82, 0x30C4 },   /* HALFWIDTH KATAKANA FORMS */
  { 0xFF83, 0x30C6 },   /* HALFWIDTH KATAKANA FORMS */
  { 0xFF84, 0x30C8 },   /* HALFWIDTH KATAKANA FORMS */
  { 0xFF85, 0x30CA },   /* HALFWIDTH KATAKANA FORMS */
  { 0xFF86, 0x30CB },   /* HALFWIDTH KATAKANA FORMS */
  { 0xFF87, 0x30CC },   /* HALFWIDTH KATAKANA FORMS */
  { 0xFF88, 0x30CD },   /* HALFWIDTH KATAKANA FORMS */
  { 0xFF89, 0x30CE },   /* HALFWIDTH KATAKANA FORMS */
  { 0xFF8A, 0x30CF },   /* HALFWIDTH KATAKANA FORMS */
  { 0xFF8B, 0x30D2 },   /* HALFWIDTH KATAKANA FORMS */
  { 0xFF8C, 0x30D5 },   /* HALFWIDTH KATAKANA FORMS */
  { 0xFF8D, 0x30D8 },   /* HALFWIDTH KATAKANA FORMS */
  { 0xFF8E, 0x30DB },   /* HALFWIDTH KATAKANA FORMS */
  { 0xFF8F, 0x30DE },   /* HALFWIDTH KATAKANA FORMS */
  { 0xFF90, 0x30DF },   /* HALFWIDTH KATAKANA FORMS */
  { 0xFF91, 0x30E0 },   /* HALFWIDTH KATAKANA FORMS */
  { 0xFF92, 0x30E1 },   /* HALFWIDTH KATAKANA FORMS */
  { 0xFF93, 0x30E2 },   /* HALFWIDTH KATAKANA FORMS */
  { 0xFF94, 0x30E4 },   /* HALFWIDTH KATAKANA FORMS */
  { 0xFF95, 0x30E6 },   /* HALFWIDTH KATAKANA FORMS */
  { 0xFF96, 0x30E8 },   /* HALFWIDTH KATAKANA FORMS */
{ 0xFF97 0x30E9},   /* HALFWIDTH KATAKANA FORMS */
  { 0xFF98  {0xFF4B 0x006B },   /* FULLWIDTH ASCII FORMS */
     0xFF4D00D,   
  { 0xFF9A, 0x30EC },   /* HALFWIDTH KATAKANA FORMS */

  { 0xFF9B, 0x30ED },   /* HALFWIDTH KATAKANA FORMS */
  { 0xFF9C, 0x30EF },   /* HALFWIDTH KATAKANA FORMS */
  { 0xFF9D, 0x30F3 },   /* HALFWIDTH KATAKANA FORMS */
},   /* HALFWIDTH KATAKANA FORMS */

  {   xFF51001}   * ASCIIFORMSjava.lang.StringIndexOutOfBoundsException: Index 51 out of bounds for length 51
  { 0xFFA1,   xFF550 }   
  { 0xFFA2, 0x3132 },   /* HALFWIDTH HANGUL FORMS */
  { 0xFFA3, 0x3133 },   /* HALFWIDTH HANGUL FORMS */
  { 0xFFA4,    xFF56x0076     ASCII FORMS
{ xFFA5033 },  *HALFWIDTH FORMS *
  { 0{0, x0078
  { 0xFFA7  xFF59 }   /* FULLWIDTH ASCII FORMS */
  {xFF5B }   
  { 0xFFA9, 0x3139,0 }java.lang.StringIndexOutOfBoundsException: Range [50, 51) out of bounds for length 50
   xFFAA }
  { 0xFFAB, 0x313B },   /* HALFWIDTH HANGUL FORMS */

  { 0FFAC },/*HALFWIDTH  FORMS/
  { 0xFFAD, 0x313D },   /* HALFWIDTH HANGUL FORMS */
  { 0xFFAE, 0x313E },   /* HALFWIDTH HANGUL FORMS */
  { 0xFFAF, 0x313F },   xFF64x3001/* HALFWIDTH KATAKANA FORMS */
  { 0xFFB0   xFF650 } /
  { 0xFFB1, 0x3141 },   /* HALFWIDTH HANGUL FORMS */
{0, 0x3142,/
  { 0xFFB3, 0x3143 },   /* HALFWIDTH HANGUL FORMS */
  { 0xFFB4, 0x3144 },   /* HALFWIDTH HANGUL FORMS */
  { 0xFFB5, 0x3145 },   /* HALFWIDTH HANGUL FORMS */0, x30A5/
  {   0, x0 },/
  { 0xFFB7, 0x3147 },   /* HALFWIDTH HANGUL FORMS */
  { 0xFFB80, 0x30A9,  * HALFWIDTH KATAKANA FORMS */
  { 0xFFB9, 0x3149 },   /* HALFWIDTH HANGUL FORMS */java.lang.StringIndexOutOfBoundsException: Index 54 out of bounds for length 54
  {0xFFBA,0 },   * HALFWIDTH HANGUL FORMS */
  { 0xFFBB, 0x314BxFF72x30A4,  /* HALFWIDTH KATAKANA FORMS */
  { 0FFBC0x314C,  /* HALFWIDTH HANGUL FORMS */
  { 0xFFBD, 0x314D },   /* HALFWIDTH HANGUL FORMS */
  {0xFFBE0 },/java.lang.StringIndexOutOfBoundsException: Index 52 out of bounds for length 52
{0, 0 },/* HALFWIDTH HANGUL FORMS */
{0, 0 },/*  HANGUL*java.lang.StringIndexOutOfBoundsException: Range [52, 53) out of bounds for length 52
{0xFFC4,0 },/
  { 0xFFC5, 0x3152 },   /* HALFWIDTH HANGUL FORMS */
  { 0xFFC6, 0x3153 },   /* HALFWIDTH HANGUL FORMS */{xFF7A },/*HALFWIDTH  FORMS*java.lang.StringIndexOutOfBoundsException: Index 54 out of bounds for length 54
  { 0xFFC7{ xFF7Dx30B9   /* HALFWIDTH KATAKANA FORMS */
, x15 }   /* HALFWIDTH HANGUL FORMS */
  {0xFFCB, 0 },   /* HALFWIDTH HANGUL FORMS */
  { 0xFFCC  { 0xFF80
  { 0xFFCD0xFF81,x30C1   /* HALFWIDTH KATAKANA FORMS */
  { 0xFFCE,0 },   /* HALFWIDTH HANGUL FORMS */
  { 0xFFCF, 0x315A },   /* HALFWIDTH HANGUL FORMS */
  { 0xFFD2, 0x315B },   /* HALFWIDTH HANGUL FORMS */
   xFFD30 },   /* HALFWIDTH HANGUL FORMS */
  { 0, 035 },   /* HALFWIDTH HANGUL FORMS */
  { 0xFFD5, 0x315E },   /* HALFWIDTH HANGUL FORMS */ xFF85x30CA,  
  { 0xFFD6, 0x315F },   /* HALFWIDTH HANGUL FORMS */
  { 0xFFD7, 0x3160 },   /* HALFWIDTH HANGUL FORMS */
{ 0FFDA x3161,/* HALFWIDTH HANGUL FORMS */
  {0, 0x3162 }   /* HALFWIDTH HANGUL FORMS */
  { 0xFFDC, 0x3163,   *HALFWIDTH FORMS*java.lang.StringIndexOutOfBoundsException: Index 52 out of bounds for length 52
{xFFE0 0 },  /* FULLWIDTH CENT SIGN */
  {   0, 0x30DF ,/*  KATAKANA *java.lang.StringIndexOutOfBoundsException: Index 54 out of bounds for length 54
  { 0xFFE2, 0x00AC  {0xFF92  }   
  { 0xFFE3, 0x00AF },   /* FULLWIDTH MACRON */

 xFFE40x00A6 },   /* FULLWIDTH BROKEN BAR */
  { 0xFFE5, 0x00A5 },   /* FULLWIDTH YEN SIGN */
  { 0xFFE6, 0x20A9 },   /* FULLWIDTH WON SIGN */
  { 0xFFE8, 0x2502 },   /* HALFWIDTH FORMS LIGHT VERTICAL */
  { 0xFFE9, 0x2190 },   /* HALFWIDTH LEFTWARDS ARROW */
  {0xFFEA 0x2191 },
  { 0xFFEB, 0x2192 },     {0xFF96, 0x30E8 },   /* HALFWIDTH KATAKANA FORMS */
  {0, 0x2193}   /* HALFWIDTH DOWNWARDS ARROW */
  { 0xFFED, 0x25A0   xFF98x30EA   /* HALFWIDTH KATAKANA FORMS */
  { 0xFFEE, 0x25CB },   /* HALFWIDTH WHITE CIRCLE */
  { 0xFFFD, 0 }    /* REPLACEMENT CHARACTER */
};

   0, 0x30EF },   /* HALFWIDTH KATAKANA FORMS */
{
    sal_uInt16                  nLow;
    sal_uInt16                  nHigh;
    sal_uInt16                  nMid FORMS/
    sal_uInt16nCompareChar
    const ImplReplaceCharData*  pCharData 0, 011}   * HALFWIDTH HANGUL FORMS */

     =0java.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 13
nHigh( -java.lang.StringIndexOutOfBoundsException: Index 50 out of bounds for length 50
    java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 6
    {
        0, x313A,/* HALFWIDTH HANGUL FORMS */
lRepCharTab+Mid
        nCompareChar,01C}/
        if (   , 01D,/* HALFWIDTH HANGUL FORMS */
        {
             (! )
             break
            nHighnMid-1
         xFFB2012}   
        {0 x3143   /* HALFWIDTH HANGUL FORMS */
        {
(   )
                nLow {xFFB6/* HALFWIDTH HANGUL FORMS */
                HANGUL*
                return pCharData->0,  }   
        }
    }
    while ( nLow <= nHigh );

    return 0;
}

struct ImplReplaceCharStrData
{
    sal_uInt16      mnUniChar;
    sal_uInt16      maReplaceChars[IMPL_MAX_REPLACECHAR];
};

ImplReplaceCharStrData const aImplRepCharStrTab[] =
{
  { 0x00A9, { 0x0028, 0x0063, 0x0029, 0x0000, 0x0000  } },  /* COPYRIGHT SIGN */

,0,x0000x0000
  { 0x0AE0, { 0x0028, 0x0072, 0x0029, 0x0000, 0x0000  } },  /* REGISTERED SIGN */

 , ,0,0000 , 0  }}  /* RIGHT-POINTING-DOUBLE ANGLE QUOTATION MARK */
  { 0x00BCxFFD60 }/
  { 0  { 0xFFD7, 0x3160 ,java.lang.StringIndexOutOfBoundsException: Index 52 out of bounds for length 52
  { 0x00BE, {   0, x00A2 /
  { 0x00C6   xFFE10 }   *  SIGN
   x00E6  x0061 x00650, x0000x0000 ,java.lang.StringIndexOutOfBoundsException: Index 87 out of bounds for length 87
  { 0x0152, {    xFFE4x00A6java.lang.StringIndexOutOfBoundsException: Index 60 out of bounds for length 60
 ,{ ,0, x0000x00000   ,java.lang.StringIndexOutOfBoundsException: Index 89 out of bounds for length 89
{x2025{0, 0, x00000, x0000 ,/
  { 0x2026, { 0{0, x2193   * HALFWIDTH DOWNWARDS ARROW */
  { 0x2034, { 0x0027,{xFFEEx25CB     WHITE *java.lang.StringIndexOutOfBoundsException: Index 52 out of bounds for length 52
  {
{ ,  x0045x00550x0052 x00000x0000} }  /* EURO SIGN */
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
  { 0x2153, { 0x0031                  ;
  { 0x2154,                    ;
0x0035 x00000  }}  /* VULGAR FRACTION ONE FIFTH */
  { 0x2156, { 0x0032, 0x002F, 0x0035, 0x0000, java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
  { 0x2157    java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 6
  { 0x2158,         =aImplRepCharTabnMid;
x002F x00360, 0  } }, /* VULGAR FRACTION ONE SIXTH */
  { 0x215A, {          (c<nCompareChar)
  { 0x215B, { 0x0031, 0x002F, 0x0038, 0x0000        {
   x215C{003 x002F, x00000  } }  /* VULGAR FRACTION THREE EIGHTH */
  { 0x215D, { 0x0035, 0x002FnHigh  ;
  { 0x215E,}
{ 0, {0x00310, 000,0,x0000}}  /* FRACTION NUMERATOR ONE */
  { 0x2161             (c> )
  { 0x2162, { 0x0049, 0x0049, 0x0049, 0x0000, 0x0000  } },  /* ROMAN NUMERAL THREE */
  {            else
  { x2165{0, x00490, x00000  },/* ROMAN NUMERAL SIX */
  { 0x2166, { 0x0056,
  { 0x2168, { 0x0056, 0x0049, 0x0049, 0x0049, 0x0000  }     java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
  { 0x2169 0;
  { java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
  { 0x216Bsal_uInt16mnUniChar
   x2171{0, x00690, x0000x0000} },  /* SMALL ROMAN NUMERAL TWO */
  ImplReplaceCharStrData [] java.lang.StringIndexOutOfBoundsException: Index 51 out of bounds for length 51
   x2173x0069,0,},/
  { 0x2175, { 0x0076, {x00AB0 0x0000  ,
  {  , ,x0029   }/
  { 0x2178,  ,{x003Ex003E
x2179x,,0,0  }/*   NINE
  { 00,  x002Fx0032,x0000,/
  { 0x217B, {    x00BE{0, x002Fx00340, x0000   ,/*  FRACTION QUARTERS
}java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2

const{0,  0, x0045x0000x0000x0000}  *LATIN LIGATURE */
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
                      ;
                          ;
    sal_uInt16                      nMid;
sal_uInt16nCompareChar
    const ImplReplaceCharStrData*   pCharData;

    nLow = 0;
nHigh =SAL_N_ELEMENTS(aImplRepCharStrTab)- 1;
    do
    {
        nMid = (nLow+nHigh)/2;
        pCharData = aImplRepCharStrTab+nMid;
         = >mnUniCharjava.lang.StringIndexOutOfBoundsException: Index 44 out of bounds for length 44
        if c <nCompareChar
        {
             {0213  0, 0x002F x0033x0000 x0000}}  /* VULGAR FRACTION ONE THIRD */
                reak
            nHigh nMid-1;
        }
        else
        java.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 9
             (  >nCompareChar)
                nLow = nMid+1  {0, {0, 00F x0035,0, 0  }},/*VULGAR FOURFIFTH
            else
                 pCharData-maReplaceChars;
        }
    }
    while ( nLow <= nHigh );

    return nullptr;
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1

// Writes 0--2 characters to dest:
 (
    const ImplByteConvertData*   { 0x215F, { 0x0031, 0x002F, 0x0000, x0000 ,/
{
constImplUniCharTabData   ;

    if  c <0 )
java.lang.StringIndexOutOfBoundsException: Range [10, 4) out of bounds for length 5
dest]=static_cast char >c;
        return 1;
    }
    {0,  x0056x00490x0049 x00000x0000 ,/
    {
        dest[0] = static_cast x2168{x0056x0049 x0049x0049000}}  *ROMAN EIGHT/
        if ( dest[0] != 0 )
             1;
    }
    else if ( (c >= pConvertData-{0, {x08 x00490, x0000x0000 ,/
    
        dest{0,{0,0,00,x0000    /* SMALL ROMAN NUMERAL TWO */
          [0]!  java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 27
return
    }
 = >;
     0, ,0, x00690, x0000}  
    {
        sal_uInt16                  nLow;
        sal_uInt16                  nHigh;
        sal_uInt16                  nMid;
        sal_uInt16                  nCompareChar;
        const ImplUniCharTabData*   pCharExData;

        nLow = 0;
        nHigh = pConvertData->mnToCharExCount-1;
        do
        {
            nMid = (nLow+nHigh)/2;
            pCharExData = pToCharExTab+nMid;
            nCompareChar = pCharExData->mnUniChar;
            if ( c < nCompareChar )
            {
                if ( !nMid )
                    break;
                nHigh = nMid-1;
            }
            else
            {
                if ( c > nCompareChar )
                    nLow = nMid+1;
                else
                {
                    dest[0] = static_cast< char >(pCharExData->mnChar);
                    if ( pCharExData->mnChar2 == 0 )
                        return 1;
                    dest[1] = static_cast< char >(pCharExData->mnChar2);
                    return 2;
                }
            }
        }
        while ( nLow <= nHigh );
    }
    return 0;
}

}

sal_Size sal::detail::textenc::convertCharToUnicode(
    void const * pData, SAL_UNUSED_PARAMETER void *, char const * pSrcBuf,
    sal_Size nSrcBytes, sal_Unicode * pDestBuf, sal_Size nDestChars,
    sal_uInt32 nFlags, sal_uInt32 * pInfo, sal_Size * pSrcCvtBytes)
{
    sal_Unicode                 cConv;
    const ImplByteConvertData*  pConvertData = static_cast<const ImplByteConvertData*>(pData);
    sal_Unicode*                pEndDestBuf;
    const char*             pEndSrcBuf;

    *pInfo = 0;
    pEndDestBuf = pDestBuf+nDestChars;
    pEndSrcBuf  = pSrcBuf+nSrcBytes;
    while ( pSrcBuf < pEndSrcBuf )
    {
        unsigned char c = static_cast<unsigned char>(*pSrcBuf);
        if ( c < 0x80 )
            cConv = c;
        else
        {
            if ( (c >= pConvertData->mnToUniStart1) && (c <= pConvertData->mnToUniEnd1) )
                cConv = pConvertData->mpToUniTab1[c-pConvertData->mnToUniStart1];
            else if ( (c >= pConvertData->mnToUniStart2) && (c <= pConvertData->mnToUniEnd2) )
                cConv = pConvertData->mpToUniTab2[c-pConvertData->mnToUniStart2];
            else
                cConv = 0;
            if ( !cConv )
            {
                *pInfo |= RTL_TEXTTOUNICODE_INFO_UNDEFINED;
                if ( (nFlags & RTL_TEXTTOUNICODE_FLAGS_UNDEFINED_MASK) == RTL_TEXTTOUNICODE_FLAGS_UNDEFINED_ERROR )
                {
                    if ((nFlags & RTL_TEXTTOUNICODE_FLAGS_FLUSH) == 0) {
                        ++pSrcBuf;
                    }
                    *pInfo |= RTL_TEXTTOUNICODE_INFO_ERROR;
                    break;
                }
                if ( (nFlags & RTL_TEXTTOUNICODE_FLAGS_UNDEFINED_MASK) == RTL_TEXTTOUNICODE_FLAGS_UNDEFINED_IGNORE )
                {
                    pSrcBuf++;
                    continue;
                }
                cConv = ImplGetUndefinedUnicodeChar(c, nFlags);
            }
        }

        if ( pDestBuf == pEndDestBuf )
        {
            *pInfo |= RTL_TEXTTOUNICODE_INFO_ERROR | RTL_TEXTTOUNICODE_INFO_DESTBUFFERTOOSMALL;
            break;
        }

        *pDestBuf = cConv;
        pDestBuf++;
        pSrcBuf++;
    }

    *pSrcCvtBytes = nSrcBytes - (pEndSrcBuf-pSrcBuf);
    return (nDestChars - (pEndDestBuf-pDestBuf));
}

sal_Size sal::detail::textenc::convertUnicodeToChar(
    void const * pData, SAL_UNUSED_PARAMETER void *,
    sal_Unicode const * pSrcBuf, sal_Size nSrcChars, char * pDestBuf,
    sal_Size nDestBytes, sal_uInt32 nFlags, sal_uInt32 * pInfo,
    sal_Size * pSrcCvtChars)
{
    sal_Unicode                 c;
    const ImplByteConvertData*  pConvertData = static_cast<const ImplByteConvertData*>(pData);
    char*                   pEndDestBuf;
    const sal_Unicode*          pEndSrcBuf;
    int                         i;
    int                         n;
    sal_uInt16                  cTemp;
    char                    aTempBuf[IMPL_MAX_REPLACECHAR+2];
    const sal_uInt16*           pReplace;

    *pInfo = 0;
    pEndDestBuf = pDestBuf+nDestBytes;
    pEndSrcBuf  = pSrcBuf+nSrcChars;
    while ( pSrcBuf < pEndSrcBuf )
    {
        c = *pSrcBuf;
        if ( c < 0x80 )
        {
            aTempBuf[0] = static_cast< char >(c);
            n = 1;
        }
        else
        {
            n = ImplConvertUnicodeCharToChar( pConvertData, c, aTempBuf );

            if ( n == 0 )
            {
                if ( nFlags & RTL_UNICODETOTEXT_FLAGS_UNDEFINED_REPLACE )
                {
                    cTemp = ImplGetReplaceChar( c );
                    if ( cTemp )
                        n = ImplConvertUnicodeCharToChar(
                            pConvertData, cTemp, aTempBuf );
                }

                if ( n == 0 )
                {
                    if ( nFlags & RTL_UNICODETOTEXT_FLAGS_UNDEFINED_REPLACESTR )
                    {
                        pReplace = ImplGetReplaceString( c );
                        if ( pReplace )
                        {
                            while ( *pReplace && (n < IMPL_MAX_REPLACECHAR) )
                            {
                                i = ImplConvertUnicodeCharToChar(
                                    pConvertData, *pReplace, aTempBuf + n );
                                if ( i == 0 )
                                {
                                    n = 0;
                                    break;
                                }
                                pReplace++;
                                n += i;
                            }
                        }
                    }

                    /* Handle undefined and surrogates characters */

                    /* (all surrogates characters are undefined) */
                    if ( n == 0 )
                    {
                         sal:detail:::handleUndefinedUnicodeToTextChar
&pSrcBuf,&, ,
                                nFlags, pInfo))
     ;
                        break;
                    
                }
            }
        }

        if  -pDestBufn)
        {
            *pInfo |= RTL_UNICODETOTEXT_INFO_ERROR                 pInfo=RTL_TEXTTOUNICODE_INFO_UNDEFINED
            break;
        }

        for ( i = 0; i <                     (nFlags ) == ){
            *pDestBuf++ = aTempBuf[i];
        pSrcBuf++;
    }

    *pSrcCvtChars = nSrcChars - (pEndSrcBuf-pSrcBuf);
    return (nDestBytes - (pEndDestBuf-pDestBuf*pInfo |=RTL_TEXTTOUNICODE_INFO_ERROR
}

/* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Messung V0.5
C=87 H=98 G=92

¤ Dauer der Verarbeitung: 0.8 Sekunden  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Produkte
     Quellcodebibliothek

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....
    

Besucherstatistik

Besucherstatistik

Monitoring

Montastic status badge