aboutsummaryrefslogtreecommitdiff
path: root/libxsde
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
parentb2ad4a54b5436ea57205595dbb6322952eb06318 (diff)
Validate facets in C++/Hybrid enum parser/serializer implementations
Diffstat (limited to 'libxsde')
-rw-r--r--libxsde/xsde/cxx/serializer/validating/string-common.cxx22
-rw-r--r--libxsde/xsde/cxx/serializer/validating/string-common.hxx8
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&);
};