aboutsummaryrefslogtreecommitdiff
path: root/xsde/cxx/hybrid/serializer-source.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'xsde/cxx/hybrid/serializer-source.cxx')
-rw-r--r--xsde/cxx/hybrid/serializer-source.cxx26
1 files changed, 19 insertions, 7 deletions
diff --git a/xsde/cxx/hybrid/serializer-source.cxx b/xsde/cxx/hybrid/serializer-source.cxx
index d93ffa4..7834aae 100644
--- a/xsde/cxx/hybrid/serializer-source.cxx
+++ b/xsde/cxx/hybrid/serializer-source.cxx
@@ -747,8 +747,12 @@ namespace CXX
os << esskel (t) << "::" << arm_tag << " " << s << "::" << endl
<< esarm (c) << " ()"
<< "{"
- << arm_tag << " t (static_cast< " << arm_tag << " > (" << endl
- << access << iter << "->" << earm (c) << " ()));";
+ // GCC 2.9X cannot do enum-to-enum static_cast.
+ //
+ << arm_tag << " t (" << endl
+ << "static_cast< " << arm_tag << " > (" << endl
+ << "static_cast< unsigned int > (" << endl
+ << access << iter << "->" << earm (c) << " ())));";
}
else if (c.min () == 0)
{
@@ -761,24 +765,32 @@ namespace CXX
os << esskel (t) << "::" << arm_tag << " " << s << "::" << endl
<< esarm (c) << " ()"
<< "{"
- << arm_tag << " t (static_cast< " << arm_tag << " > (" << endl
- << access << ename (c) << " ()." << earm (c) << " ()));";
+ // GCC 2.9X cannot do enum-to-enum static_cast.
+ //
+ << arm_tag << " t (" << endl
+ << "static_cast< " << arm_tag << " > (" << endl
+ << "static_cast< unsigned int > (" << endl
+ << access << ename (c) << " ()." << earm (c) << " ())));";
}
else
{
os << esskel (t) << "::" << arm_tag << " " << s << "::" << endl
<< esarm (c) << " ()"
<< "{"
- << arm_tag << " t (static_cast< " << arm_tag << " > (" << endl;
+ // GCC 2.9X cannot do enum-to-enum static_cast.
+ //
+ << arm_tag << " t (" << endl
+ << "static_cast< " << arm_tag << " > (" << endl
+ << "static_cast< unsigned int > (" << endl;
// We may be in a choice in which case we get a nested
// type (and accessor function) even for min == max == 1.
//
if (c.context ().count ("type"))
- os << access << ename (c) << " ()." << earm (c) << " ()));";
+ os << access << ename (c) << " ()." << earm (c) << " ())));";
else
- os << access << earm (c) << " ()));";
+ os << access << earm (c) << " ())));";
}
// Test whether we have any arms that need initialization.