Remove little used Param_List_Builder
This commit is contained in:
parent
702b5fdba1
commit
db0e342a96
@ -28,37 +28,6 @@ namespace chaiscript
|
||||
|
||||
namespace dispatch
|
||||
{
|
||||
/**
|
||||
* Helper for building a list of parameters for calling a Proxy_Function
|
||||
* it does automatic conversion to Boxed_Value types via operator<<
|
||||
*
|
||||
* example usage:
|
||||
* Boxed_Value retval = dispatch(dispatchengine.get_function("+"),
|
||||
* chaiscript::Param_List_Builder() << 5 << 6);
|
||||
*/
|
||||
struct Param_List_Builder
|
||||
{
|
||||
Param_List_Builder &operator<<(const Boxed_Value &so)
|
||||
{
|
||||
objects.push_back(so);
|
||||
return *this;
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
Param_List_Builder &operator<<(T t)
|
||||
{
|
||||
objects.push_back(Boxed_Value(t));
|
||||
return *this;
|
||||
}
|
||||
|
||||
operator const std::vector<Boxed_Value> &() const
|
||||
{
|
||||
return objects;
|
||||
}
|
||||
|
||||
std::vector<Boxed_Value> objects;
|
||||
};
|
||||
|
||||
/**
|
||||
* Pure virtual base class for all Proxy_Function implementations
|
||||
* Proxy_Functions are a type erasure of type safe C++
|
||||
|
@ -182,11 +182,11 @@ namespace chaiscript
|
||||
AST_Node(t_ast_node_text, t_id, t_fname, t_start_line, t_start_col, t_end_line, t_end_col) { }
|
||||
virtual ~Fun_Call_AST_Node() {}
|
||||
virtual Boxed_Value eval_internal(chaiscript::detail::Dispatch_Engine &t_ss){
|
||||
dispatch::Param_List_Builder plb;
|
||||
std::vector<Boxed_Value> params;
|
||||
|
||||
if ((this->children.size() > 1) && (this->children[1]->identifier == AST_Node_Type::Arg_List)) {
|
||||
for (size_t i = 0; i < this->children[1]->children.size(); ++i) {
|
||||
plb << this->children[1]->children[i]->eval(t_ss);
|
||||
params.push_back(this->children[1]->children[i]->eval(t_ss));
|
||||
}
|
||||
}
|
||||
|
||||
@ -198,7 +198,7 @@ namespace chaiscript
|
||||
|
||||
try {
|
||||
t_ss.set_stack(new_stack);
|
||||
const Boxed_Value &retval = (*boxed_cast<const Const_Proxy_Function &>(fn))(plb);
|
||||
const Boxed_Value &retval = (*boxed_cast<const Const_Proxy_Function &>(fn))(params);
|
||||
t_ss.set_stack(prev_stack);
|
||||
return retval;
|
||||
}
|
||||
@ -230,16 +230,16 @@ namespace chaiscript
|
||||
AST_Node(t_ast_node_text, t_id, t_fname, t_start_line, t_start_col, t_end_line, t_end_col) { }
|
||||
virtual ~Inplace_Fun_Call_AST_Node() {}
|
||||
virtual Boxed_Value eval_internal(chaiscript::detail::Dispatch_Engine &t_ss){
|
||||
dispatch::Param_List_Builder plb;
|
||||
std::vector<Boxed_Value> params;
|
||||
|
||||
if ((this->children.size() > 1) && (this->children[1]->identifier == AST_Node_Type::Arg_List)) {
|
||||
for (size_t i = 0; i < this->children[1]->children.size(); ++i) {
|
||||
plb << this->children[1]->children[i]->eval(t_ss);
|
||||
params.push_back(this->children[1]->children[i]->eval(t_ss));
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
return (*boxed_cast<const Const_Proxy_Function &>(this->children[0]->eval(t_ss)))(plb);
|
||||
return (*boxed_cast<const Const_Proxy_Function &>(this->children[0]->eval(t_ss)))(params);
|
||||
}
|
||||
catch(const exception::dispatch_error &e){
|
||||
throw exception::eval_error(std::string(e.what()) + " with function '" + this->children[0]->text + "'", e.parameters, t_ss);
|
||||
@ -458,12 +458,12 @@ namespace chaiscript
|
||||
|
||||
if (this->children.size() > 1) {
|
||||
for (size_t i = 2; i < this->children.size(); i+=2) {
|
||||
dispatch::Param_List_Builder plb;
|
||||
plb << retval;
|
||||
std::vector<Boxed_Value> params;
|
||||
params.push_back(retval);
|
||||
|
||||
if (this->children[i]->children.size() > 1) {
|
||||
for (size_t j = 0; j < this->children[i]->children[1]->children.size(); ++j) {
|
||||
plb << this->children[i]->children[1]->children[j]->eval(t_ss);
|
||||
params.push_back(this->children[i]->children[1]->children[j]->eval(t_ss));
|
||||
}
|
||||
}
|
||||
|
||||
@ -480,7 +480,7 @@ namespace chaiscript
|
||||
|
||||
try {
|
||||
t_ss.set_stack(new_stack);
|
||||
retval = t_ss.call_function(fun_name, plb);
|
||||
retval = t_ss.call_function(fun_name, params);
|
||||
t_ss.set_stack(prev_stack);
|
||||
}
|
||||
catch(const exception::dispatch_error &e){
|
||||
|
Loading…
x
Reference in New Issue
Block a user