aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2011-06-28 15:57:14 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2011-06-28 15:57:14 +0200
commitba7c4c312a412b1a7efcb253189d280b1865e971 (patch)
treed40db7fa93a975609bb88d560f6f165fa559c63d
parent5e7c109f2a401ef8f4d898bf59fb643c7c7eeed0 (diff)
Add format()/precision() modifiers to floating-point serializers
-rw-r--r--NEWS6
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/decimal.hxx3
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/decimal.ixx6
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/double.hxx3
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/double.ixx7
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/float.hxx3
-rw-r--r--libxsde/xsde/cxx/serializer/non-validating/float.ixx7
-rw-r--r--libxsde/xsde/cxx/serializer/validating/decimal.hxx3
-rw-r--r--libxsde/xsde/cxx/serializer/validating/decimal.ixx6
-rw-r--r--libxsde/xsde/cxx/serializer/validating/double.hxx3
-rw-r--r--libxsde/xsde/cxx/serializer/validating/double.ixx7
-rw-r--r--libxsde/xsde/cxx/serializer/validating/float.hxx3
-rw-r--r--libxsde/xsde/cxx/serializer/validating/float.ixx7
13 files changed, 64 insertions, 0 deletions
diff --git a/NEWS b/NEWS
index 71f211a..3a81dc6 100644
--- a/NEWS
+++ b/NEWS
@@ -7,6 +7,12 @@ Version 3.3.0
to an executable by packaging compiled generated code into a static
(archive) library.
+ C++/Serializer
+
+ * New functions, format() and precision(), allow changing of the
+ output notation and precision for the float, double, and decimal
+ type serializers.
+
Version 3.2.0
* Support for ISO-8859-1 in addition to UTF-8 as application encoding.
diff --git a/libxsde/xsde/cxx/serializer/non-validating/decimal.hxx b/libxsde/xsde/cxx/serializer/non-validating/decimal.hxx
index c9b4c4e..c43a5d7 100644
--- a/libxsde/xsde/cxx/serializer/non-validating/decimal.hxx
+++ b/libxsde/xsde/cxx/serializer/non-validating/decimal.hxx
@@ -30,6 +30,9 @@ namespace xsde
virtual void
_serialize_content ();
+ void
+ precision (unsigned int);
+
#ifdef DBL_DIG
decimal_simpl (unsigned int precision = DBL_DIG); // Keep it last.
#else
diff --git a/libxsde/xsde/cxx/serializer/non-validating/decimal.ixx b/libxsde/xsde/cxx/serializer/non-validating/decimal.ixx
index b51ecd0a..6b74d39 100644
--- a/libxsde/xsde/cxx/serializer/non-validating/decimal.ixx
+++ b/libxsde/xsde/cxx/serializer/non-validating/decimal.ixx
@@ -11,6 +11,12 @@ namespace xsde
{
namespace non_validating
{
+ inline void decimal_simpl::
+ precision (unsigned int p)
+ {
+ precision_ = p;
+ }
+
inline decimal_simpl::
decimal_simpl (unsigned int p)
: precision_ (p)
diff --git a/libxsde/xsde/cxx/serializer/non-validating/double.hxx b/libxsde/xsde/cxx/serializer/non-validating/double.hxx
index f88ca64..1a9ab37 100644
--- a/libxsde/xsde/cxx/serializer/non-validating/double.hxx
+++ b/libxsde/xsde/cxx/serializer/non-validating/double.hxx
@@ -37,6 +37,9 @@ namespace xsde
notation_scientific
};
+ void
+ format (notation, unsigned int precision);
+
#ifdef DBL_DIG
double_simpl (notation = notation_auto,
unsigned int precision = DBL_DIG); // Keep it last.
diff --git a/libxsde/xsde/cxx/serializer/non-validating/double.ixx b/libxsde/xsde/cxx/serializer/non-validating/double.ixx
index c819fbd..170e0c0 100644
--- a/libxsde/xsde/cxx/serializer/non-validating/double.ixx
+++ b/libxsde/xsde/cxx/serializer/non-validating/double.ixx
@@ -11,6 +11,13 @@ namespace xsde
{
namespace non_validating
{
+ inline void double_simpl::
+ format (notation n, unsigned int p)
+ {
+ notation_ = n;
+ precision_ = p;
+ }
+
inline double_simpl::
double_simpl (notation n, unsigned int p)
: notation_ (n), precision_ (p)
diff --git a/libxsde/xsde/cxx/serializer/non-validating/float.hxx b/libxsde/xsde/cxx/serializer/non-validating/float.hxx
index 80b2449..3ff1713 100644
--- a/libxsde/xsde/cxx/serializer/non-validating/float.hxx
+++ b/libxsde/xsde/cxx/serializer/non-validating/float.hxx
@@ -37,6 +37,9 @@ namespace xsde
notation_scientific
};
+ void
+ format (notation, unsigned int precision);
+
#ifdef FLT_DIG
float_simpl (notation = notation_auto,
unsigned int precision = FLT_DIG); // Keep it last.
diff --git a/libxsde/xsde/cxx/serializer/non-validating/float.ixx b/libxsde/xsde/cxx/serializer/non-validating/float.ixx
index 4d24e7e..5d4848e 100644
--- a/libxsde/xsde/cxx/serializer/non-validating/float.ixx
+++ b/libxsde/xsde/cxx/serializer/non-validating/float.ixx
@@ -11,6 +11,13 @@ namespace xsde
{
namespace non_validating
{
+ inline void float_simpl::
+ format (notation n, unsigned int p)
+ {
+ notation_ = n;
+ precision_ = p;
+ }
+
inline float_simpl::
float_simpl (notation n, unsigned int p)
: notation_ (n), precision_ (p)
diff --git a/libxsde/xsde/cxx/serializer/validating/decimal.hxx b/libxsde/xsde/cxx/serializer/validating/decimal.hxx
index bdefa52..a99d656 100644
--- a/libxsde/xsde/cxx/serializer/validating/decimal.hxx
+++ b/libxsde/xsde/cxx/serializer/validating/decimal.hxx
@@ -30,6 +30,9 @@ namespace xsde
virtual void
_serialize_content ();
+ void
+ precision (unsigned int);
+
#ifdef DBL_DIG
decimal_simpl (unsigned int precision = DBL_DIG); // Keep it last.
#else
diff --git a/libxsde/xsde/cxx/serializer/validating/decimal.ixx b/libxsde/xsde/cxx/serializer/validating/decimal.ixx
index 682e424..0b43e87 100644
--- a/libxsde/xsde/cxx/serializer/validating/decimal.ixx
+++ b/libxsde/xsde/cxx/serializer/validating/decimal.ixx
@@ -11,6 +11,12 @@ namespace xsde
{
namespace validating
{
+ inline void decimal_simpl::
+ precision (unsigned int p)
+ {
+ precision_ = p;
+ }
+
inline decimal_simpl::
decimal_simpl (unsigned int p)
: precision_ (p)
diff --git a/libxsde/xsde/cxx/serializer/validating/double.hxx b/libxsde/xsde/cxx/serializer/validating/double.hxx
index 019fdd7..160bf2f 100644
--- a/libxsde/xsde/cxx/serializer/validating/double.hxx
+++ b/libxsde/xsde/cxx/serializer/validating/double.hxx
@@ -37,6 +37,9 @@ namespace xsde
notation_scientific
};
+ void
+ format (notation, unsigned int precision);
+
#ifdef DBL_DIG
double_simpl (notation = notation_auto,
unsigned int precision = DBL_DIG); // Keep it last.
diff --git a/libxsde/xsde/cxx/serializer/validating/double.ixx b/libxsde/xsde/cxx/serializer/validating/double.ixx
index 943fea7..6eba1e0 100644
--- a/libxsde/xsde/cxx/serializer/validating/double.ixx
+++ b/libxsde/xsde/cxx/serializer/validating/double.ixx
@@ -11,6 +11,13 @@ namespace xsde
{
namespace validating
{
+ inline void double_simpl::
+ format (notation n, unsigned int p)
+ {
+ notation_ = n;
+ precision_ = p;
+ }
+
inline double_simpl::
double_simpl (notation n, unsigned int p)
: notation_ (n), precision_ (p)
diff --git a/libxsde/xsde/cxx/serializer/validating/float.hxx b/libxsde/xsde/cxx/serializer/validating/float.hxx
index 2474cd2..7eec216 100644
--- a/libxsde/xsde/cxx/serializer/validating/float.hxx
+++ b/libxsde/xsde/cxx/serializer/validating/float.hxx
@@ -37,6 +37,9 @@ namespace xsde
notation_scientific
};
+ void
+ format (notation, unsigned int precision);
+
#ifdef FLT_DIG
float_simpl (notation = notation_auto,
unsigned int precision = FLT_DIG); // Keep it last.
diff --git a/libxsde/xsde/cxx/serializer/validating/float.ixx b/libxsde/xsde/cxx/serializer/validating/float.ixx
index 3dbf74c..56defdb 100644
--- a/libxsde/xsde/cxx/serializer/validating/float.ixx
+++ b/libxsde/xsde/cxx/serializer/validating/float.ixx
@@ -11,6 +11,13 @@ namespace xsde
{
namespace validating
{
+ inline void float_simpl::
+ format (notation n, unsigned int p)
+ {
+ notation_ = n;
+ precision_ = p;
+ }
+
inline float_simpl::
float_simpl (notation n, unsigned int p)
: notation_ (n), precision_ (p)