diff options
-rw-r--r-- | ingen/Forge.hpp | 2 | ||||
-rw-r--r-- | src/Forge.cpp | 14 |
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(); } |