summaryrefslogtreecommitdiff
path: root/sal/textenc/tenchelp.hxx
diff options
context:
space:
mode:
Diffstat (limited to 'sal/textenc/tenchelp.hxx')
-rw-r--r--sal/textenc/tenchelp.hxx297
1 files changed, 297 insertions, 0 deletions
diff --git a/sal/textenc/tenchelp.hxx b/sal/textenc/tenchelp.hxx
new file mode 100644
index 000000000000..5c069f90a7ea
--- /dev/null
+++ b/sal/textenc/tenchelp.hxx
@@ -0,0 +1,297 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * 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_SAL_TEXTENC_TENCHELP_HXX
+#define INCLUDED_SAL_TEXTENC_TENCHELP_HXX
+
+#include "sal/config.h"
+
+#include "rtl/tencinfo.h"
+#include "rtl/textenc.h"
+#include "sal/types.h"
+
+#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,
+ 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,
+ 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);
+
+struct ImplTextConverter
+{
+ ImplTextConverterData const * mpConvertData;
+ ImplConvertToUnicodeProc mpConvertTextToUnicodeProc;
+ ImplConvertToTextProc mpConvertUnicodeToTextProc;
+ ImplCreateTextContextProc mpCreateTextToUnicodeContext;
+ ImplDestroyTextContextProc mpDestroyTextToUnicodeContext;
+ ImplResetTextContextProc mpResetTextToUnicodeContext;
+ ImplCreateUnicodeContextProc mpCreateUnicodeToTextContext;
+ ImplDestroyUnicodeContextProc mpDestroyUnicodeToTextContext;
+ ImplResetUnicodeContextProc mpResetUnicodeToTextContext;
+};
+
+/* ----------------------------- */
+/* - TextEncoding - Structures - */
+/* ----------------------------- */
+
+struct ImplTextEncodingData
+{
+ ImplTextConverter maConverter;
+ sal_uInt8 mnMinCharSize;
+ sal_uInt8 mnMaxCharSize;
+ sal_uInt8 mnAveCharSize;
+ sal_uInt8 mnBestWindowsCharset;
+ char const * mpBestUnixCharset;
+ char const * mpBestMimeCharset;
+ sal_uInt32 mnInfoFlags;
+};
+
+/* ----------------------------------- */
+/* - TextConverter - Byte-Structures - */
+/* ----------------------------------- */
+
+struct ImplUniCharTabData
+{
+ 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
+};
+
+struct ImplByteConvertData
+{
+ 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;
+};
+
+/* ----------------------------------- */
+/* - TextConverter - DBCS-Structures - */
+/* ----------------------------------- */
+
+struct ImplDBCSEUDCData
+{
+ 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;
+};
+
+struct ImplDBCSToUniLeadTab
+{
+ sal_uInt16 mnUniChar;
+ sal_uInt8 mnTrailStart;
+ sal_uInt8 mnTrailEnd;
+ const sal_uInt16* mpToUniTrailTab;
+};
+
+struct ImplUniToDBCSHighTab
+{
+ sal_uInt8 mnLowStart;
+ sal_uInt8 mnLowEnd;
+ const sal_uInt16* mpToUniTrailTab;
+};
+
+struct ImplDBCSConvertData
+{
+ const ImplDBCSToUniLeadTab* mpToUniLeadTab;
+ const ImplUniToDBCSHighTab* mpToDBCSHighTab;
+ sal_uChar mnLeadStart;
+ sal_uChar mnLeadEnd;
+ sal_uChar mnTrailStart;
+ sal_uChar mnTrailEnd;
+ const ImplDBCSEUDCData* mpEUDCTab;
+ sal_uInt16 mnEUDCCount;
+};
+
+/* ---------------------------------- */
+/* - TextConverter - EUC-Structures - */
+/* ---------------------------------- */
+
+struct ImplEUCJPConvertData
+{
+ const ImplDBCSToUniLeadTab* mpJIS0208ToUniLeadTab;
+ const ImplDBCSToUniLeadTab* mpJIS0212ToUniLeadTab;
+ const ImplUniToDBCSHighTab* mpUniToJIS0208HighTab;
+ const ImplUniToDBCSHighTab* mpUniToJIS0212HighTab;
+};
+
+/* --------------------------------- */
+/* - TextConverter - HelpFunctions - */
+/* --------------------------------- */
+
+sal_Unicode ImplGetUndefinedUnicodeChar(sal_uChar cChar, sal_uInt32 nFlags);
+
+bool
+ImplHandleUndefinedUnicodeToTextChar(ImplTextConverterData const * pData,
+ sal_Unicode const ** ppSrcBuf,
+ sal_Unicode const * pEndSrcBuf,
+ char ** ppDestBuf,
+ char const * pEndDestBuf,
+ sal_uInt32 nFlags,
+ sal_uInt32 * pInfo);
+ /* true means 'continue,' false means 'break' */
+
+/* ----------------------------- */
+/* - TextConverter - Functions - */
+/* ----------------------------- */
+
+sal_Size ImplSymbolToUnicode( const ImplTextConverterData* pData, void* pContext,
+ const 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,
+ char* pDestBuf, sal_Size nDestBytes,
+ sal_uInt32 nFlags, sal_uInt32* pInfo, sal_Size* pSrcCvtChars );
+sal_Size ImplCharToUnicode( const ImplTextConverterData* pData, void* pContext,
+ const char* pSrcBuf, sal_Size nSrcBytes,
+ sal_Unicode* pDestBuf, sal_Size nDestChars,
+ sal_uInt32 nFlags, sal_uInt32* pInfo, sal_Size* pSrcCvtBytes );
+/** For those encodings only with unicode range of 0x80 to 0xFF. */
+sal_Size ImplUpperCharToUnicode( const ImplTextConverterData* pData, void* pContext,
+ const 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,
+ char* pDestBuf, sal_Size nDestBytes,
+ sal_uInt32 nFlags, sal_uInt32* pInfo, sal_Size* pSrcCvtChars );
+sal_Size ImplDBCSToUnicode( const ImplTextConverterData* pData, void* pContext,
+ const 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,
+ char* pDestBuf, sal_Size nDestBytes,
+ sal_uInt32 nFlags, sal_uInt32* pInfo,
+ sal_Size* pSrcCvtChars );
+sal_Size ImplEUCJPToUnicode( const ImplTextConverterData* pData,
+ void* pContext,
+ const 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,
+ 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 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,
+ char* pDestBuf, sal_Size nDestBytes,
+ sal_uInt32 nFlags, sal_uInt32* pInfo,
+ sal_Size* pSrcCvtChars );
+
+void * ImplCreateUtf8ToUnicodeContext(void);
+void ImplResetUtf8ToUnicodeContext(void * pContext);
+sal_Size ImplConvertUtf8ToUnicode(ImplTextConverterData const * pData,
+ void * pContext, char const * pSrcBuf,
+ sal_Size nSrcBytes, sal_Unicode * pDestBuf,
+ sal_Size nDestChars, sal_uInt32 nFlags,
+ sal_uInt32 * pInfo, sal_Size * pSrcCvtBytes);
+void * ImplCreateUnicodeToUtf8Context(void);
+void ImplResetUnicodeToUtf8Context(void * pContext);
+sal_Size ImplConvertUnicodeToUtf8(ImplTextConverterData const * pData,
+ void * pContext, sal_Unicode const * pSrcBuf,
+ sal_Size nSrcChars, char * pDestBuf,
+ sal_Size nDestBytes, sal_uInt32 nFlags,
+ sal_uInt32 * pInfo, sal_Size* pSrcCvtChars);
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */