diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2014-04-20 15:46:26 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2014-04-20 15:46:26 +0200 |
commit | e7ae21f7282a90b9bda68695af362990d8a63675 (patch) | |
tree | fa4a7c7877ca034b5cde31d05513e1c2c40784bf /libxsde | |
parent | ebbf82b02d8b4c0b25e39395a35e899cea0f1cdd (diff) |
Add support for fractionDigits in serializer
Diffstat (limited to 'libxsde')
3 files changed, 20 insertions, 4 deletions
diff --git a/libxsde/xsde/cxx/serializer/validating/decimal.cxx b/libxsde/xsde/cxx/serializer/validating/decimal.cxx index d4408af..a01cbc2 100644 --- a/libxsde/xsde/cxx/serializer/validating/decimal.cxx +++ b/libxsde/xsde/cxx/serializer/validating/decimal.cxx @@ -45,12 +45,14 @@ namespace xsde // char str[128]; + unsigned int p (f.fraction_digits_set_ + ? f.fraction_digits_ + : precision_); + #ifdef XSDE_SNPRINTF - int n = snprintf (str, 128, "%.*f", - static_cast<int> (precision_), value_); + int n = snprintf (str, 128, "%.*f", static_cast<int> (p), value_); #else - int n = sprintf (str, "%.*f", - static_cast<int> (precision_), value_); + int n = sprintf (str, "%.*f", static_cast<int> (p), value_); #endif if (n > 0 && n < 128) { diff --git a/libxsde/xsde/cxx/serializer/validating/xml-schema-sskel.hxx b/libxsde/xsde/cxx/serializer/validating/xml-schema-sskel.hxx index b757ca9..a11693a 100644 --- a/libxsde/xsde/cxx/serializer/validating/xml-schema-sskel.hxx +++ b/libxsde/xsde/cxx/serializer/validating/xml-schema-sskel.hxx @@ -980,16 +980,21 @@ namespace xsde void _min_facet (double, bool inclusive); + void + _fraction_digits_facet (unsigned int); + protected: struct facets { double min_; double max_; + unsigned int fraction_digits_; unsigned int min_set_ : 1; unsigned int min_inc_ : 1; unsigned int max_set_ : 1; unsigned int max_inc_ : 1; + unsigned int fraction_digits_set_ : 1; }; const facets& diff --git a/libxsde/xsde/cxx/serializer/validating/xml-schema-sskel.ixx b/libxsde/xsde/cxx/serializer/validating/xml-schema-sskel.ixx index 1798404..c8289d9 100644 --- a/libxsde/xsde/cxx/serializer/validating/xml-schema-sskel.ixx +++ b/libxsde/xsde/cxx/serializer/validating/xml-schema-sskel.ixx @@ -817,6 +817,7 @@ namespace xsde #endif facets_.min_set_ = 0; facets_.max_set_ = 0; + facets_.fraction_digits_set_ = 0; } #ifdef XSDE_REUSE_STYLE_TIEIN @@ -826,6 +827,7 @@ namespace xsde { facets_.min_set_ = 0; facets_.max_set_ = 0; + facets_.fraction_digits_set_ = 0; } #endif inline void decimal_sskel:: @@ -844,6 +846,13 @@ namespace xsde facets_.min_inc_ = inc; } + inline void decimal_sskel:: + _fraction_digits_facet (unsigned int v) + { + facets_.fraction_digits_ = v; + facets_.fraction_digits_set_ = 1; + } + inline const decimal_sskel::facets& decimal_sskel:: _facets () const { |