home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / xwphescr.zip / XWPH0208.ZIP / include / encodings / base.h < prev    next >
C/C++ Source or Header  |  2002-07-06  |  4KB  |  152 lines

  1.  
  2. /*
  3.  *@@sourcefile
  4.  *
  5.  *
  6.  *@@added V0.9.9 (2001-02-10) [umoeller]
  7.  */
  8.  
  9. #if __cplusplus
  10. extern "C" {
  11. #endif
  12.  
  13. #ifndef ENC_BASE_HEADER_INCLUDED
  14.     #define ENC_BASE_HEADER_INCLUDED
  15.  
  16.     #pragma pack(1)         // V0.9.20 (2002-07-03) [umoeller]
  17.  
  18.     /*
  19.      *@@ XWPENCODINGMAP:
  20.      *      entry in a codepage-to-Unicode conversion table.
  21.      */
  22.  
  23.     typedef struct _XWPENCODINGMAP
  24.     {
  25.         unsigned short      usCP;
  26.         unsigned short      usUni;
  27.     } XWPENCODINGMAP, *PXWPENCODINGMAP;
  28.  
  29.     #pragma pack()
  30.  
  31.     /*
  32.      *@@ ENCID:
  33.      *      enum identifying each encoding set which is
  34.      *      generally supported. Each ID corresponds to
  35.      *      one header file in include\encodings\.
  36.      */
  37.  
  38.     typedef enum _ENCID
  39.     {
  40.         UNSUPPORTED,
  41.         enc_cp437,
  42.         enc_cp737,
  43.         enc_cp775,
  44.         enc_cp850,
  45.         enc_cp852,
  46.         enc_cp855,
  47.         enc_cp857,
  48.         enc_cp860,
  49.         enc_cp861,
  50.         enc_cp862,
  51.         enc_cp863,
  52.         enc_cp864,
  53.         enc_cp865,
  54.         enc_cp866,
  55.         enc_cp869,
  56.         enc_cp874,
  57.         enc_cp932,
  58.         enc_cp936,
  59.         enc_cp949,
  60.         enc_cp950,
  61.         enc_cp1004,     // added V0.9.18 (2002-03-08) [umoeller]
  62.         enc_cp1250,
  63.         enc_cp1251,
  64.         enc_cp1252,
  65.         enc_cp1253,
  66.         enc_cp1254,
  67.         enc_cp1255,
  68.         enc_cp1256,
  69.         enc_cp1257,
  70.         enc_cp1258,
  71.         enc_iso8859_1,
  72.         enc_iso8859_2,
  73.         enc_iso8859_3,
  74.         enc_iso8859_4,
  75.         enc_iso8859_5,
  76.         enc_iso8859_6,
  77.         enc_iso8859_7,
  78.         enc_iso8859_8,
  79.         enc_iso8859_9,
  80.         enc_iso8859_10,
  81.         enc_iso8859_13,
  82.         enc_iso8859_14,
  83.         enc_iso8859_15
  84.     } ENCID;
  85.  
  86.     /*
  87.      *@@ CONVERSION:
  88.      *
  89.      *@@added V0.9.18 (2002-03-08) [umoeller]
  90.      */
  91.  
  92.     typedef struct _CONVERSION
  93.     {
  94.         ENCID   EncodingID;
  95.  
  96.         // to get Unicode for character 123 in the specific
  97.         // encoding, do pTable->ausEntriesUniFromCP[123].
  98.         // If you get 0xFFFF, the encoding is undefined.
  99.         unsigned short  usHighestCP;
  100.         unsigned short  *ausEntriesUniFromCP;  // usHighestCP + 1 entries
  101.  
  102.         // to get codepage for unicode character 123,
  103.         // do pTable->ausEntriesCPFromUni[123].
  104.         // If you get 0xFFFF, the encoding is undefined.
  105.         unsigned short  usHighestUni;
  106.         unsigned short  *ausEntriesCPFromUni;   // usHighestUni + 1 entries
  107.  
  108.     } CONVERSION, *PCONVERSION;
  109.  
  110.     typedef enum _ENCBYTECOUNT
  111.     {
  112.         SINGLE,
  113.         DOUBLE,
  114.         EBCDIC,
  115.         MULTI_UNICODE,
  116.         UNKNOWN
  117.     } ENCBYTECOUNT;
  118.  
  119.     int encGetTable(ENCID id,
  120.                     PXWPENCODINGMAP *ppMap,
  121.                     unsigned long *pcEntries);
  122.  
  123.     ENCID encFindIdForCodepage(unsigned short usCodepage,
  124.                                const char **ppcszDescription,
  125.                                ENCBYTECOUNT *pByteCount);
  126.  
  127.     PCONVERSION encCreateCodec(ENCID id);
  128.  
  129.     void encFreeCodec(PCONVERSION *ppTable);
  130.  
  131.     unsigned long encChar2Uni(PCONVERSION pTable,
  132.                               unsigned short c);
  133.  
  134.     unsigned short encUni2Char(PCONVERSION pTable,
  135.                                unsigned long ulUni);
  136.  
  137.     unsigned long encDecodeUTF8(const char **ppch);
  138.  
  139.     int encInitCase(void);
  140.  
  141.     unsigned long encToUpper(unsigned long ulUni);
  142.  
  143.     int encicmp(const char *pcsz1,
  144.                 const char *pcsz2);
  145.  
  146. #endif
  147.  
  148. #if __cplusplus
  149. }
  150. #endif
  151.  
  152.