From 7ab6bce7faf0ba466b38a9ed31ccbdadbbd99ecd Mon Sep 17 00:00:00 2001 From: Jason Turner Date: Sun, 17 Apr 2016 21:14:01 -0600 Subject: [PATCH] Untangle chaiscript_engine from the rest of it --- include/chaiscript/chaiscript_defines.hpp | 48 +++++++++++++++++ include/chaiscript/chaiscript_stdlib.hpp | 20 +++++--- include/chaiscript/dispatchkit/bootstrap.hpp | 43 ++++------------ .../chaiscript/language/chaiscript_common.hpp | 5 +- .../chaiscript/language/chaiscript_engine.hpp | 51 +------------------ include/chaiscript/utility/utility.hpp | 5 +- 6 files changed, 76 insertions(+), 96 deletions(-) diff --git a/include/chaiscript/chaiscript_defines.hpp b/include/chaiscript/chaiscript_defines.hpp index 4049381..4c31b6e 100644 --- a/include/chaiscript/chaiscript_defines.hpp +++ b/include/chaiscript/chaiscript_defines.hpp @@ -89,6 +89,54 @@ namespace chaiscript { #endif } + struct Build_Info { + static int version_major() + { + return chaiscript::version_major; + } + + static int version_minor() + { + return chaiscript::version_minor; + } + + static int version_patch() + { + return chaiscript::version_patch; + } + + static std::string version() + { + return std::to_string(version_major()) + '.' + std::to_string(version_minor()) + '.' + std::to_string(version_patch()); + } + + static std::string compiler_id() + { + return compiler_name() + '-' + compiler_version(); + } + + static std::string build_id() + { + return compiler_id() + (debug_build()?"-Debug":"-Release"); + } + + static std::string compiler_version() + { + return chaiscript::compiler_version; + } + + static std::string compiler_name() + { + return chaiscript::compiler_name; + } + + static bool debug_build() + { + return chaiscript::debug_build; + } + }; + + template Iter advance_copy(Iter iter, Distance distance) { std::advance(iter, static_cast::difference_type>(distance)); diff --git a/include/chaiscript/chaiscript_stdlib.hpp b/include/chaiscript/chaiscript_stdlib.hpp index 50aa087..a1082c5 100644 --- a/include/chaiscript/chaiscript_stdlib.hpp +++ b/include/chaiscript/chaiscript_stdlib.hpp @@ -14,11 +14,15 @@ #include #include "chaiscript_defines.hpp" -#include "dispatchkit/dispatchkit.hpp" +#include "language/chaiscript_common.hpp" + +//#include "dispatchkit/dispatchkit.hpp" +#include "dispatchkit/operators.hpp" #include "dispatchkit/bootstrap.hpp" #include "dispatchkit/bootstrap_stl.hpp" -#include "dispatchkit/boxed_value.hpp" +//#include "dispatchkit/boxed_value.hpp" #include "language/chaiscript_prelude.hpp" +#include "dispatchkit/register_function.hpp" #include "utility/json_wrap.hpp" #ifndef CHAISCRIPT_NO_THREADS @@ -38,15 +42,15 @@ namespace chaiscript static ModulePtr library() { - using namespace bootstrap; + // using namespace bootstrap; auto lib = std::make_shared(); - Bootstrap::bootstrap(*lib); + bootstrap::Bootstrap::bootstrap(*lib); - standard_library::vector_type >("Vector", *lib); - standard_library::string_type("string", *lib); - standard_library::map_type >("Map", *lib); - standard_library::pair_type >("Pair", *lib); + bootstrap::standard_library::vector_type >("Vector", *lib); + bootstrap::standard_library::string_type("string", *lib); + bootstrap::standard_library::map_type >("Map", *lib); + bootstrap::standard_library::pair_type >("Pair", *lib); #ifndef CHAISCRIPT_NO_THREADS standard_library::future_type>("future", *lib); diff --git a/include/chaiscript/dispatchkit/bootstrap.hpp b/include/chaiscript/dispatchkit/bootstrap.hpp index 1d6532f..0d7e8a3 100644 --- a/include/chaiscript/dispatchkit/bootstrap.hpp +++ b/include/chaiscript/dispatchkit/bootstrap.hpp @@ -7,32 +7,8 @@ #ifndef CHAISCRIPT_BOOTSTRAP_HPP_ #define CHAISCRIPT_BOOTSTRAP_HPP_ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "bad_boxed_cast.hpp" -#include "boxed_cast.hpp" -#include "boxed_number.hpp" -#include "boxed_value.hpp" -#include "dispatchkit.hpp" -#include "type_conversions.hpp" -#include "dynamic_object.hpp" -#include "operators.hpp" -#include "proxy_constructors.hpp" -#include "proxy_functions.hpp" -#include "proxy_functions_detail.hpp" -#include "register_function.hpp" -#include "type_info.hpp" #include "../utility/utility.hpp" -#include "../language/chaiscript_common.hpp" +#include "register_function.hpp" namespace chaiscript { @@ -525,14 +501,15 @@ namespace chaiscript opers_arithmetic_pod(m); - m.add(fun(&ChaiScript::version_major), "version_major"); - m.add(fun(&ChaiScript::version_minor), "version_minor"); - m.add(fun(&ChaiScript::version_patch), "version_patch"); - m.add(fun(&ChaiScript::version), "version"); - m.add(fun(&ChaiScript::compiler_version), "compiler_version"); - m.add(fun(&ChaiScript::compiler_name), "compiler_name"); - m.add(fun(&ChaiScript::compiler_id), "compiler_id"); - m.add(fun(&ChaiScript::debug_build), "debug_build"); + + m.add(fun(&Build_Info::version_major), "version_major"); + m.add(fun(&Build_Info::version_minor), "version_minor"); + m.add(fun(&Build_Info::version_patch), "version_patch"); + m.add(fun(&Build_Info::version), "version"); + m.add(fun(&Build_Info::compiler_version), "compiler_version"); + m.add(fun(&Build_Info::compiler_name), "compiler_name"); + m.add(fun(&Build_Info::compiler_id), "compiler_id"); + m.add(fun(&Build_Info::debug_build), "debug_build"); m.add(fun(&print), "print_string"); diff --git a/include/chaiscript/language/chaiscript_common.hpp b/include/chaiscript/language/chaiscript_common.hpp index 2fed03a..0ab8a4f 100644 --- a/include/chaiscript/language/chaiscript_common.hpp +++ b/include/chaiscript/language/chaiscript_common.hpp @@ -43,7 +43,6 @@ namespace chaiscript namespace { - /// Helper lookup to get the name of each node type const char *ast_node_type_to_string(AST_Node_Type ast_node_type) { static const char * const ast_node_types[] = { "Id", "Fun_Call", "Arg_List", "Equation", "Var_Decl", @@ -109,7 +108,7 @@ namespace chaiscript } load_module_error(const load_module_error &) = default; - virtual ~load_module_error() noexcept {} + virtual ~load_module_error() noexcept = default; }; @@ -172,7 +171,7 @@ namespace chaiscript return ss.str(); } - virtual ~eval_error() noexcept {} + virtual ~eval_error() noexcept = default; private: diff --git a/include/chaiscript/language/chaiscript_engine.hpp b/include/chaiscript/language/chaiscript_engine.hpp index bfd9cca..95c8165 100644 --- a/include/chaiscript/language/chaiscript_engine.hpp +++ b/include/chaiscript/language/chaiscript_engine.hpp @@ -292,7 +292,7 @@ namespace chaiscript // attempt to load the stdlib - load_module("chaiscript_stdlib-" + version()); + load_module("chaiscript_stdlib-" + Build_Info::version()); build_eval_system(ModulePtr()); } @@ -319,53 +319,6 @@ namespace chaiscript } - static int version_major() - { - return chaiscript::version_major; - } - - static int version_minor() - { - return chaiscript::version_minor; - } - - static int version_patch() - { - return chaiscript::version_patch; - } - - static std::string version() - { - return std::to_string(version_major()) + '.' + std::to_string(version_minor()) + '.' + std::to_string(version_patch()); - } - - static std::string compiler_id() - { - return compiler_name() + '-' + compiler_version(); - } - - static std::string build_id() - { - return compiler_id() + (debug_build()?"-Debug":"-Release"); - } - - static std::string compiler_version() - { - return chaiscript::compiler_version; - } - - static std::string compiler_name() - { - return chaiscript::compiler_name; - } - - static bool debug_build() - { - return chaiscript::debug_build; - } - - - std::string get_type_name(const Type_Info &ti) const { return m_engine.get_type_name(ti); @@ -580,7 +533,7 @@ namespace chaiscript { std::vector errors; std::string version_stripped_name = t_module_name; - size_t version_pos = version_stripped_name.find("-"+version()); + size_t version_pos = version_stripped_name.find("-" + Build_Info::version()); if (version_pos != std::string::npos) { version_stripped_name.erase(version_pos); diff --git a/include/chaiscript/utility/utility.hpp b/include/chaiscript/utility/utility.hpp index 1ca0dfb..fa2bbdb 100644 --- a/include/chaiscript/utility/utility.hpp +++ b/include/chaiscript/utility/utility.hpp @@ -12,9 +12,8 @@ #include #include -#include "../chaiscript.hpp" -#include "../dispatchkit/proxy_functions.hpp" -#include "../dispatchkit/type_info.hpp" +#include "../language/chaiscript_common.hpp" +#include "../dispatchkit/register_function.hpp" #include "../dispatchkit/operators.hpp"