Merge branch '4524_cleanup'
[midnight-commander.git] / lib / charsets.h
bloba7c1bb7323c9f022d6fcb91b29bc08d235aba263
1 /** \file charsets.h
2 * \brief Header: Text conversion from one charset to another
3 */
5 #ifndef MC__CHARSETS_H
6 #define MC__CHARSETS_H
8 /*** typedefs(not structures) and defined constants **********************************************/
10 /*** enums ***************************************************************************************/
12 /*** structures declarations (and typedefs of structures)*****************************************/
14 typedef struct
16 char *id;
17 char *name;
18 } codepage_desc;
20 /*** global variables defined in .c file *********************************************************/
22 extern unsigned char conv_displ[256];
23 extern unsigned char conv_input[256];
25 extern const char *cp_display;
26 extern const char *cp_source;
27 extern GPtrArray *codepages;
29 /*** declarations of public functions ************************************************************/
31 const char *get_codepage_id (const int n);
32 int get_codepage_index (const char *id);
33 void load_codepages_list (void);
34 void free_codepages_list (void);
35 gboolean is_supported_encoding (const char *encoding);
36 char *init_translation_table (int cpsource, int cpdisplay);
37 void convert_to_display (char *str);
38 void convert_from_input (char *str);
39 void convert_string (unsigned char *str);
42 * Converter from utf to selected codepage
43 * param str, utf char
44 * return char in needle codepage (by global int mc_global.source_codepage)
46 unsigned char convert_from_utf_to_current (const char *str);
49 * Converter from utf to selected codepage
50 * param input_char, gunichar
51 * return char in needle codepage (by global int mc_global.source_codepage)
53 unsigned char convert_from_utf_to_current_c (int input_char, GIConv conv);
56 * Converter from selected codepage 8-bit
57 * param char input_char, GIConv converter
58 * return int utf char
60 int convert_from_8bit_to_utf_c (char input_char, GIConv conv);
63 * Converter from display codepage 8-bit to utf-8
64 * param char input_char, GIConv converter
65 * return int utf char
67 int convert_from_8bit_to_utf_c2 (char input_char);
69 GString *str_nconvert_to_input (const char *str, int len);
70 GString *str_nconvert_to_display (const char *str, int len);
72 /* --------------------------------------------------------------------------------------------- */
73 /*** inline functions ****************************************************************************/
74 /* --------------------------------------------------------------------------------------------- */
76 /* Convert single characters */
77 static inline int
78 convert_to_display_c (int c)
80 if (c < 0 || c >= 256)
81 return c;
82 return (int) conv_displ[c];
85 /* --------------------------------------------------------------------------------------------- */
87 static inline int
88 convert_from_input_c (int c)
90 if (c < 0 || c >= 256)
91 return c;
92 return (int) conv_input[c];
95 /* --------------------------------------------------------------------------------------------- */
97 static inline GString *
98 str_convert_to_input (const char *str)
100 return str_nconvert_to_input (str, -1);
103 /* --------------------------------------------------------------------------------------------- */
105 static inline GString *
106 str_convert_to_display (const char *str)
108 return str_nconvert_to_display (str, -1);
111 /* --------------------------------------------------------------------------------------------- */
113 #endif /* MC__CHARSETS_H */