From 7f253bd6c12cee4c1e841503c8292d90625f6f77 Mon Sep 17 00:00:00 2001 From: Jason Turner Date: Fri, 1 Jun 2012 08:47:40 -0600 Subject: [PATCH] Catch a few things found with more aggressive g++ warnings --- .../chaiscript/dispatchkit/bad_boxed_cast.hpp | 2 +- .../dispatchkit/dynamic_cast_conversion.hpp | 3 +++ include/chaiscript/dispatchkit/type_info.hpp | 23 ++++++++++--------- src/main.cpp | 1 + 4 files changed, 17 insertions(+), 12 deletions(-) diff --git a/include/chaiscript/dispatchkit/bad_boxed_cast.hpp b/include/chaiscript/dispatchkit/bad_boxed_cast.hpp index 8fdf94c..c920257 100644 --- a/include/chaiscript/dispatchkit/bad_boxed_cast.hpp +++ b/include/chaiscript/dispatchkit/bad_boxed_cast.hpp @@ -33,7 +33,7 @@ namespace chaiscript } bad_boxed_cast(const std::string &t_what) throw() - : m_what(t_what) + : to(0), m_what(t_what) { } diff --git a/include/chaiscript/dispatchkit/dynamic_cast_conversion.hpp b/include/chaiscript/dispatchkit/dynamic_cast_conversion.hpp index cfade60..d6c16e7 100644 --- a/include/chaiscript/dispatchkit/dynamic_cast_conversion.hpp +++ b/include/chaiscript/dispatchkit/dynamic_cast_conversion.hpp @@ -48,6 +48,7 @@ namespace chaiscript { public: virtual Boxed_Value convert(const Boxed_Value &derived) = 0; + const Type_Info &base() { return m_base; @@ -63,6 +64,8 @@ namespace chaiscript { } + virtual ~Dynamic_Conversion() {} + private: Type_Info m_base; Type_Info m_derived; diff --git a/include/chaiscript/dispatchkit/type_info.hpp b/include/chaiscript/dispatchkit/type_info.hpp index 6271b30..88641c6 100644 --- a/include/chaiscript/dispatchkit/type_info.hpp +++ b/include/chaiscript/dispatchkit/type_info.hpp @@ -39,39 +39,40 @@ namespace chaiscript public: Type_Info(bool t_is_const, bool t_is_reference, bool t_is_pointer, bool t_is_void, bool t_is_arithmetic, const std::type_info *t_ti, const std::type_info *t_bareti) - : m_is_const(t_is_const), m_is_reference(t_is_reference), m_is_pointer(t_is_pointer), + : m_type_info(t_ti), m_bare_type_info(t_bareti), + m_is_const(t_is_const), m_is_reference(t_is_reference), m_is_pointer(t_is_pointer), m_is_void(t_is_void), m_is_arithmetic(t_is_arithmetic), - m_type_info(t_ti), m_bare_type_info(t_bareti), m_is_undef(false) { } Type_Info() - : m_is_const(false), m_is_reference(false), m_is_pointer(false), - m_is_void(false), m_is_arithmetic(false), m_type_info(0), m_bare_type_info(0), + : m_type_info(0), m_bare_type_info(0), + m_is_const(false), m_is_reference(false), m_is_pointer(false), + m_is_void(false), m_is_arithmetic(false), m_is_undef(true) { } Type_Info(const Type_Info &ti) - : m_is_const(ti.m_is_const), m_is_reference(ti.m_is_reference), + : m_type_info(ti.m_type_info), + m_bare_type_info(ti.m_bare_type_info), + m_is_const(ti.m_is_const), m_is_reference(ti.m_is_reference), m_is_pointer(ti.m_is_pointer), m_is_void(ti.m_is_void), m_is_arithmetic(ti.m_is_arithmetic), - m_type_info(ti.m_type_info), - m_bare_type_info(ti.m_bare_type_info), m_is_undef(ti.m_is_undef) { } Type_Info &operator=(const Type_Info &ti) { + m_type_info = ti.m_type_info; + m_bare_type_info = ti.m_bare_type_info; m_is_const = ti.m_is_const; m_is_reference = ti.m_is_reference; m_is_pointer = ti.m_is_pointer; m_is_void = ti.m_is_void; m_is_arithmetic = ti.m_is_arithmetic; - m_type_info = ti.m_type_info; - m_bare_type_info = ti.m_bare_type_info; m_is_undef = ti.m_is_undef; return *this; } @@ -126,13 +127,13 @@ namespace chaiscript } private: + const std::type_info *m_type_info; + const std::type_info *m_bare_type_info; bool m_is_const; bool m_is_reference; bool m_is_pointer; bool m_is_void; bool m_is_arithmetic; - const std::type_info *m_type_info; - const std::type_info *m_bare_type_info; bool m_is_undef; }; diff --git a/src/main.cpp b/src/main.cpp index bc83332..ea9a8f5 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -215,6 +215,7 @@ int main(int argc, char *argv[]) case eInteractive : interactive(chai); break; case eCommand : val = chai.eval(arg); break; case eFile : val = chai.eval_file(arg); break; + default : std::cout << "Unrecognized execution mode" << std::endl; return EXIT_FAILURE; } } catch (const chaiscript::exception::eval_error &ee) {