Back to index

lightning-sunbird  0.9+nobinonly
uconvutil.h
Go to the documentation of this file.
00001 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
00002 /* ***** BEGIN LICENSE BLOCK *****
00003  * Version: MPL 1.1/GPL 2.0/LGPL 2.1
00004  *
00005  * The contents of this file are subject to the Mozilla Public License Version
00006  * 1.1 (the "License"); you may not use this file except in compliance with
00007  * the License. You may obtain a copy of the License at
00008  * http://www.mozilla.org/MPL/
00009  *
00010  * Software distributed under the License is distributed on an "AS IS" basis,
00011  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
00012  * for the specific language governing rights and limitations under the
00013  * License.
00014  *
00015  * The Original Code is Mozilla Communicator client code.
00016  *
00017  * The Initial Developer of the Original Code is
00018  * Netscape Communications Corporation.
00019  * Portions created by the Initial Developer are Copyright (C) 1998
00020  * the Initial Developer. All Rights Reserved.
00021  *
00022  * Contributor(s):
00023  *   jeroen.dobbelaere@acunia.com
00024  *
00025  * Alternatively, the contents of this file may be used under the terms of
00026  * either of the GNU General Public License Version 2 or later (the "GPL"),
00027  * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
00028  * in which case the provisions of the GPL or the LGPL are applicable instead
00029  * of those above. If you wish to allow use of your version of this file only
00030  * under the terms of either the GPL or the LGPL, and not to allow others to
00031  * use your version of this file under the terms of the MPL, indicate your
00032  * decision by deleting the provisions above and replace them with the notice
00033  * and other provisions required by the GPL or the LGPL. If you do not delete
00034  * the provisions above, a recipient may use your version of this file under
00035  * the terms of any one of the MPL, the GPL or the LGPL.
00036  *
00037  * ***** END LICENSE BLOCK ***** */
00038 #ifndef __UCONV_TIL_H__
00039 #define __UCONV_TIL_H__
00040 
00041 #include "prcpucfg.h"
00042 
00043 
00044 /*=====================================*/
00045 #define PACK(h,l)   (int16)(( (h) << 8) | (l))
00046 
00047 #if defined(IS_LITTLE_ENDIAN)
00048 #define ShiftCell(sub,len,min,max,minh,minl,maxh,maxl)  \
00049     PACK(len,sub), PACK(max,min), PACK(minl,minh), PACK(maxl,maxh)
00050 #else
00051 #define ShiftCell(sub,len,min,max,minh,minl,maxh,maxl)  \
00052     PACK(sub,len), PACK(min, max), PACK(minh,minl), PACK(maxh,maxl)
00053 #endif
00054 
00055 typedef enum {
00056         u1ByteCharset = 0,
00057         u2BytesCharset,
00058         uMultibytesCharset,
00059         u2BytesGRCharset,
00060         u2BytesGRPrefix8FCharset,
00061         u2BytesGRPrefix8EA2Charset,
00062         u2BytesSwapCharset,
00063         u4BytesCharset,
00064         u4BytesSwapCharset,
00065         u2BytesGRPrefix8EA3Charset,
00066         u2BytesGRPrefix8EA4Charset,
00067         u2BytesGRPrefix8EA5Charset,
00068         u2BytesGRPrefix8EA6Charset,
00069         u2BytesGRPrefix8EA7Charset,
00070         u1ByteGLCharset,
00071         uDecomposedHangulCharset,
00072         uJohabHangulCharset,
00073         uJohabSymbolCharset,
00074         u4BytesGB18030Charset,
00075         u2BytesGR128Charset,
00076         uNumOfCharsetType
00077 } uScanClassID;
00078 
00079 typedef enum {
00080         u1ByteChar                      = 0,
00081         u2BytesChar,
00082         u2BytesGRChar,
00083         u1BytePrefix8EChar,             /* Used by JIS0201 GR in EUC_JP */
00084         u2BytesUTF8,                    /* Used by UTF8 */
00085         u3BytesUTF8,                    /* Used by UTF8 */
00086         uNumOfCharType
00087 } uScanSubClassID;
00088 
00089 typedef struct  {
00090         unsigned char   classID;
00091         unsigned char   reserveLen;
00092         unsigned char   shiftin_Min;
00093         unsigned char   shiftin_Max;
00094         unsigned char   shiftout_MinHB;
00095         unsigned char   shiftout_MinLB;
00096         unsigned char   shiftout_MaxHB;
00097         unsigned char   shiftout_MaxLB;
00098 } uShiftCell;
00099 
00100 typedef struct  {
00101         PRInt16         numOfItem;
00102         PRInt16         classID; 
00103         uShiftCell      shiftcell[1];
00104 } uShiftTableMutable;
00105 
00106 typedef const uShiftTableMutable uShiftTable;
00107 
00108 
00109 /*=====================================*/
00110 
00111 typedef struct {
00112         unsigned char min;
00113         unsigned char max;
00114 } uRange;
00115 
00116 /*=====================================*/
00117 
00118 typedef PRUint16* uMappingTableMutable; 
00119 typedef const PRUint16* uMappingTable; 
00120  
00121 #endif
00122