aboutsummaryrefslogtreecommitdiff
path: root/libxsde/xsde/cxx/serializer/validating/xml-schema-sskel.ixx
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2010-10-11 12:43:48 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2010-10-11 12:43:48 +0200
commit9553149aa6b6561c49981adf2848607a43765054 (patch)
treeff941ad89aa2c87ec5ddbd7a7bdd189fc33f87ba /libxsde/xsde/cxx/serializer/validating/xml-schema-sskel.ixx
parent0dd6d623af5dfe3590d0c269f76a2fa322e75e58 (diff)
Support for validation of the pattern facet
New test: hybrid/pattern.
Diffstat (limited to 'libxsde/xsde/cxx/serializer/validating/xml-schema-sskel.ixx')
-rw-r--r--libxsde/xsde/cxx/serializer/validating/xml-schema-sskel.ixx27
1 files changed, 27 insertions, 0 deletions
diff --git a/libxsde/xsde/cxx/serializer/validating/xml-schema-sskel.ixx b/libxsde/xsde/cxx/serializer/validating/xml-schema-sskel.ixx
index d62fdd4..35ce5d9 100644
--- a/libxsde/xsde/cxx/serializer/validating/xml-schema-sskel.ixx
+++ b/libxsde/xsde/cxx/serializer/validating/xml-schema-sskel.ixx
@@ -458,7 +458,20 @@ namespace xsde
facets_.enum_ = 0;
facets_.enum_count_ = 0;
+
+#ifdef XSDE_REGEXP
+ facets_.pattern_set_ = 0;
+#endif
+ }
+
+#ifdef XSDE_REGEXP
+ inline string_facets::
+ ~string_facets ()
+ {
+ if (facets_.pattern_set_ == 2)
+ xmlRegFreeRegexp (facets_.pattern_.regexp);
}
+#endif
inline void string_facets::
_length_facet (size_t v)
@@ -488,6 +501,20 @@ namespace xsde
facets_.enum_count_ = count;
}
+#ifndef XSDE_REGEXP
+ inline void string_facets::
+ _pattern_facet (const char*)
+ {
+ }
+#else
+ inline void string_facets::
+ _pattern_facet (const char* s)
+ {
+ facets_.pattern_.str = s;
+ facets_.pattern_set_ = 1;
+ }
+#endif
+
// string_sskel
//
#ifdef XSDE_REUSE_STYLE_TIEIN