libs-base/Source/Additions/unicode/gsm0338.h
rfm 31342aef09 Updates to reduce global namespace pollution. Plenty more remaining.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@23795 72102866-910b-0410-8b05-ffd578937521
2006-10-09 14:00:01 +00:00

336 lines
5.8 KiB
C

/* Created by Richard Frith-Macdonald <rfm@gnu.org> on 2002 Jan 24 */
/*
Copyright (C) 2005 Free Software Foundation
Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
notice and this notice are preserved.
*/
// GSM0338 to Unicode maping
static const unsigned int GSM0338_conv_base = 0x00;
static unichar GSM0338_char_to_uni_table[] =
{
0x0040,
0x00A3,
0x0024,
0x00A5,
0x00E8,
0x00E9,
0x00F9,
0x00EC,
0x00F2,
0x00E7,
0x000A,
0x00D8,
0x00F8,
0x000D,
0x00C5,
0x00E5,
0x0394,
0x005F,
0x03A6,
0x0393,
0x039B,
0x03A9,
0x03A0,
0x03A8,
0x03A3,
0x0398,
0x039E,
0x00A0,
0x00C6,
0x00E6,
0x00DF,
0x00C9,
0x0020,
0x0021,
0x0022,
0x0023,
0x00A4,
0x0025,
0x0026,
0x0027,
0x0028,
0x0029,
0x002A,
0x002B,
0x002C,
0x002D,
0x002E,
0x002F,
0x0030,
0x0031,
0x0032,
0x0033,
0x0034,
0x0035,
0x0036,
0x0037,
0x0038,
0x0039,
0x003A,
0x003B,
0x003C,
0x003D,
0x003E,
0x003F,
0x00A1,
0x0041,
0x0042,
0x0043,
0x0044,
0x0045,
0x0046,
0x0047,
0x0048,
0x0049,
0x004A,
0x004B,
0x004C,
0x004D,
0x004E,
0x004F,
0x0050,
0x0051,
0x0052,
0x0053,
0x0054,
0x0055,
0x0056,
0x0057,
0x0058,
0x0059,
0x005A,
0x00C4,
0x00D6,
0x00D1,
0x00DC,
0x00A7,
0x00BF,
0x0061,
0x0062,
0x0063,
0x0064,
0x0065,
0x0066,
0x0067,
0x0068,
0x0069,
0x006A,
0x006B,
0x006C,
0x006D,
0x006E,
0x006F,
0x0070,
0x0071,
0x0072,
0x0073,
0x0074,
0x0075,
0x0076,
0x0077,
0x0078,
0x0079,
0x007A,
0x00E4,
0x00F6,
0x00F1,
0x00FC,
0x00E0
};
static _ucc_ GSM0338_uni_to_char_table[] =
{
{0x000A,0x0A,},
{0x000D,0x0D,},
{0x0020,0x20,},
{0x0021,0x21,},
{0x0022,0x22,},
{0x0023,0x23,},
{0x0024,0x02,},
{0x0025,0x25,},
{0x0026,0x26,},
{0x0027,0x27,},
{0x0028,0x28,},
{0x0029,0x29,},
{0x002A,0x2A,},
{0x002B,0x2B,},
{0x002C,0x2C,},
{0x002D,0x2D,},
{0x002E,0x2E,},
{0x002F,0x2F,},
{0x0030,0x30,},
{0x0031,0x31,},
{0x0032,0x32,},
{0x0033,0x33,},
{0x0034,0x34,},
{0x0035,0x35,},
{0x0036,0x36,},
{0x0037,0x37,},
{0x0038,0x38,},
{0x0039,0x39,},
{0x003A,0x3A,},
{0x003B,0x3B,},
{0x003C,0x3C,},
{0x003D,0x3D,},
{0x003E,0x3E,},
{0x003F,0x3F,},
{0x0040,0x00,},
{0x0041,0x41,},
{0x0042,0x42,},
{0x0043,0x43,},
{0x0044,0x44,},
{0x0045,0x45,},
{0x0046,0x46,},
{0x0047,0x47,},
{0x0048,0x48,},
{0x0049,0x49,},
{0x004A,0x4A,},
{0x004B,0x4B,},
{0x004C,0x4C,},
{0x004D,0x4D,},
{0x004E,0x4E,},
{0x004F,0x4F,},
{0x0050,0x50,},
{0x0051,0x51,},
{0x0052,0x52,},
{0x0053,0x53,},
{0x0054,0x54,},
{0x0055,0x55,},
{0x0056,0x56,},
{0x0057,0x57,},
{0x0058,0x58,},
{0x0059,0x59,},
{0x005A,0x5A,},
{0x005F,0x11,},
{0x0061,0x61,},
{0x0062,0x62,},
{0x0063,0x63,},
{0x0064,0x64,},
{0x0065,0x65,},
{0x0066,0x66,},
{0x0067,0x67,},
{0x0068,0x68,},
{0x0069,0x69,},
{0x006A,0x6A,},
{0x006B,0x6B,},
{0x006C,0x6C,},
{0x006D,0x6D,},
{0x006E,0x6E,},
{0x006F,0x6F,},
{0x0070,0x70,},
{0x0071,0x71,},
{0x0072,0x72,},
{0x0073,0x73,},
{0x0074,0x74,},
{0x0075,0x75,},
{0x0076,0x76,},
{0x0077,0x77,},
{0x0078,0x78,},
{0x0079,0x79,},
{0x007A,0x7A,},
{0x00A0,0x20,}, /* Map unicode no-break-space to gsm space */
{0x00A1,0x40,},
{0x00A3,0x01,},
{0x00A4,0x24,},
{0x00A5,0x03,},
{0x00A7,0x5F,},
{0x00BF,0x60,},
{0x00C4,0x5B,},
{0x00C5,0x0E,},
{0x00C6,0x1C,},
{0x00C9,0x1F,},
{0x00D1,0x5D,},
{0x00D6,0x5C,},
{0x00D8,0x0B,},
{0x00DC,0x5E,},
{0x00DF,0x1E,},
{0x00E0,0x7F,},
{0x00E4,0x7B,},
{0x00E5,0x0F,},
{0x00E6,0x1D,},
{0x00E7,0x09,},
{0x00E8,0x04,},
{0x00E9,0x05,},
{0x00EC,0x07,},
{0x00F1,0x7D,},
{0x00F2,0x08,},
{0x00F6,0x7C,},
{0x00F8,0x0C,},
{0x00F9,0x06,},
{0x00FC,0x7E,},
{0x0393,0x13,},
{0x0394,0x10,},
{0x0398,0x19,},
{0x039B,0x14,},
{0x039E,0x1A,},
{0x03A0,0x16,},
{0x03A3,0x18,},
{0x03A6,0x12,},
{0x03A8,0x17,},
{0x03A9,0x15,}
};
#define GSM0338_tsize (sizeof(GSM0338_uni_to_char_table)/sizeof(_ucc_))
static _ucc_ GSM0338_escapes[] =
{
{0x000C,0x0A}, /* Form feed */
{0x005B,0x3C}, /* '[' */
{0x005C,0x2F}, /* '\\' */
{0x005D,0x3E}, /* ']' */
{0x005E,0x14}, /* '^' */
{0x007B,0x28}, /* '{' */
{0x007C,0x40}, /* '|' */
{0x007D,0x29}, /* '}' */
{0x007E,0x3D}, /* '~' */
{0x20AC,0x65} /* Euro symbol */
};
#define GSM0338_esize (sizeof(GSM0338_escapes)/sizeof(_ucc_))
/*
* Some of these conversions should not be needed because they are
* already handled by escape sequences ... I put them here so we can
* support two varieties of the GSM alphabet. The official one, and
* a cut down version suitable for use when delivering data to phones
* which don't support escape sequences.
*/
static _ucc_ GSM0338_lossy[] =
{
{0x005B,0x3C}, /* '[' => '<' */
{0x005C,0x2F}, /* '\\' => '/' */
{0x005D,0x3E}, /* ']' => '>' */
{0x005E,0x14}, /* '^' => lambda */
{0x0060,0x27}, /* '`' => '\'' */
{0x007B,0x28}, /* '{' => '(' */
{0x007C,0x40}, /* '|' => 'i' */
{0x007D,0x29}, /* '}' => ')' */
{0x007E,0x3D}, /* '~' => '=' */
{0x00C7,0x09}, /* C cedilla */
{0x0391,0x41}, /* Alpha */
{0x0392,0x42}, /* Beta */
{0x0395,0x45}, /* Epsilon */
{0x0396,0x5A}, /* Zeta */
{0x0397,0x48}, /* Eta */
{0x0399,0x49}, /* Iota */
{0x039A,0x4B}, /* Kappa */
{0x039C,0x4D}, /* Mu */
{0x039D,0x4E}, /* Nu */
{0x039F,0x4F}, /* Omicron */
{0x03A1,0x50}, /* Rho */
{0x03A4,0x54}, /* Tau */
{0x03A5,0x55}, /* Upsilon */
{0x03A7,0x58}, /* Chi */
{0x2014,0x2D}, /* Em-dash */
{0x2018,0x27}, /* left single quote */
{0x2019,0x27}, /* right single quote */
{0x201C,0x22}, /* left double quote */
{0x201D,0x22} /* right double quote */
};
#define GSM0338_lsize (sizeof(GSM0338_lossy)/sizeof(_ucc_))