From a1c35618996cdcb954ec85441bb191be12ffa708 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Anian=20B=C3=BChler?=
 <anian.buehler@reutlingen-university.de>
Date: Thu, 3 Feb 2022 10:13:28 +0100
Subject: [PATCH] added memcpy, memset and sizeof-Blocks

---
 .../block/arrays/ArrayReferenceBlock.java     |  3 -
 .../translator/block/arrays/MemcpyBlock.java  |  5 +-
 .../translator/block/arrays/MemsetBlock.java  |  6 +-
 .../block/arrays/SizeOfArrayBlock.java        | 41 +++++++++
 .../com/ardublock/block/ardublock.properties  | 27 ++++--
 .../com/ardublock/block/ardublock.xml         | 84 +++++++++++++++----
 .../ardublock/block/ardublock_de.properties   | 23 +++--
 .../block/ardublock_en_GB.properties          | 19 ++++-
 .../ardublock/block/block-mapping.properties  |  4 +
 9 files changed, 174 insertions(+), 38 deletions(-)
 create mode 100644 src/main/java/com/ardublock/translator/block/arrays/SizeOfArrayBlock.java

diff --git a/src/main/java/com/ardublock/translator/block/arrays/ArrayReferenceBlock.java b/src/main/java/com/ardublock/translator/block/arrays/ArrayReferenceBlock.java
index 572cc51..e9ce71a 100644
--- a/src/main/java/com/ardublock/translator/block/arrays/ArrayReferenceBlock.java
+++ b/src/main/java/com/ardublock/translator/block/arrays/ArrayReferenceBlock.java
@@ -8,11 +8,8 @@ import com.ardublock.translator.block.TranslatorBlock;
 import com.ardublock.translator.block.exception.BlockException;
 import com.ardublock.translator.block.exception.SocketNullException;
 import com.ardublock.translator.block.exception.SubroutineNotDeclaredException;
-import com.ardublock.translator.block.numbers.ConstantStringBlock;
-import com.ardublock.translator.block.numbers.LocalVariableStringBlock;
 import com.ardublock.translator.block.numbers.NumberBlock;
 import com.ardublock.translator.block.numbers.StringBlock;
