diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2010-03-28 18:58:03 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2010-03-28 18:58:03 +0200 |
commit | f5b85ddc9a0e3ac4bb8a200d2ab1a05d5ca9f41b (patch) | |
tree | 8364cbe3ccd627fab9db7bd857d2e325d3dfed49 /libxsde | |
parent | b2ad4a54b5436ea57205595dbb6322952eb06318 (diff) |
Validate facets in C++/Hybrid enum parser/serializer implementations
Diffstat (limited to 'libxsde')
-rw-r--r-- | libxsde/xsde/cxx/serializer/validating/string-common.cxx | 22 | ||||
-rw-r--r-- | libxsde/xsde/cxx/serializer/validating/string-common.hxx | 8 |
2 files changed, 19 insertions, 11 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); diff --git a/libxsde/xsde/cxx/serializer/validating/string-common.hxx b/libxsde/xsde/cxx/serializer/validating/string-common.hxx index d7f221d..b49ef5a 100644 --- a/libxsde/xsde/cxx/serializer/validating/string-common.hxx +++ b/libxsde/xsde/cxx/serializer/validating/string-common.hxx @@ -6,7 +6,6 @@ #ifndef XSDE_CXX_SERIALIZER_VALIDATING_STRING_COMMON_HXX #define XSDE_CXX_SERIALIZER_VALIDATING_STRING_COMMON_HXX -#include <xsde/cxx/config.hxx> #include <xsde/cxx/serializer/validating/xml-schema-sskel.hxx> namespace xsde @@ -21,9 +20,12 @@ namespace xsde { static void validate_facets (const char* s, -#ifdef XSDE_STL + const string_facets::facets&, + context&); + + static void + validate_facets (const char* s, size_t n, -#endif const string_facets::facets&, context&); }; |