environment add_namespace(environment const & env, name const & ns) { scope_mng_ext ext = get_extension(env); if (!ext.m_namespace_set.contains(ns)) { ext.m_namespace_set.insert(ns); environment r = update(env, ext); r = module::add(r, *g_new_namespace_key, [=](environment const &, serializer & s) { s << ns; }); if (ns.is_atomic()) return r; else return add_namespace(r, ns.get_prefix()); } else { return env; } }
namespaces &add_namespace(const ns &aNS) { return add_namespace(aNS.prefix, aNS.href); }
namespaces &add_namespace(const cainteoir::buffer &aPrefix, const std::shared_ptr<cainteoir::buffer> &aHref) { return add_namespace(aPrefix.str(), aHref->str()); }