util.h (1936B)
1 /* See LICENSE file for copyright and license details. */ 2 #ifndef UTIL_H 3 #define UTIL_H 4 5 #include <stddef.h> 6 #include <stdint.h> 7 8 #include "types.h" 9 10 #define LEN(x) (sizeof(x) / sizeof *(x)) 11 12 struct property_spec { 13 const char *enumname; 14 const char *file; 15 const char *ucdname; 16 }; 17 18 struct properties { 19 int_least64_t property; 20 }; 21 22 struct properties_compressed { 23 size_t *offset; 24 struct properties *data; 25 size_t datalen; 26 }; 27 28 struct properties_major_minor { 29 size_t *major; 30 size_t *minor; 31 size_t minorlen; 32 }; 33 34 int hextocp(const char *, size_t, uint_least32_t *cp); 35 int parse_cp_list(const char *, uint_least32_t **, size_t *); 36 37 void parse_file_with_callback(const char *, 38 int (*callback)(const char *, char **, size_t, 39 char *, void *), 40 void *payload); 41 42 void properties_compress(const struct properties *, 43 struct properties_compressed *comp); 44 double properties_get_major_minor(const struct properties_compressed *, 45 struct properties_major_minor *); 46 void properties_print_lookup_table(const char *, const size_t *, size_t); 47 void properties_print_derived_lookup_table( 48 char *, size_t *, size_t, 49 int_least64_t (*get_value)(const struct properties *, size_t), 50 const void *); 51 52 void properties_generate_break_property( 53 const struct property_spec *, uint_least8_t, 54 uint_least8_t (*fill_missing)(uint_least32_t), 55 uint_least8_t (*handle_conflict)(uint_least32_t, uint_least8_t, 56 uint_least8_t), 57 void (*post_process)(struct properties *), const char *, const char *); 58 59 void break_test_list_parse(char *, struct break_test **, size_t *); 60 void break_test_list_print(const struct break_test *, size_t, const char *, 61 const char *); 62 void break_test_list_free(struct break_test *, size_t); 63 64 #endif /* UTIL_H */