summaryrefslogtreecommitdiff
path: root/Build/source/libs/teckit/TECkit-src/source/Public-headers/TECkit_Common.h
blob: ba7ed77f3f495d2971c8489b759f66b7d10a7614 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
/*------------------------------------------------------------------------
Copyright (C) 2002-2016 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_Common.h
Responsibility: Jonathan Kew
Last reviewed: Not yet.

Description:
    Public definitions used by TECkit engine and compiler
-------------------------------------------------------------------------*/

/*
	Common types and defines for the engine and compiler

History:
	16-Sep-2006		jk	updated version to 2.4 (adding new compiler APIs for Bob E)
	23-May-2005		jk	patch for 64-bit architectures (thanks to Ulrik P)
	18-Mar-2005		jk	updated minor version for 2.3 (engine unchanged, XML option in compiler)
	23-Sep-2003		jk	updated for version 2.1 - extended status values
	xx-xxx-2002		jk	version 2.0 initial release
*/

#pragma once

#define	kCurrentTECkitVersion	0x00020004	/* 16.16 version number */

#ifndef __MACTYPES__
#ifndef MAC_TYPES	/* these are all predefined if using a Mac prefix */
typedef unsigned char			UInt8;
typedef unsigned short			UInt16;
typedef unsigned int			UInt32;	/* NB: assumes int is 4 bytes */
#ifndef ZCONF_H /* n.b. if also using zlib.h, it must precede TECkit headers */
typedef UInt8					Byte;
#endif
typedef Byte*					BytePtr;
typedef UInt16					UniChar;

typedef char*					Ptr;
typedef Byte*					TextPtr;
#endif
#endif

/*
	all public functions return a status code
*/
typedef long					TECkit_Status;

/*
	possible TECkit_Status return values
*/
#define	kStatus_NoError				0	/* this is usually the desired result! */

/* positive values are informational status values */
/* low byte is the basic status of the conversion process */
#define kStatusMask_Basic			0x000000FF
#define kStatus_OutputBufferFull	1	/* ConvertBuffer or Flush: output buffer full, so not all input was processed */
#define kStatus_NeedMoreInput		2	/* ConvertBuffer: processed all input data, ready for next chunk */

/* only returned in version 2.1 or later, with DontUseReplacementChar option */
#define kStatus_UnmappedChar		3	/* ConvertBuffer or Flush: stopped at unmapped character */

/* additional warning status in 2.1, only returned if 2.1-specific options are used */
/* one byte of the status value is used for warning flags */
#define kStatusMask_Warning			0x0000FF00
#define kStatus_UsedReplacement     0x00000100	/* ConvertBuffer or Flush: used default replacement character during mapping */

/* negative values are errors */
#define kStatus_InvalidForm			-1	/* inForm or outForm parameter doesn't match mapping (bytes/Unicode mismatch) */
#define kStatus_ConverterBusy		-2	/* can't initiate a conversion, as the converter is already in the midst of an operation */
#define kStatus_InvalidConverter	-3	/* converter object is corrupted (or not really a TECkit_Converter at all) */
#define kStatus_InvalidMapping		-4	/* compiled mapping data is not recognizable */
#define kStatus_BadMappingVersion	-5	/* compiled mapping is not a version we can handle */
#define kStatus_Exception			-6	/* an internal error has occurred */
#define kStatus_NameNotFound		-7	/* couldn't find the requested name in the compiled mapping */
#define kStatus_IncompleteChar		-8	/* bad input data (lone surrogate, incomplete UTF8 sequence) */
#define kStatus_CompilationFailed	-9	/* mapping compilation failed (syntax errors, etc) */
#define kStatus_OutOfMemory			-10	/* unable to allocate required memory */

/*
	encoding form constants for TECkit_CreateConverter and TECkit_Compile
*/
#define	kForm_EncodingFormMask		0x000F
#define kForm_Unspecified			0	/* invalid as argument to TECkit_CreateConverter */
#define	kForm_Bytes					1
#define kForm_UTF8					2
#define kForm_UTF16BE				3
#define kForm_UTF16LE				4
#define kForm_UTF32BE				5
#define kForm_UTF32LE				6