diff --git a/include/chaiscript/dispatchkit/bad_boxed_cast.hpp b/include/chaiscript/dispatchkit/bad_boxed_cast.hpp index c893365..c4369fa 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) noexcept - : 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 f33b520..2b40e8b 100644 --- a/include/chaiscript/dispatchkit/dynamic_cast_conversion.hpp +++ b/include/chaiscript/dispatchkit/dynamic_cast_conversion.hpp @@ -45,6 +45,7 @@ namespace chaiscript { public: virtual Boxed_Value convert(const Boxed_Value &derived) = 0; + const Type_Info &base() { return m_base; @@ -60,6 +61,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 b6d0dea..60bd7bb 100644 --- a/include/chaiscript/dispatchkit/type_info.hpp +++ b/include/chaiscript/dispatchkit/type_info.hpp @@ -30,39 +30,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; } @@ -117,13 +118,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 096f857..c990374 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -230,6 +230,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) {