libgrapheme

unicode string library
git clone git://git.suckless.org/libgrapheme
Log | Files | Refs | README | LICENSE

util.h (1961B)


      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 	const char *ucdsubname;
     17 };
     18 
     19 struct properties {
     20 	int_least64_t property;
     21 };
     22 
     23 struct properties_compressed {
     24 	size_t *offset;
     25 	struct properties *data;
     26 	size_t datalen;
     27 };
     28 
     29 struct properties_major_minor {
     30 	size_t *major;
     31 	size_t *minor;
     32 	size_t minorlen;
     33 };
     34 
     35 int hextocp(const char *, size_t, uint_least32_t *cp);
     36 int parse_cp_list(const char *, uint_least32_t **, size_t *);
     37 
     38 void parse_file_with_callback(const char *,
     39                               int (*callback)(const char *, char **, size_t,
     40                                               char *, void *),
     41                               void *payload);
     42 
     43 void properties_compress(const struct properties *,
     44                          struct properties_compressed *comp);
     45 double properties_get_major_minor(const struct properties_compressed *,
     46                                   struct properties_major_minor *);
     47 void properties_print_lookup_table(const char *, const size_t *, size_t);
     48 void properties_print_derived_lookup_table(
     49 	char *, size_t *, size_t,
     50 	int_least64_t (*get_value)(const struct properties *, size_t),
     51 	const void *);
     52 
     53 void properties_generate_break_property(
     54 	const struct property_spec *, uint_least8_t,
     55 	uint_least8_t (*fill_missing)(uint_least32_t),
     56 	uint_least8_t (*handle_conflict)(uint_least32_t, uint_least8_t,
     57                                          uint_least8_t),
     58 	void (*post_process)(struct properties *), const char *, const char *);
     59 
     60 void break_test_list_parse(char *, struct break_test **, size_t *);
     61 void break_test_list_print(const struct break_test *, size_t, const char *,
     62                            const char *);
     63 void break_test_list_free(struct break_test *, size_t);
     64 
     65 #endif /* UTIL_H */