From c7c32255956fc8c82200cd01e08951a336e48d98 Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Sun, 13 Feb 2011 14:51:03 +0200 Subject: Cast skeletons with dynamic instead of static_cast in mixin mode In this mode parser skeletons use virtual inheritance. --- xsde/cxx/parser/element-validation-source.cxx | 6 +++--- xsde/cxx/parser/parser-source.cxx | 3 ++- 2 files changed, 5 insertions(+), 4 deletions(-) (limited to 'xsde/cxx') diff --git a/xsde/cxx/parser/element-validation-source.cxx b/xsde/cxx/parser/element-validation-source.cxx index 92eb73c..1ea9cab 100644 --- a/xsde/cxx/parser/element-validation-source.cxx +++ b/xsde/cxx/parser/element-validation-source.cxx @@ -388,7 +388,7 @@ namespace CXX String const& name (ename (*e)); String fq_type (fq_name (type)); - String def_parser, map, inst; + String def_parser, map, inst, cast; if (poly) { @@ -401,7 +401,7 @@ namespace CXX if (poly) { - String cast (mixin ? L"dynamic_cast" : L"static_cast"); + cast = mixin ? L"dynamic_cast" : L"static_cast"; os << fq_type << "* p = 0;" << endl @@ -459,7 +459,7 @@ namespace CXX if (poly) os << fq_type << "* p =" << endl - << "static_cast< " << fq_type << "* > (ctx.nested_parser ());" + << cast << "< " << fq_type << "* > (ctx.nested_parser ());" << endl; os << "if (" << inst << " != 0)" diff --git a/xsde/cxx/parser/parser-source.cxx b/xsde/cxx/parser/parser-source.cxx index 47e4867..68a2338 100644 --- a/xsde/cxx/parser/parser-source.cxx +++ b/xsde/cxx/parser/parser-source.cxx @@ -639,10 +639,11 @@ namespace CXX if (poly) { String fq_type (fq_name (e.type ())); + String cast (mixin ? L"dynamic_cast" : L"static_cast"); inst = "p"; os << fq_type << "* p =" << endl - << "static_cast< " << fq_type << "* > (" << + << cast << "< " << fq_type << "* > (" << "this->_context ().nested_parser ());" << endl; } -- cgit v1.1