From 9a26302e1ede6904ee2df22d5e7eeb6270b73bb3 Mon Sep 17 00:00:00 2001 From: John Kerl Date: Wed, 12 May 2021 22:45:16 -0400 Subject: [PATCH] Disposition matrices/vectors for null type --- go/src/types/mlrval_functions_base.go | 10 ++ go/src/types/mlrval_functions_bits.go | 128 ++++++++++--------- go/src/types/mlrval_functions_collections.go | 4 +- 3 files changed, 80 insertions(+), 62 deletions(-) diff --git a/go/src/types/mlrval_functions_base.go b/go/src/types/mlrval_functions_base.go index f3790894b..d2d7f997c 100644 --- a/go/src/types/mlrval_functions_base.go +++ b/go/src/types/mlrval_functions_base.go @@ -91,6 +91,11 @@ func _absn1(input1 *Mlrval) *Mlrval { return MLRVAL_ABSENT } +// Return zero (unary) +func _zero1(input1 *Mlrval) *Mlrval { + return MlrvalPointerFromInt(0) +} + // Return null (unary) func _null1(input1 *Mlrval) *Mlrval { return MLRVAL_NULL @@ -127,6 +132,11 @@ func _void(input1, input2 *Mlrval) *Mlrval { return MLRVAL_VOID } +// Return 0 (binary) +func _zero2(input1 *Mlrval) *Mlrval { + return MlrvalPointerFromInt(0) +} + // Return first argument (binary) func _1___(input1, input2 *Mlrval) *Mlrval { return input1 diff --git a/go/src/types/mlrval_functions_bits.go b/go/src/types/mlrval_functions_bits.go index b9dd47ceb..be58549a8 100644 --- a/go/src/types/mlrval_functions_bits.go +++ b/go/src/types/mlrval_functions_bits.go @@ -10,6 +10,7 @@ func bitwise_not_i_i(input1 *Mlrval) *Mlrval { var bitwise_not_dispositions = [MT_DIM]UnaryFunc{ /*ERROR */ _erro1, /*ABSENT */ _absn1, + /*NULL */ _null1, /*VOID */ _void1, /*STRING */ _erro1, /*INT */ bitwise_not_i_i, @@ -48,6 +49,7 @@ func bitcount_i_i(input1 *Mlrval) *Mlrval { var bitcount_dispositions = [MT_DIM]UnaryFunc{ /*ERROR */ _erro1, /*ABSENT */ _absn1, + /*NULL */ _zero1, /*VOID */ _void1, /*STRING */ _erro1, /*INT */ bitcount_i_i, @@ -69,16 +71,17 @@ func bitwise_and_i_ii(input1, input2 *Mlrval) *Mlrval { } var bitwise_and_dispositions = [MT_DIM][MT_DIM]BinaryFunc{ - // ERROR ABSENT VOID STRING INT FLOAT BOOL ARRAY MAP - /*ERROR */ {_erro, _erro, _erro, _erro, _erro, _erro, _erro, _absn, _absn}, - /*ABSENT */ {_erro, _absn, _absn, _erro, _2___, _erro, _erro, _absn, _absn}, - /*VOID */ {_erro, _absn, _void, _erro, _void, _void, _erro, _absn, _absn}, - /*STRING */ {_erro, _erro, _erro, _erro, _erro, _erro, _erro, _absn, _absn}, - /*INT */ {_erro, _1___, _void, _erro, bitwise_and_i_ii, _erro, _erro, _absn, _absn}, - /*FLOAT */ {_erro, _erro, _void, _erro, _erro, _erro, _erro, _absn, _absn}, - /*BOOL */ {_erro, _erro, _erro, _erro, _erro, _erro, _erro, _absn, _absn}, - /*ARRAY */ {_absn, _absn, _absn, _absn, _absn, _absn, _absn, _absn, _absn}, - /*MAP */ {_absn, _absn, _absn, _absn, _absn, _absn, _absn, _absn, _absn}, + // . ERROR ABSENT NULL VOID STRING INT FLOAT BOOL ARRAY MAP + /*ERROR */ {_erro, _erro, _erro, _erro, _erro, _erro, _erro, _erro, _absn, _absn}, + /*ABSENT */ {_erro, _absn, _absn, _absn, _erro, _2___, _erro, _erro, _absn, _absn}, + /*NULL */ {_erro, _absn, _erro, _erro, _erro, _erro, _erro, _erro, _erro, _erro}, + /*VOID */ {_erro, _absn, _erro, _void, _erro, _void, _void, _erro, _absn, _absn}, + /*STRING */ {_erro, _erro, _erro, _erro, _erro, _erro, _erro, _erro, _absn, _absn}, + /*INT */ {_erro, _1___, _erro, _void, _erro, bitwise_and_i_ii, _erro, _erro, _absn, _absn}, + /*FLOAT */ {_erro, _erro, _erro, _void, _erro, _erro, _erro, _erro, _absn, _absn}, + /*BOOL */ {_erro, _erro, _erro, _erro, _erro, _erro, _erro, _erro, _absn, _absn}, + /*ARRAY */ {_absn, _absn, _erro, _absn, _absn, _absn, _absn, _absn, _absn, _absn}, + /*MAP */ {_absn, _absn, _erro, _absn, _absn, _absn, _absn, _absn, _absn, _absn}, } func MlrvalBitwiseAND(input1, input2 *Mlrval) *Mlrval { @@ -93,16 +96,17 @@ func bitwise_or_i_ii(input1, input2 *Mlrval) *Mlrval { } var bitwise_or_dispositions = [MT_DIM][MT_DIM]BinaryFunc{ - // ERROR ABSENT VOID STRING INT FLOAT BOOL ARRAY MAP - /*ERROR */ {_erro, _erro, _erro, _erro, _erro, _erro, _erro, _absn, _absn}, - /*ABSENT */ {_erro, _absn, _absn, _erro, _2___, _erro, _erro, _absn, _absn}, - /*VOID */ {_erro, _absn, _void, _erro, _void, _void, _erro, _absn, _absn}, - /*STRING */ {_erro, _erro, _erro, _erro, _erro, _erro, _erro, _absn, _absn}, - /*INT */ {_erro, _1___, _void, _erro, bitwise_or_i_ii, _erro, _erro, _absn, _absn}, - /*FLOAT */ {_erro, _erro, _void, _erro, _erro, _erro, _erro, _absn, _absn}, - /*BOOL */ {_erro, _erro, _erro, _erro, _erro, _erro, _erro, _absn, _absn}, - /*ARRAY */ {_absn, _absn, _absn, _absn, _absn, _absn, _absn, _absn, _absn}, - /*MAP */ {_absn, _absn, _absn, _absn, _absn, _absn, _absn, _absn, _absn}, + // . ERROR ABSENT NULL VOID STRING INT FLOAT BOOL ARRAY MAP + /*ERROR */ {_erro, _erro, _erro, _erro, _erro, _erro, _erro, _erro, _absn, _absn}, + /*ABSENT */ {_erro, _absn, _absn, _absn, _erro, _2___, _erro, _erro, _absn, _absn}, + /*NULL */ {_erro, _absn, _erro, _erro, _erro, _erro, _erro, _erro, _erro, _erro}, + /*VOID */ {_erro, _absn, _erro, _void, _erro, _void, _void, _erro, _absn, _absn}, + /*STRING */ {_erro, _erro, _erro, _erro, _erro, _erro, _erro, _erro, _absn, _absn}, + /*INT */ {_erro, _1___, _erro, _void, _erro, bitwise_or_i_ii, _erro, _erro, _absn, _absn}, + /*FLOAT */ {_erro, _erro, _erro, _void, _erro, _erro, _erro, _erro, _absn, _absn}, + /*BOOL */ {_erro, _erro, _erro, _erro, _erro, _erro, _erro, _erro, _absn, _absn}, + /*ARRAY */ {_absn, _absn, _erro, _absn, _absn, _absn, _absn, _absn, _absn, _absn}, + /*MAP */ {_absn, _absn, _erro, _absn, _absn, _absn, _absn, _absn, _absn, _absn}, } func MlrvalBitwiseOR(input1, input2 *Mlrval) *Mlrval { @@ -117,16 +121,17 @@ func bitwise_xor_i_ii(input1, input2 *Mlrval) *Mlrval { } var bitwise_xor_dispositions = [MT_DIM][MT_DIM]BinaryFunc{ - // ERROR ABSENT VOID STRING INT FLOAT BOOL ARRAY MAP - /*ERROR */ {_erro, _erro, _erro, _erro, _erro, _erro, _erro, _absn, _absn}, - /*ABSENT */ {_erro, _absn, _absn, _erro, _2___, _erro, _erro, _absn, _absn}, - /*VOID */ {_erro, _absn, _void, _erro, _void, _void, _erro, _absn, _absn}, - /*STRING */ {_erro, _erro, _erro, _erro, _erro, _erro, _erro, _absn, _absn}, - /*INT */ {_erro, _1___, _void, _erro, bitwise_xor_i_ii, _erro, _erro, _absn, _absn}, - /*FLOAT */ {_erro, _erro, _void, _erro, _erro, _erro, _erro, _absn, _absn}, - /*BOOL */ {_erro, _erro, _erro, _erro, _erro, _erro, _erro, _absn, _absn}, - /*ARRAY */ {_absn, _absn, _absn, _absn, _absn, _absn, _absn, _absn, _absn}, - /*MAP */ {_absn, _absn, _absn, _absn, _absn, _absn, _absn, _absn, _absn}, + // . ERROR ABSENT NULL VOID STRING INT FLOAT BOOL ARRAY MAP + /*ERROR */ {_erro, _erro, _erro, _erro, _erro, _erro, _erro, _erro, _absn, _absn}, + /*ABSENT */ {_erro, _absn, _absn, _absn, _erro, _2___, _erro, _erro, _absn, _absn}, + /*NULL */ {_erro, _absn, _erro, _erro, _erro, _erro, _erro, _erro, _erro, _erro}, + /*VOID */ {_erro, _absn, _erro, _void, _erro, _void, _void, _erro, _absn, _absn}, + /*STRING */ {_erro, _erro, _erro, _erro, _erro, _erro, _erro, _erro, _absn, _absn}, + /*INT */ {_erro, _1___, _erro, _void, _erro, bitwise_xor_i_ii, _erro, _erro, _absn, _absn}, + /*FLOAT */ {_erro, _erro, _erro, _void, _erro, _erro, _erro, _erro, _absn, _absn}, + /*BOOL */ {_erro, _erro, _erro, _erro, _erro, _erro, _erro, _erro, _absn, _absn}, + /*ARRAY */ {_absn, _absn, _absn, _absn, _absn, _absn, _absn, _absn, _absn, _absn}, + /*MAP */ {_absn, _absn, _absn, _absn, _absn, _absn, _absn, _absn, _absn, _absn}, } func MlrvalBitwiseXOR(input1, input2 *Mlrval) *Mlrval { @@ -141,16 +146,17 @@ func lsh_i_ii(input1, input2 *Mlrval) *Mlrval { } var left_shift_dispositions = [MT_DIM][MT_DIM]BinaryFunc{ - // ERROR ABSENT VOID STRING INT FLOAT BOOL ARRAY MAP - /*ERROR */ {_erro, _erro, _erro, _erro, _erro, _erro, _erro, _absn, _absn}, - /*ABSENT */ {_erro, _absn, _absn, _erro, _2___, _erro, _erro, _absn, _absn}, - /*VOID */ {_erro, _absn, _void, _erro, _void, _void, _erro, _absn, _absn}, - /*STRING */ {_erro, _erro, _erro, _erro, _erro, _erro, _erro, _absn, _absn}, - /*INT */ {_erro, _1___, _void, _erro, lsh_i_ii, _erro, _erro, _absn, _absn}, - /*FLOAT */ {_erro, _erro, _void, _erro, _erro, _erro, _erro, _absn, _absn}, - /*BOOL */ {_erro, _erro, _erro, _erro, _erro, _erro, _erro, _absn, _absn}, - /*ARRAY */ {_absn, _absn, _absn, _absn, _absn, _absn, _absn, _absn, _absn}, - /*MAP */ {_absn, _absn, _absn, _absn, _absn, _absn, _absn, _absn, _absn}, + // . ERROR ABSENT NULL VOID STRING INT FLOAT BOOL ARRAY MAP + /*ERROR */ {_erro, _erro, _erro, _erro, _erro, _erro, _erro, _erro, _absn, _absn}, + /*ABSENT */ {_erro, _absn, _absn, _absn, _erro, _2___, _erro, _erro, _absn, _absn}, + /*NULL */ {_erro, _absn, _erro, _erro, _erro, _erro, _erro, _erro, _erro, _erro}, + /*VOID */ {_erro, _absn, _erro, _void, _erro, _void, _void, _erro, _absn, _absn}, + /*STRING */ {_erro, _erro, _erro, _erro, _erro, _erro, _erro, _erro, _absn, _absn}, + /*INT */ {_erro, _1___, _erro, _void, _erro, lsh_i_ii, _erro, _erro, _absn, _absn}, + /*FLOAT */ {_erro, _erro, _erro, _void, _erro, _erro, _erro, _erro, _absn, _absn}, + /*BOOL */ {_erro, _erro, _erro, _erro, _erro, _erro, _erro, _erro, _absn, _absn}, + /*ARRAY */ {_absn, _absn, _erro, _absn, _absn, _absn, _absn, _absn, _absn, _absn}, + /*MAP */ {_absn, _absn, _erro, _absn, _absn, _absn, _absn, _absn, _absn, _absn}, } func MlrvalLeftShift(input1, input2 *Mlrval) *Mlrval { @@ -165,16 +171,17 @@ func srsh_i_ii(input1, input2 *Mlrval) *Mlrval { } var signed_right_shift_dispositions = [MT_DIM][MT_DIM]BinaryFunc{ - // ERROR ABSENT VOID STRING INT FLOAT BOOL ARRAY MAP - /*ERROR */ {_erro, _erro, _erro, _erro, _erro, _erro, _erro, _absn, _absn}, - /*ABSENT */ {_erro, _absn, _absn, _erro, _2___, _erro, _erro, _absn, _absn}, - /*VOID */ {_erro, _absn, _void, _erro, _void, _void, _erro, _absn, _absn}, - /*STRING */ {_erro, _erro, _erro, _erro, _erro, _erro, _erro, _absn, _absn}, - /*INT */ {_erro, _1___, _void, _erro, srsh_i_ii, _erro, _erro, _absn, _absn}, - /*FLOAT */ {_erro, _erro, _void, _erro, _erro, _erro, _erro, _absn, _absn}, - /*BOOL */ {_erro, _erro, _erro, _erro, _erro, _erro, _erro, _absn, _absn}, - /*ARRAY */ {_absn, _absn, _absn, _absn, _absn, _absn, _absn, _absn, _absn}, - /*MAP */ {_absn, _absn, _absn, _absn, _absn, _absn, _absn, _absn, _absn}, + // . ERROR ABSENT NULL VOID STRING INT FLOAT BOOL ARRAY MAP + /*ERROR */ {_erro, _erro, _erro, _erro, _erro, _erro, _erro, _erro, _absn, _absn}, + /*ABSENT */ {_erro, _absn, _absn, _absn, _erro, _2___, _erro, _erro, _absn, _absn}, + /*NULL */ {_erro, _absn, _erro, _erro, _erro, _erro, _erro, _erro, _erro, _erro}, + /*VOID */ {_erro, _absn, _erro, _void, _erro, _void, _void, _erro, _absn, _absn}, + /*STRING */ {_erro, _erro, _erro, _erro, _erro, _erro, _erro, _erro, _absn, _absn}, + /*INT */ {_erro, _1___, _erro, _void, _erro, srsh_i_ii, _erro, _erro, _absn, _absn}, + /*FLOAT */ {_erro, _erro, _erro, _void, _erro, _erro, _erro, _erro, _absn, _absn}, + /*BOOL */ {_erro, _erro, _erro, _erro, _erro, _erro, _erro, _erro, _absn, _absn}, + /*ARRAY */ {_absn, _absn, _erro, _absn, _absn, _absn, _absn, _absn, _absn, _absn}, + /*MAP */ {_absn, _absn, _erro, _absn, _absn, _absn, _absn, _absn, _absn, _absn}, } func MlrvalSignedRightShift(input1, input2 *Mlrval) *Mlrval { @@ -192,16 +199,17 @@ func ursh_i_ii(input1, input2 *Mlrval) *Mlrval { } var unsigned_right_shift_dispositions = [MT_DIM][MT_DIM]BinaryFunc{ - // ERROR ABSENT VOID STRING INT FLOAT BOOL ARRAY MAP - /*ERROR */ {_erro, _erro, _erro, _erro, _erro, _erro, _erro, _absn, _absn}, - /*ABSENT */ {_erro, _absn, _absn, _erro, _2___, _erro, _erro, _absn, _absn}, - /*VOID */ {_erro, _absn, _void, _erro, _void, _void, _erro, _absn, _absn}, - /*STRING */ {_erro, _erro, _erro, _erro, _erro, _erro, _erro, _absn, _absn}, - /*INT */ {_erro, _1___, _void, _erro, ursh_i_ii, _erro, _erro, _absn, _absn}, - /*FLOAT */ {_erro, _erro, _void, _erro, _erro, _erro, _erro, _absn, _absn}, - /*BOOL */ {_erro, _erro, _erro, _erro, _erro, _erro, _erro, _absn, _absn}, - /*ARRAY */ {_absn, _absn, _absn, _absn, _absn, _absn, _absn, _absn, _absn}, - /*MAP */ {_absn, _absn, _absn, _absn, _absn, _absn, _absn, _absn, _absn}, + // . ERROR ABSENT NULL VOID STRING INT FLOAT BOOL ARRAY MAP + /*ERROR */ {_erro, _erro, _erro, _erro, _erro, _erro, _erro, _erro, _absn, _absn}, + /*ABSENT */ {_erro, _absn, _absn, _absn, _erro, _2___, _erro, _erro, _absn, _absn}, + /*NULL */ {_erro, _absn, _erro, _erro, _erro, _erro, _erro, _erro, _erro, _erro}, + /*VOID */ {_erro, _absn, _erro, _void, _erro, _void, _void, _erro, _absn, _absn}, + /*STRING */ {_erro, _erro, _erro, _erro, _erro, _erro, _erro, _erro, _absn, _absn}, + /*INT */ {_erro, _1___, _erro, _void, _erro, ursh_i_ii, _erro, _erro, _absn, _absn}, + /*FLOAT */ {_erro, _erro, _erro, _void, _erro, _erro, _erro, _erro, _absn, _absn}, + /*BOOL */ {_erro, _erro, _erro, _erro, _erro, _erro, _erro, _erro, _absn, _absn}, + /*ARRAY */ {_absn, _absn, _erro, _absn, _absn, _absn, _absn, _absn, _absn, _absn}, + /*MAP */ {_absn, _absn, _erro, _absn, _absn, _absn, _absn, _absn, _absn, _absn}, } func MlrvalUnsignedRightShift(input1, input2 *Mlrval) *Mlrval { diff --git a/go/src/types/mlrval_functions_collections.go b/go/src/types/mlrval_functions_collections.go index 539f57c47..b152f2882 100644 --- a/go/src/types/mlrval_functions_collections.go +++ b/go/src/types/mlrval_functions_collections.go @@ -68,7 +68,7 @@ func init() { depth_dispositions = [MT_DIM]UnaryFunc{ /*ERROR */ _erro1, /*ABSENT */ _absn1, - /*NULL */ _zero, + /*NULL */ _zero1, /*VOID */ depth_from_scalar, /*STRING */ depth_from_scalar, /*INT */ depth_from_scalar, @@ -133,7 +133,7 @@ func leafcount_from_scalar(input1 *Mlrval) *Mlrval { var leafcount_dispositions = [MT_DIM]UnaryFunc{ /*ERROR */ _erro1, /*ABSENT */ _absn1, - /*NULL */ _zero, + /*NULL */ _zero1, /*VOID */ leafcount_from_scalar, /*STRING */ leafcount_from_scalar, /*INT */ leafcount_from_scalar,