#ifndef KEY_VALUE_PAIR_H #define KEY_VALUE_PAIR_H #include #include // Structures typedef struct key_value_pair{ char *key; char *value; struct key_value_pair *next; char *(*toString)(struct key_value_pair *); } key_value_pair; // Functions char *key_value_pair_list_to_string(key_value_pair **head); key_value_pair *init_key_value_pair(const char *key, const char *value); void free_key_value_pair(key_value_pair **kv); void free_key_value_pairs(key_value_pair **head, key_value_pair **tail); int add_key_value_pair(key_value_pair *kv, key_value_pair **head, key_value_pair **tail, bool concat); void remove_key_value_pair(key_value_pair *kv, key_value_pair **head, key_value_pair **tail); void defragment_key_value_pairs(key_value_pair **head, key_value_pair **tail); void extract_key_value_pairs(char *red_str, key_value_pair **head, key_value_pair **tail, bool doReduce); #endif //KEY_VALUE_PAIR_H