From 849095f5e52261ae81211ed4a7a09f362670a999 Mon Sep 17 00:00:00 2001 From: yury Date: Thu, 14 Feb 2013 11:29:47 +0000 Subject: [PATCH] + Added Greek code page 1253 to the compiler to have support for the third modern code page (in addition to cp1251 and cp1252). It is needed to be able to define "type AnsiString(1253)" in tests. Previously I used cp1252 for tests with Euro symbol conversions. But for unknown reason cp1252 does not have the Euro symbol with code $80 on Unix systems (libiconv bug?). In other hand cp1253 has the Euro symbol with code $80 as expected. git-svn-id: trunk@23615 - --- .gitattributes | 1 + compiler/cp1253.pp | 282 +++++++++++++++++++++++++++++++++++++++++++ compiler/widestr.pas | 2 + 3 files changed, 285 insertions(+) create mode 100644 compiler/cp1253.pp diff --git a/.gitattributes b/.gitattributes index 6fb07006b2..b67bf0dbd6 100644 --- a/.gitattributes +++ b/.gitattributes @@ -154,6 +154,7 @@ compiler/comprsrc.pas svneol=native#text/plain compiler/constexp.pas svneol=native#text/x-pascal compiler/cp1251.pas svneol=native#text/plain compiler/cp1252.pp svneol=native#text/plain +compiler/cp1253.pp svneol=native#text/plain compiler/cp437.pas svneol=native#text/plain compiler/cp646.pas svneol=native#text/pascal compiler/cp850.pas svneol=native#text/plain diff --git a/compiler/cp1253.pp b/compiler/cp1253.pp new file mode 100644 index 0000000000..c108b6eca1 --- /dev/null +++ b/compiler/cp1253.pp @@ -0,0 +1,282 @@ +{ This is an automatically created file, so don't edit it } +unit cp1253; + + interface + + implementation + + uses + {$if FPC_FULLVERSION<20700}ccharset{$else}charset{$endif}; + + const + map : array[0..255] of tunicodecharmapping = ( + (unicode : 0; flag : umf_noinfo; reserved: 0), + (unicode : 1; flag : umf_noinfo; reserved: 0), + (unicode : 2; flag : umf_noinfo; reserved: 0), + (unicode : 3; flag : umf_noinfo; reserved: 0), + (unicode : 4; flag : umf_noinfo; reserved: 0), + (unicode : 5; flag : umf_noinfo; reserved: 0), + (unicode : 6; flag : umf_noinfo; reserved: 0), + (unicode : 7; flag : umf_noinfo; reserved: 0), + (unicode : 8; flag : umf_noinfo; reserved: 0), + (unicode : 9; flag : umf_noinfo; reserved: 0), + (unicode : 10; flag : umf_noinfo; reserved: 0), + (unicode : 11; flag : umf_noinfo; reserved: 0), + (unicode : 12; flag : umf_noinfo; reserved: 0), + (unicode : 13; flag : umf_noinfo; reserved: 0), + (unicode : 14; flag : umf_noinfo; reserved: 0), + (unicode : 15; flag : umf_noinfo; reserved: 0), + (unicode : 16; flag : umf_noinfo; reserved: 0), + (unicode : 17; flag : umf_noinfo; reserved: 0), + (unicode : 18; flag : umf_noinfo; reserved: 0), + (unicode : 19; flag : umf_noinfo; reserved: 0), + (unicode : 20; flag : umf_noinfo; reserved: 0), + (unicode : 21; flag : umf_noinfo; reserved: 0), + (unicode : 22; flag : umf_noinfo; reserved: 0), + (unicode : 23; flag : umf_noinfo; reserved: 0), + (unicode : 24; flag : umf_noinfo; reserved: 0), + (unicode : 25; flag : umf_noinfo; reserved: 0), + (unicode : 26; flag : umf_noinfo; reserved: 0), + (unicode : 27; flag : umf_noinfo; reserved: 0), + (unicode : 28; flag : umf_noinfo; reserved: 0), + (unicode : 29; flag : umf_noinfo; reserved: 0), + (unicode : 30; flag : umf_noinfo; reserved: 0), + (unicode : 31; flag : umf_noinfo; reserved: 0), + (unicode : 32; flag : umf_noinfo; reserved: 0), + (unicode : 33; flag : umf_noinfo; reserved: 0), + (unicode : 34; flag : umf_noinfo; reserved: 0), + (unicode : 35; flag : umf_noinfo; reserved: 0), + (unicode : 36; flag : umf_noinfo; reserved: 0), + (unicode : 37; flag : umf_noinfo; reserved: 0), + (unicode : 38; flag : umf_noinfo; reserved: 0), + (unicode : 39; flag : umf_noinfo; reserved: 0), + (unicode : 40; flag : umf_noinfo; reserved: 0), + (unicode : 41; flag : umf_noinfo; reserved: 0), + (unicode : 42; flag : umf_noinfo; reserved: 0), + (unicode : 43; flag : umf_noinfo; reserved: 0), + (unicode : 44; flag : umf_noinfo; reserved: 0), + (unicode : 45; flag : umf_noinfo; reserved: 0), + (unicode : 46; flag : umf_noinfo; reserved: 0), + (unicode : 47; flag : umf_noinfo; reserved: 0), + (unicode : 48; flag : umf_noinfo; reserved: 0), + (unicode : 49; flag : umf_noinfo; reserved: 0), + (unicode : 50; flag : umf_noinfo; reserved: 0), + (unicode : 51; flag : umf_noinfo; reserved: 0), + (unicode : 52; flag : umf_noinfo; reserved: 0), + (unicode : 53; flag : umf_noinfo; reserved: 0), + (unicode : 54; flag : umf_noinfo; reserved: 0), + (unicode : 55; flag : umf_noinfo; reserved: 0), + (unicode : 56; flag : umf_noinfo; reserved: 0), + (unicode : 57; flag : umf_noinfo; reserved: 0), + (unicode : 58; flag : umf_noinfo; reserved: 0), + (unicode : 59; flag : umf_noinfo; reserved: 0), + (unicode : 60; flag : umf_noinfo; reserved: 0), + (unicode : 61; flag : umf_noinfo; reserved: 0), + (unicode : 62; flag : umf_noinfo; reserved: 0), + (unicode : 63; flag : umf_noinfo; reserved: 0), + (unicode : 64; flag : umf_noinfo; reserved: 0), + (unicode : 65; flag : umf_noinfo; reserved: 0), + (unicode : 66; flag : umf_noinfo; reserved: 0), + (unicode : 67; flag : umf_noinfo; reserved: 0), + (unicode : 68; flag : umf_noinfo; reserved: 0), + (unicode : 69; flag : umf_noinfo; reserved: 0), + (unicode : 70; flag : umf_noinfo; reserved: 0), + (unicode : 71; flag : umf_noinfo; reserved: 0), + (unicode : 72; flag : umf_noinfo; reserved: 0), + (unicode : 73; flag : umf_noinfo; reserved: 0), + (unicode : 74; flag : umf_noinfo; reserved: 0), + (unicode : 75; flag : umf_noinfo; reserved: 0), + (unicode : 76; flag : umf_noinfo; reserved: 0), + (unicode : 77; flag : umf_noinfo; reserved: 0), + (unicode : 78; flag : umf_noinfo; reserved: 0), + (unicode : 79; flag : umf_noinfo; reserved: 0), + (unicode : 80; flag : umf_noinfo; reserved: 0), + (unicode : 81; flag : umf_noinfo; reserved: 0), + (unicode : 82; flag : umf_noinfo; reserved: 0), + (unicode : 83; flag : umf_noinfo; reserved: 0), + (unicode : 84; flag : umf_noinfo; reserved: 0), + (unicode : 85; flag : umf_noinfo; reserved: 0), + (unicode : 86; flag : umf_noinfo; reserved: 0), + (unicode : 87; flag : umf_noinfo; reserved: 0), + (unicode : 88; flag : umf_noinfo; reserved: 0), + (unicode : 89; flag : umf_noinfo; reserved: 0), + (unicode : 90; flag : umf_noinfo; reserved: 0), + (unicode : 91; flag : umf_noinfo; reserved: 0), + (unicode : 92; flag : umf_noinfo; reserved: 0), + (unicode : 93; flag : umf_noinfo; reserved: 0), + (unicode : 94; flag : umf_noinfo; reserved: 0), + (unicode : 95; flag : umf_noinfo; reserved: 0), + (unicode : 96; flag : umf_noinfo; reserved: 0), + (unicode : 97; flag : umf_noinfo; reserved: 0), + (unicode : 98; flag : umf_noinfo; reserved: 0), + (unicode : 99; flag : umf_noinfo; reserved: 0), + (unicode : 100; flag : umf_noinfo; reserved: 0), + (unicode : 101; flag : umf_noinfo; reserved: 0), + (unicode : 102; flag : umf_noinfo; reserved: 0), + (unicode : 103; flag : umf_noinfo; reserved: 0), + (unicode : 104; flag : umf_noinfo; reserved: 0), + (unicode : 105; flag : umf_noinfo; reserved: 0), + (unicode : 106; flag : umf_noinfo; reserved: 0), + (unicode : 107; flag : umf_noinfo; reserved: 0), + (unicode : 108; flag : umf_noinfo; reserved: 0), + (unicode : 109; flag : umf_noinfo; reserved: 0), + (unicode : 110; flag : umf_noinfo; reserved: 0), + (unicode : 111; flag : umf_noinfo; reserved: 0), + (unicode : 112; flag : umf_noinfo; reserved: 0), + (unicode : 113; flag : umf_noinfo; reserved: 0), + (unicode : 114; flag : umf_noinfo; reserved: 0), + (unicode : 115; flag : umf_noinfo; reserved: 0), + (unicode : 116; flag : umf_noinfo; reserved: 0), + (unicode : 117; flag : umf_noinfo; reserved: 0), + (unicode : 118; flag : umf_noinfo; reserved: 0), + (unicode : 119; flag : umf_noinfo; reserved: 0), + (unicode : 120; flag : umf_noinfo; reserved: 0), + (unicode : 121; flag : umf_noinfo; reserved: 0), + (unicode : 122; flag : umf_noinfo; reserved: 0), + (unicode : 123; flag : umf_noinfo; reserved: 0), + (unicode : 124; flag : umf_noinfo; reserved: 0), + (unicode : 125; flag : umf_noinfo; reserved: 0), + (unicode : 126; flag : umf_noinfo; reserved: 0), + (unicode : 127; flag : umf_noinfo; reserved: 0), + (unicode : 8364; flag : umf_noinfo; reserved: 0), + (unicode : 65535; flag : umf_unused; reserved: 0), + (unicode : 8218; flag : umf_noinfo; reserved: 0), + (unicode : 402; flag : umf_noinfo; reserved: 0), + (unicode : 8222; flag : umf_noinfo; reserved: 0), + (unicode : 8230; flag : umf_noinfo; reserved: 0), + (unicode : 8224; flag : umf_noinfo; reserved: 0), + (unicode : 8225; flag : umf_noinfo; reserved: 0), + (unicode : 65535; flag : umf_unused; reserved: 0), + (unicode : 8240; flag : umf_noinfo; reserved: 0), + (unicode : 65535; flag : umf_unused; reserved: 0), + (unicode : 8249; flag : umf_noinfo; reserved: 0), + (unicode : 65535; flag : umf_unused; reserved: 0), + (unicode : 65535; flag : umf_unused; reserved: 0), + (unicode : 65535; flag : umf_unused; reserved: 0), + (unicode : 65535; flag : umf_unused; reserved: 0), + (unicode : 65535; flag : umf_unused; reserved: 0), + (unicode : 8216; flag : umf_noinfo; reserved: 0), + (unicode : 8217; flag : umf_noinfo; reserved: 0), + (unicode : 8220; flag : umf_noinfo; reserved: 0), + (unicode : 8221; flag : umf_noinfo; reserved: 0), + (unicode : 8226; flag : umf_noinfo; reserved: 0), + (unicode : 8211; flag : umf_noinfo; reserved: 0), + (unicode : 8212; flag : umf_noinfo; reserved: 0), + (unicode : 65535; flag : umf_unused; reserved: 0), + (unicode : 8482; flag : umf_noinfo; reserved: 0), + (unicode : 65535; flag : umf_unused; reserved: 0), + (unicode : 8250; flag : umf_noinfo; reserved: 0), + (unicode : 65535; flag : umf_unused; reserved: 0), + (unicode : 65535; flag : umf_unused; reserved: 0), + (unicode : 65535; flag : umf_unused; reserved: 0), + (unicode : 65535; flag : umf_unused; reserved: 0), + (unicode : 160; flag : umf_noinfo; reserved: 0), + (unicode : 901; flag : umf_noinfo; reserved: 0), + (unicode : 902; flag : umf_noinfo; reserved: 0), + (unicode : 163; flag : umf_noinfo; reserved: 0), + (unicode : 164; flag : umf_noinfo; reserved: 0), + (unicode : 165; flag : umf_noinfo; reserved: 0), + (unicode : 166; flag : umf_noinfo; reserved: 0), + (unicode : 167; flag : umf_noinfo; reserved: 0), + (unicode : 168; flag : umf_noinfo; reserved: 0), + (unicode : 169; flag : umf_noinfo; reserved: 0), + (unicode : 65535; flag : umf_unused; reserved: 0), + (unicode : 171; flag : umf_noinfo; reserved: 0), + (unicode : 172; flag : umf_noinfo; reserved: 0), + (unicode : 173; flag : umf_noinfo; reserved: 0), + (unicode : 174; flag : umf_noinfo; reserved: 0), + (unicode : 8213; flag : umf_noinfo; reserved: 0), + (unicode : 176; flag : umf_noinfo; reserved: 0), + (unicode : 177; flag : umf_noinfo; reserved: 0), + (unicode : 178; flag : umf_noinfo; reserved: 0), + (unicode : 179; flag : umf_noinfo; reserved: 0), + (unicode : 900; flag : umf_noinfo; reserved: 0), + (unicode : 181; flag : umf_noinfo; reserved: 0), + (unicode : 182; flag : umf_noinfo; reserved: 0), + (unicode : 183; flag : umf_noinfo; reserved: 0), + (unicode : 904; flag : umf_noinfo; reserved: 0), + (unicode : 905; flag : umf_noinfo; reserved: 0), + (unicode : 906; flag : umf_noinfo; reserved: 0), + (unicode : 187; flag : umf_noinfo; reserved: 0), + (unicode : 908; flag : umf_noinfo; reserved: 0), + (unicode : 189; flag : umf_noinfo; reserved: 0), + (unicode : 910; flag : umf_noinfo; reserved: 0), + (unicode : 911; flag : umf_noinfo; reserved: 0), + (unicode : 912; flag : umf_noinfo; reserved: 0), + (unicode : 913; flag : umf_noinfo; reserved: 0), + (unicode : 914; flag : umf_noinfo; reserved: 0), + (unicode : 915; flag : umf_noinfo; reserved: 0), + (unicode : 916; flag : umf_noinfo; reserved: 0), + (unicode : 917; flag : umf_noinfo; reserved: 0), + (unicode : 918; flag : umf_noinfo; reserved: 0), + (unicode : 919; flag : umf_noinfo; reserved: 0), + (unicode : 920; flag : umf_noinfo; reserved: 0), + (unicode : 921; flag : umf_noinfo; reserved: 0), + (unicode : 922; flag : umf_noinfo; reserved: 0), + (unicode : 923; flag : umf_noinfo; reserved: 0), + (unicode : 924; flag : umf_noinfo; reserved: 0), + (unicode : 925; flag : umf_noinfo; reserved: 0), + (unicode : 926; flag : umf_noinfo; reserved: 0), + (unicode : 927; flag : umf_noinfo; reserved: 0), + (unicode : 928; flag : umf_noinfo; reserved: 0), + (unicode : 929; flag : umf_noinfo; reserved: 0), + (unicode : 65535; flag : umf_unused; reserved: 0), + (unicode : 931; flag : umf_noinfo; reserved: 0), + (unicode : 932; flag : umf_noinfo; reserved: 0), + (unicode : 933; flag : umf_noinfo; reserved: 0), + (unicode : 934; flag : umf_noinfo; reserved: 0), + (unicode : 935; flag : umf_noinfo; reserved: 0), + (unicode : 936; flag : umf_noinfo; reserved: 0), + (unicode : 937; flag : umf_noinfo; reserved: 0), + (unicode : 938; flag : umf_noinfo; reserved: 0), + (unicode : 939; flag : umf_noinfo; reserved: 0), + (unicode : 940; flag : umf_noinfo; reserved: 0), + (unicode : 941; flag : umf_noinfo; reserved: 0), + (unicode : 942; flag : umf_noinfo; reserved: 0), + (unicode : 943; flag : umf_noinfo; reserved: 0), + (unicode : 944; flag : umf_noinfo; reserved: 0), + (unicode : 945; flag : umf_noinfo; reserved: 0), + (unicode : 946; flag : umf_noinfo; reserved: 0), + (unicode : 947; flag : umf_noinfo; reserved: 0), + (unicode : 948; flag : umf_noinfo; reserved: 0), + (unicode : 949; flag : umf_noinfo; reserved: 0), + (unicode : 950; flag : umf_noinfo; reserved: 0), + (unicode : 951; flag : umf_noinfo; reserved: 0), + (unicode : 952; flag : umf_noinfo; reserved: 0), + (unicode : 953; flag : umf_noinfo; reserved: 0), + (unicode : 954; flag : umf_noinfo; reserved: 0), + (unicode : 955; flag : umf_noinfo; reserved: 0), + (unicode : 956; flag : umf_noinfo; reserved: 0), + (unicode : 957; flag : umf_noinfo; reserved: 0), + (unicode : 958; flag : umf_noinfo; reserved: 0), + (unicode : 959; flag : umf_noinfo; reserved: 0), + (unicode : 960; flag : umf_noinfo; reserved: 0), + (unicode : 961; flag : umf_noinfo; reserved: 0), + (unicode : 962; flag : umf_noinfo; reserved: 0), + (unicode : 963; flag : umf_noinfo; reserved: 0), + (unicode : 964; flag : umf_noinfo; reserved: 0), + (unicode : 965; flag : umf_noinfo; reserved: 0), + (unicode : 966; flag : umf_noinfo; reserved: 0), + (unicode : 967; flag : umf_noinfo; reserved: 0), + (unicode : 968; flag : umf_noinfo; reserved: 0), + (unicode : 969; flag : umf_noinfo; reserved: 0), + (unicode : 970; flag : umf_noinfo; reserved: 0), + (unicode : 971; flag : umf_noinfo; reserved: 0), + (unicode : 972; flag : umf_noinfo; reserved: 0), + (unicode : 973; flag : umf_noinfo; reserved: 0), + (unicode : 974; flag : umf_noinfo; reserved: 0), + (unicode : 65535; flag : umf_unused; reserved: 0) + ); + + unicodemap : tunicodemap = ( + cpname : 'cp1253'; + cp : 1253; + map : @map; + lastchar : 255; + next : nil; + internalmap : true + ); + + begin + registermapping(@unicodemap) + end. diff --git a/compiler/widestr.pas b/compiler/widestr.pas index f2a668db65..f062e19fcd 100644 --- a/compiler/widestr.pas +++ b/compiler/widestr.pas @@ -70,6 +70,8 @@ unit widestr; cp8859_1,cp850,cp437,cp1252,cp646, { cyrillic code pages } cp1251,cp866,cp8859_5, + { greek code page } + cp1253, globals,cutils;