-import com.ardublock.translator.block.numbers.VariableStringBlock;
 
 public class ArrayReferenceBlock extends TranslatorBlock
 {
diff --git a/src/main/java/com/ardublock/translator/block/arrays/MemcpyBlock.java b/src/main/java/com/ardublock/translator/block/arrays/MemcpyBlock.java
index 5b7f8bc..b682a03 100644
--- a/src/main/java/com/ardublock/translator/block/arrays/MemcpyBlock.java
+++ b/src/main/java/com/ardublock/translator/block/arrays/MemcpyBlock.java
@@ -10,6 +10,8 @@ import com.ardublock.translator.block.exception.SocketNullException;
 import com.ardublock.translator.block.exception.SubroutineNotDeclaredException;
 import com.ardublock.translator.block.numbers.ConstantStringBlock;
 import com.ardublock.translator.block.numbers.LocalVariableStringBlock;
+import com.ardublock.translator.block.numbers.NumberBlock;
+import com.ardublock.translator.block.numbers.StringBlock;
 import com.ardublock.translator.block.numbers.VariableStringBlock;
 
 public class MemcpyBlock extends TranslatorBlock
@@ -33,8 +35,7 @@ public class MemcpyBlock extends TranslatorBlock
 		String lengthOfData      = tb_length.toCode();
 
 
-		if (!(tb_destination instanceof VariableStringBlock) && !(tb_destination instanceof LocalVariableStringBlock)  && !(tb_destination instanceof ConstantStringBlock) 
-			&& !(tb_source instanceof VariableStringBlock) && !(tb_source instanceof LocalVariableStringBlock)  && !(tb_source instanceof ConstantStringBlock)) {
+		if ((tb_destination instanceof StringBlock) || (tb_destination instanceof NumberBlock) || (tb_source instanceof StringBlock) || (tb_source instanceof NumberBlock) ) {
 		      throw new BlockException(blockId, uiMessageBundle.getString("ardublock.error_msg.string_var_slot"));
 		    }
 		
diff --git a/src/main/java/com/ardublock/translator/block/arrays/MemsetBlock.java b/src/main/java/com/ardublock/translator/block/arrays/MemsetBlock.java
index a2b5217..b4be7f9 100644
--- a/src/main/java/com/ardublock/translator/block/arrays/MemsetBlock.java
+++ b/src/main/java/com/ardublock/translator/block/arrays/MemsetBlock.java
@@ -10,6 +10,8 @@ import com.ardublock.translator.block.exception.SocketNullException;
 import com.ardublock.translator.block.exception.SubroutineNotDeclaredException;
 import com.ardublock.translator.block.numbers.ConstantStringBlock;
 import com.ardublock.translator.block.numbers.LocalVariableStringBlock;
+import com.ardublock.translator.block.numbers.NumberBlock;
+import com.ardublock.translator.block.numbers.StringBlock;
 import com.ardublock.translator.block.numbers.VariableStringBlock;
 
 public class MemsetBlock extends TranslatorBlock
@@ -33,8 +35,8 @@ public class MemsetBlock extends TranslatorBlock
 		String numOfReplacedChars = tb_length.toCode();
 
 
-		if (!(tb_destination instanceof VariableStringBlock) && !(tb_destination instanceof LocalVariableStringBlock)  && !(tb_destination instanceof ConstantStringBlock)) {
-		      throw new BlockException(blockId, uiMessageBundle.getString("ardublock.error_msg.string_var_slot"));
+		if ((tb_destination instanceof StringBlock) || (tb_destination instanceof NumberBlock)) {
+		      throw new BlockException(blockId, uiMessageBundle.getString("ardublock.error_msg. 	var_slot"));
 		    }
 		
 		String ret = "memset("+destinationArray+", " + insertChar + ", "+numOfReplacedChars+");";
diff --git a/src/main/java/com/ardublock/translator/block/arrays/SizeOfArrayBlock.java b/src/main/java/com/ardublock/translator/block/arrays/SizeOfArrayBlock.java
new file mode 100644
index 0000000..e929d74
--- /dev/null
+++ b/src/main/java/com/ardublock/translator/block/arrays/SizeOfArrayBlock.java
@@ -0,0 +1,41 @@
+package com.ardublock.translator.block.arrays;
+
+
+import java.util.ResourceBundle;
+
+import com.ardublock.translator.Translator;
+import com.ardublock.translator.block.TranslatorBlock;
+import com.ardublock.translator.block.exception.BlockException;
+import com.ardublock.translator.block.exception.SocketNullException;
+import com.ardublock.translator.block.exception.SubroutineNotDeclaredException;
+import com.ardublock.translator.block.numbers.NumberBlock;
+import com.ardublock.translator.block.numbers.StringBlock;
+
+public class SizeOfArrayBlock extends TranslatorBlock
+{
+	private static ResourceBundle uiMessageBundle = ResourceBundle.getBundle("com/ardublock/block/ardublock");
+	
+	public SizeOfArrayBlock(Long blockId, Translator translator, String codePrefix, String codeSuffix, String label)
+	{
+		super(blockId, translator, codePrefix, codeSuffix, label);
+	}
+
+	@Override
+	public String toCode() throws SocketNullException, SubroutineNotDeclaredException
+	{
+		TranslatorBlock tb_name   = this.getRequiredTranslatorBlockAtSocket(0);
+
+		String arrayName       = tb_name.toCode();
+
+
+		if ((tb_name instanceof StringBlock) || (tb_name instanceof NumberBlock)) {
+		      throw new BlockException(blockId, uiMessageBundle.getString("ardublock.error_msg.var_slot"));
+		    }
+
+		return "(sizeOf("+arrayName+")/sizeOf(" + arrayName + "[0]))";
+	}
+
+}
+
+
+
diff --git a/src/main/resources/com/ardublock/block/ardublock.properties b/src/main/resources/com/ardublock/block/ardublock.properties
index 41f440b..08ed6f4 100644
--- a/src/main/resources/com/ardublock/block/ardublock.properties
+++ b/src/main/resources/com/ardublock/block/ardublock.properties
@@ -687,12 +687,7 @@ bg.create_variable_analog=create analog variable
 bg.create_variable_analog.description=
 bg.create_array_analog=set analog array
 bg.create_array_analog.description=
-bg.memcpy_string=memcpy
-bg.memcpy_string.description=copy a block of memory from a location to another 
-bg.memset_string=memset
-bg.memset_string.description=copies a single character for a specified number of times to an object
-bg.strcpy_string=strcpy
-bg.strcpy_string.description=copy one string to another
+
 
 #ARRAYS
 #****************************
@@ -722,11 +717,29 @@ bg.create_number_long_array.description=Create an array of long
 bg.create_number_float_array.description=Create an array of float
 bg.setter_number_array.description=Set the value of an array member
 
+bg.memcpy_number=memcpy
+bg.memcpy_number.description=copy a block of memory from a location (source) to another (destination)
+bg.memset_number=memset
+bg.memset_number.description=copies a single character for a specified number of times to an object
+bg.memcpy_string=memcpy
+bg.memcpy_string.description=copy a block of memory from a location (source) to another (destination) 
+bg.memset_string=memset
+bg.memset_string.description=copies a single character for a specified number of times to an object
+bg.strcpy_string=strcpy
+bg.strcpy_string.description=copy one string (source) to another (destination) 
+bg.sizeof_number=sizeOf
+bg.sizeof_number.description=returns length of array 
+bg.sizeof_string=sizeOf
+bg.sizeof_string.description=returns length of array
+
 bc.string=char array
 bc.position=position
 bc.array=Name the array
 bc.vecsize=size
-bc.number_chars=number of characters
+bc.count_chars=count of characters
+bc.count=count
+bc.dest=destination
+bc.source=source
 
 #COMMUNICATION
 #****************************
diff --git a/src/main/resources/com/ardublock/block/ardublock.xml b/src/main/resources/com/ardublock/block/ardublock.xml
index 6b92bb4..0b4cf3f 100644
--- a/src/main/resources/com/ardublock/block/ardublock.xml
+++ b/src/main/resources/com/ardublock/block/ardublock.xml
@@ -2091,10 +2091,9 @@
 	        <text>set char array</text>
 	      </description>
 	      <BlockConnectors>
-	        <BlockConnector connector-type="string" connector-kind="socket" label="bc.array">
-	          <DefaultArg genus-name="variable_string" label="Name_der_Zeichenkette" />
+	        <BlockConnector connector-type="string" connector-kind="socket" label="bc.string">
 	        </BlockConnector>
-			<BlockConnector connector-type="number" connector-kind="socket" label="bc.number_chars">
+			<BlockConnector connector-type="number" connector-kind="socket" label="bc.count_chars">
 	        </BlockConnector>
 	        <BlockConnector connector-type="string" connector-kind="socket" label="bc.value">
 	        </BlockConnector>
@@ -2217,22 +2216,52 @@
 			</BlockConnectors>
 		</BlockGenus>
 		
-		<BlockGenus name="memcpy_string" kind="command" color="200 0 0" initlabel="memcpy_string">
+		<BlockGenus name="memcpy_number" kind="command" color="200 0 0" initlabel="bg.memcpy_number">
 			<description>
 				<text>memcpy</text>
 			</description>
 			<BlockConnectors>
-				<BlockConnector connector-type="string" connector-kind="socket" label="bc.array">
+				<BlockConnector connector-type="number" connector-kind="socket" label="bc.dest">
+					<DefaultArg genus-name="variable_number" label="Name_der_Tabelle" />
+				</BlockConnector>
+				<BlockConnector connector-type="number" connector-kind="socket" label="bc.source">
+					<DefaultArg genus-name="variable_number" label="Name_der_Tabelle2" />
+				</BlockConnector>
+				<BlockConnector connector-type="number" connector-kind="socket" label="bc.vecsize">
+				</BlockConnector>
+			</BlockConnectors>
+		</BlockGenus>
+		<BlockGenus name="memset_number" kind="command" color="200 0 0" initlabel="bg.memset_number">
+			<description>
+				<text>memset</text>
+			</description>
+			<BlockConnectors>
+				<BlockConnector connector-type="number" connector-kind="socket" label="bc.array">
+					<DefaultArg genus-name="variable_number" label="Name_der_Zeichenkette" />
+				</BlockConnector>
+				<BlockConnector connector-type="number" connector-kind="socket" label="bc.value">
+					<DefaultArg genus-name="number" label="1" />
+				</BlockConnector>
+				<BlockConnector connector-type="number" connector-kind="socket" label="bc.vecsize">
+				</BlockConnector>
+			</BlockConnectors>
+		</BlockGenus>
+				<BlockGenus name="memcpy_string" kind="command" color="200 0 0" initlabel="bg.memcpy_string">
+			<description>
+				<text>memcpy</text>
+			</description>
+			<BlockConnectors>
+				<BlockConnector connector-type="string" connector-kind="socket" label="bc.dest">
 					<DefaultArg genus-name="variable_string" label="Name_der_Zeichenkette" />
 				</BlockConnector>
-				<BlockConnector connector-type="string" connector-kind="socket" label="bc.array">
+				<BlockConnector connector-type="string" connector-kind="socket" label="bc.source">
 					<DefaultArg genus-name="variable_string" label="Name_der_Zeichenkette2" />
 				</BlockConnector>
 				<BlockConnector connector-type="number" connector-kind="socket" label="bc.vecsize">
 				</BlockConnector>
 			</BlockConnectors>
 		</BlockGenus>
-		<BlockGenus name="memset_string" kind="command" color="200 0 0" initlabel="memset_string">
+		<BlockGenus name="memset_string" kind="command" color="200 0 0" initlabel="bg.memset_string">
 			<description>
 				<text>memset</text>
 			</description>
@@ -2241,21 +2270,21 @@
 					<DefaultArg genus-name="variable_string" label="Name_der_Zeichenkette" />
 				</BlockConnector>
 				<BlockConnector connector-type="string-list" connector-kind="socket" label="bc.char">
-					<DefaultArg genus-name="variable_char" label="X" />
+					<DefaultArg genus-name="char" label="X" />
 				</BlockConnector>
 				<BlockConnector connector-type="number" connector-kind="socket" label="bc.vecsize">
 				</BlockConnector>
 			</BlockConnectors>
 		</BlockGenus>
-		<BlockGenus name="strcpy_string" kind="command" color="200 0 0" initlabel="strcpy_string">
+		<BlockGenus name="strcpy_string" kind="command" color="200 0 0" initlabel="bg.strcpy_string">
 			<description>
 				<text>strcpy</text>
 			</description>
 			<BlockConnectors>
-				<BlockConnector connector-type="string" connector-kind="socket" label="bc.array">
+				<BlockConnector connector-type="string" connector-kind="socket" label="bc.dest">
 					<DefaultArg genus-name="variable_string" label="Name_der_Zeichenkette" />
 				</BlockConnector>
-				<BlockConnector connector-type="string" connector-kind="socket" label="bc.array">
+				<BlockConnector connector-type="string" connector-kind="socket" label="bc.source">
 					<DefaultArg genus-name="variable_string" label="Name_der_Zeichenkette2" />
 				</BlockConnector>
 			</BlockConnectors>
@@ -2269,7 +2298,7 @@
 				<BlockConnector connector-type="string" connector-kind="socket" label="bc.string">
 					<DefaultArg genus-name="variable_string" label="Name_der_Zeichenkette" />
 				</BlockConnector>
-				<BlockConnector connector-type="number" connector-kind="socket" label="offset">
+				<BlockConnector connector-type="number" connector-kind="socket" label="Offset">
 					<DefaultArg genus-name="number" label="0" />
 				</BlockConnector>
 			</BlockConnectors>
@@ -2280,14 +2309,36 @@
 			</description>
 			<BlockConnectors>
 				<BlockConnector connector-type="number" connector-kind="plug" />
-				<BlockConnector connector-type="number" connector-kind="socket" label="bc.string">
+				<BlockConnector connector-type="number" connector-kind="socket" label="bc.array">
 					<DefaultArg genus-name="variable_number" label="Name_der_Tabelle" />
 				</BlockConnector>
-				<BlockConnector connector-type="number" connector-kind="socket" label="offset">
+				<BlockConnector connector-type="number" connector-kind="socket" label="Offset">
 					<DefaultArg genus-name="number" label="0" />
 				</BlockConnector>
 			</BlockConnectors>
 		</BlockGenus>
+		<BlockGenus name="sizeof_string" kind="data" color="200 0 0" initlabel="bg.sizeof_string">
+			<description>
+				<text>size of array</text>
+			</description>
+			<BlockConnectors>
+				<BlockConnector connector-type="number" connector-kind="plug" />
+				<BlockConnector connector-type="string" connector-kind="socket" label="bc.string">
+					<DefaultArg genus-name="variable_string" label="Name_der_Zeichenkette" />
+				</BlockConnector>
+			</BlockConnectors>
+		</BlockGenus>
+		<BlockGenus name="sizeof_number" kind="data" color="200 0 0" initlabel="bg.sizeof_number">
+			<description>
+				<text>size of array</text>
+			</description>
+			<BlockConnectors>
+				<BlockConnector connector-type="number" connector-kind="plug" />
+				<BlockConnector connector-type="number" connector-kind="socket" label="bc.array">
+					<DefaultArg genus-name="variable_number" label="Name_der_Tabelle" />
+				</BlockConnector>
+			</BlockConnectors>
+		</BlockGenus>
 		
 	    
 		<!-- ******************** Communication *************** -->
@@ -3476,11 +3527,16 @@
 				<BlockGenusMember>read_char_array</BlockGenusMember>
 				
 				<BlockGenusMember>arrayDivider3</BlockGenusMember>
+				<BlockGenusMember>memcpy_number</BlockGenusMember>
+				<BlockGenusMember>memset_number</BlockGenusMember>
 				<BlockGenusMember>memcpy_string</BlockGenusMember>
 				<BlockGenusMember>memset_string</BlockGenusMember>
 				<BlockGenusMember>strcpy_string</BlockGenusMember>
 				<BlockGenusMember>reference_string</BlockGenusMember>
 				<BlockGenusMember>reference_number</BlockGenusMember>
+				<BlockGenusMember>sizeof_string</BlockGenusMember>
+				<BlockGenusMember>sizeof_number</BlockGenusMember>
+				
 			</BlockDrawer>
 			
 			<BlockDrawer button-color="165 42 42" name="bd.communication" type="default">
diff --git a/src/main/resources/com/ardublock/block/ardublock_de.properties b/src/main/resources/com/ardublock/block/ardublock_de.properties
index 02ef6e9..23221e0 100644
--- a/src/main/resources/com/ardublock/block/ardublock_de.properties
+++ b/src/main/resources/com/ardublock/block/ardublock_de.properties
@@ -714,22 +714,33 @@ bg.create_number_float_array.description=Erzeuge ein Array f
 bg.setter_number_array.description=Setze den Wert eines Array-Feldes
 bg.read_number_array.description=Lese den Wert eines\nTabellen-Feldes
 
-bg.memcpy_string=kopiere Tabelle
-bg.memcpy_string.description=copy a block of memory from a location to another 
-bg.memset_string=setze Wert in Tabelle
-bg.memset_string.description=kopiere ein Zeichen/Wert wiederholt in einer Zeichenkette oder Tabelle
+bg.memcpy_number=kopiere Tabelle
+bg.memcpy_number.description=kopiere einen Speicherbereich von einem Ort (Quelle) in einen anderen (Ziel).\nACHTUNG: Laenge in Bytes angeben 
+bg.memset_number=ersetze Werte in Tabelle
+bg.memset_number.description=ersetze eine bestimmte Anzahl Werte in einer Tabelle
+bg.memcpy_string=kopiere Zeichenkette (Teil)
+bg.memcpy_string.description=kopiere einen Speicherbereich von einem Ort (Quelle) in einen anderen (Ziel) 
+bg.memset_string=ersetze Werte in Zeichenkette
+bg.memset_string.description=ersetze eine bestimmte Anzahl Zeichen durch ein anderes
 bg.strcpy_string=kopiere Zeichenkette
-bg.strcpy_string.description=kopiere eine Zeichenkette in eine andere
+bg.strcpy_string.description=kopiere eine Zeichenkette (Quelle) in eine andere (Ziel)
 bg.reference_string=Start der Zeichenkette verschieben
 bg.reference_string.description=Verschiebt die Startposition ab der die Zeichenkette verwendet wird
 bg.reference_number=Start der Tabelle verschieben
 bg.reference_number.description=Verschiebt die Startposition ab der die Tabelle verwendet wird
+bg.sizeof_number=Anzahl Werte
+bg.sizeof_number.description=Gibt Anzahl der verfuegbaren Stellen der Tabelle zurueck 
+bg.sizeof_string=Anzahl Werte
+bg.sizeof_string.description=Gibt Anzahl der verfuegbaren Stellen der Zeichenkette zurueck 
 
 bc.string=Zeichenkette
 bc.position=Stelle
 bc.array=Tabellen-Name
 bc.vecsize=Anzahl Werte
-bc.number_chars=Anzahl Zeichen
+bc.count_chars=Anzahl Zeichen
+bc.count=Anzahl
+bc.dest=Ziel
+bc.source=Quelle
 
 #COMMUNICATION
 #****************************
diff --git a/src/main/resources/com/ardublock/block/ardublock_en_GB.properties b/src/main/resources/com/ardublock/block/ardublock_en_GB.properties
index 381420d..77d90d8 100644
--- a/src/main/resources/com/ardublock/block/ardublock_en_GB.properties
+++ b/src/main/resources/com/ardublock/block/ardublock_en_GB.properties
@@ -713,22 +713,33 @@ bg.create_number_float_array.description=Erzeuge ein Array f
 bg.setter_number_array.description=Setze den Wert eines Array-Feldes
 bg.read_number_array.description=Lese den Wert eines Array-Feldes
 
+bg.memcpy_number=memcpy
+bg.memcpy_number.description=kopiere einen Speicherbereich von einem Ort (Quelle) in einen anderen (Ziel).\nACHTUNG: Laenge in Bytes angeben 
+bg.memset_number=memset
+bg.memset_number.description=ersetze eine bestimmte Anzahl Werte in einer Tabelle
 bg.memcpy_string=memcpy
-bg.memcpy_string.description=copy a block of memory from a location to another 
+bg.memcpy_string.description=kopiere einen Speicherbereich von einem Ort (Quelle) in einen anderen (Ziel) 
 bg.memset_string=memset
-bg.memset_string.description=kopiere ein Zeichen/Wert wiederholt in einer Zeichenkette oder Tabelle
+bg.memset_string.description=ersetze eine bestimmte Anzahl Zeichen durch ein anderes
 bg.strcpy_string=strcpy
-bg.strcpy_string.description=kopiere eine Zeichenkette in eine andere
+bg.strcpy_string.description=kopiere eine Zeichenkette (Quelle) in eine andere (Ziel)
 bg.reference_string=Referenz erzeugen
 bg.reference_string.description=Verschiebt die Startposition ab der das char-Array verwendet wird
 bg.reference_number=Referenz erzeugen
 bg.reference_number.description=Verschiebt die Startposition ab der das Array verwendet wird
+bg.sizeof_number=sizeOf
+bg.sizeof_number.description=Gibt Anzahl der verfuegbaren Stellen der Tabelle zurueck 
+bg.sizeof_string=sizeOf
+bg.sizeof_string.description=Gibt Anzahl der verfuegbaren Stellen der Zeichenkette zurueck 
 
 bc.string=char-Array
 bc.position=Stelle
 bc.array=Array-Name
 bc.vecsize=Anzahl Werte
-bc.number_chars=Anzahl Zeichen
+bc.count_chars=Anzahl Zeichen
+bc.count=Anzahl
+bc.dest=Ziel
+bc.source=Quelle
 
 #COMMUNICATION
 #****************************
diff --git a/src/main/resources/com/ardublock/block/block-mapping.properties b/src/main/resources/com/ardublock/block/block-mapping.properties
index 898a557..f8eb0ab 100644
--- a/src/main/resources/com/ardublock/block/block-mapping.properties
+++ b/src/main/resources/com/ardublock/block/block-mapping.properties
@@ -240,9 +240,13 @@ setter_char_array=com.ardublock.translator.block.arrays.SetterCharArrayBlock
 
 memcpy_string=com.ardublock.translator.block.arrays.MemcpyBlock
 memset_string=com.ardublock.translator.block.arrays.MemsetBlock
+memcpy_number=com.ardublock.translator.block.arrays.MemcpyBlock
+memset_number=com.ardublock.translator.block.arrays.MemsetBlock
 strcpy_string=com.ardublock.translator.block.arrays.StrcpyBlock
 reference_string=com.ardublock.translator.block.arrays.ArrayReferenceBlock
 reference_number=com.ardublock.translator.block.arrays.ArrayReferenceBlock
+sizeof_string=com.ardublock.translator.block.arrays.SizeOfArrayBlock
+sizeof_number=com.ardublock.translator.block.arrays.SizeOfArrayBlock
 
 #COMMUNICATION
 #****************************
-- 
GitLab