Volksdata 1.0b7
RDF library
Loading...
Searching...
No Matches
codec.h
Go to the documentation of this file.
1
19
20#ifndef VOLK_CODEC_H
21#define VOLK_CODEC_H
22
23// Add new codec implementations to this include list.
27
28/*
29 * Define supported codecs.
30 *
31 * Add new codec implementations to this table.
32 */
33#define CODEC_TBL \
34/* #enum suffix #fmt #codec if */ \
35 ENTRY( NT, nt, nt_codec ) \
36 ENTRY( TTL, ttl, ttl_codec ) \
37 ENTRY( TRIG, trig, trig_codec ) \
38
39
44
51inline const VOLK_Codec *
52VOLK_codec_from_fmt (const char *fmt)
53{
54#define ENTRY(a, b, c) if (strcmp (fmt, #b) == 0) return &c;
56
57 log_warn ("No codec found for format `%s`.", fmt);
58 return NULL;
59}
60#undef ENTRY
61
62
72inline VOLK_rc
73VOLK_codec_decode_str (const char *data, const char *fmt, VOLK_Graph *gr)
74{
75 const VOLK_Codec *codec = VOLK_codec_from_fmt (fmt);
76 size_t ct;
77 char *err;
78
79 return codec->decode_graph (NULL, data, gr, &ct, &err);
80}
81
82
93inline VOLK_rc
94VOLK_codec_decode_file (FILE *fh, const char *fmt, VOLK_Graph *gr)
95{
96 const VOLK_Codec *codec = VOLK_codec_from_fmt (fmt);
97 size_t ct;
98 char *err;
99
100 return codec->decode_graph (fh, NULL, gr, &ct, &err);
101}
102
103
105
106#endif // VOLK_CODEC_H
#define CODEC_TBL
Definition codec.h:33
VOLK_rc VOLK_codec_decode_str(const char *data, const char *fmt, VOLK_Graph *gr)
Populate a graph from a RDF string.
Definition codec.h:73
const VOLK_Codec * VOLK_codec_from_fmt(const char *fmt)
Get a codec by its format string.
Definition codec.h:52
VOLK_rc VOLK_codec_decode_file(FILE *fh, const char *fmt, VOLK_Graph *gr)
Populate a graph from a RDF file handle.
Definition codec.h:94
int VOLK_rc
Definition core.h:79
Codec structure.
decode_gr_fn_t decode_graph
Graph decoder function.