MCPcopy Create free account
hub / github.com/ChaiScript/ChaiScript / bootstrap

Method bootstrap

include/chaiscript/dispatchkit/bootstrap.hpp:338–586  ·  view source on GitHub ↗

\brief perform all common bootstrap functions for std::string, void and POD types \param[in,out] m Module to add bootstrapped functions to \returns passed in Module

Source from the content-addressed store, hash-verified

336 /// \param[in,out] m Module to add bootstrapped functions to
337 /// \returns passed in Module
338 static void bootstrap(Module& m)
339 {
340 m.add(user_type<void>(), "void");
341 m.add(user_type<bool>(), "bool");
342 m.add(user_type<Boxed_Value>(), "Object");
343 m.add(user_type<Boxed_Number>(), "Number");
344 m.add(user_type<Proxy_Function>(), "Function");
345 m.add(user_type<dispatch::Assignable_Proxy_Function>(), "Assignable_Function");
346 m.add(user_type<std::exception>(), "exception");
347
348 m.add(fun(&dispatch::Proxy_Function_Base::get_arity), "get_arity");
349 m.add(fun(&dispatch::Proxy_Function_Base::operator==), "==");
350
351
352 m.add(fun(return_boxed_value_vector(&dispatch::Proxy_Function_Base::get_param_types)), "get_param_types");
353 m.add(fun(return_boxed_value_vector(&dispatch::Proxy_Function_Base::get_contained_functions)), "get_contained_functions");
354
355 m.add(fun([](const std::exception &e){ return std::string(e.what()); }), "what");
356
357 m.add(user_type<std::out_of_range>(), "out_of_range");
358 m.add(user_type<std::logic_error>(), "logic_error");
359 m.add(chaiscript::base_class<std::exception, std::logic_error>());
360 m.add(chaiscript::base_class<std::logic_error, std::out_of_range>());
361 m.add(chaiscript::base_class<std::exception, std::out_of_range>());
362
363 m.add(user_type<std::runtime_error>(), "runtime_error");
364 m.add(chaiscript::base_class<std::exception, std::runtime_error>());
365
366 m.add(constructor<std::runtime_error (const std::string &)>(), "runtime_error");
367
368 m.add(user_type<dispatch::Dynamic_Object>(), "Dynamic_Object");
369 m.add(constructor<dispatch::Dynamic_Object (const std::string &)>(), "Dynamic_Object");
370 m.add(constructor<dispatch::Dynamic_Object ()>(), "Dynamic_Object");
371 m.add(fun(&dispatch::Dynamic_Object::get_type_name), "get_type_name");
372 m.add(fun(&dispatch::Dynamic_Object::get_attrs), "get_attrs");
373 m.add(fun(&dispatch::Dynamic_Object::set_explicit), "set_explicit");
374 m.add(fun(&dispatch::Dynamic_Object::is_explicit), "is_explicit");
375 m.add(fun(&dispatch::Dynamic_Object::has_attr), "has_attr");
376
377 m.add(fun(static_cast<Boxed_Value & (dispatch::Dynamic_Object::*)(const std::string &)>(&dispatch::Dynamic_Object::get_attr)), "get_attr");
378 m.add(fun(static_cast<const Boxed_Value & (dispatch::Dynamic_Object::*)(const std::string &) const>(&dispatch::Dynamic_Object::get_attr)), "get_attr");
379
380 m.add(fun(static_cast<Boxed_Value & (dispatch::Dynamic_Object::*)(const std::string &)>(&dispatch::Dynamic_Object::method_missing)), "method_missing");
381 m.add(fun(static_cast<const Boxed_Value & (dispatch::Dynamic_Object::*)(const std::string &) const>(&dispatch::Dynamic_Object::method_missing)), "method_missing");
382
383 m.add(fun(static_cast<Boxed_Value & (dispatch::Dynamic_Object::*)(const std::string &)>(&dispatch::Dynamic_Object::get_attr)), "[]");
384 m.add(fun(static_cast<const Boxed_Value & (dispatch::Dynamic_Object::*)(const std::string &) const>(&dispatch::Dynamic_Object::get_attr)), "[]");
385
386 m.eval(R"chaiscript(
387 def Dynamic_Object::clone() {
388 auto &new_o = Dynamic_Object(this.get_type_name());
389 for_each(this.get_attrs(), fun[new_o](x) { new_o.get_attr(x.first) = x.second; } );
390 new_o;
391 }
392
393 def `=`(Dynamic_Object lhs, Dynamic_Object rhs) : lhs.get_type_name() == rhs.get_type_name()
394 {
395 for_each(rhs.get_attrs(), fun[lhs](x) { lhs.get_attr(x.first) = clone(x.second); } );

Callers

nothing calls this directly

Calls 10

funFunction · 0.85
stringClass · 0.85
addMethod · 0.45
whatMethod · 0.45
evalMethod · 0.45
assignMethod · 0.45
beginMethod · 0.45
endMethod · 0.45
get_childrenMethod · 0.45

Tested by

no test coverage detected