1*b1cdbd2cSJim Jagielski /************************************************************** 2*b1cdbd2cSJim Jagielski * 3*b1cdbd2cSJim Jagielski * Licensed to the Apache Software Foundation (ASF) under one 4*b1cdbd2cSJim Jagielski * or more contributor license agreements. See the NOTICE file 5*b1cdbd2cSJim Jagielski * distributed with this work for additional information 6*b1cdbd2cSJim Jagielski * regarding copyright ownership. The ASF licenses this file 7*b1cdbd2cSJim Jagielski * to you under the Apache License, Version 2.0 (the 8*b1cdbd2cSJim Jagielski * "License"); you may not use this file except in compliance 9*b1cdbd2cSJim Jagielski * with the License. You may obtain a copy of the License at 10*b1cdbd2cSJim Jagielski * 11*b1cdbd2cSJim Jagielski * http://www.apache.org/licenses/LICENSE-2.0 12*b1cdbd2cSJim Jagielski * 13*b1cdbd2cSJim Jagielski * Unless required by applicable law or agreed to in writing, 14*b1cdbd2cSJim Jagielski * software distributed under the License is distributed on an 15*b1cdbd2cSJim Jagielski * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*b1cdbd2cSJim Jagielski * KIND, either express or implied. See the License for the 17*b1cdbd2cSJim Jagielski * specific language governing permissions and limitations 18*b1cdbd2cSJim Jagielski * under the License. 19*b1cdbd2cSJim Jagielski * 20*b1cdbd2cSJim Jagielski *************************************************************/ 21*b1cdbd2cSJim Jagielski 22*b1cdbd2cSJim Jagielski 23*b1cdbd2cSJim Jagielski 24*b1cdbd2cSJim Jagielski #ifndef INCLUDED_RTL_TEXTENC_TENCHELP_H 25*b1cdbd2cSJim Jagielski #define INCLUDED_RTL_TEXTENC_TENCHELP_H 26*b1cdbd2cSJim Jagielski 27*b1cdbd2cSJim Jagielski #include "rtl/tencinfo.h" 28*b1cdbd2cSJim Jagielski #include "rtl/textenc.h" 29*b1cdbd2cSJim Jagielski #include "sal/types.h" 30*b1cdbd2cSJim Jagielski 31*b1cdbd2cSJim Jagielski #if defined __cplusplus 32*b1cdbd2cSJim Jagielski extern "C" { 33*b1cdbd2cSJim Jagielski #endif /* __cplusplus */ 34*b1cdbd2cSJim Jagielski 35*b1cdbd2cSJim Jagielski #define RTL_TEXTCVT_BYTE_PRIVATE_START 0xF100 36*b1cdbd2cSJim Jagielski #define RTL_TEXTCVT_BYTE_PRIVATE_END 0xF1FF 37*b1cdbd2cSJim Jagielski 38*b1cdbd2cSJim Jagielski /* ----------------- */ 39*b1cdbd2cSJim Jagielski /* - TextConverter - */ 40*b1cdbd2cSJim Jagielski /* ----------------- */ 41*b1cdbd2cSJim Jagielski 42*b1cdbd2cSJim Jagielski typedef void ImplTextConverterData; 43*b1cdbd2cSJim Jagielski 44*b1cdbd2cSJim Jagielski typedef 45*b1cdbd2cSJim Jagielski sal_Size (* ImplConvertToUnicodeProc)(ImplTextConverterData const * pData, 46*b1cdbd2cSJim Jagielski void * pContext, 47*b1cdbd2cSJim Jagielski sal_Char const * pSrcBuf, 48*b1cdbd2cSJim Jagielski sal_Size nSrcBytes, 49*b1cdbd2cSJim Jagielski sal_Unicode * pDestBuf, 50*b1cdbd2cSJim Jagielski sal_Size nDestChars, 51*b1cdbd2cSJim Jagielski sal_uInt32 nFlags, 52*b1cdbd2cSJim Jagielski sal_uInt32 * pInfo, 53*b1cdbd2cSJim Jagielski sal_Size * pSrcCvtBytes); 54*b1cdbd2cSJim Jagielski 55*b1cdbd2cSJim Jagielski typedef 56*b1cdbd2cSJim Jagielski sal_Size (* ImplConvertToTextProc)(ImplTextConverterData const * pData, 57*b1cdbd2cSJim Jagielski void * pContext, 58*b1cdbd2cSJim Jagielski sal_Unicode const * pSrcBuf, 59*b1cdbd2cSJim Jagielski sal_Size nSrcChars, 60*b1cdbd2cSJim Jagielski sal_Char * pDestBuf, 61*b1cdbd2cSJim Jagielski sal_Size nDestBytes, 62*b1cdbd2cSJim Jagielski sal_uInt32 nFlags, 63*b1cdbd2cSJim Jagielski sal_uInt32 * pInfo, 64*b1cdbd2cSJim Jagielski sal_Size * pSrcCvtChars); 65*b1cdbd2cSJim Jagielski 66*b1cdbd2cSJim Jagielski typedef void * (* ImplCreateTextContextProc)(void); 67*b1cdbd2cSJim Jagielski 68*b1cdbd2cSJim Jagielski typedef void (* ImplDestroyTextContextProc)(void * pContext); 69*b1cdbd2cSJim Jagielski 70*b1cdbd2cSJim Jagielski typedef void (* ImplResetTextContextProc)(void * pContext); 71*b1cdbd2cSJim Jagielski 72*b1cdbd2cSJim Jagielski typedef void * (* ImplCreateUnicodeContextProc)(void); 73*b1cdbd2cSJim Jagielski 74*b1cdbd2cSJim Jagielski typedef void (* ImplDestroyUnicodeContextProc)(void * pContext); 75*b1cdbd2cSJim Jagielski 76*b1cdbd2cSJim Jagielski typedef void (* ImplResetUnicodeContextProc)(void * pContext); 77*b1cdbd2cSJim Jagielski 78*b1cdbd2cSJim Jagielski typedef struct 79*b1cdbd2cSJim Jagielski { 80*b1cdbd2cSJim Jagielski ImplTextConverterData const * mpConvertData; 81*b1cdbd2cSJim Jagielski ImplConvertToUnicodeProc mpConvertTextToUnicodeProc; 82*b1cdbd2cSJim Jagielski ImplConvertToTextProc mpConvertUnicodeToTextProc; 83*b1cdbd2cSJim Jagielski ImplCreateTextContextProc mpCreateTextToUnicodeContext; 84*b1cdbd2cSJim Jagielski ImplDestroyTextContextProc mpDestroyTextToUnicodeContext; 85*b1cdbd2cSJim Jagielski ImplResetTextContextProc mpResetTextToUnicodeContext; 86*b1cdbd2cSJim Jagielski ImplCreateUnicodeContextProc mpCreateUnicodeToTextContext; 87*b1cdbd2cSJim Jagielski ImplDestroyUnicodeContextProc mpDestroyUnicodeToTextContext; 88*b1cdbd2cSJim Jagielski ImplResetUnicodeContextProc mpResetUnicodeToTextContext; 89*b1cdbd2cSJim Jagielski } ImplTextConverter; 90*b1cdbd2cSJim Jagielski 91*b1cdbd2cSJim Jagielski /* ----------------------------- */ 92*b1cdbd2cSJim Jagielski /* - TextEncoding - Structures - */ 93*b1cdbd2cSJim Jagielski /* ----------------------------- */ 94*b1cdbd2cSJim Jagielski 95*b1cdbd2cSJim Jagielski typedef struct 96*b1cdbd2cSJim Jagielski { 97*b1cdbd2cSJim Jagielski ImplTextConverter maConverter; 98*b1cdbd2cSJim Jagielski sal_uInt8 mnMinCharSize; 99*b1cdbd2cSJim Jagielski sal_uInt8 mnMaxCharSize; 100*b1cdbd2cSJim Jagielski sal_uInt8 mnAveCharSize; 101*b1cdbd2cSJim Jagielski sal_uInt8 mnBestWindowsCharset; 102*b1cdbd2cSJim Jagielski char const * mpBestUnixCharset; 103*b1cdbd2cSJim Jagielski char const * mpBestMimeCharset; 104*b1cdbd2cSJim Jagielski sal_uInt32 mnInfoFlags; 105*b1cdbd2cSJim Jagielski } ImplTextEncodingData; 106*b1cdbd2cSJim Jagielski 107*b1cdbd2cSJim Jagielski /* ----------------------------------- */ 108*b1cdbd2cSJim Jagielski /* - TextConverter - Byte-Structures - */ 109*b1cdbd2cSJim Jagielski /* ----------------------------------- */ 110*b1cdbd2cSJim Jagielski 111*b1cdbd2cSJim Jagielski typedef struct 112*b1cdbd2cSJim Jagielski { 113*b1cdbd2cSJim Jagielski sal_uInt16 mnUniChar; 114*b1cdbd2cSJim Jagielski sal_uChar mnChar; 115*b1cdbd2cSJim Jagielski sal_uChar mnChar2; 116*b1cdbd2cSJim Jagielski // to cater for mappings like MS1258 with 1--2 bytes per Unicode char, 117*b1cdbd2cSJim Jagielski // 0 if unused 118*b1cdbd2cSJim Jagielski } ImplUniCharTabData; 119*b1cdbd2cSJim Jagielski 120*b1cdbd2cSJim Jagielski typedef struct 121*b1cdbd2cSJim Jagielski { 122*b1cdbd2cSJim Jagielski const sal_uInt16* mpToUniTab1; 123*b1cdbd2cSJim Jagielski const sal_uInt16* mpToUniTab2; 124*b1cdbd2cSJim Jagielski sal_uChar mnToUniStart1; 125*b1cdbd2cSJim Jagielski sal_uChar mnToUniEnd1; 126*b1cdbd2cSJim Jagielski sal_uChar mnToUniStart2; 127*b1cdbd2cSJim Jagielski sal_uChar mnToUniEnd2; 128*b1cdbd2cSJim Jagielski const sal_uChar* mpToCharTab1; 129*b1cdbd2cSJim Jagielski const sal_uChar* mpToCharTab2; 130*b1cdbd2cSJim Jagielski const ImplUniCharTabData* mpToCharExTab; 131*b1cdbd2cSJim Jagielski sal_uInt16 mnToCharStart1; 132*b1cdbd2cSJim Jagielski sal_uInt16 mnToCharEnd1; 133*b1cdbd2cSJim Jagielski sal_uInt16 mnToCharStart2; 134*b1cdbd2cSJim Jagielski sal_uInt16 mnToCharEnd2; 135*b1cdbd2cSJim Jagielski sal_uInt16 mnToCharExCount; 136*b1cdbd2cSJim Jagielski } ImplByteConvertData; 137*b1cdbd2cSJim Jagielski 138*b1cdbd2cSJim Jagielski /* ----------------------------------- */ 139*b1cdbd2cSJim Jagielski /* - TextConverter - DBCS-Structures - */ 140*b1cdbd2cSJim Jagielski /* ----------------------------------- */ 141*b1cdbd2cSJim Jagielski 142*b1cdbd2cSJim Jagielski typedef struct 143*b1cdbd2cSJim Jagielski { 144*b1cdbd2cSJim Jagielski sal_uChar mnLeadStart; 145*b1cdbd2cSJim Jagielski sal_uChar mnLeadEnd; 146*b1cdbd2cSJim Jagielski sal_uChar mnTrail1Start; 147*b1cdbd2cSJim Jagielski sal_uChar mnTrail1End; 148*b1cdbd2cSJim Jagielski sal_uChar mnTrail2Start; 149*b1cdbd2cSJim Jagielski sal_uChar mnTrail2End; 150*b1cdbd2cSJim Jagielski sal_uChar mnTrail3Start; 151*b1cdbd2cSJim Jagielski sal_uChar mnTrail3End; 152*b1cdbd2cSJim Jagielski sal_uChar mnTrailCount; 153*b1cdbd2cSJim Jagielski sal_uInt16 mnTrailRangeCount; 154*b1cdbd2cSJim Jagielski sal_uInt16 mnUniStart; 155*b1cdbd2cSJim Jagielski sal_uInt16 mnUniEnd; 156*b1cdbd2cSJim Jagielski } ImplDBCSEUDCData; 157*b1cdbd2cSJim Jagielski 158*b1cdbd2cSJim Jagielski typedef struct 159*b1cdbd2cSJim Jagielski { 160*b1cdbd2cSJim Jagielski sal_uInt16 mnUniChar; 161*b1cdbd2cSJim Jagielski sal_uInt8 mnTrailStart; 162*b1cdbd2cSJim Jagielski sal_uInt8 mnTrailEnd; 163*b1cdbd2cSJim Jagielski const sal_uInt16* mpToUniTrailTab; 164*b1cdbd2cSJim Jagielski } ImplDBCSToUniLeadTab; 165*b1cdbd2cSJim Jagielski 166*b1cdbd2cSJim Jagielski typedef struct 167*b1cdbd2cSJim Jagielski { 168*b1cdbd2cSJim Jagielski sal_uInt8 mnLowStart; 169*b1cdbd2cSJim Jagielski sal_uInt8 mnLowEnd; 170*b1cdbd2cSJim Jagielski const sal_uInt16* mpToUniTrailTab; 171*b1cdbd2cSJim Jagielski } ImplUniToDBCSHighTab; 172*b1cdbd2cSJim Jagielski 173*b1cdbd2cSJim Jagielski typedef struct 174*b1cdbd2cSJim Jagielski { 175*b1cdbd2cSJim Jagielski const ImplDBCSToUniLeadTab* mpToUniLeadTab; 176*b1cdbd2cSJim Jagielski const ImplUniToDBCSHighTab* mpToDBCSHighTab; 177*b1cdbd2cSJim Jagielski sal_uChar mnLeadStart; 178*b1cdbd2cSJim Jagielski sal_uChar mnLeadEnd; 179*b1cdbd2cSJim Jagielski sal_uChar mnTrailStart; 180*b1cdbd2cSJim Jagielski sal_uChar mnTrailEnd; 181*b1cdbd2cSJim Jagielski const ImplDBCSEUDCData* mpEUDCTab; 182*b1cdbd2cSJim Jagielski sal_uInt16 mnEUDCCount; 183*b1cdbd2cSJim Jagielski } ImplDBCSConvertData; 184*b1cdbd2cSJim Jagielski 185*b1cdbd2cSJim Jagielski /* ---------------------------------- */ 186*b1cdbd2cSJim Jagielski /* - TextConverter - EUC-Structures - */ 187*b1cdbd2cSJim Jagielski /* ---------------------------------- */ 188*b1cdbd2cSJim Jagielski 189*b1cdbd2cSJim Jagielski typedef struct 190*b1cdbd2cSJim Jagielski { 191*b1cdbd2cSJim Jagielski const ImplDBCSToUniLeadTab* mpJIS0208ToUniLeadTab; 192*b1cdbd2cSJim Jagielski const ImplDBCSToUniLeadTab* mpJIS0212ToUniLeadTab; 193*b1cdbd2cSJim Jagielski const ImplUniToDBCSHighTab* mpUniToJIS0208HighTab; 194*b1cdbd2cSJim Jagielski const ImplUniToDBCSHighTab* mpUniToJIS0212HighTab; 195*b1cdbd2cSJim Jagielski } ImplEUCJPConvertData; 196*b1cdbd2cSJim Jagielski 197*b1cdbd2cSJim Jagielski /* --------------------------------- */ 198*b1cdbd2cSJim Jagielski /* - TextConverter - HelpFunctions - */ 199*b1cdbd2cSJim Jagielski /* --------------------------------- */ 200*b1cdbd2cSJim Jagielski 201*b1cdbd2cSJim Jagielski sal_Unicode ImplGetUndefinedUnicodeChar(sal_uChar cChar, sal_uInt32 nFlags); 202*b1cdbd2cSJim Jagielski 203*b1cdbd2cSJim Jagielski sal_Bool 204*b1cdbd2cSJim Jagielski ImplHandleUndefinedUnicodeToTextChar(ImplTextConverterData const * pData, 205*b1cdbd2cSJim Jagielski sal_Unicode const ** ppSrcBuf, 206*b1cdbd2cSJim Jagielski sal_Unicode const * pEndSrcBuf, 207*b1cdbd2cSJim Jagielski sal_Char ** ppDestBuf, 208*b1cdbd2cSJim Jagielski sal_Char const * pEndDestBuf, 209*b1cdbd2cSJim Jagielski sal_uInt32 nFlags, 210*b1cdbd2cSJim Jagielski sal_uInt32 * pInfo); 211*b1cdbd2cSJim Jagielski /* sal_True means 'continue,' sal_False means 'break' */ 212*b1cdbd2cSJim Jagielski 213*b1cdbd2cSJim Jagielski /* ----------------------------- */ 214*b1cdbd2cSJim Jagielski /* - TextConverter - Functions - */ 215*b1cdbd2cSJim Jagielski /* ----------------------------- */ 216*b1cdbd2cSJim Jagielski 217*b1cdbd2cSJim Jagielski sal_Size ImplSymbolToUnicode( const ImplTextConverterData* pData, void* pContext, 218*b1cdbd2cSJim Jagielski const sal_Char* pSrcBuf, sal_Size nSrcBytes, 219*b1cdbd2cSJim Jagielski sal_Unicode* pDestBuf, sal_Size nDestChars, 220*b1cdbd2cSJim Jagielski sal_uInt32 nFlags, sal_uInt32* pInfo, sal_Size* pSrcCvtBytes ); 221*b1cdbd2cSJim Jagielski sal_Size ImplUnicodeToSymbol( const ImplTextConverterData* pData, void* pContext, 222*b1cdbd2cSJim Jagielski const sal_Unicode* pSrcBuf, sal_Size nSrcChars, 223*b1cdbd2cSJim Jagielski sal_Char* pDestBuf, sal_Size nDestBytes, 224*b1cdbd2cSJim Jagielski sal_uInt32 nFlags, sal_uInt32* pInfo, sal_Size* pSrcCvtChars ); 225*b1cdbd2cSJim Jagielski sal_Size ImplCharToUnicode( const ImplTextConverterData* pData, void* pContext, 226*b1cdbd2cSJim Jagielski const sal_Char* pSrcBuf, sal_Size nSrcBytes, 227*b1cdbd2cSJim Jagielski sal_Unicode* pDestBuf, sal_Size nDestChars, 228*b1cdbd2cSJim Jagielski sal_uInt32 nFlags, sal_uInt32* pInfo, sal_Size* pSrcCvtBytes ); 229*b1cdbd2cSJim Jagielski sal_Size ImplUnicodeToChar( const ImplTextConverterData* pData, void* pContext, 230*b1cdbd2cSJim Jagielski const sal_Unicode* pSrcBuf, sal_Size nSrcChars, 231*b1cdbd2cSJim Jagielski sal_Char* pDestBuf, sal_Size nDestBytes, 232*b1cdbd2cSJim Jagielski sal_uInt32 nFlags, sal_uInt32* pInfo, sal_Size* pSrcCvtChars ); 233*b1cdbd2cSJim Jagielski sal_Size ImplDBCSToUnicode( const ImplTextConverterData* pData, void* pContext, 234*b1cdbd2cSJim Jagielski const sal_Char* pSrcBuf, sal_Size nSrcBytes, 235*b1cdbd2cSJim Jagielski sal_Unicode* pDestBuf, sal_Size nDestChars, 236*b1cdbd2cSJim Jagielski sal_uInt32 nFlags, sal_uInt32* pInfo, 237*b1cdbd2cSJim Jagielski sal_Size* pSrcCvtBytes ); 238*b1cdbd2cSJim Jagielski sal_Size ImplUnicodeToDBCS( const ImplTextConverterData* pData, void* pContext, 239*b1cdbd2cSJim Jagielski const sal_Unicode* pSrcBuf, sal_Size nSrcChars, 240*b1cdbd2cSJim Jagielski sal_Char* pDestBuf, sal_Size nDestBytes, 241*b1cdbd2cSJim Jagielski sal_uInt32 nFlags, sal_uInt32* pInfo, 242*b1cdbd2cSJim Jagielski sal_Size* pSrcCvtChars ); 243*b1cdbd2cSJim Jagielski sal_Size ImplEUCJPToUnicode( const ImplTextConverterData* pData, 244*b1cdbd2cSJim Jagielski void* pContext, 245*b1cdbd2cSJim Jagielski const sal_Char* pSrcBuf, sal_Size nSrcBytes, 246*b1cdbd2cSJim Jagielski sal_Unicode* pDestBuf, sal_Size nDestChars, 247*b1cdbd2cSJim Jagielski sal_uInt32 nFlags, sal_uInt32* pInfo, 248*b1cdbd2cSJim Jagielski sal_Size* pSrcCvtBytes ); 249*b1cdbd2cSJim Jagielski sal_Size ImplUnicodeToEUCJP( const ImplTextConverterData* pData, 250*b1cdbd2cSJim Jagielski void* pContext, 251*b1cdbd2cSJim Jagielski const sal_Unicode* pSrcBuf, sal_Size nSrcChars, 252*b1cdbd2cSJim Jagielski sal_Char* pDestBuf, sal_Size nDestBytes, 253*b1cdbd2cSJim Jagielski sal_uInt32 nFlags, sal_uInt32* pInfo, 254*b1cdbd2cSJim Jagielski sal_Size* pSrcCvtChars ); 255*b1cdbd2cSJim Jagielski void* ImplUTF7CreateUTF7TextToUnicodeContext( void ); 256*b1cdbd2cSJim Jagielski void ImplUTF7DestroyTextToUnicodeContext( void* pContext ); 257*b1cdbd2cSJim Jagielski void ImplUTF7ResetTextToUnicodeContext( void* pContext ); 258*b1cdbd2cSJim Jagielski sal_Size ImplUTF7ToUnicode( const ImplTextConverterData* pData, void* pContext, 259*b1cdbd2cSJim Jagielski const sal_Char* pSrcBuf, sal_Size nSrcBytes, 260*b1cdbd2cSJim Jagielski sal_Unicode* pDestBuf, sal_Size nDestChars, 261*b1cdbd2cSJim Jagielski sal_uInt32 nFlags, sal_uInt32* pInfo, 262*b1cdbd2cSJim Jagielski sal_Size* pSrcCvtBytes ); 263*b1cdbd2cSJim Jagielski void* ImplUTF7CreateUnicodeToTextContext( void ); 264*b1cdbd2cSJim Jagielski void ImplUTF7DestroyUnicodeToTextContext( void* pContext ); 265*b1cdbd2cSJim Jagielski void ImplUTF7ResetUnicodeToTextContext( void* pContext ); 266*b1cdbd2cSJim Jagielski sal_Size ImplUnicodeToUTF7( const ImplTextConverterData* pData, void* pContext, 267*b1cdbd2cSJim Jagielski const sal_Unicode* pSrcBuf, sal_Size nSrcChars, 268*b1cdbd2cSJim Jagielski sal_Char* pDestBuf, sal_Size nDestBytes, 269*b1cdbd2cSJim Jagielski sal_uInt32 nFlags, sal_uInt32* pInfo, 270*b1cdbd2cSJim Jagielski sal_Size* pSrcCvtChars ); 271*b1cdbd2cSJim Jagielski 272*b1cdbd2cSJim Jagielski void * ImplCreateUtf8ToUnicodeContext(void) SAL_THROW_EXTERN_C(); 273*b1cdbd2cSJim Jagielski void ImplResetUtf8ToUnicodeContext(void * pContext) SAL_THROW_EXTERN_C(); 274*b1cdbd2cSJim Jagielski sal_Size ImplConvertUtf8ToUnicode(ImplTextConverterData const * pData, 275*b1cdbd2cSJim Jagielski void * pContext, sal_Char const * pSrcBuf, 276*b1cdbd2cSJim Jagielski sal_Size nSrcBytes, sal_Unicode * pDestBuf, 277*b1cdbd2cSJim Jagielski sal_Size nDestChars, sal_uInt32 nFlags, 278*b1cdbd2cSJim Jagielski sal_uInt32 * pInfo, sal_Size * pSrcCvtBytes) 279*b1cdbd2cSJim Jagielski SAL_THROW_EXTERN_C(); 280*b1cdbd2cSJim Jagielski void * ImplCreateUnicodeToUtf8Context(void) SAL_THROW_EXTERN_C(); 281*b1cdbd2cSJim Jagielski void ImplResetUnicodeToUtf8Context(void * pContext) SAL_THROW_EXTERN_C(); 282*b1cdbd2cSJim Jagielski sal_Size ImplConvertUnicodeToUtf8(ImplTextConverterData const * pData, 283*b1cdbd2cSJim Jagielski void * pContext, sal_Unicode const * pSrcBuf, 284*b1cdbd2cSJim Jagielski sal_Size nSrcChars, sal_Char * pDestBuf, 285*b1cdbd2cSJim Jagielski sal_Size nDestBytes, sal_uInt32 nFlags, 286*b1cdbd2cSJim Jagielski sal_uInt32 * pInfo, sal_Size* pSrcCvtChars) 287*b1cdbd2cSJim Jagielski SAL_THROW_EXTERN_C(); 288*b1cdbd2cSJim Jagielski 289*b1cdbd2cSJim Jagielski #if defined __cplusplus 290*b1cdbd2cSJim Jagielski } 291*b1cdbd2cSJim Jagielski #endif /* __cplusplus */ 292*b1cdbd2cSJim Jagielski 293*b1cdbd2cSJim Jagielski #endif /* INCLUDED_RTL_TEXTENC_TENCHELP_H */ 294