summaryrefslogtreecommitdiffstats
path: root/raul/AtomRDF.hpp
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2012-03-12 06:59:48 +0000
committerDavid Robillard <d@drobilla.net>2012-03-12 06:59:48 +0000
commitffa270b487c29d02d3faab7120a484309f2f600f (patch)
tree16708ca3e48d2d909769a35f3de4a5c256868f9f /raul/AtomRDF.hpp
parent052b0c2658d2959dc02f9a752ee2a251bc60dc59 (diff)
downloadraul-ffa270b487c29d02d3faab7120a484309f2f600f.tar.gz
raul-ffa270b487c29d02d3faab7120a484309f2f600f.tar.bz2
raul-ffa270b487c29d02d3faab7120a484309f2f600f.zip
Centralise atom creation in forge object.
Aside from being more greppable and making realtime violations more obvious, this is a step towards using LV2 atoms internally (which needs a factory since the type numbers are dynamic). git-svn-id: http://svn.drobilla.net/lad/trunk/raul@4054 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'raul/AtomRDF.hpp')
-rw-r--r--raul/AtomRDF.hpp18
1 files changed, 9 insertions, 9 deletions
diff --git a/raul/AtomRDF.hpp b/raul/AtomRDF.hpp
index 71b9c79..00a9332 100644
--- a/raul/AtomRDF.hpp
+++ b/raul/AtomRDF.hpp
@@ -40,28 +40,28 @@ namespace AtomRDF {
/** Convert a Sord::Node to a Raul::Atom */
inline Atom
-node_to_atom(Sord::Model& model, const Sord::Node& node)
+node_to_atom(Forge& forge, Sord::Model& model, const Sord::Node& node)
{
if (node.is_bool()) {
- return Atom(bool(node.to_bool()));
+ return forge.make(bool(node.to_bool()));
} else if (node.is_uri()) {
- return Atom(Atom::URI, node.to_c_string());
+ return forge.alloc(Atom::URI, node.to_c_string());
} else if (node.is_float()) {
- return Atom(node.to_float());
+ return forge.make(node.to_float());
} else if (node.is_int()) {
- return Atom(node.to_int());
+ return forge.make(node.to_int());
} else if (node.is_blank()) {
Atom::DictValue dict;
Sord::Node nil;
for (Sord::Iter i = model.find(node, nil, nil); !i.end(); ++i) {
Sord::Node predicate = i.get_predicate();
Sord::Node object = i.get_object();
- dict.insert(std::make_pair(node_to_atom(model, predicate),
- node_to_atom(model, object)));
+ dict.insert(std::make_pair(node_to_atom(forge, model, predicate),
+ node_to_atom(forge, model, object)));
}
- return Atom(dict);
+ return forge.alloc(dict);
} else {
- return Atom(node.to_c_string());
+ return forge.alloc(node.to_c_string());
}
}