
Data Structures | |
| struct | VOLK_Codec |
| Prototype for initializing a dataset decoding loop. More... | |
Macros | |
| #define | CHUNK_SIZE 4096 |
Typedefs | |
| typedef VOLK_rc(* | decode_ds_fn_t) (FILE *fh, const char *sh, VOLK_Store *store, void *udata, size_t *ct, char **err_p) |
| Prototype for decoding a dataset. | |
| typedef VOLK_rc(* | decode_gr_fn_t) (FILE *fh, const char *sh, VOLK_Graph *gr, size_t *ct, char **err) |
| Prototype for decoding a complete RDF document file into a graph. | |
| typedef VOLK_rc(* | decode_term_fn_t) (const char *rep, VOLK_Term **term) |
| Prototype for decoding a string into a VOLK_Term. | |
| typedef void(* | encode_ds_done_fn_t) (void *it) |
| Finalize a dataset encoding operation. | |
| typedef void *(* | encode_ds_init_fn_t) (const VOLK_Graph **dset) |
| Initialize a dataset encoding loop. | |
| typedef VOLK_rc(* | encode_ds_iter_fn_t) (void *it, const VOLK_Graph *gr, char **res) |
| Perform one dataset encoding iteration. | |
| typedef void(* | encode_gr_done_fn_t) (void *it) |
| Finalize a graph encoding operation. | |
| typedef void *(* | encode_gr_init_fn_t) (const VOLK_Graph *gr, void *udata) |
| Initialize a graph encoding loop. | |
| typedef VOLK_rc(* | encode_gr_iter_fn_t) (void *it, char **res) |
| Perform one graph encoding iteration. | |
| typedef void(* | encode_store_done_fn_t) (void *it) |
| Finalize a store encoding operation. | |
| typedef void *(* | encode_store_init_fn_t) (VOLK_Store *store) |
| Initialize a store encoding loop. | |
| typedef VOLK_rc(* | encode_store_iter_fn_t) (void *it, char **res) |
| Perform one store encoding iteration. | |
| typedef VOLK_rc(* | encode_term_fn_t) (const VOLK_Term *term, char **rep) |
| Term encoder prototype. | |
Enumerations | |
| enum | VOLK_CodecFeatures { VOLK_CODEC_FEAT_ENCODE_TERM = 1<<0 , VOLK_CODEC_FEAT_DECODE_TERM = 1<<1 , VOLK_CODEC_FEAT_ENCODE_GR = 1<<2 , VOLK_CODEC_FEAT_DECODE_GR = 1<<3 , VOLK_CODEC_FEAT_ENCODE_DS = 1<<4 , VOLK_CODEC_FEAT_DECODE_DS = 1<<5 , VOLK_CODEC_FEAT_ENCODE_STORE = 1<<6 , VOLK_CODEC_FEAT_DECODE_STORE = 1<<7 } |
| Feature flags applicable to a codec. More... | |
| enum | VOLK_CodecFlags { VOLK_CODEC_NO_PROLOG = 1<<0 , CODEC_EXT_TXN = 1<<1 , VOLK_CODEC_INDENT = 1<<2 } |
| Parse error information. More... | |
Functions | |
| VOLK_rc | escape_lit (const char *in, char **out) |
| Add escape character (backslash) to illegal literal characters. | |
| char * | fmt_header (char *pfx) |
| Format an informational header. | |
| uint8_t * | uint8_dup (const uint8_t *str) |
| strdup() for unsigned char. | |
| uint8_t * | uint8_ndup (const uint8_t *str, size_t size) |
| strndup() for unsigned char. | |
| char | unescape_char (const char c) |
| Unescape a single character. | |
| uint8_t * | unescape_unicode (const uint8_t *esc_str, size_t size) |
| Replace \uxxxx and \Uxxxxxxxx with Unicode bytes. | |
| #define CHUNK_SIZE 4096 |
Max data size passed to the scanner and parser at each iteration.
Definition at line 78 of file codec_interface.h.
| typedef VOLK_rc(* decode_ds_fn_t) (FILE *fh, const char *sh, VOLK_Store *store, void *udata, size_t *ct, char **err_p) |
Prototype for decoding a dataset.
| [in] | fh | Open file handle pointing to the RDF data. Implementations MUST NOT close the file handle. This is mutually exclusive with sh. |
| [in] | sh | string handle for the RDF data. This is mutually exclusive with fh. If both are specified, fh has precedence. |
| [in] | Store | handle to be populated. The store MUST be initialized and MAY be not empty. |
| [in] | udata | User data that may be used by implementations. |
| [out] | ct | Handle to be populated with the count of parsed triples. It MAY be NULL. |
| [out] | err | Handle to be populated with the error message in case of error. |
Definition at line 462 of file codec_interface.h.
| typedef VOLK_rc(* decode_gr_fn_t) (FILE *fh, const char *sh, VOLK_Graph *gr, size_t *ct, char **err) |
Prototype for decoding a complete RDF document file into a graph.
Implementations SHOULD consume data from the file handle in chunks and MAY read a string handle .
| [in] | fh | Open file handle pointing to the RDF data. Implementations MUST NOT close the file handle. This is exclusive with sh. |
| [in] | sh | string handle for the RDF data. This is exclusive with fh. If both are specified, fh has precedence. |
| [out] | gr | Graph handle to be populated with decoded data. The graph MUST be initialized and MAY be non-empty. |
| [out] | ct | If not NULL, it MAY be populated with the number of triples parsed (which may be different from the resulting graph size). Implementations MAY choose not not use this. |
| [out] | err | Pointer to error info string. If no error occurs, it yields NULL. |
Definition at line 436 of file codec_interface.h.
Prototype for decoding a string into a VOLK_Term.
Implementations MAY ignore any other tokens after finding the first one.
| [in] | rep | NT representation of the term. |
| [out] | RDF term and triple module | Pointer to the term handle to be created. Implementaions SHOULD return NULL on a parse error. |
Definition at line 409 of file codec_interface.h.
| typedef void(* encode_ds_done_fn_t) (void *it) |
Finalize a dataset encoding operation.
TODO not implemented in any of the current codecs.
Implementations SHOULD use this function to perform all necessary steps to clean up memory and free the iterator handle after a graph has been completely encoded.
| [in] | it | Iterator handle. |
Definition at line 346 of file codec_interface.h.
| typedef void *(* encode_ds_init_fn_t) (const VOLK_Graph **dset) |
Initialize a dataset encoding loop.
TODO not implemented in any of the current codecs.
This prototype is to be implemented by dataset encoding loops. A dataset source is defined as a number of named graphs that get passed one at a time to encode_ds_iter_fn_t after this function is called. Each graph is encoded into the same document that gets output in chunks as a single stream.
Definition at line 310 of file codec_interface.h.
| typedef VOLK_rc(* encode_ds_iter_fn_t) (void *it, const VOLK_Graph *gr, char **res) |
Perform one dataset encoding iteration.
Implementations of this prototype MUST perform all the steps to encode one complete graph into an RDF fragment representing that graph.
TODO not implemented in any of the current codecs.
| [in] | it | Iterator handle. |
| [out] | res | Handle to be populated with a string obtained from encoding. The output data SHOULD be UTF-8 encoded. This pointer must be initialized (even to NULL) and should be eventually freed by the caller at the end of the loop. Implementations MAY reallocate this memory at each iteration, and users SHOULD expect that memory from a previous iteration may be overwritten with new data. |
Definition at line 332 of file codec_interface.h.
| typedef void(* encode_gr_done_fn_t) (void *it) |
Finalize a graph encoding operation.
Implementations SHOULD use this function to perform all necessary steps to clean up memory and free the iterator handle after a graph has been completely encoded.
| [in] | it | Iterator handle. |
Definition at line 293 of file codec_interface.h.
| typedef void *(* encode_gr_init_fn_t) (const VOLK_Graph *gr, void *udata) |
Initialize a graph encoding loop.
This prototype is to be implemented by graph encoding loops. It should create an iterator and perform all initial setup for finding triples.
| [in] | gr | The graph to be encoded. The graph's namespace map is used by the codec for namespace prefixing. The graph may only be freed after the loop is finalized. |
| [in] | udata | Additional data passed to the iterator. Implementations MAY decide whether and how to use this. |
Definition at line 260 of file codec_interface.h.
| typedef VOLK_rc(* encode_gr_iter_fn_t) (void *it, char **res) |
Perform one graph encoding iteration.
Implementations of this prototype MUST perform all the steps to encode one or more complete triples into an RDF fragment representing those triples. The input and output units are up to the implementation and a caller SHOULD assume that multiple lines may be yielded at each iteration.
| [in] | it | Iterator handle. |
| [out] | res | Handle to be populated with a string obtained from encoding. The output data should be UTF-8 encoded. This pointer must be initialized (even to NULL) and should be eventually freed manually at the end of the loop. Implementations MAY reallocate this memory at each iteration, and users SHOULD expect that memory from a previous iteration may be overwritten with new data. |
Definition at line 282 of file codec_interface.h.
| typedef void(* encode_store_done_fn_t) (void *it) |
Finalize a store encoding operation.
| [in] | it | Iterator handle. |
Definition at line 389 of file codec_interface.h.
| typedef void *(* encode_store_init_fn_t) (VOLK_Store *store) |
Initialize a store encoding loop.
This prototype is to be implemented by codecs featuring language to encode named graphs, such as TriG. Its scope is to encode a whole store.
| [in] | Backend store module | Store to encode. The store MUST implement the VOLK_STORE_CTX feature. |
Definition at line 362 of file codec_interface.h.
| typedef VOLK_rc(* encode_store_iter_fn_t) (void *it, char **res) |
Perform one store encoding iteration.
This function generates a chunk of RDF as a string. The scope of the RDF contained in the string is left to the implementation.
| [in] | it | Iterator handle created with encode_store_init_fn_t(). |
| [out] | res | Handle to be populated with a string obtained from encoding. The output data MUST be UTF-8 encoded. This pointer MUST be initialized (even to NULL) and should be eventually freed by the caller at the end of the loop. Implementations MAY reallocate this memory at each iteration, and users SHOULD expect that memory from a previous iteration may be overwritten with new data. |
Definition at line 382 of file codec_interface.h.
Term encoder prototype.
| [in] | RDF term and triple module | Single term handle. |
| [out] | rep | Pointer to a string to be filled with the encoded term. The string is reallocated and, if reused for multiple calls to this function, it only needs to be freed after the last call. It MUST be initialized to NULL at the beginning. |
Definition at line 240 of file codec_interface.h.
| enum VOLK_CodecFeatures |
Feature flags applicable to a codec.
Definition at line 104 of file codec_interface.h.
| enum VOLK_CodecFlags |
Parse error information.
Option flags passed to codec function calls.
Definition at line 93 of file codec_interface.h.
| VOLK_rc escape_lit | ( | const char * | in, |
| char ** | out ) |
Add escape character (backslash) to illegal literal characters.
| [in] | in | Input string. |
| [out] | out | Output string. |
Definition at line 81 of file codec_interface.c.
| char * fmt_header | ( | char * | pfx | ) |
Format an informational header.
The information includes software version and current date. It is terminated by a newline + NUL and prefixed with the string specified in pfx. It is NOT prefixed by any comment characters.
| [in] | pfx | Prefix to add to the string. It may be a comment starter, such as # . |
Definition at line 116 of file codec_interface.c.
|
inline |
strdup() for unsigned char.
This is to be used with uint8_t sequences considered to be UTF-8 sequences, requird by re2c (it won't work with byte sequences containing NUL).
Definition at line 128 of file codec_interface.h.
|
inline |
strndup() for unsigned char.
This is to be used with uint8_t sequences considered to be UTF-8 sequences, requird by re2c (it won't work with byte sequences containing NUL).
Definition at line 138 of file codec_interface.h.
|
inline |
Unescape a single character.
Convert escaped special characters such as \t, \n, etc. into their corresponding code points.
Non-special characters are returned unchanged.
| [in] | c | Character to unescape. Note that this is the single character after \\endiskip. |
Definition at line 184 of file codec_interface.h.
| uint8_t * unescape_unicode | ( | const uint8_t * | esc_str, |
| size_t | size ) |
Replace \uxxxx and \Uxxxxxxxx with Unicode bytes.
| [in] | esc_str | Escaped string. |
| [in] | size | Maximum number of characters to scan, à la strncpy(). |
Definition at line 11 of file codec_interface.c.