summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ingen/Forge.hpp2
-rw-r--r--src/Forge.cpp14
2 files changed, 11 insertions, 5 deletions
diff --git a/ingen/Forge.hpp b/ingen/Forge.hpp
index a5b7bd5e..83a94319 100644
--- a/ingen/Forge.hpp
+++ b/ingen/Forge.hpp
@@ -34,7 +34,7 @@ class INGEN_API Forge : public LV2_Atom_Forge {
public:
explicit Forge(URIMap& map);
- std::string str(const Atom& atom);
+ std::string str(const Atom& atom, bool quoted=true);
Atom make() { return Atom(); }
Atom make(int32_t v) { return Atom(sizeof(v), Int, &v); }
diff --git a/src/Forge.cpp b/src/Forge.cpp
index de6fcf00..89c194f9 100644
--- a/src/Forge.cpp
+++ b/src/Forge.cpp
@@ -29,7 +29,7 @@ Forge::Forge(URIMap& map)
}
std::string
-Forge::str(const Atom& atom)
+Forge::str(const Atom& atom, bool quoted)
{
std::ostringstream ss;
if (atom.type() == Int) {
@@ -39,11 +39,17 @@ Forge::str(const Atom& atom)
} else if (atom.type() == Bool) {
ss << (atom.get<int32_t>() ? "true" : "false");
} else if (atom.type() == URI) {
- ss << "<" << atom.ptr<const char*>() << ">";
+ ss << (quoted ? "<" : "")
+ << atom.ptr<const char>()
+ << (quoted ? ">" : "");
} else if (atom.type() == URID) {
- ss << "<" << _map.unmap_uri(atom.get<int32_t>()) << ">";
+ ss << (quoted ? "<" : "")
+ << _map.unmap_uri(atom.get<int32_t>())
+ << (quoted ? ">" : "");
} else if (atom.type() == String) {
- ss << "\"" << atom.ptr<const char*>() << "\"";
+ ss << (quoted ? "\"" : "")
+ << atom.ptr<const char>()
+ << (quoted ? "\"" : "");
}
return ss.str();
}