nostrdb

an unfairly fast embedded nostr database backed by lmdb
git clone git://jb55.com/nostrdb
Log | Files | Refs | Submodules | README | LICENSE

binmoji.h (935B)


      1 
      2 #ifndef BINMOJI_H
      3 #define BINMOJI_H
      4 
      5 #include <stdint.h>
      6 #include <stdlib.h>
      7 
      8 struct binmoji {
      9 	uint32_t primary_codepoint;
     10 	uint32_t component_list[16];
     11 	size_t component_count;
     12 	uint32_t component_hash;
     13 	uint8_t skin_tone1;
     14 	uint8_t skin_tone2;
     15 	uint8_t flags;
     16 };
     17 
     18 static const uint64_t USER_FLAG_MASK = 1 << 3;
     19 
     20 void     binmoji_to_string(const struct binmoji *binmoji, char *out_str, size_t out_str_size);
     21 void     binmoji_decode(uint64_t id, struct binmoji *binmoji);
     22 void     binmoji_parse(const char *emoji, struct binmoji *binmoji);
     23 uint64_t binmoji_encode(const struct binmoji *binmoji);
     24 
     25 /* some user flag helpers */
     26 static __inline uint64_t binmoji_set_user_flag(uint64_t binmoji, uint8_t enable) {
     27 	return enable ? (binmoji | USER_FLAG_MASK) : (binmoji & ~USER_FLAG_MASK);
     28 }
     29 
     30 static __inline uint8_t binmoji_get_user_flag(uint64_t binmoji) {
     31 	return (binmoji & USER_FLAG_MASK) == USER_FLAG_MASK;
     32 }
     33 
     34 #endif /* BINMOJI_H */