X-Git-Url: https://git.dlugolecki.net.pl/?a=blobdiff_plain;f=gedcom%2Fencoding.h;h=93f69863562cedba392b94916e5673b0af810e37;hb=246182eba8a18f8d644d0a3ef9556000fae12aa1;hp=732f532966a922bfb58aa888dcd9602b435311f4;hpb=afa899b84bdecf41c1ea5e888967e51b2444e669;p=gedcom-parse.git diff --git a/gedcom/encoding.h b/gedcom/encoding.h index 732f532..93f6986 100644 --- a/gedcom/encoding.h +++ b/gedcom/encoding.h @@ -25,21 +25,31 @@ #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 */