Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/whjwnavy/kvlist
A key-value list library from openwrt libubox.
https://github.com/whjwnavy/kvlist
Last synced: 8 days ago
JSON representation
A key-value list library from openwrt libubox.
- Host: GitHub
- URL: https://github.com/whjwnavy/kvlist
- Owner: WHJWNAVY
- Created: 2024-07-12T11:05:41.000Z (7 months ago)
- Default Branch: master
- Last Pushed: 2024-07-15T01:52:05.000Z (7 months ago)
- Last Synced: 2024-07-15T02:54:54.306Z (7 months ago)
- Language: C
- Size: 23.4 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# kvlist
> A key-value list library from openwrt libubox.## usage
```c
#include
#include
#include
#include
#include
#include
#include
#include#include
#include
#include
#include
#include
#include#include "lib/kvlist.h"
#define CH_LOG(LEVEL, FMT, ...) \
do { \
fprintf(stderr, "(%s:%d) " FMT "\n", __func__, __LINE__, ##__VA_ARGS__); \
} while (0)#define CH_DEBUG(FMT, ...) CH_LOG(LOG_DEBUG, FMT, ##__VA_ARGS__)
#define CH_INFO(FMT, ...) CH_LOG(LOG_INFO, FMT, ##__VA_ARGS__)
#define CH_WARN(FMT, ...) CH_LOG(LOG_WARNING, FMT, ##__VA_ARGS__)
#define CH_ERROR(FMT, ...) CH_LOG(LOG_ERR, FMT, ##__VA_ARGS__)static int32_t test_int_get_len(struct kvlist *kv, const void *data) {
return sizeof(uint32_t);
}#define test_str_get_len kvlist_strlen
int main(int argc, char **argv) {
char *k = NULL;
char *sv = NULL;
uint32_t iv = 0;
uint32_t *ip = 0;CH_DEBUG("TEST KVLIST STR");
KVLIST(test_str, test_str_get_len);k = "str1";
sv = "data1";
kvlist_set(&test_str, k, sv);
k = "str2";
sv = "data2";
kvlist_set(&test_str, k, sv);
k = "str3";
sv = "data3";
kvlist_set(&test_str, k, sv);
k = "str4";
sv = "data4";
kvlist_set(&test_str, k, sv);k = "str1";
sv = kvlist_get(&test_str, k);
CH_INFO("test_str k[%s], v[%s]", k, sv);
k = "str2";
sv = kvlist_get(&test_str, k);
CH_INFO("test_str k[%s], v[%s]", k, sv);
k = "str3";
sv = kvlist_get(&test_str, k);
CH_INFO("test_str k[%s], v[%s]", k, sv);
k = "str4";
sv = kvlist_get(&test_str, k);
CH_INFO("test_str k[%s], v[%s]", k, sv);kvlist_free(&test_str);
CH_DEBUG("TEST KVLIST INT");
KVLIST(test_int, test_int_get_len);k = "int1";
iv = 100;
kvlist_set(&test_int, k, &iv);
k = "int2";
iv = 200;
kvlist_set(&test_int, k, &iv);
k = "int3";
iv = 300;
kvlist_set(&test_int, k, &iv);
k = "int4";
iv = 400;
kvlist_set(&test_int, k, &iv);kvlist_for_each(&test_int, k, ip) {
CH_INFO("test_int k[%s], v[%u]", k, *ip);
}kvlist_free(&test_int);
return 0;
}
```## output
```
$ make
$ ./kvlist
(main:41) TEST KVLIST STR
(main:59) test_str k[str1], v[data1]
(main:62) test_str k[str2], v[data2]
(main:65) test_str k[str3], v[data3]
(main:68) test_str k[str4], v[data4]
(main:72) TEST KVLIST INT
(main:89) test_int k[int1], v[100]
(main:89) test_int k[int2], v[200]
(main:89) test_int k[int3], v[300]
(main:89) test_int k[int4], v[400]
```