diff options
author | David Robillard <d@drobilla.net> | 2018-04-01 20:33:33 +0200 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2019-04-13 19:15:32 +0200 |
commit | ae8d4f4297a7c4e6cbb7b6d4ad431825327f693e (patch) | |
tree | 1855dccac045ed09d0c07856b85de4298c6912d3 /serd | |
parent | 2b4618633bdbc5a7f03899e23238483980bcfbe3 (diff) | |
download | serd-ae8d4f4297a7c4e6cbb7b6d4ad431825327f693e.tar.gz serd-ae8d4f4297a7c4e6cbb7b6d4ad431825327f693e.tar.bz2 serd-ae8d4f4297a7c4e6cbb7b6d4ad431825327f693e.zip |
Merge datatype and/or language into node
This moves closer to the sord API, and is more convenient in most cases.
Diffstat (limited to 'serd')
-rw-r--r-- | serd/serd.h | 38 |
1 files changed, 30 insertions, 8 deletions
diff --git a/serd/serd.h b/serd/serd.h index 71074908..031d84c0 100644 --- a/serd/serd.h +++ b/serd/serd.h @@ -201,8 +201,10 @@ typedef enum { Flags indicating certain string properties relevant to serialisation. */ typedef enum { - SERD_HAS_NEWLINE = 1, /**< Contains line breaks ('\\n' or '\\r') */ - SERD_HAS_QUOTE = 1 << 1 /**< Contains quotes ('"') */ + SERD_HAS_NEWLINE = 1, /**< Contains line breaks ('\\n' or '\\r') */ + SERD_HAS_QUOTE = 1 << 1, /**< Contains quotes ('"') */ + SERD_HAS_DATATYPE = 1 << 2, /**< Literal node has datatype */ + SERD_HAS_LANGUAGE = 1 << 3 /**< Literal node has language */ } SerdNodeFlag; /** @@ -460,6 +462,16 @@ SerdNode* serd_node_new_substring(SerdType type, const char* str, size_t len); /** + Create a new literal node from `str`. + + Either `datatype` or `lang` can be given, but not both, unless `datatype` is + rdf:langString in which case it is ignored. +*/ +SERD_API +SerdNode* +serd_node_new_literal(const char* str, const char* datatype, const char* lang); + +/** Return a deep copy of `node`. */ SERD_API @@ -602,6 +614,20 @@ size_t serd_node_get_length(const SerdNode* node); /** + Return the datatype of a literal node, or NULL. +*/ +SERD_API +const SerdNode* +serd_node_get_datatype(const SerdNode* node); + +/** + Return the language tag of a literal node, or NULL. +*/ +SERD_API +const SerdNode* +serd_node_get_language(const SerdNode* node); + +/** Return the flags (string properties) of a node. */ SERD_API @@ -660,9 +686,7 @@ typedef SerdStatus (*SerdStatementSink)(void* handle, const SerdNode* graph, const SerdNode* subject, const SerdNode* predicate, - const SerdNode* object, - const SerdNode* object_datatype, - const SerdNode* object_lang); + const SerdNode* object); /** Sink (callback) for anonymous node end markers. @@ -1051,9 +1075,7 @@ serd_writer_write_statement(SerdWriter* writer, const SerdNode* graph, const SerdNode* subject, const SerdNode* predicate, - const SerdNode* object, - const SerdNode* datatype, - const SerdNode* lang); + const SerdNode* object); /** Mark the end of an anonymous node's description. |