Untangle chaiscript_engine from the rest of it

This commit is contained in:
Jason Turner
2016-04-17 21:14:01 -06:00
parent f9294c8cbe
commit 7ab6bce7fa
6 changed files with 76 additions and 96 deletions

View File

@@ -89,6 +89,54 @@ namespace chaiscript {
#endif #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<typename Iter, typename Distance> template<typename Iter, typename Distance>
Iter advance_copy(Iter iter, Distance distance) { Iter advance_copy(Iter iter, Distance distance) {
std::advance(iter, static_cast<typename std::iterator_traits<Iter>::difference_type>(distance)); std::advance(iter, static_cast<typename std::iterator_traits<Iter>::difference_type>(distance));

View File

@@ -14,11 +14,15 @@
#include <vector> #include <vector>
#include "chaiscript_defines.hpp" #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.hpp"
#include "dispatchkit/bootstrap_stl.hpp" #include "dispatchkit/bootstrap_stl.hpp"
#include "dispatchkit/boxed_value.hpp" //#include "dispatchkit/boxed_value.hpp"
#include "language/chaiscript_prelude.hpp" #include "language/chaiscript_prelude.hpp"
#include "dispatchkit/register_function.hpp"
#include "utility/json_wrap.hpp" #include "utility/json_wrap.hpp"
#ifndef CHAISCRIPT_NO_THREADS #ifndef CHAISCRIPT_NO_THREADS
@@ -38,15 +42,15 @@ namespace chaiscript
static ModulePtr library() static ModulePtr library()
{ {
using namespace bootstrap; // using namespace bootstrap;
auto lib = std::make_shared<Module>(); auto lib = std::make_shared<Module>();
Bootstrap::bootstrap(*lib); bootstrap::Bootstrap::bootstrap(*lib);
standard_library::vector_type<std::vector<Boxed_Value> >("Vector", *lib); bootstrap::standard_library::vector_type<std::vector<Boxed_Value> >("Vector", *lib);
standard_library::string_type<std::string>("string", *lib); bootstrap::standard_library::string_type<std::string>("string", *lib);
standard_library::map_type<std::map<std::string, Boxed_Value> >("Map", *lib); bootstrap::standard_library::map_type<std::map<std::string, Boxed_Value> >("Map", *lib);
standard_library::pair_type<std::pair<Boxed_Value, Boxed_Value > >("Pair", *lib); bootstrap::standard_library::pair_type<std::pair<Boxed_Value, Boxed_Value > >("Pair", *lib);
#ifndef CHAISCRIPT_NO_THREADS #ifndef CHAISCRIPT_NO_THREADS
standard_library::future_type<std::future<chaiscript::Boxed_Value>>("future", *lib); standard_library::future_type<std::future<chaiscript::Boxed_Value>>("future", *lib);

View File

@@ -7,32 +7,8 @@
#ifndef CHAISCRIPT_BOOTSTRAP_HPP_ #ifndef CHAISCRIPT_BOOTSTRAP_HPP_
#define CHAISCRIPT_BOOTSTRAP_HPP_ #define CHAISCRIPT_BOOTSTRAP_HPP_
#include <cstdint>
#include <exception>
#include <functional>
#include <memory>
#include <sstream>
#include <stdexcept>
#include <string>
#include <type_traits>
#include <vector>
#include <iterator>
#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 "../utility/utility.hpp"
#include "../language/chaiscript_common.hpp" #include "register_function.hpp"
namespace chaiscript namespace chaiscript
{ {
@@ -525,14 +501,15 @@ namespace chaiscript
opers_arithmetic_pod(m); opers_arithmetic_pod(m);
m.add(fun(&ChaiScript::version_major), "version_major");
m.add(fun(&ChaiScript::version_minor), "version_minor"); m.add(fun(&Build_Info::version_major), "version_major");
m.add(fun(&ChaiScript::version_patch), "version_patch"); m.add(fun(&Build_Info::version_minor), "version_minor");
m.add(fun(&ChaiScript::version), "version"); m.add(fun(&Build_Info::version_patch), "version_patch");
m.add(fun(&ChaiScript::compiler_version), "compiler_version"); m.add(fun(&Build_Info::version), "version");
m.add(fun(&ChaiScript::compiler_name), "compiler_name"); m.add(fun(&Build_Info::compiler_version), "compiler_version");
m.add(fun(&ChaiScript::compiler_id), "compiler_id"); m.add(fun(&Build_Info::compiler_name), "compiler_name");
m.add(fun(&ChaiScript::debug_build), "debug_build"); m.add(fun(&Build_Info::compiler_id), "compiler_id");
m.add(fun(&Build_Info::debug_build), "debug_build");
m.add(fun(&print), "print_string"); m.add(fun(&print), "print_string");

View File

@@ -43,7 +43,6 @@ namespace chaiscript
namespace namespace
{ {
/// Helper lookup to get the name of each node type /// Helper lookup to get the name of each node type
const char *ast_node_type_to_string(AST_Node_Type ast_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", 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; 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(); return ss.str();
} }
virtual ~eval_error() noexcept {} virtual ~eval_error() noexcept = default;
private: private:

View File

@@ -292,7 +292,7 @@ namespace chaiscript
// attempt to load the stdlib // attempt to load the stdlib
load_module("chaiscript_stdlib-" + version()); load_module("chaiscript_stdlib-" + Build_Info::version());
build_eval_system(ModulePtr()); 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 std::string get_type_name(const Type_Info &ti) const
{ {
return m_engine.get_type_name(ti); return m_engine.get_type_name(ti);
@@ -580,7 +533,7 @@ namespace chaiscript
{ {
std::vector<exception::load_module_error> errors; std::vector<exception::load_module_error> errors;
std::string version_stripped_name = t_module_name; 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) if (version_pos != std::string::npos)
{ {
version_stripped_name.erase(version_pos); version_stripped_name.erase(version_pos);

View File

@@ -12,9 +12,8 @@
#include <utility> #include <utility>
#include <vector> #include <vector>
#include "../chaiscript.hpp" #include "../language/chaiscript_common.hpp"
#include "../dispatchkit/proxy_functions.hpp" #include "../dispatchkit/register_function.hpp"
#include "../dispatchkit/type_info.hpp"
#include "../dispatchkit/operators.hpp" #include "../dispatchkit/operators.hpp"