xref: /netbsd-src/external/mit/libcbor/dist/doc/source/api/decoding.rst (revision 5dd36a3bc8bf2a9dec29ceb6349550414570c447)
1*5dd36a3bSchristosDecoding
2*5dd36a3bSchristos=============================
3*5dd36a3bSchristos
4*5dd36a3bSchristosThe following diagram illustrates the relationship among different parts of libcbor from the decoding standpoint.
5*5dd36a3bSchristos
6*5dd36a3bSchristos::
7*5dd36a3bSchristos
8*5dd36a3bSchristos    ┌──────────────────────────────────────────────────────────────────────────────────────────────┐
9*5dd36a3bSchristos    │                                                                                              │
10*5dd36a3bSchristos    │                                      Client application                                      │
11*5dd36a3bSchristos    │                                                                                              │
12*5dd36a3bSchristos    │                                                 ┌────────────────────────────────────────────┘
13*5dd36a3bSchristos    │                                                 │                     ↕
14*5dd36a3bSchristos    │                                                 │ ┌──────────────────────────────────────────┐
15*5dd36a3bSchristos    │                                                 │ │                                          │
16*5dd36a3bSchristos    │                                                 │ │          Manipulation routines           │
17*5dd36a3bSchristos    │                                                 │ │                                          │
18*5dd36a3bSchristos    │           ┌─────────────────────────────────────┘ └──────────────────────────────────────────┘
19*5dd36a3bSchristos    │           │     ↑    ↑                  ↑                              ↑
20*5dd36a3bSchristos    │           │     │    │    ┌─────────────╫──────────┬───────────────────┴─┐
21*5dd36a3bSchristos    │           │     │   CDS   │             ║          │                     │
22*5dd36a3bSchristos    │           │     │    │   PDS            ║         PDS                   PDS
23*5dd36a3bSchristos    │           │     ↓    ↓    ↓             ↓          ↓                     ↓
24*5dd36a3bSchristos    │           │ ┌─────────────────┐   ┌────────────────────┐   ┌────────────────────────────┐
25*5dd36a3bSchristos    │           │ │                 │   │                    │   │                            │
26*5dd36a3bSchristos    │           │ │  Custom driver  │ ↔ │  Streaming driver  │ ↔ │       Default driver       │ ↔ CD
27*5dd36a3bSchristos    │           │ │                 │   │                    │   │                            │
28*5dd36a3bSchristos    └───────────┘ └─────────────────┘   └────────────────────┘   └────────────────────────────┘
29*5dd36a3bSchristos          ↕                ↕                        ↕                           ↕
30*5dd36a3bSchristos    ┌──────────────────────────────────────────────────────────────────────────────────────────────┐
31*5dd36a3bSchristos    │                                                                                              │
32*5dd36a3bSchristos    │                            Stateless event─driven decoder                                    │
33*5dd36a3bSchristos    │                                                                                              │
34*5dd36a3bSchristos    └──────────────────────────────────────────────────────────────────────────────────────────────┘
35*5dd36a3bSchristos
36*5dd36a3bSchristos                  (PSD = Provided Data Structures, CDS = Custom Data Structures)
37*5dd36a3bSchristos
38*5dd36a3bSchristosThis section will deal with the API that is labeled as the "Default driver" in the diagram. That is, routines that
39*5dd36a3bSchristosdecode complete libcbor data items
40*5dd36a3bSchristos
41*5dd36a3bSchristos.. doxygenfunction:: cbor_load
42*5dd36a3bSchristos
43*5dd36a3bSchristosAssociated data structures
44*5dd36a3bSchristos~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
45*5dd36a3bSchristos
46*5dd36a3bSchristos.. doxygenenum:: cbor_error_code
47*5dd36a3bSchristos
48*5dd36a3bSchristos.. doxygenstruct:: cbor_load_result
49*5dd36a3bSchristos    :members:
50*5dd36a3bSchristos
51*5dd36a3bSchristos.. doxygenstruct:: cbor_error
52*5dd36a3bSchristos    :members:
53*5dd36a3bSchristos
54