From abf38f366d57872f0a89c2b829d987738b5fffdf Mon Sep 17 00:00:00 2001 From: lyon Date: Fri, 7 Jan 2022 15:47:32 +0800 Subject: [PATCH] add new lib file --- .../PikaStdLib/PikaStdLib_RangeObj.c | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 bsp/simulation-keil/pikascript/pikascript-lib/PikaStdLib/PikaStdLib_RangeObj.c diff --git a/bsp/simulation-keil/pikascript/pikascript-lib/PikaStdLib/PikaStdLib_RangeObj.c b/bsp/simulation-keil/pikascript/pikascript-lib/PikaStdLib/PikaStdLib_RangeObj.c new file mode 100644 index 000000000..735ef5751 --- /dev/null +++ b/bsp/simulation-keil/pikascript/pikascript-lib/PikaStdLib/PikaStdLib_RangeObj.c @@ -0,0 +1,31 @@ +#include "PikaObj.h" + +Arg* PikaStdLib_RangeObj___iter__(PikaObj* self) { + return arg_setPtr(NULL, "", TYPE_OBJECT, self); + ; +} +Arg* PikaStdLib_RangeObj___next__(PikaObj* self) { + int a1 = obj_getInt(self, "a1"); + int a2 = obj_getInt(self, "a2"); + int a3 = obj_getInt(self, "a3"); + int start = 0; + int end = 0; + int foot = 1; + /* only start and end */ + if (-999999999 == a3) { + start = a1; + end = a2; + } + /* start */ + int iter_i = obj_getInt(self, "iter_i"); + /* iter_i is not inited */ + if (-999999999 == iter_i) { + iter_i = start; + } + /* exit */ + if (iter_i >= end) { + return arg_setNull(NULL); + } + obj_setInt(self, "iter_i", iter_i + foot); + return arg_setInt(NULL, "", iter_i); +} \ No newline at end of file