aboutsummaryrefslogtreecommitdiff
path: root/libxsde/xsde/cxx/serializer/validating/string-common.cxx
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2010-03-28 18:58:03 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2010-03-28 18:58:03 +0200
commitf5b85ddc9a0e3ac4bb8a200d2ab1a05d5ca9f41b (patch)
tree8364cbe3ccd627fab9db7bd857d2e325d3dfed49 /libxsde/xsde/cxx/serializer/validating/string-common.cxx
parentb2ad4a54b5436ea57205595dbb6322952eb06318 (diff)
Validate facets in C++/Hybrid enum parser/serializer implementations
Diffstat (limited to 'libxsde/xsde/cxx/serializer/validating/string-common.cxx')
-rw-r--r--libxsde/xsde/cxx/serializer/validating/string-common.cxx22
1 files changed, 14 insertions, 8 deletions
diff --git a/libxsde/xsde/cxx/serializer/validating/string-common.cxx b/libxsde/xsde/cxx/serializer/validating/string-common.cxx
index 20a1b34..c9c70b8 100644
--- a/libxsde/xsde/cxx/serializer/validating/string-common.cxx
+++ b/libxsde/xsde/cxx/serializer/validating/string-common.cxx
@@ -16,18 +16,24 @@ namespace xsde
{
void string_common::
validate_facets (const char* s,
-#ifdef XSDE_STL
- size_t n,
-#endif
const string_facets::facets& f,
context& ctx)
{
-#ifndef XSDE_STL
- size_t n;
- if (f.length_set_ || f.min_length_set_ || f.max_length_set_)
- n = strlen (s);
-#endif
+ if (f.length_set_ ||
+ f.min_length_set_ ||
+ f.max_length_set_ ||
+ f.enum_count_ != 0)
+ {
+ validate_facets (s, strlen (s), f, ctx);
+ }
+ }
+ void string_common::
+ validate_facets (const char* s,
+ size_t n,
+ const string_facets::facets& f,
+ context& ctx)
+ {
if (f.length_set_ && n != f.length_)
{
ctx.schema_error (schema_error::length_not_equal_prescribed);