diff options
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 |