From: Vladimír Čunát Date: Mon, 24 Sep 2018 15:16:36 +0000 (+0200) Subject: lib/generic/lru: doc nitpicks X-Git-Tag: v3.1.0~10^2~17 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=0edcd0ad365abc94fa2e7ae05cb694bd1801954a;p=thirdparty%2Fknot-resolver.git lib/generic/lru: doc nitpicks --- diff --git a/lib/generic/lru.c b/lib/generic/lru.c index c04f6f09f..7ab31ae9b 100644 --- a/lib/generic/lru.c +++ b/lib/generic/lru.c @@ -21,7 +21,15 @@ typedef struct lru_group lru_group_t; struct lru_item { uint16_t key_len, val_len; /**< Two bytes should be enough for our purposes. */ - char data[]; /**< Place for both key and value. */ + char data[]; + /**< Place for both key and value. + * + * We use "char" to satisfy the C99+ aliasing rules. + * See C99 section 6.5 Expressions, paragraph 7. + * Any type can be accessed through char-pointer, + * so we can use a common struct definition + * for all types being held. + */ }; /** @internal Compute offset of value in struct lru_item. */ diff --git a/lib/generic/lru.h b/lib/generic/lru.h index 397e9bb41..61f3ce085 100644 --- a/lib/generic/lru.h +++ b/lib/generic/lru.h @@ -24,32 +24,31 @@ * most frequent keys/hashes. This tracking is done for *more* keys than * those that are actually stored. * - * # Example usage: - * + * Example usage: * @code{.c} * // Define new LRU type * typedef lru_t(int) lru_int_t; * * // Create LRU * lru_int_t *lru; - * lru_create(&lru, 5, NULL); + * lru_create(&lru, 5, NULL, NULL); * * // Insert some values - * int *pi = lru_get_new(lru, "luke", strlen("luke")); + * int *pi = lru_get_new(lru, "luke", strlen("luke"), NULL); * if (pi) * *pi = 42; - * pi = lru_get_new(lru, "leia", strlen("leia")); + * pi = lru_get_new(lru, "leia", strlen("leia"), NULL); * if (pi) * *pi = 24; * * // Retrieve values - * int *ret = lru_get_try(lru, "luke", strlen("luke")); + * int *ret = lru_get_try(lru, "luke", strlen("luke"), NULL); * if (!ret) printf("luke dropped out!\n"); * else printf("luke's number is %d\n", *ret); * * char *enemies[] = {"goro", "raiden", "subzero", "scorpion"}; * for (int i = 0; i < 4; ++i) { - * int *val = lru_get_new(lru, enemies[i], strlen(enemies[i])); + * int *val = lru_get_new(lru, enemies[i], strlen(enemies[i]), NULL); * if (val) * *val = i; * }