1 #include "xincs.h"
2 #include "fxver.h"
3 #include "fxdefs.h"
4 #include "FXArray.h"
5 #include "FXHash.h"
6 #include "FXStream.h"
7 #include "FXTextCodec.h"
8 #include "FX885915Codec.h"
9 
10 namespace FX {
11 
12 FXIMPLEMENT(FX885915Codec,FXTextCodec,NULL,0)
13 
14 
15 //// Created by codec tool on 03/25/2005 from: 8859-15.TXT ////
16 static const unsigned short forward_data[256]={
17    0,    1,    2,    3,    4,    5,    6,    7,    8,    9,    10,   11,   12,   13,   14,   15,
18    16,   17,   18,   19,   20,   21,   22,   23,   24,   25,   26,   27,   28,   29,   30,   31,
19    32,   33,   34,   35,   36,   37,   38,   39,   40,   41,   42,   43,   44,   45,   46,   47,
20    48,   49,   50,   51,   52,   53,   54,   55,   56,   57,   58,   59,   60,   61,   62,   63,
21    64,   65,   66,   67,   68,   69,   70,   71,   72,   73,   74,   75,   76,   77,   78,   79,
22    80,   81,   82,   83,   84,   85,   86,   87,   88,   89,   90,   91,   92,   93,   94,   95,
23    96,   97,   98,   99,   100,  101,  102,  103,  104,  105,  106,  107,  108,  109,  110,  111,
24    112,  113,  114,  115,  116,  117,  118,  119,  120,  121,  122,  123,  124,  125,  126,  127,
25    128,  129,  130,  131,  132,  133,  134,  135,  136,  137,  138,  139,  140,  141,  142,  143,
26    144,  145,  146,  147,  148,  149,  150,  151,  152,  153,  154,  155,  156,  157,  158,  159,
27    160,  161,  162,  163,  8364, 165,  352,  167,  353,  169,  170,  171,  172,  173,  174,  175,
28    176,  177,  178,  179,  381,  181,  182,  183,  382,  185,  186,  187,  338,  339,  376,  191,
29    192,  193,  194,  195,  196,  197,  198,  199,  200,  201,  202,  203,  204,  205,  206,  207,
30    208,  209,  210,  211,  212,  213,  214,  215,  216,  217,  218,  219,  220,  221,  222,  223,
31    224,  225,  226,  227,  228,  229,  230,  231,  232,  233,  234,  235,  236,  237,  238,  239,
32    240,  241,  242,  243,  244,  245,  246,  247,  248,  249,  250,  251,  252,  253,  254,  255,
33   };
34 
35 
36 static const unsigned char reverse_plane[17]={
37   0, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
38   };
39 
40 static const unsigned char reverse_pages[73]={
41   0,  24, 24, 24, 24, 24, 24, 24, 78, 24, 24, 24, 24, 24, 24, 24,
42   24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
43   24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
44   24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
45   24, 24, 24, 24, 24, 24, 24, 24, 24,
46   };
47 
48 static const unsigned short reverse_block[142]={
49   0,   16,  32,  48,  64,  80,  96,  112, 128, 144, 160, 176, 192, 208, 224, 240,
50   256, 256, 256, 256, 256, 270, 286, 294, 256, 256, 256, 256, 256, 256, 256, 256,
51   256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
52   256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
53   256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
54   256, 256, 256, 256, 256, 256, 256, 256, 309, 256, 256, 256, 256, 256, 256, 256,
55   256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
56   256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
57   256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
58   };
59 
60 static const unsigned char reverse_data[325]={
61    0,    1,    2,    3,    4,    5,    6,    7,    8,    9,    10,   11,   12,   13,   14,   15,
62    16,   17,   18,   19,   20,   21,   22,   23,   24,   25,   26,   27,   28,   29,   30,   31,
63    32,   33,   34,   35,   36,   37,   38,   39,   40,   41,   42,   43,   44,   45,   46,   47,
64    48,   49,   50,   51,   52,   53,   54,   55,   56,   57,   58,   59,   60,   61,   62,   63,
65    64,   65,   66,   67,   68,   69,   70,   71,   72,   73,   74,   75,   76,   77,   78,   79,
66    80,   81,   82,   83,   84,   85,   86,   87,   88,   89,   90,   91,   92,   93,   94,   95,
67    96,   97,   98,   99,   100,  101,  102,  103,  104,  105,  106,  107,  108,  109,  110,  111,
68    112,  113,  114,  115,  116,  117,  118,  119,  120,  121,  122,  123,  124,  125,  126,  127,
69    128,  129,  130,  131,  132,  133,  134,  135,  136,  137,  138,  139,  140,  141,  142,  143,
70    144,  145,  146,  147,  148,  149,  150,  151,  152,  153,  154,  155,  156,  157,  158,  159,
71    160,  161,  162,  163,  26,   165,  26,   167,  26,   169,  170,  171,  172,  173,  174,  175,
72    176,  177,  178,  179,  26,   181,  182,  183,  26,   185,  186,  187,  26,   26,   26,   191,
73    192,  193,  194,  195,  196,  197,  198,  199,  200,  201,  202,  203,  204,  205,  206,  207,
74    208,  209,  210,  211,  212,  213,  214,  215,  216,  217,  218,  219,  220,  221,  222,  223,
75    224,  225,  226,  227,  228,  229,  230,  231,  232,  233,  234,  235,  236,  237,  238,  239,
76    240,  241,  242,  243,  244,  245,  246,  247,  248,  249,  250,  251,  252,  253,  254,  255,
77    26,   26,   26,   26,   26,   26,   26,   26,   26,   26,   26,   26,   26,   26,   26,   26,
78    188,  189,  26,   26,   26,   26,   26,   26,   26,   26,   26,   26,   26,   26,   166,  168,
79    26,   26,   26,   26,   26,   26,   26,   26,   26,   26,   26,   26,   26,   26,   190,  26,
80    26,   26,   26,   180,  184,  26,   26,   26,   26,   26,   26,   26,   26,   26,   26,   26,
81    26,   164,  26,   26,   26,
82   };
83 
84 
mb2wc(FXwchar & wc,const FXchar * src,FXint nsrc) const85 FXint FX885915Codec::mb2wc(FXwchar& wc,const FXchar* src,FXint nsrc) const {
86   if(nsrc<1) return -1;
87   wc=forward_data[(FXuchar)src[0]];
88   return 1;
89   }
90 
91 
wc2mb(FXchar * dst,FXint ndst,FXwchar wc) const92 FXint FX885915Codec::wc2mb(FXchar* dst,FXint ndst,FXwchar wc) const {
93   if(ndst<1) return -1;
94   dst[0]=reverse_data[reverse_block[reverse_pages[reverse_plane[wc>>16]+((wc>>10)&63)]+((wc>>4)&63)]+(wc&15)];
95   return 1;
96   }
97 
mibEnum() const98 FXint FX885915Codec::mibEnum() const {
99   return 111;
100   }
101 
102 
name() const103 const FXchar* FX885915Codec::name() const {
104   return "ISO-8859-15";
105   }
106 
107 
mimeName() const108 const FXchar* FX885915Codec::mimeName() const {
109   return "ISO-8859-15";
110   }
111 
112 
aliases() const113 const FXchar* const* FX885915Codec::aliases() const {
114   static const FXchar *const list[]={"iso8859-15","ISO-8859-15","ISO_8859-15","Latin-9","latin9",NULL};
115   return list;
116   }
117 
118 }
119 
120