From b4e3d4d8a4f1e0712dbbd309bf4b2f11e36acef1 Mon Sep 17 00:00:00 2001 From: Jean-Philippe Andre Date: Wed, 22 Nov 2017 20:50:11 +0900 Subject: [PATCH] cxx: Avoid pedantic warning with -Wold-style-cast This affects the generated headers. --- src/lib/eolian_cxx/grammar/base_class_definition.hpp | 9 +++++---- src/lib/eolian_cxx/grammar/class_definition.hpp | 9 +++++---- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/src/lib/eolian_cxx/grammar/base_class_definition.hpp b/src/lib/eolian_cxx/grammar/base_class_definition.hpp index aa61334020..d5fa914b53 100644 --- a/src/lib/eolian_cxx/grammar/base_class_definition.hpp +++ b/src/lib/eolian_cxx/grammar/base_class_definition.hpp @@ -64,10 +64,11 @@ struct base_class_definition_generator return false; if(!as_generator(";\n" << scope_tab << "}\n").generate(sink, attributes::unused, context)) return false; - if(!as_generator - ( - scope_tab << "Eo* _eo_ptr() const { return *(Eo**)this; }\n" - ).generate(sink, attributes::unused, context)) return false; + if(!as_generator( + scope_tab << "Eo* _eo_ptr() const { return *(reinterpret_cast" + << "(const_cast<" << string << " *>(this))); }\n" + ).generate(sink, cls.cxx_name, context)) + return false; // operator ::ns::Class_Name() const; // operator ::ns::Class_Name&(); diff --git a/src/lib/eolian_cxx/grammar/class_definition.hpp b/src/lib/eolian_cxx/grammar/class_definition.hpp index 1e21336d9f..30a9daf134 100644 --- a/src/lib/eolian_cxx/grammar/class_definition.hpp +++ b/src/lib/eolian_cxx/grammar/class_definition.hpp @@ -128,10 +128,11 @@ struct class_definition_generator return false; if(!as_generator(";\n" << scope_tab << "}\n").generate(sink, attributes::unused, context)) return false; - if(!as_generator - ( - scope_tab << "Eo* _eo_ptr() const { return *(Eo**)this; }\n" - ).generate(sink, attributes::unused, context)) return false; + if(!as_generator( + scope_tab << "Eo* _eo_ptr() const { return *(reinterpret_cast" + << "(const_cast<" << string << " *>(this))); }\n" + ).generate(sink, cls.cxx_name, context)) + return false; for (auto&& e : cls.events) {