From a03d7b1c021befbdfc646a947964e8a6f3c7789c Mon Sep 17 00:00:00 2001 From: ishmal Date: Thu, 13 Mar 2008 21:02:36 +0000 Subject: [PATCH] Add convenience functions to read from/write to Glib::ustrings. --- src/xml/repr-io.cpp | 28 ++++++++++++++++++++++++++++ src/xml/repr.h | 4 ++++ 2 files changed, 32 insertions(+) diff --git a/src/xml/repr-io.cpp b/src/xml/repr-io.cpp index 26537d750..bd9e4a2e0 100644 --- a/src/xml/repr-io.cpp +++ b/src/xml/repr-io.cpp @@ -26,6 +26,7 @@ #include "io/sys.h" #include "io/uristream.h" +#include "io/stringstream.h" #include "io/gzipstream.h" #include "prefs-utils.h" @@ -315,6 +316,16 @@ sp_repr_read_mem (const gchar * buffer, gint length, const gchar *default_ns) return rdoc; } +/** + * Reads and parses XML from a buffer, returning it as an Document + */ +Document * +sp_repr_read_buf (const Glib::ustring &buf, const gchar *default_ns) +{ + return sp_repr_read_mem(buf.c_str(), buf.size(), default_ns); +} + + namespace Inkscape { struct compare_quark_ids { @@ -729,6 +740,23 @@ sp_repr_write_stream (Node *repr, Writer &out, gint indent_level, } } + +Glib::ustring +sp_repr_write_buf(Node *repr, gint indent_level, + bool add_whitespace, Glib::QueryQuark elide_prefix, + int inlineattrs, int indent) +{ + Glib::ustring buf; + Inkscape::IO::StringOutputStream souts; + Inkscape::IO::OutputStreamWriter outs(souts); + sp_repr_write_stream(repr, outs, indent_level, add_whitespace, + elide_prefix, inlineattrs, indent); + outs.close(); + buf = souts.getString(); + return buf; +} + + void sp_repr_write_stream_element (Node * repr, Writer & out, gint indent_level, bool add_whitespace, diff --git a/src/xml/repr.h b/src/xml/repr.h index 56b37ebe2..69fe2adce 100644 --- a/src/xml/repr.h +++ b/src/xml/repr.h @@ -181,6 +181,10 @@ Inkscape::XML::Document *sp_repr_read_mem(gchar const *buffer, int length, gchar void sp_repr_write_stream (Inkscape::XML::Node *repr, Inkscape::IO::Writer &out, gint indent_level, bool add_whitespace, Glib::QueryQuark elide_prefix, int inlineattrs, int indent); +Inkscape::XML::Document *sp_repr_read_buf (const Glib::ustring &buf, const gchar *default_ns); +Glib::ustring sp_repr_write_buf(Inkscape::XML::Node *repr, gint indent_level, + bool add_whitespace, Glib::QueryQuark elide_prefix, + int inlineattrs, int indent); void sp_repr_save_stream(Inkscape::XML::Document *doc, FILE *to_file, gchar const *default_ns=NULL, bool compress = false); bool sp_repr_save_file(Inkscape::XML::Document *doc, gchar const *filename, gchar const *default_ns=NULL); -- 2.30.2