summaryrefslogtreecommitdiffstats
path: root/src/URI.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/URI.cpp')
-rw-r--r--src/URI.cpp24
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