diff options
author | David Robillard <d@drobilla.net> | 2018-01-21 13:47:26 +0100 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2018-01-21 13:47:26 +0100 |
commit | 758eb81e8f9c8779b7292205437edde4e9cce30a (patch) | |
tree | b16fd066ab7938fcfc013bff3fb2f0cb8760c596 /src/URI.cpp | |
parent | c5c0084f0945cd712ff9a83de090d316e11c7fed (diff) | |
download | ingen-758eb81e8f9c8779b7292205437edde4e9cce30a.tar.gz ingen-758eb81e8f9c8779b7292205437edde4e9cce30a.tar.bz2 ingen-758eb81e8f9c8779b7292205437edde4e9cce30a.zip |
Clean up URI and path handling in parser
Diffstat (limited to 'src/URI.cpp')
-rw-r--r-- | src/URI.cpp | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/src/URI.cpp b/src/URI.cpp index a9c12223..3e2d2a29 100644 --- a/src/URI.cpp +++ b/src/URI.cpp @@ -42,10 +42,22 @@ URI::URI(const std::string& str, const URI& base) &_uri)) {} +URI::URI(SerdNode node) + : _node(serd_node_new_uri_from_node(&node, NULL, &_uri)) +{ + assert(node.type == SERD_URI); +} + +URI::URI(SerdNode node, SerdURI uri) + : _node(node) + , _uri(uri) +{ + assert(node.type == SERD_URI); +} + URI::URI(const Sord::Node& node) - : _node(serd_node_new_uri_from_node(node.to_serd_node(), NULL, &_uri)) + : URI(*node.to_serd_node()) { - assert(node.type() == Sord::Node::URI); } URI::URI(const FilePath& path) @@ -90,4 +102,12 @@ URI::~URI() serd_node_free(&_node); } +URI +URI::make_relative(const URI& base) const +{ + SerdURI uri; + SerdNode node = serd_node_new_relative_uri(&_uri, &base._uri, NULL, &uri); + return URI(node, uri); +} + } // namespace Ingen |