diff options
author | Rémi Verschelde <remi@verschelde.fr> | 2016-03-01 19:05:00 +0100 |
---|---|---|
committer | Rémi Verschelde <remi@verschelde.fr> | 2016-03-01 19:05:00 +0100 |
commit | d0c95ec19136fe60af17ce46ab0d9fa076c480f8 (patch) | |
tree | f1423d79df9873e7601d1c765310d961f9173f60 /modules/gdscript | |
parent | 46bfcd350745d3053a0cab2985d73baae0a4a88d (diff) | |
parent | 002ff3cc9a6479695034b556f15ef4d9fa4bc6fe (diff) |
Merge pull request #3894 from akien-mga/pr-revert-3814
Revert "Merge pull request #3814 from est31/iterators_for_for"
Diffstat (limited to 'modules/gdscript')
-rw-r--r-- | modules/gdscript/gd_functions.cpp | 83 | ||||
-rw-r--r-- | modules/gdscript/gd_functions.h | 1 | ||||
-rw-r--r-- | modules/gdscript/gd_parser.cpp | 14 |
3 files changed, 0 insertions, 98 deletions
diff --git a/modules/gdscript/gd_functions.cpp b/modules/gdscript/gd_functions.cpp index e5689d8865..9b7d8eeac4 100644 --- a/modules/gdscript/gd_functions.cpp +++ b/modules/gdscript/gd_functions.cpp @@ -32,7 +32,6 @@ #include "reference.h" #include "gd_script.h" #include "func_ref.h" -#include "range_iterator.h" #include "os/os.h" #include "variant_parser.h" #include "io/marshalls.h" @@ -99,7 +98,6 @@ const char *GDFunctions::get_func_name(Function p_func) { "var2bytes", "bytes2var", "range", - "xrange", "load", "inst2dict", "dict2inst", @@ -818,81 +816,6 @@ void GDFunctions::call(Function p_func,const Variant **p_args,int p_arg_count,Va } } break; - case GEN_XRANGE: { - - switch(p_arg_count) { - case 0: { - r_error.error=Variant::CallError::CALL_ERROR_TOO_FEW_ARGUMENTS; - r_error.argument=1; - } break; - case 1: { - - VALIDATE_ARG_NUM(0); - - int count=*p_args[0]; - - Ref<RangeIterator> itr = Ref<RangeIterator>( memnew(RangeIterator) ); - if (!*itr) { - ERR_EXPLAIN("Couldn't allocate iterator!"); - r_error.error=Variant::CallError::CALL_ERROR_INVALID_METHOD; - ERR_FAIL(); - } - (*itr)->set_range(count); - r_ret=Variant(itr); - return; - } break; - case 2: { - - VALIDATE_ARG_NUM(0); - VALIDATE_ARG_NUM(1); - - int from=*p_args[0]; - int to=*p_args[1]; - - Ref<RangeIterator> itr = Ref<RangeIterator>( memnew(RangeIterator) ); - if (!*itr) { - ERR_EXPLAIN("Couldn't allocate iterator!"); - r_error.error=Variant::CallError::CALL_ERROR_INVALID_METHOD; - ERR_FAIL(); - } - (*itr)->set_range(from, to); - r_ret=Variant(itr); - return; - } break; - case 3: { - - VALIDATE_ARG_NUM(0); - VALIDATE_ARG_NUM(1); - VALIDATE_ARG_NUM(2); - - int from=*p_args[0]; - int to=*p_args[1]; - int incr=*p_args[2]; - - if (incr==0) { - ERR_EXPLAIN("step argument is zero!"); - r_error.error=Variant::CallError::CALL_ERROR_INVALID_METHOD; - ERR_FAIL(); - } - - Ref<RangeIterator> itr = Ref<RangeIterator>( memnew(RangeIterator) ); - if (!*itr) { - ERR_EXPLAIN("Couldn't allocate iterator!"); - r_error.error=Variant::CallError::CALL_ERROR_INVALID_METHOD; - ERR_FAIL(); - } - (*itr)->set_range(from, to, incr); - r_ret=Variant(itr); - return; - } break; - default: { - - r_error.error=Variant::CallError::CALL_ERROR_TOO_MANY_ARGUMENTS; - r_error.argument=3; - } break; - } - - } break; case RESOURCE_LOAD: { VALIDATE_ARG_COUNT(1); if (p_args[0]->get_type()!=Variant::STRING) { @@ -1510,12 +1433,6 @@ MethodInfo GDFunctions::get_info(Function p_func) { mi.return_val.type=Variant::ARRAY; return mi; } break; - case GEN_XRANGE: { - - MethodInfo mi("xrange",PropertyInfo(Variant::NIL,"...")); - mi.return_val.type=Variant::OBJECT; - return mi; - } break; case RESOURCE_LOAD: { MethodInfo mi("load",PropertyInfo(Variant::STRING,"path")); diff --git a/modules/gdscript/gd_functions.h b/modules/gdscript/gd_functions.h index 3a993cc038..8c88472567 100644 --- a/modules/gdscript/gd_functions.h +++ b/modules/gdscript/gd_functions.h @@ -92,7 +92,6 @@ public: VAR_TO_BYTES, BYTES_TO_VAR, GEN_RANGE, - GEN_XRANGE, RESOURCE_LOAD, INST2DICT, DICT2INST, diff --git a/modules/gdscript/gd_parser.cpp b/modules/gdscript/gd_parser.cpp index 4b0164d8a2..4f572b7b6e 100644 --- a/modules/gdscript/gd_parser.cpp +++ b/modules/gdscript/gd_parser.cpp @@ -1779,20 +1779,6 @@ void GDParser::_parse_block(BlockNode *p_block,bool p_static) { return; } - // Little optimisation for common usage "for i in range(...):": - // don't create and initialize a possibly huge array as range() - // would do, but instead create an iterator using xrange() - if (container->type == Node::TYPE_OPERATOR) { - OperatorNode *op = static_cast<OperatorNode *>(container); - if (op->arguments.size() > 0 && - op->arguments[0]->type == Node::TYPE_BUILT_IN_FUNCTION) { - BuiltInFunctionNode *c = static_cast<BuiltInFunctionNode *>(op->arguments[0]); - if (c->function == GDFunctions::GEN_RANGE) { - c->function = GDFunctions::GEN_XRANGE; - } - } - } - ControlFlowNode *cf_for = alloc_node<ControlFlowNode>(); cf_for->cf_type=ControlFlowNode::CF_FOR; |