MCPcopy Create free account
hub / github.com/covscript/covscript / create_subcontext

Function create_subcontext

sources/covscript.cpp:571–624  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

569 }
570
571 context_t create_subcontext(const context_t &cxt)
572 {
573 cs_impl::init_extensions();
574 context_t context = std::make_shared<context_type>();
575 context->instance = std::make_shared<instance_type>(context, cxt->instance->fiber_sp, current_process->stack_size);
576 context->compiler = cxt->compiler;
577 context->cmd_args = cxt->cmd_args;
578 // Init Runtime
579 context->instance->storage
580 // Internal Types
581 .add_buildin_type("char", []() -> var
582 { return var::make<char>('\0'); }, typeid(char), cs_impl::char_ext)
583 .add_buildin_type("number", []() -> var
584 { return var::make<numeric>(0); }, typeid(numeric))
585 .add_buildin_type("integer", []() -> var
586 { return var::make<numeric>(0); }, typeid(numeric))
587 .add_buildin_type("float", []() -> var
588 { return var::make<numeric>(0.0); }, typeid(numeric))
589 .add_buildin_type("boolean", []() -> var
590 { return var::make<boolean>(true); }, typeid(boolean))
591 .add_buildin_type("pointer", []() -> var
592 { return var::make<pointer>(null_pointer); }, typeid(pointer))
593 .add_buildin_type("string", []() -> var
594 { return var::make<string>(); }, typeid(string), cs_impl::string_ext)
595 .add_buildin_type("list", []() -> var
596 { return var::make<list>(); }, typeid(list), cs_impl::list_ext)
597 .add_buildin_type("array", []() -> var
598 { return var::make<array>(); }, typeid(array), cs_impl::array_ext)
599 .add_buildin_type("pair", []() -> var
600 { return var::make<pair>(numeric(0), numeric(0)); }, typeid(pair), cs_impl::pair_ext)
601 .add_buildin_type("hash_set", []() -> var
602 { return var::make<hash_set>(); }, typeid(hash_set), cs_impl::hash_set_ext)
603 .add_buildin_type("hash_map", []() -> var
604 { return var::make<hash_map>(); }, typeid(hash_map), cs_impl::hash_map_ext)
605 // Context
606 .add_buildin_var("context", var::make_constant<context_t>(context))
607 // Add Internal Functions to storage
608 .add_buildin_var("range", var::make_protect<callable>(range, callable::types::request_fold))
609 .add_buildin_var("to_integer", make_cni(to_integer, true))
610 .add_buildin_var("to_string", make_cni(to_string, true))
611 .add_buildin_var("type", make_cni(type, true))
612 .add_buildin_var("clone", make_cni(clone))
613 .add_buildin_var("move", make_cni(move))
614 .add_buildin_var("swap", make_cni(swap, true))
615 .add_buildin_var("is_a", make_cni(is_a, true))
616 // Add extensions to storage
617 .add_buildin_var("exception", make_namespace(cs_impl::except_ext))
618 .add_buildin_var("iostream", make_namespace(cs_impl::iostream_ext))
619 .add_buildin_var("system", make_namespace(cs_impl::system_ext))
620 .add_buildin_var("fiber", make_namespace(cs_impl::fiber_ext))
621 .add_buildin_var("runtime", make_namespace(cs_impl::runtime_ext))
622 .add_buildin_var("math", make_namespace(cs_impl::math_ext));
623 return context;
624 }
625
626 void collect_garbage()
627 {

Callers 2

source_importMethod · 0.85
importMethod · 0.85

Calls 4

init_extensionsFunction · 0.85
make_cniFunction · 0.85
make_namespaceFunction · 0.85
numericFunction · 0.50

Tested by

no test coverage detected