Skip to content

Commit d355bfd

Browse files
committed
lib: cfl: upgrade to v0.3.0
Signed-off-by: Eduardo Silva <[email protected]>
1 parent 0ab459a commit d355bfd

File tree

8 files changed

+109
-2
lines changed

8 files changed

+109
-2
lines changed

lib/cfl/CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
55

66
# C Floppy Version
77
set(CFL_VERSION_MAJOR 0)
8-
set(CFL_VERSION_MINOR 2)
9-
set(CFL_VERSION_PATCH 2)
8+
set(CFL_VERSION_MINOR 3)
9+
set(CFL_VERSION_PATCH 0)
1010
set(CFL_VERSION_STR "${CFL_VERSION_MAJOR}.${CFL_VERSION_MINOR}.${CFL_VERSION_PATCH}")
1111

1212
# Configuration options

lib/cfl/include/cfl/cfl_array.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ int cfl_array_append_bytes(struct cfl_array *array, char *value, size_t length);
5252
int cfl_array_append_reference(struct cfl_array *array, void *value);
5353
int cfl_array_append_bool(struct cfl_array *array, int value);
5454
int cfl_array_append_int64(struct cfl_array *array, int64_t value);
55+
int cfl_array_append_uint64(struct cfl_array *array, uint64_t value);
5556
int cfl_array_append_double(struct cfl_array *array, double value);
5657
int cfl_array_append_array(struct cfl_array *array, struct cfl_array *value);
5758
int cfl_array_append_new_array(struct cfl_array *array, size_t size);

