diff --git a/src/features.c b/src/features.c index bc656ef7..2bcc0f63 100644 --- a/src/features.c +++ b/src/features.c @@ -22,4 +22,21 @@ void feature_array_add(cstring_array *features, size_t count, ...) { char_array_terminate(features->str); va_end(args); -} \ No newline at end of file +} + + +bool feature_counts_update(khash_t(str_uint32) *features, char *feature, int count) { + khiter_t k; + + k = kh_get(str_uint32, features, feature); + if (k == kh_end(features)) { + int ret; + k = kh_put(str_uint32, features, feature, &ret); + if (ret < 0) return false; + + kh_value(features, k) = count; + } else { + kh_value(features, k) += count; + } + return true; +} diff --git a/src/features.h b/src/features.h index 34db088a..0b89ff81 100644 --- a/src/features.h +++ b/src/features.h @@ -1,18 +1,19 @@ #ifndef FEATURES_H #define FEATURES_H - - - #include #include +#include "collections.h" #include "string_utils.h" #define FEATURE_SEPARATOR_CHAR "|" +// Add feature to array + void feature_array_add(cstring_array *features, size_t count, ...); +// Add feature count to dictionary - +bool feature_counts_update(khash_t(str_uint32) *features, char *feature, int count); #endif \ No newline at end of file