Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/contrib/libcbor/examples/sort.c
39586 views
1
/*
2
* Copyright (c) 2014-2020 Pavel Kalvoda <[email protected]>
3
*
4
* libcbor is free software; you can redistribute it and/or modify
5
* it under the terms of the MIT license. See LICENSE for details.
6
*/
7
8
#include <stdio.h>
9
#include <stdlib.h>
10
#include "cbor.h"
11
12
/*
13
* Illustrates how to use the contiguous storage of nested items with
14
* standard library functions.
15
*/
16
17
int compareUint(const void *a, const void *b) {
18
uint8_t av = cbor_get_uint8(*(cbor_item_t **)a),
19
bv = cbor_get_uint8(*(cbor_item_t **)b);
20
21
if (av < bv)
22
return -1;
23
else if (av == bv)
24
return 0;
25
else
26
return 1;
27
}
28
29
int main(void) {
30
cbor_item_t *array = cbor_new_definite_array(4);
31
bool success = cbor_array_push(array, cbor_move(cbor_build_uint8(4)));
32
success &= cbor_array_push(array, cbor_move(cbor_build_uint8(3)));
33
success &= cbor_array_push(array, cbor_move(cbor_build_uint8(1)));
34
success &= cbor_array_push(array, cbor_move(cbor_build_uint8(2)));
35
if (!success) return 1;
36
37
qsort(cbor_array_handle(array), cbor_array_size(array), sizeof(cbor_item_t *),
38
compareUint);
39
40
cbor_describe(array, stdout);
41
fflush(stdout);
42
}
43
44