#ifndef __ENCODING_H
#define __ENCODING_H
-typedef enum _ENC {
- ONE_BYTE = 0,
- TWO_BYTE_HILO = 1,
- TWO_BYTE_LOHI = 2
-} ENCODING;
+#include "gedcom.h"
+#include "utf8tools.h"
-/* All Unicode characters between U+0000 and U+FFFF can be encoded in
- UTF-8 with 3 or less bytes */
-#define UTF_FACTOR 3
+#define MAX_CHARSET_LEN 32
+#define MAX_TERMINATOR_LEN 2
+
+struct encoding_state {
+ char charset[MAX_CHARSET_LEN + 1];
+ const char* encoding;
+ Encoding width;
+ Enc_bom bom;
+ char terminator[MAX_TERMINATOR_LEN + 1];
+};
+
+struct encoding_state read_encoding;
-int open_conv_to_internal(char* fromcode);
-void close_conv_to_internal();
-char* to_internal(char* str, size_t len,
- char* output_buffer, size_t out_len);
void init_encodings();
-void set_encoding_width(ENCODING enc);
+char* get_encoding(const char* gedcom_n, Encoding enc);
+void update_gconv_search_path();
+
+int open_conv_to_internal(const char* fromcode);
+void close_conv_to_internal();
+char* to_internal(const char* str, size_t len, struct conv_buffer *output_buf);
+void set_encoding_width(Encoding enc);
+void set_encoding_bom(Enc_bom bom);
+void set_encoding_terminator(char* term);
#endif /* __ENCODING_H */