From 944abdf9844356e5263d561c20484fd59c68ced7 Mon Sep 17 00:00:00 2001 From: Masato Imai Date: Tue, 26 Jul 2022 14:04:42 +0900 Subject: [PATCH] =?UTF-8?q?=E9=85=8D=E5=88=97=E3=81=AE=E9=95=B7=E3=81=95?= =?UTF-8?q?=E3=82=92=E5=8F=96=E5=BE=97=E3=81=99=E3=82=8B=E9=96=A2=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/gpsl/external_function.rs | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/src/gpsl/external_function.rs b/src/gpsl/external_function.rs index 3fcda6f..6816afb 100644 --- a/src/gpsl/external_function.rs +++ b/src/gpsl/external_function.rs @@ -38,12 +38,27 @@ pub const STD_FUNC: fn( ) -> ExternalFuncReturn = |name, args, accept, reject, data| { let name = name.as_str(); match name { + "length" => { + let vec = args[0].clone(); + match vec { + Variable::Vec { value, .. } => ExternalFuncReturn { + status: ExternalFuncStatus::SUCCESS, + value: Some(Variable::Number { + value: value.len() as i64, + }), + }, + _ => ExternalFuncReturn { + status: ExternalFuncStatus::ERROR, + value: None, + }, + } + } "push" => { let mut args = args; - let mut vec = args[0].clone(); + let vec = args[0].clone(); match vec { Variable::Vec { - value: mut value, + mut value, gpsl_type, } => { args.remove(0);