diff options
Diffstat (limited to 'libxsde/xsde/cxx/serializer/validating/string-common.cxx')
-rw-r--r-- | libxsde/xsde/cxx/serializer/validating/string-common.cxx | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/libxsde/xsde/cxx/serializer/validating/string-common.cxx b/libxsde/xsde/cxx/serializer/validating/string-common.cxx index c9c70b8..f7d49b6 100644 --- a/libxsde/xsde/cxx/serializer/validating/string-common.cxx +++ b/libxsde/xsde/cxx/serializer/validating/string-common.cxx @@ -14,7 +14,7 @@ namespace xsde { namespace validating { - void string_common:: + bool string_common:: validate_facets (const char* s, const string_facets::facets& f, context& ctx) @@ -24,11 +24,13 @@ namespace xsde f.max_length_set_ || f.enum_count_ != 0) { - validate_facets (s, strlen (s), f, ctx); + return validate_facets (s, strlen (s), f, ctx); } + + return true; } - void string_common:: + bool string_common:: validate_facets (const char* s, size_t n, const string_facets::facets& f, @@ -37,19 +39,19 @@ namespace xsde if (f.length_set_ && n != f.length_) { ctx.schema_error (schema_error::length_not_equal_prescribed); - return; + return false; } if (f.min_length_set_ && n < f.min_length_) { ctx.schema_error (schema_error::length_less_than_min); - return; + return false; } if (f.max_length_set_ && n > f.max_length_) { ctx.schema_error (schema_error::length_greater_than_max); - return; + return false; } if (f.enum_count_ != 0) @@ -65,9 +67,11 @@ namespace xsde if (i == f.enum_count_) { ctx.schema_error (schema_error::value_not_in_enumeration); - return; + return false; } } + + return true; } } } |