aboutsummaryrefslogtreecommitdiff
path: root/libxsde/xsde/cxx
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2009-04-06 15:44:26 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2009-04-06 15:44:26 +0200
commit6e4d86618645c45d07c3a8113f4641cb9161309e (patch)
treecc03cb8d0c7dbf9ef1cc2335f31034630f49b9a1 /libxsde/xsde/cxx
parentb76292f8f22817401f61158a42afcfc210102657 (diff)
Add support for XML pretty-printing
examples/cxx/hybrid/: examples/cxx/serializer/: turn on pretty-printing
Diffstat (limited to 'libxsde/xsde/cxx')
-rw-r--r--libxsde/xsde/cxx/serializer/genx/document.cxx22
-rw-r--r--libxsde/xsde/cxx/serializer/genx/document.hxx22
-rw-r--r--libxsde/xsde/cxx/serializer/genx/document.ixx5
3 files changed, 34 insertions, 15 deletions
diff --git a/libxsde/xsde/cxx/serializer/genx/document.cxx b/libxsde/xsde/cxx/serializer/genx/document.cxx
index bba4b26..d30a106 100644
--- a/libxsde/xsde/cxx/serializer/genx/document.cxx
+++ b/libxsde/xsde/cxx/serializer/genx/document.cxx
@@ -64,6 +64,7 @@ namespace xsde
// document_simpl
//
+ const document_simpl::flags document_simpl::pretty_print = 0x01;
document_simpl::
~document_simpl ()
@@ -304,9 +305,9 @@ namespace xsde
#endif
void document_simpl::
- serialize (std::ostream& os)
+ serialize (std::ostream& os, flags f)
{
- serialize (&ostream_write, &ostream_flush, &os);
+ serialize (&ostream_write, &ostream_flush, &os, f);
}
#endif // XSDE_IOSTREAM
@@ -351,9 +352,9 @@ namespace xsde
#endif
void document_simpl::
- serialize (writer& w)
+ serialize (writer& w, flags f)
{
- serialize (&write_thunk, &write_bound_thunk, &flush_thunk, &w);
+ serialize (&write_thunk, &write_bound_thunk, &flush_thunk, &w, f);
}
// Genx write functions.
@@ -427,8 +428,8 @@ namespace xsde
}
void document_simpl::
- serialize (write_func w, write_bound_func wb, flush_func f,
- void* user_data)
+ serialize (write_func wf, write_bound_func wbf, flush_func ff,
+ void* user_data, flags f)
{
if (xml_serializer_ == 0)
{
@@ -447,12 +448,15 @@ namespace xsde
writer_info wi;
wi.user_data = user_data;
- wi.write = w;
- wi.write_bound = wb;
- wi.flush = f;
+ wi.write = wf;
+ wi.write_bound = wbf;
+ wi.flush = ff;
genxSetUserData (xml_serializer_, &wi);
+ if (f & pretty_print)
+ genxSetPrettyPrint (xml_serializer_, 2);
+
genxSender sender;
sender.send = &genx_write;
sender.sendBounded = &genx_write_bound;
diff --git a/libxsde/xsde/cxx/serializer/genx/document.hxx b/libxsde/xsde/cxx/serializer/genx/document.hxx
index 19117d6..ee06795 100644
--- a/libxsde/xsde/cxx/serializer/genx/document.hxx
+++ b/libxsde/xsde/cxx/serializer/genx/document.hxx
@@ -189,6 +189,13 @@ namespace xsde
void
reset ();
+ public:
+ // Serialization flags.
+ //
+ typedef unsigned short flags;
+
+ static const flags pretty_print;
+
#ifdef XSDE_IOSTREAM
public:
// Serialize to std::ostream. The std::ios_base::failure
@@ -197,7 +204,7 @@ namespace xsde
// used.
//
void
- serialize (std::ostream&);
+ serialize (std::ostream&, flags = 0);
#endif
public:
@@ -205,7 +212,7 @@ namespace xsde
// output XML.
//
void
- serialize (writer&);
+ serialize (writer&, flags = 0);
// Serialize by calling the write and flush functions. If the
// unbounded write function is not provided, the bounded version
@@ -226,10 +233,17 @@ namespace xsde
#endif
void
- serialize (write_bound_func, flush_func, void* user_data);
+ serialize (write_bound_func,
+ flush_func,
+ void* user_data,
+ flags = 0);
void
- serialize (write_func, write_bound_func, flush_func, void* user_data);
+ serialize (write_func,
+ write_bound_func,
+ flush_func,
+ void* user_data,
+ flags = 0);
public:
// Low-level, genx-specific serialization. With this method
diff --git a/libxsde/xsde/cxx/serializer/genx/document.ixx b/libxsde/xsde/cxx/serializer/genx/document.ixx
index 7269fa6..7001ece 100644
--- a/libxsde/xsde/cxx/serializer/genx/document.ixx
+++ b/libxsde/xsde/cxx/serializer/genx/document.ixx
@@ -66,9 +66,10 @@ namespace xsde
#endif
inline void document_simpl::
- serialize (write_bound_func wb, flush_func f, void* user_data)
+ serialize (write_bound_func wbf, flush_func ff,
+ void* user_data, flags f)
{
- serialize (0, wb, f, user_data);
+ serialize (0, wbf, ff, user_data, f);
}
#ifndef XSDE_EXCEPTIONS