Reorg some of the bootstrapping that was occuring in wesley
This commit is contained in:
@@ -460,6 +460,11 @@ void bootstrap_pod_type(BoxedCPP_System &s, const std::string &name)
|
|||||||
register_function(s, &to_string<T>, "to_string");
|
register_function(s, &to_string<T>, "to_string");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void print(const std::string &s)
|
||||||
|
{
|
||||||
|
std::cout << s << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
void bootstrap(BoxedCPP_System &s)
|
void bootstrap(BoxedCPP_System &s)
|
||||||
{
|
{
|
||||||
s.register_type<void>("void");
|
s.register_type<void>("void");
|
||||||
@@ -488,6 +493,11 @@ void bootstrap(BoxedCPP_System &s)
|
|||||||
add_oper_add<std::string>(s);
|
add_oper_add<std::string>(s);
|
||||||
add_oper_add_equals <std::string>(s);
|
add_oper_add_equals <std::string>(s);
|
||||||
|
|
||||||
|
register_function(s, &print, "print");
|
||||||
|
|
||||||
|
s.register_function(boost::function<void ()>(boost::bind(&dump_system, boost::ref(s))), "dump_system");
|
||||||
|
s.register_function(boost::function<void (Boxed_Value)>(boost::bind(&dump_object, _1)), "dump_object");
|
||||||
|
|
||||||
|
|
||||||
register_function(s, &bool_and<bool, bool>, "&&");
|
register_function(s, &bool_and<bool, bool>, "&&");
|
||||||
register_function(s, &bool_or<bool, bool>, "||");
|
register_function(s, &bool_or<bool, bool>, "||");
|
||||||
|
@@ -30,11 +30,6 @@ struct Test
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
//A function that prints any string passed to it
|
|
||||||
void print(const std::string &s)
|
|
||||||
{
|
|
||||||
std::cout << "Printed: " << s << std::endl;
|
|
||||||
}
|
|
||||||
|
|
||||||
Boxed_Value named_func_call(BoxedCPP_System &ss,
|
Boxed_Value named_func_call(BoxedCPP_System &ss,
|
||||||
const std::string &nametocall, const std::vector<Boxed_Value> ¶ms)
|
const std::string &nametocall, const std::vector<Boxed_Value> ¶ms)
|
||||||
@@ -108,7 +103,6 @@ int main()
|
|||||||
|
|
||||||
//Register a new function, this one with typing for us, so we don't have to ubox anything
|
//Register a new function, this one with typing for us, so we don't have to ubox anything
|
||||||
//right here
|
//right here
|
||||||
register_function(ss, &print, "print");
|
|
||||||
|
|
||||||
//Now we have a print method, let's try to print out the earlier example:
|
//Now we have a print method, let's try to print out the earlier example:
|
||||||
//so, we dispatch the to_string and pass its result as a param to "print"
|
//so, we dispatch the to_string and pass its result as a param to "print"
|
||||||
|
@@ -8,22 +8,6 @@
|
|||||||
|
|
||||||
//A function that prints any string passed to it
|
//A function that prints any string passed to it
|
||||||
|
|
||||||
template <typename T>
|
|
||||||
void print(const T &t)
|
|
||||||
{
|
|
||||||
std::cout << t << std::endl;
|
|
||||||
}
|
|
||||||
|
|
||||||
template<> void print<bool>(const bool &t)
|
|
||||||
{
|
|
||||||
if (t) {
|
|
||||||
std::cout << "true" << std::endl;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
std::cout << "false" << std::endl;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
template <typename Eval_Engine>
|
template <typename Eval_Engine>
|
||||||
class Wesley_System {
|
class Wesley_System {
|
||||||
Lexer lexer;
|
Lexer lexer;
|
||||||
@@ -203,17 +187,6 @@ public:
|
|||||||
bootstrap_vector<std::vector<Boxed_Value> >(ss, "Vector");
|
bootstrap_vector<std::vector<Boxed_Value> >(ss, "Vector");
|
||||||
//dump_system(ss);
|
//dump_system(ss);
|
||||||
|
|
||||||
//Register a new function, this one with typing for us, so we don't have to ubox anything
|
|
||||||
//right here
|
|
||||||
register_function(ss, &print<bool>, "print");
|
|
||||||
register_function(ss, &print<std::string>, "print");
|
|
||||||
register_function(ss, &print<double>, "print");
|
|
||||||
register_function(ss, &print<size_t>, "print");
|
|
||||||
register_function(ss, &print<int>, "print");
|
|
||||||
|
|
||||||
ss.register_function(boost::function<void ()>(boost::bind(&dump_system, boost::ref(ss))), "dump_system");
|
|
||||||
ss.register_function(boost::function<void (Boxed_Value)>(boost::bind(&dump_object, _1)), "dump_object");
|
|
||||||
|
|
||||||
ss.register_function(boost::shared_ptr<Proxy_Function>(
|
ss.register_function(boost::shared_ptr<Proxy_Function>(
|
||||||
new Dynamic_Proxy_Function(boost::bind(&Wesley_System<Eval_Engine>::eval, boost::ref(*this), _1), 1)), "eval");
|
new Dynamic_Proxy_Function(boost::bind(&Wesley_System<Eval_Engine>::eval, boost::ref(*this), _1), 1)), "eval");
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user