// This file is distributed under the BSD License. // See "license.txt" for details. // Copyright 2009-2012, Jonathan Turner (jonathan@emptycrate.com) // and Jason Turner (jason@emptycrate.com) // http://www.chaiscript.com #ifndef CHAISCRIPT_STDLIB_HPP_ #define CHAISCRIPT_STDLIB_HPP_ #include #include #include #include #include #include "chaiscript_defines.hpp" #include "language/chaiscript_common.hpp" #include "dispatchkit/function_call.hpp" //#include "dispatchkit/dispatchkit.hpp" #include "dispatchkit/bootstrap.hpp" #include "dispatchkit/bootstrap_stl.hpp" #include "dispatchkit/operators.hpp" //#include "dispatchkit/boxed_value.hpp" #include "dispatchkit/register_function.hpp" #include "language/chaiscript_prelude.hpp" #include "utility/json_wrap.hpp" #ifndef CHAISCRIPT_NO_THREADS #include #endif /// @file /// /// This file generates the standard library that normal ChaiScript usage requires. namespace chaiscript { class Std_Lib { public: [[nodiscard]] static ModulePtr library() { auto lib = std::make_shared(); bootstrap::Bootstrap::bootstrap(*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 bootstrap::standard_library::future_type>("future", *lib); lib->add(chaiscript::fun( [](const std::function &t_func) { return std::async(std::launch::async, t_func); }), "async"); #endif json_wrap::library(*lib); lib->eval(ChaiScript_Prelude::chaiscript_prelude() /*, "standard prelude"*/); return lib; } }; } // namespace chaiscript #endif