diff options
Diffstat (limited to 'Build/source/libs/teckit/TECkit-2.5.1/source/Public-headers/TECkit_Engine.h')
-rw-r--r-- | Build/source/libs/teckit/TECkit-2.5.1/source/Public-headers/TECkit_Engine.h | 268 |
1 files changed, 268 insertions, 0 deletions
diff --git a/Build/source/libs/teckit/TECkit-2.5.1/source/Public-headers/TECkit_Engine.h b/Build/source/libs/teckit/TECkit-2.5.1/source/Public-headers/TECkit_Engine.h new file mode 100644 index 00000000000..54fc35013b5 --- /dev/null +++ b/Build/source/libs/teckit/TECkit-2.5.1/source/Public-headers/TECkit_Engine.h @@ -0,0 +1,268 @@ +/*------------------------------------------------------------------------ +Copyright (C) 2002-2005 SIL International. All rights reserved. + +Distributable under the terms of either the Common Public License or the +GNU Lesser General Public License, as specified in the LICENSING.txt file. + +File: TECkit_Engine.h +Responsibility: Jonathan Kew +Last reviewed: Not yet. + +Description: + Public API to the TECkit conversion engine. +-------------------------------------------------------------------------*/ + +/* + TECkit_Engine.h + + Public API to the TECkit encoding conversion library. + + 18-Jan-2008 jk added EXPORTED to declarations, for mingw32 cross-build + 18-Mar-2005 jk moved version number to TECkit_Common.h as it is shared with the compiler + 19-Mar-2004 jk updated minor version for 2.2 engine (improved matching functionality) + 23-Sep-2003 jk updated for version 2.1 - new "...Opt" APIs + 5-Jul-2002 jk corrected placement of WINAPI to keep MS compiler happy + 14-May-2002 jk added WINAPI to function declarations + 22-Dec-2001 jk initial version +*/ + +#ifndef __TECkit_Engine_H__ +#define __TECkit_Engine_H__ + +#include "TECkit_Common.h" + +/* formFlags bits for normalization; if none are set, then this side of the mapping is normalization-form-agnostic on input, and may generate an unspecified mixture */ +#define kFlags_ExpectsNFC 0x00000001 /* expects fully composed text (NC) */ +#define kFlags_ExpectsNFD 0x00000002 /* expects fully decomposed text (NCD) */ +#define kFlags_GeneratesNFC 0x00000004 /* generates fully composed text (NC) */ +#define kFlags_GeneratesNFD 0x00000008 /* generates fully decomposed text (NCD) */ + +/* if VisualOrder is set, this side of the mapping deals with visual-order rather than logical-order text (only relevant for bidi scripts) */ +#define kFlags_VisualOrder 0x00008000 /* visual rather than logical order */ + +/* if Unicode is set, the encoding is Unicode on this side of the mapping */ +#define kFlags_Unicode 0x00010000 /* this is Unicode rather than a byte encoding */ + +/* required names */ +#define kNameID_LHS_Name 0 /* "source" or LHS encoding name, e.g. "SIL-EEG_URDU-2001" */ +#define kNameID_RHS_Name 1 /* "destination" or RHS encoding name, e.g. "UNICODE-3-1" */ +#define kNameID_LHS_Description 2 /* source encoding description, e.g. "SIL East Eurasia Group Extended Urdu (Mac OS)" */ +#define kNameID_RHS_Description 3 /* destination description, e.g. "Unicode 3.1" */ +/* additional recommended names (parallel to UTR-22) */ +#define kNameID_Version 4 /* "1.0b1" */ +#define kNameID_Contact 5 /* "mailto:jonathan_kew@sil.org" */ +#define kNameID_RegAuthority 6 /* "SIL International" */ +#define kNameID_RegName 7 /* "Greek (Galatia)" */ +#define kNameID_Copyright 8 /* "(c)2002 SIL International" */ +/* additional name IDs may be defined in the future */ + +/* + encoding form options for TECkit_CreateConverter +*/ +#define kForm_NormalizationMask 0x0F00 +#define kForm_NFC 0x0100 +#define kForm_NFD 0x0200 + +/* + end of text value for TECkit_DataSource functions to return +*/ +#define kEndOfText 0xffffffffUL + +/* + A converter object is an opaque pointer +*/ +typedef struct Opaque_TECkit_Converter* TECkit_Converter; + +#if defined(__cplusplus) +extern "C" { +#endif + +#ifdef _WIN32 +/* MS compiler has predefined _WIN32, so assume Windows target */ +#include <windows.h> +#else +/* not the MS compiler, so try Metrowerks' platform macros */ +#ifndef __APPLE__ +#if defined __dest_os && (__dest_os == __win32_os) +#include <windef.h> +#endif +#endif +#endif + +#ifndef WINAPI +#define WINAPI +#define CALLBACK +#endif + +/* this seems to be needed for a gcc-mingw32 build to work... */ +#ifndef EXPORTED +#ifdef _WIN32 +#define EXPORTED __declspec(dllexport) +#else +#define EXPORTED +#endif +#endif + +/* + Create a converter object from a compiled mapping +*/ +TECkit_Status +WINAPI EXPORTED +TECkit_CreateConverter( + Byte* mapping, + UInt32 mappingSize, + Byte mapForward, + UInt16 sourceForm, + UInt16 targetForm, + TECkit_Converter* converter); + +/* + Dispose of a converter object +*/ +TECkit_Status +WINAPI EXPORTED +TECkit_DisposeConverter( + TECkit_Converter converter); + +/* + Read a name record or the flags from a converter object +*/ +TECkit_Status +WINAPI EXPORTED +TECkit_GetConverterName( + TECkit_Converter converter, + UInt16 nameID, + Byte* nameBuffer, + UInt32 bufferSize, + UInt32* nameLength); + +TECkit_Status +WINAPI EXPORTED +TECkit_GetConverterFlags( + TECkit_Converter converter, + UInt32* sourceFlags, + UInt32* targetFlags); + +/* + Reset a converter object, forgetting any buffered context/state +*/ +TECkit_Status +WINAPI EXPORTED +TECkit_ResetConverter( + TECkit_Converter converter); + +/* + Convert text from a buffer in memory +*/ +TECkit_Status +WINAPI EXPORTED +TECkit_ConvertBuffer( + TECkit_Converter converter, + const Byte* inBuffer, + UInt32 inLength, + UInt32* inUsed, + Byte* outBuffer, + UInt32 outLength, + UInt32* outUsed, + Byte inputIsComplete); + +/* + Flush any buffered text from a converter object + (at end of input, if inputIsComplete flag not set for ConvertBuffer) +*/ +TECkit_Status +WINAPI EXPORTED +TECkit_Flush( + TECkit_Converter converter, + Byte* outBuffer, + UInt32 outLength, + UInt32* outUsed); + + +/* + Read name and flags directly from a compiled mapping, before making a converter object +*/ +TECkit_Status +WINAPI EXPORTED +TECkit_GetMappingName( + Byte* mapping, + UInt32 mappingSize, + UInt16 nameID, + Byte* nameBuffer, + UInt32 bufferSize, + UInt32* nameLength); + +TECkit_Status +WINAPI EXPORTED +TECkit_GetMappingFlags( + Byte* mapping, + UInt32 mappingSize, + UInt32* lhsFlags, + UInt32* rhsFlags); + +/* + Return the version number of the TECkit library +*/ +UInt32 +WINAPI EXPORTED +TECkit_GetVersion(); + +/* + ***** New APIs for version 2.1 of the engine ***** + + A converter object now has options to control behavior when "unmappable" characters + occur in the input text. + Choices are: + UseReplacementCharSilently + - original behavior, just uses "replacement character" in the mapping + UseReplacementCharWithWarning + - do the same mapping, but return a warning in the status value + DontUseReplacementChar + - stop conversion, returning immediately on encountering an unmapped character +*/ + +#define kOptionsMask_UnmappedBehavior 0x000F +#define kOptionsUnmapped_UseReplacementCharSilently 0x00 +#define kOptionsUnmapped_UseReplacementCharWithWarning 0x01 +#define kOptionsUnmapped_DontUseReplacementChar 0x02 + +#define kOptionsMask_InputComplete 0x0100 +#define kOptionsComplete_InputIsComplete 0x0100 + +/* + Convert text from a buffer in memory, with options + (note that former inputIsComplete flag is now a bit in the options parameter) +*/ +TECkit_Status +WINAPI EXPORTED +TECkit_ConvertBufferOpt( + TECkit_Converter converter, + const Byte* inBuffer, + UInt32 inLength, + UInt32* inUsed, + Byte* outBuffer, + UInt32 outLength, + UInt32* outUsed, + UInt32 inOptions, + UInt32* lookaheadCount); + +/* + Flush any buffered text from a converter object, with options + (at end of input, if inputIsComplete flag not set for ConvertBuffer) +*/ +TECkit_Status +WINAPI EXPORTED +TECkit_FlushOpt( + TECkit_Converter converter, + Byte* outBuffer, + UInt32 outLength, + UInt32* outUsed, + UInt32 inOptions, + UInt32* lookaheadCount); + + +#if defined(__cplusplus) +} /* extern "C" */ +#endif + +#endif /* __TECkit_Engine_H__ */ |