lib/cfl/include/cfl/cfl_kvlist.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,9 @@ int cfl_kvlist_insert_bool(struct cfl_kvlist *list,
5454
int cfl_kvlist_insert_int64(struct cfl_kvlist *list,
5555
char *key, int64_t value);
5656

57+
int cfl_kvlist_insert_uint64(struct cfl_kvlist *list,
58+
char *key, uint64_t value);
59+
5760
int cfl_kvlist_insert_double(struct cfl_kvlist *list,
5861
char *key, double value);
5962

lib/cfl/include/cfl/cfl_variant.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
#define CFL_VARIANT_KVLIST 6
3232
#define CFL_VARIANT_BYTES 7
3333
#define CFL_VARIANT_REFERENCE 8
34+
#define CFL_VARIANT_UINT 9
3435

3536
struct cfl_array;
3637
struct cfl_kvlist;
@@ -43,6 +44,7 @@ struct cfl_variant {
4344
cfl_sds_t as_bytes;
4445
unsigned int as_bool;
4546
int64_t as_int64;
47+
uint64_t as_uint64;
4648
double as_double;
4749
void *as_reference;
4850
struct cfl_array *as_array;
@@ -54,6 +56,7 @@ struct cfl_variant *cfl_variant_create_from_string(char *value);
5456
struct cfl_variant *cfl_variant_create_from_bytes(char *value, size_t length);
5557
struct cfl_variant *cfl_variant_create_from_bool(int value);
5658
struct cfl_variant *cfl_variant_create_from_int64(int64_t value);
59+
struct cfl_variant *cfl_variant_create_from_uint64(uint64_t value);
5760
struct cfl_variant *cfl_variant_create_from_double(double value);
5861
struct cfl_variant *cfl_variant_create_from_array(struct cfl_array *value);
5962
struct cfl_variant *cfl_variant_create_from_kvlist(struct cfl_kvlist *value);

lib/cfl/src/cfl_array.c

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -261,6 +261,27 @@ int cfl_array_append_int64(struct cfl_array *array, int64_t value)
261261
return 0;
262262
}
263263

264+
int cfl_array_append_uint64(struct cfl_array *array, uint64_t value)
265+
{
266+
struct cfl_variant *value_instance;
267+
int result;
268+
269+
value_instance = cfl_variant_create_from_uint64(value);
270+
271+
if (value_instance == NULL) {
272+
return -1;
273+
}
274+
275+
result = cfl_array_append(array, value_instance);
276+
277+
if (result) {
278+
cfl_variant_destroy(value_instance);
279+
return -2;
280+
}
281+
282+
return 0;
283+
}
284+
264285

265286
int cfl_array_append_double(struct cfl_array *array, double value)
266287
{

lib/cfl/src/cfl_kvlist.c

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -212,6 +212,29 @@ int cfl_kvlist_insert_int64(struct cfl_kvlist *list,
212212
return 0;
213213
}
214214

215+
int cfl_kvlist_insert_uint64(struct cfl_kvlist *list,
216+
char *key, uint64_t value)
217+
{
218+
struct cfl_variant *value_instance;
219+
int result;
220+
221+
value_instance = cfl_variant_create_from_uint64(value);
222+
223+
if (value_instance == NULL) {
224+
return -1;
225+
}
226+
227+
result = cfl_kvlist_insert(list, key, value_instance);
228+
229+
if (result) {
230+
cfl_variant_destroy(value_instance);
231+
232+
return -2;
233+
}
234+
235+
return 0;
236+
}
237+
215238
int cfl_kvlist_insert_double(struct cfl_kvlist *list,
216239
char *key, double value)
217240
{

lib/cfl/src/cfl_variant.c

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,9 @@ int cfl_variant_print(FILE *fp, struct cfl_variant *val)
5353
case CFL_VARIANT_INT:
5454
ret = fprintf(fp, "%" PRId64, val->data.as_int64);
5555
break;
56+
case CFL_VARIANT_UINT:
57+
ret = fprintf(fp, "%" PRIu64, val->data.as_uint64);
58+
break;
5659
case CFL_VARIANT_DOUBLE:
5760
ret = fprintf(fp, "%lf", val->data.as_double);
5861
break;
@@ -146,6 +149,19 @@ struct cfl_variant *cfl_variant_create_from_int64(int64_t value)
146149
return instance;
147150
}
148151

152+
struct cfl_variant *cfl_variant_create_from_uint64(uint64_t value)
153+
{
154+
struct cfl_variant *instance;
155+
156+
instance = cfl_variant_create();
157+
if (instance != NULL) {
158+
instance->data.as_uint64 = value;
159+
instance->type = CFL_VARIANT_UINT;
160+
}
161+
162+
return instance;
163+
}
164+
149165
struct cfl_variant *cfl_variant_create_from_double(double value)
150166
{
151167
struct cfl_variant *instance;

lib/cfl/tests/variant.c

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,45 @@ static void test_variant_print_int64()
144144
}
145145
}
146146

147+
static void test_variant_print_uint64()
148+
{
149+
int ret;
150+
int i;
151+
uint64_t inputs[] = {1, 0, 18446744073709551615ULL};
152+
char *expects[] = {"1", "0", "18446744073709551615" /*UINT64_MAX*/};
153+
154+
FILE *fp = NULL;
155+
struct cfl_variant *val = NULL;
156+
157+
for (i=0; i<sizeof(inputs)/sizeof(uint64_t); i++) {
158+
fp = tmpfile();
159+
if (!TEST_CHECK(fp != NULL)) {
160+
TEST_MSG("%d: fp is NULL", i);
161+
continue;
162+
}
163+
val = cfl_variant_create_from_uint64(inputs[i]);
164+
if (!TEST_CHECK(val != NULL)) {
165+
TEST_MSG("%d: cfl_variant_create_from_uint64 failed", i);
166+
fclose(fp);
167+
continue;
168+
}
169+
170+
ret = cfl_variant_print(fp, val);
171+
if (!TEST_CHECK(ret > 0)) {
172+
TEST_MSG("%d:cfl_variant_print failed", i);
173+
cfl_variant_destroy(val);
174+
fclose(fp);
175+
continue;
176+
}
177+
ret = compare(fp, expects[i], 0);
178+
if (!TEST_CHECK(ret == 0)) {
179+
TEST_MSG("%d:compare failed", i);
180+
}
181+
cfl_variant_destroy(val);
182+
fclose(fp);
183+
}
184+
}
185+
147186
static void test_variant_print_array()
148187
{
149188
int ret;
@@ -459,6 +498,7 @@ static void test_variant_print_unknown()
459498
TEST_LIST = {
460499
{"variant_print_bool", test_variant_print_bool},
461500
{"variant_print_int64", test_variant_print_int64},
501+
{"variant_print_uint64", test_variant_print_uint64},
462502
{"variant_print_double", test_variant_print_double},
463503
{"variant_print_string", test_variant_print_string},
464504
{"variant_print_bytes", test_variant_print_bytes},

0 commit comments

Comments
 (0)