diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2011-06-28 15:57:14 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2011-06-28 15:57:14 +0200 |
commit | ba7c4c312a412b1a7efcb253189d280b1865e971 (patch) | |
tree | d40db7fa93a975609bb88d560f6f165fa559c63d | |
parent | 5e7c109f2a401ef8f4d898bf59fb643c7c7eeed0 (diff) |
Add format()/precision() modifiers to floating-point serializers
-rw-r--r-- | NEWS | 6 | ||||
-rw-r--r-- | libxsde/xsde/cxx/serializer/non-validating/decimal.hxx | 3 | ||||
-rw-r--r-- | libxsde/xsde/cxx/serializer/non-validating/decimal.ixx | 6 | ||||
-rw-r--r-- | libxsde/xsde/cxx/serializer/non-validating/double.hxx | 3 | ||||
-rw-r--r-- | libxsde/xsde/cxx/serializer/non-validating/double.ixx | 7 | ||||
-rw-r--r-- | libxsde/xsde/cxx/serializer/non-validating/float.hxx | 3 | ||||
-rw-r--r-- | libxsde/xsde/cxx/serializer/non-validating/float.ixx | 7 | ||||
-rw-r--r-- | libxsde/xsde/cxx/serializer/validating/decimal.hxx | 3 | ||||
-rw-r--r-- | libxsde/xsde/cxx/serializer/validating/decimal.ixx | 6 | ||||
-rw-r--r-- | libxsde/xsde/cxx/serializer/validating/double.hxx | 3 | ||||
-rw-r--r-- | libxsde/xsde/cxx/serializer/validating/double.ixx | 7 | ||||
-rw-r--r-- | libxsde/xsde/cxx/serializer/validating/float.hxx | 3 | ||||
-rw-r--r-- | libxsde/xsde/cxx/serializer/validating/float.ixx | 7 |
13 files changed, 64 insertions, 0 deletions
@@ -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) |