diff --git a/CHANGELOG.md b/CHANGELOG.md index 64b4a15..8f26517 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,7 @@ ### v0.1.5 +* Added state 64 bit numeric value support #39 * Changed standard namespace to std from sdk #34 * New read command #33 * New hostname command #18 diff --git a/duckscript/src/types/runtime.rs b/duckscript/src/types/runtime.rs index cde5dd1..c5905a0 100644 --- a/duckscript/src/types/runtime.rs +++ b/duckscript/src/types/runtime.rs @@ -24,6 +24,10 @@ pub enum StateValue { Number32Bit(i32), /// unsigned number UnsignedNumber32Bit(u32), + /// signed number + Number64Bit(i64), + /// unsigned number + UnsignedNumber64Bit(u64), /// textual value String(String), /// list diff --git a/duckscript_sdk/src/sdk/std/collections/range/mod.rs b/duckscript_sdk/src/sdk/std/collections/range/mod.rs index e80e3ef..afba1dd 100755 --- a/duckscript_sdk/src/sdk/std/collections/range/mod.rs +++ b/duckscript_sdk/src/sdk/std/collections/range/mod.rs @@ -43,7 +43,7 @@ impl Command for CommandImpl { if arguments.len() < 2 { CommandResult::Error("Invalid arguments provided.".to_string()) } else { - let start: i32 = match arguments[0].parse() { + let start: i64 = match arguments[0].parse() { Ok(value) => value, Err(_) => { return CommandResult::Error( @@ -52,7 +52,7 @@ impl Command for CommandImpl { } }; - let end: i32 = match arguments[1].parse() { + let end: i64 = match arguments[1].parse() { Ok(value) => value, Err(_) => { return CommandResult::Error( @@ -65,7 +65,7 @@ impl Command for CommandImpl { CommandResult::Error("Invalid arguments provided, range start value cannot be bigger than the range end value.".to_string()) } else { let array: Vec<_> = (start..end) - .map(|value| StateValue::Number32Bit(value)) + .map(|value| StateValue::Number64Bit(value)) .collect(); let key = put_handle(state, StateValue::List(array)); diff --git a/duckscript_sdk/src/sdk/std/collections/range/mod_test.rs b/duckscript_sdk/src/sdk/std/collections/range/mod_test.rs index 4b77a99..249dc96 100644 --- a/duckscript_sdk/src/sdk/std/collections/range/mod_test.rs +++ b/duckscript_sdk/src/sdk/std/collections/range/mod_test.rs @@ -65,7 +65,7 @@ fn run_positive() { for index in 5..10 { match list.remove(0) { - StateValue::Number32Bit(value) => assert_eq!(value, index), + StateValue::Number64Bit(value) => assert_eq!(value, index), _ => panic!("Invalid handle value."), }; } @@ -90,7 +90,7 @@ fn run_negative() { for index in -5..10 { match list.remove(0) { - StateValue::Number32Bit(value) => assert_eq!(value, index), + StateValue::Number64Bit(value) => assert_eq!(value, index), _ => panic!("Invalid handle value."), }; } diff --git a/duckscript_sdk/src/sdk/std/forin/mod.rs b/duckscript_sdk/src/sdk/std/forin/mod.rs index 07b0c94..933ee1e 100755 --- a/duckscript_sdk/src/sdk/std/forin/mod.rs +++ b/duckscript_sdk/src/sdk/std/forin/mod.rs @@ -215,8 +215,11 @@ fn get_next_iteration( StateValue::UnsignedNumber(ref value) => Some(value.to_string()), StateValue::Number32Bit(ref value) => Some(value.to_string()), StateValue::UnsignedNumber32Bit(ref value) => Some(value.to_string()), + StateValue::Number64Bit(ref value) => Some(value.to_string()), + StateValue::UnsignedNumber64Bit(ref value) => Some(value.to_string()), StateValue::String(ref value) => Some(value.to_string()), - _ => None, + StateValue::List(_) => None, + StateValue::SubState(_) => None, } } else { None