Untangle chaiscript_engine from the rest of it
This commit is contained in:
@@ -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));
|
||||||
|
@@ -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);
|
||||||
|
@@ -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");
|
||||||
|
@@ -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:
|
||||||
|
|
||||||
|
@@ -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);
|
||||||
|
@@ -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"
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user