summaryrefslogtreecommitdiff
path: root/xsd/cxx/tree/tree-source.cxx
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2010-01-08 14:49:11 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2010-01-08 14:49:11 +0200
commit3f8c237b1abe02df8147170f2fc037edc3f384db (patch)
tree2531f2fddd4cadaab27cd37eb37ebcac3481acec /xsd/cxx/tree/tree-source.cxx
parent0153d99ab976ac88f432099ddfe840e15d4f6a8e (diff)
Add support for default/fixed values of QName type
Diffstat (limited to 'xsd/cxx/tree/tree-source.cxx')
-rw-r--r--xsd/cxx/tree/tree-source.cxx35
1 files changed, 6 insertions, 29 deletions
diff --git a/xsd/cxx/tree/tree-source.cxx b/xsd/cxx/tree/tree-source.cxx
index 49a846c..4a94520 100644
--- a/xsd/cxx/tree/tree-source.cxx
+++ b/xsd/cxx/tree/tree-source.cxx
@@ -557,7 +557,7 @@ namespace CXX
// default_value
//
- if (m.default_ () && !is_qname (m.type ()))
+ if (m.default_ ())
{
SemanticGraph::Type& t (m.type ());
Boolean simple (true);
@@ -1190,31 +1190,8 @@ namespace CXX
if (a.default_ ())
{
- Boolean fund (false);
- {
- IsFundamentalType traverser (fund);
- traverser.dispatch (a.type ());
- }
-
- String const& tr (etraits (a)); // traits type name
-
- if (fund || !is_qname (a.type ()))
- {
- os << "this->" << member << ".set (" <<
- edefault_value (a) << " ());";
- }
- else
- {
- // Parse the default value in the context of the element.
- //
- os << "::std::auto_ptr< " << etype (a) << " > r (" << endl
- << tr << "::create (" << endl
- << string_type << " (" << L << strlit (a.value ()) <<
- ")," << endl
- << "&p.element (), f, this));"
- << endl
- << "this->" << member << ".set (r);";
- }
+ os << "this->" << member << ".set (" <<
+ edefault_value (a) << " ());";
}
else
os << "throw ::xsd::cxx::tree::expected_attribute< " <<
@@ -1330,7 +1307,7 @@ namespace CXX
// Note that we are not including attributes with default
// or required fixed values here.
//
- if (min (a) == 1 && !(a.fixed () && !is_qname (a.type ())))
+ if (min (a) == 1 && !a.fixed ())
{
// one
//
@@ -1407,7 +1384,7 @@ namespace CXX
{
String const& member (emember (a));
- Boolean def (a.default_ () && !is_qname (a.type ()));
+ Boolean def (a.default_ ());
if (min (a) == 0 && !def)
{
@@ -1643,7 +1620,7 @@ namespace CXX
{
String const& member (emember (a));
- if (a.default_ () && !is_qname (a.type ()))
+ if (a.default_ ())
{
// This is an attribute with default or fixed value. We are
// going to initialize it to its default value.