diff options
Diffstat (limited to 'sal/textenc/tenchelp.h')
-rw-r--r-- | sal/textenc/tenchelp.h | 300 |
1 files changed, 300 insertions, 0 deletions
diff --git a/sal/textenc/tenchelp.h b/sal/textenc/tenchelp.h new file mode 100644 index 000000000000..a63c9bd758cb --- /dev/null +++ b/sal/textenc/tenchelp.h @@ -0,0 +1,300 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: tenchelp.h,v $ + * $Revision: 1.11 $ + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef INCLUDED_RTL_TEXTENC_TENCHELP_H +#define INCLUDED_RTL_TEXTENC_TENCHELP_H + +#include "rtl/tencinfo.h" +#include "rtl/textenc.h" +#include "sal/types.h" + +#if defined __cplusplus +extern "C" { +#endif /* __cplusplus */ + +#define RTL_TEXTCVT_BYTE_PRIVATE_START 0xF100 +#define RTL_TEXTCVT_BYTE_PRIVATE_END 0xF1FF + +/* ----------------- */ +/* - TextConverter - */ +/* ----------------- */ + +typedef void ImplTextConverterData; + +typedef +sal_Size (* ImplConvertToUnicodeProc)(ImplTextConverterData const * pData, + void * pContext, + sal_Char const * pSrcBuf, + sal_Size nSrcBytes, + sal_Unicode * pDestBuf, + sal_Size nDestChars, + sal_uInt32 nFlags, + sal_uInt32 * pInfo, + sal_Size * pSrcCvtBytes); + +typedef +sal_Size (* ImplConvertToTextProc)(ImplTextConverterData const * pData, + void * pContext, + sal_Unicode const * pSrcBuf, + sal_Size nSrcChars, + sal_Char * pDestBuf, + sal_Size nDestBytes, + sal_uInt32 nFlags, + sal_uInt32 * pInfo, + sal_Size * pSrcCvtChars); + +typedef void * (* ImplCreateTextContextProc)(void); + +typedef void (* ImplDestroyTextContextProc)(void * pContext); + +typedef void (* ImplResetTextContextProc)(void * pContext); + +typedef void * (* ImplCreateUnicodeContextProc)(void); + +typedef void (* ImplDestroyUnicodeContextProc)(void * pContext); + +typedef void (* ImplResetUnicodeContextProc)(void * pContext); + +typedef struct +{ + ImplTextConverterData const * mpConvertData; + ImplConvertToUnicodeProc mpConvertTextToUnicodeProc; + ImplConvertToTextProc mpConvertUnicodeToTextProc; + ImplCreateTextContextProc mpCreateTextToUnicodeContext; + ImplDestroyTextContextProc mpDestroyTextToUnicodeContext; + ImplResetTextContextProc mpResetTextToUnicodeContext; + ImplCreateUnicodeContextProc mpCreateUnicodeToTextContext; + ImplDestroyUnicodeContextProc mpDestroyUnicodeToTextContext; + ImplResetUnicodeContextProc mpResetUnicodeToTextContext; +} ImplTextConverter; + +/* ----------------------------- */ +/* - TextEncoding - Structures - */ +/* ----------------------------- */ + +typedef struct +{ + ImplTextConverter maConverter; + sal_uInt8 mnMinCharSize; + sal_uInt8 mnMaxCharSize; + sal_uInt8 mnAveCharSize; + sal_uInt8 mnBestWindowsCharset; + char const * mpBestUnixCharset; + char const * mpBestMimeCharset; + sal_uInt32 mnInfoFlags; +} ImplTextEncodingData; + +/* ----------------------------------- */ +/* - TextConverter - Byte-Structures - */ +/* ----------------------------------- */ + +typedef struct +{ + sal_uInt16 mnUniChar; + sal_uChar mnChar; + sal_uChar mnChar2; + // to cater for mappings like MS1258 with 1--2 bytes per Unicode char, + // 0 if unused +} ImplUniCharTabData; + +typedef struct +{ + const sal_uInt16* mpToUniTab1; + const sal_uInt16* mpToUniTab2; + sal_uChar mnToUniStart1; + sal_uChar mnToUniEnd1; + sal_uChar mnToUniStart2; + sal_uChar mnToUniEnd2; + const sal_uChar* mpToCharTab1; + const sal_uChar* mpToCharTab2; + const ImplUniCharTabData* mpToCharExTab; + sal_uInt16 mnToCharStart1; + sal_uInt16 mnToCharEnd1; + sal_uInt16 mnToCharStart2; + sal_uInt16 mnToCharEnd2; + sal_uInt16 mnToCharExCount; +} ImplByteConvertData; + +/* ----------------------------------- */ +/* - TextConverter - DBCS-Structures - */ +/* ----------------------------------- */ + +typedef struct +{ + sal_uChar mnLeadStart; + sal_uChar mnLeadEnd; + sal_uChar mnTrail1Start; + sal_uChar mnTrail1End; + sal_uChar mnTrail2Start; + sal_uChar mnTrail2End; + sal_uChar mnTrail3Start; + sal_uChar mnTrail3End; + sal_uChar mnTrailCount; + sal_uInt16 mnTrailRangeCount; + sal_uInt16 mnUniStart; + sal_uInt16 mnUniEnd; +} ImplDBCSEUDCData; + +typedef struct +{ + sal_uInt16 mnUniChar; + sal_uInt8 mnTrailStart; + sal_uInt8 mnTrailEnd; + const sal_uInt16* mpToUniTrailTab; +} ImplDBCSToUniLeadTab; + +typedef struct +{ + sal_uInt8 mnLowStart; + sal_uInt8 mnLowEnd; + const sal_uInt16* mpToUniTrailTab; +} ImplUniToDBCSHighTab; + +typedef struct +{ + const ImplDBCSToUniLeadTab* mpToUniLeadTab; + const ImplUniToDBCSHighTab* mpToDBCSHighTab; + sal_uChar mnLeadStart; + sal_uChar mnLeadEnd; + sal_uChar mnTrailStart; + sal_uChar mnTrailEnd; + const ImplDBCSEUDCData* mpEUDCTab; + sal_uInt16 mnEUDCCount; +} ImplDBCSConvertData; + +/* ---------------------------------- */ +/* - TextConverter - EUC-Structures - */ +/* ---------------------------------- */ + +typedef struct +{ + const ImplDBCSToUniLeadTab* mpJIS0208ToUniLeadTab; + const ImplDBCSToUniLeadTab* mpJIS0212ToUniLeadTab; + const ImplUniToDBCSHighTab* mpUniToJIS0208HighTab; + const ImplUniToDBCSHighTab* mpUniToJIS0212HighTab; +} ImplEUCJPConvertData; + +/* --------------------------------- */ +/* - TextConverter - HelpFunctions - */ +/* --------------------------------- */ + +sal_Unicode ImplGetUndefinedUnicodeChar(sal_uChar cChar, sal_uInt32 nFlags); + +sal_Bool +ImplHandleUndefinedUnicodeToTextChar(ImplTextConverterData const * pData, + sal_Unicode const ** ppSrcBuf, + sal_Unicode const * pEndSrcBuf, + sal_Char ** ppDestBuf, + sal_Char const * pEndDestBuf, + sal_uInt32 nFlags, + sal_uInt32 * pInfo); + /* sal_True means 'continue,' sal_False means 'break' */ + +/* ----------------------------- */ +/* - TextConverter - Functions - */ +/* ----------------------------- */ + +sal_Size ImplSymbolToUnicode( const ImplTextConverterData* pData, void* pContext, + const sal_Char* pSrcBuf, sal_Size nSrcBytes, + sal_Unicode* pDestBuf, sal_Size nDestChars, + sal_uInt32 nFlags, sal_uInt32* pInfo, sal_Size* pSrcCvtBytes ); +sal_Size ImplUnicodeToSymbol( const ImplTextConverterData* pData, void* pContext, + const sal_Unicode* pSrcBuf, sal_Size nSrcChars, + sal_Char* pDestBuf, sal_Size nDestBytes, + sal_uInt32 nFlags, sal_uInt32* pInfo, sal_Size* pSrcCvtChars ); +sal_Size ImplCharToUnicode( const ImplTextConverterData* pData, void* pContext, + const sal_Char* pSrcBuf, sal_Size nSrcBytes, + sal_Unicode* pDestBuf, sal_Size nDestChars, + sal_uInt32 nFlags, sal_uInt32* pInfo, sal_Size* pSrcCvtBytes ); +sal_Size ImplUnicodeToChar( const ImplTextConverterData* pData, void* pContext, + const sal_Unicode* pSrcBuf, sal_Size nSrcChars, + sal_Char* pDestBuf, sal_Size nDestBytes, + sal_uInt32 nFlags, sal_uInt32* pInfo, sal_Size* pSrcCvtChars ); +sal_Size ImplDBCSToUnicode( const ImplTextConverterData* pData, void* pContext, + const sal_Char* pSrcBuf, sal_Size nSrcBytes, + sal_Unicode* pDestBuf, sal_Size nDestChars, + sal_uInt32 nFlags, sal_uInt32* pInfo, + sal_Size* pSrcCvtBytes ); +sal_Size ImplUnicodeToDBCS( const ImplTextConverterData* pData, void* pContext, + const sal_Unicode* pSrcBuf, sal_Size nSrcChars, + sal_Char* pDestBuf, sal_Size nDestBytes, + sal_uInt32 nFlags, sal_uInt32* pInfo, + sal_Size* pSrcCvtChars ); +sal_Size ImplEUCJPToUnicode( const ImplTextConverterData* pData, + void* pContext, + const sal_Char* pSrcBuf, sal_Size nSrcBytes, + sal_Unicode* pDestBuf, sal_Size nDestChars, + sal_uInt32 nFlags, sal_uInt32* pInfo, + sal_Size* pSrcCvtBytes ); +sal_Size ImplUnicodeToEUCJP( const ImplTextConverterData* pData, + void* pContext, + const sal_Unicode* pSrcBuf, sal_Size nSrcChars, + sal_Char* pDestBuf, sal_Size nDestBytes, + sal_uInt32 nFlags, sal_uInt32* pInfo, + sal_Size* pSrcCvtChars ); +void* ImplUTF7CreateUTF7TextToUnicodeContext( void ); +void ImplUTF7DestroyTextToUnicodeContext( void* pContext ); +void ImplUTF7ResetTextToUnicodeContext( void* pContext ); +sal_Size ImplUTF7ToUnicode( const ImplTextConverterData* pData, void* pContext, + const sal_Char* pSrcBuf, sal_Size nSrcBytes, + sal_Unicode* pDestBuf, sal_Size nDestChars, + sal_uInt32 nFlags, sal_uInt32* pInfo, + sal_Size* pSrcCvtBytes ); +void* ImplUTF7CreateUnicodeToTextContext( void ); +void ImplUTF7DestroyUnicodeToTextContext( void* pContext ); +void ImplUTF7ResetUnicodeToTextContext( void* pContext ); +sal_Size ImplUnicodeToUTF7( const ImplTextConverterData* pData, void* pContext, + const sal_Unicode* pSrcBuf, sal_Size nSrcChars, + sal_Char* pDestBuf, sal_Size nDestBytes, + sal_uInt32 nFlags, sal_uInt32* pInfo, + sal_Size* pSrcCvtChars ); + +void * ImplCreateUtf8ToUnicodeContext(void) SAL_THROW_EXTERN_C(); +void ImplResetUtf8ToUnicodeContext(void * pContext) SAL_THROW_EXTERN_C(); +sal_Size ImplConvertUtf8ToUnicode(ImplTextConverterData const * pData, + void * pContext, sal_Char const * pSrcBuf, + sal_Size nSrcBytes, sal_Unicode * pDestBuf, + sal_Size nDestChars, sal_uInt32 nFlags, + sal_uInt32 * pInfo, sal_Size * pSrcCvtBytes) + SAL_THROW_EXTERN_C(); +void * ImplCreateUnicodeToUtf8Context(void) SAL_THROW_EXTERN_C(); +void ImplResetUnicodeToUtf8Context(void * pContext) SAL_THROW_EXTERN_C(); +sal_Size ImplConvertUnicodeToUtf8(ImplTextConverterData const * pData, + void * pContext, sal_Unicode const * pSrcBuf, + sal_Size nSrcChars, sal_Char * pDestBuf, + sal_Size nDestBytes, sal_uInt32 nFlags, + sal_uInt32 * pInfo, sal_Size* pSrcCvtChars) + SAL_THROW_EXTERN_C(); + +#if defined __cplusplus +} +#endif /* __cplusplus */ + +#endif /* INCLUDED_RTL_TEXTENC_TENCHELP_H */ |