From 0f986d06e48b5fde8e9c9812a18ba0213b9447de Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Anian=20B=C3=BChler?=
 <anian.buehler@reutlingen-university.de>
Date: Wed, 2 Feb 2022 14:40:11 +0100
Subject: [PATCH] added memset, memcpy and strcpy (all files)

---
 .../translator/block/arrays/MemcpyBlock.java  |  2 +-
 .../translator/block/arrays/MemsetBlock.java  |  2 +-
 .../translator/block/arrays/StrcpyBlock.java  |  2 +-
 .../com/ardublock/block/ardublock.properties  |  8 +++
 .../com/ardublock/block/ardublock.xml         | 54 ++++++++++++++++++-
 .../ardublock/block/ardublock_de.properties   | 10 +++-
 .../block/ardublock_en_GB.properties          | 10 +++-
 .../ardublock/block/block-mapping.properties  |  4 ++
 8 files changed, 85 insertions(+), 7 deletions(-)

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 9ad590d..5b7f8bc 100644
--- a/src/main/java/com/ardublock/translator/block/arrays/MemcpyBlock.java
+++ b/src/main/java/com/ardublock/translator/block/arrays/MemcpyBlock.java
@@ -38,7 +38,7 @@ public class MemcpyBlock extends TranslatorBlock
 		      throw new BlockException(blockId, uiMessageBundle.getString("ardublock.error_msg.string_var_slot"));
 		    }
 		
-		String ret = "memcpy("+destinationArray+", " + sourceArray + ", "+lengthOfData+")";
+		String ret = "memcpy("+destinationArray+", " + sourceArray + ", "+lengthOfData+");";
 
 		return ret;
 	}
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 715e8ac..a2b5217 100644
--- a/src/main/java/com/ardublock/translator/block/arrays/MemsetBlock.java
+++ b/src/main/java/com/ardublock/translator/block/arrays/MemsetBlock.java
@@ -37,7 +37,7 @@ public class MemsetBlock extends TranslatorBlock
 		      throw new BlockException(blockId, uiMessageBundle.getString("ardublock.error_msg.string_var_slot"));
 		    }
 		
-		String ret = "memset("+destinationArray+", " + insertChar + ", "+numOfReplacedChars+")";
+		String ret = "memset("+destinationArray+", " + insertChar + ", "+numOfReplacedChars+");";
 
 		return ret;
 	}
diff --git a/src/main/java/com/ardublock/translator/block/arrays/StrcpyBlock.java b/src/main/java/com/ardublock/translator/block/arrays/StrcpyBlock.java
index d233fbe..0e1ef57 100644
--- a/src/main/java/com/ardublock/translator/block/arrays/StrcpyBlock.java
+++ b/src/main/java/com/ardublock/translator/block/arrays/StrcpyBlock.java
@@ -36,7 +36,7 @@ public class StrcpyBlock extends TranslatorBlock
 		      throw new BlockException(blockId, uiMessageBundle.getString("ardublock.error_msg.string_var_slot"));
 		    }
 
-		String ret = "strcpy("+destinationArray+", " + sourceArray + ")";
+		String ret = "strcpy("+destinationArray+", " + sourceArray + ");";
 
 		return ret;
 	}
diff --git a/src/main/resources/com/ardublock/block/ardublock.properties b/src/main/resources/com/ardublock/block/ardublock.properties
index d620c11..b1364cb 100644
--- a/src/main/resources/com/ardublock/block/ardublock.properties
+++ b/src/main/resources/com/ardublock/block/ardublock.properties
@@ -686,6 +686,12 @@ 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
 #****************************
@@ -693,6 +699,7 @@ bd.array=Arrays
 
 bg.arrayDivider1=|       analog      |
 bg.arrayDivider2=|       string      |
+bg.arrayDivider3=|       copy/replace      |
 
 bg.create_char_array=create char[]
 bg.read_char_array=read character
@@ -714,6 +721,7 @@ 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
 
+bc.string=char array
 bc.position=position
 bc.array=Name the array
 bc.vecsize=size
diff --git a/src/main/resources/com/ardublock/block/ardublock.xml b/src/main/resources/com/ardublock/block/ardublock.xml
index cda0a1a..979ca2c 100644
--- a/src/main/resources/com/ardublock/block/ardublock.xml
+++ b/src/main/resources/com/ardublock/block/ardublock.xml
@@ -2084,6 +2084,7 @@
 		<!-- ******************** Arrays *************** -->
 		<BlockGenus name="arrayDivider1" kind="command" is-starter="yes" is-terminator="yes" initlabel="bg.arrayDivider1" color="150 150 150" />
 		<BlockGenus name="arrayDivider2" kind="command" is-starter="yes" is-terminator="yes" initlabel="bg.arrayDivider2" color="150 150 150" />
+		<BlockGenus name="arrayDivider3" kind="command" is-starter="yes" is-terminator="yes" initlabel="bg.arrayDivider3" color="150 150 150" />
 		
 		<BlockGenus name="create_char_array" kind="command" color="200 0 0" initlabel="bg.create_char_array">
 	      <description>
@@ -2107,7 +2108,7 @@
 			</description>
 			<BlockConnectors>
 				<BlockConnector connector-type="string-list" connector-kind="plug" />
-				<BlockConnector connector-type="string" connector-kind="socket" label="bc.array">
+				<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="bc.position">
@@ -2120,7 +2121,7 @@
 				<text>Set a array value</text>
 			</description>
 			<BlockConnectors>
-				<BlockConnector connector-type="string" connector-kind="socket" label="bc.array">
+				<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="bc.position">
@@ -2215,6 +2216,50 @@
 				</BlockConnector>
 			</BlockConnectors>
 		</BlockGenus>
+		
+		<BlockGenus name="memcpy_string" kind="command" color="200 0 0" initlabel="memcpy_string">
+			<description>
+				<text>memcpy</text>
+			</description>
+			<BlockConnectors>
+				<BlockConnector connector-type="string" connector-kind="socket" label="bc.array">
+					<DefaultArg genus-name="variable_string" label="Name_der_Zeichenkette" />
+				</BlockConnector>
+				<BlockConnector connector-type="string" connector-kind="socket" label="bc.array">
+					<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">
+			<description>
+				<text>memset</text>
+			</description>
+			<BlockConnectors>
+				<BlockConnector connector-type="string" connector-kind="socket" label="bc.string">
+					<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" />
+				</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">
+			<description>
+				<text>strcpy</text>
+			</description>
+			<BlockConnectors>
+				<BlockConnector connector-type="string" connector-kind="socket" label="bc.array">
+					<DefaultArg genus-name="variable_string" label="Name_der_Zeichenkette" />
+				</BlockConnector>
+				<BlockConnector connector-type="string" connector-kind="socket" label="bc.array">
+					<DefaultArg genus-name="variable_string" label="Name_der_Zeichenkette2" />
+				</BlockConnector>
+			</BlockConnectors>
+		</BlockGenus>
 	    
 		<!-- ******************** Communication *************** -->
 		<BlockGenus name="communicationDivider1" kind="command" is-starter="yes" is-terminator="yes" initlabel="bg.communicationDivider1" color="150 150 150" />
@@ -3400,6 +3445,11 @@
 				<BlockGenusMember>create_char_array</BlockGenusMember>
 				<BlockGenusMember>setter_char_array</BlockGenusMember>
 				<BlockGenusMember>read_char_array</BlockGenusMember>
+				
+				<BlockGenusMember>arrayDivider3</BlockGenusMember>
+				<BlockGenusMember>memcpy_string</BlockGenusMember>
+				<BlockGenusMember>memset_string</BlockGenusMember>
+				<BlockGenusMember>strcpy_string</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 abc3a60..ae404af 100644
--- a/src/main/resources/com/ardublock/block/ardublock_de.properties
+++ b/src/main/resources/com/ardublock/block/ardublock_de.properties
@@ -670,7 +670,6 @@ bg.local_variable_file.description=lokale Datei Variable
 bg.local_variable_number.description=Name der lokalen analogen Variable (int)\nDatentyp hängt vom \"Setze-Block\" ab
 bg.local_variable_digital.description=Name der lokalen digitalen Variable (bool)
 
-bc.string=Zeichenkette
 bc.num=#
 bc.position=Position
 bc.variable_digital=digitale_Variable
@@ -692,6 +691,7 @@ bd.array=Tabellen
 
 bg.arrayDivider1=|       analoge Tabellen      |
 bg.arrayDivider2=|       Zeichenketten      |
+bg.arrayDivider3=|       kopieren/ersetzen      |
 
 bg.create_char_array=Erstelle Zeichenkette
 bg.read_char_array=lese Zeichen
@@ -713,6 +713,14 @@ 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.strcpy_string=kopiere Zeichenkette
+bg.strcpy_string.description=kopiere eine Zeichenkette in eine andere
+
+bc.string=Zeichenkette
 bc.position=Stelle
 bc.array=Tabellen-Name
 bc.vecsize=Anzahl Werte
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 e25ecd6..58c032b 100644
--- a/src/main/resources/com/ardublock/block/ardublock_en_GB.properties
+++ b/src/main/resources/com/ardublock/block/ardublock_en_GB.properties
@@ -669,7 +669,6 @@ bg.local_variable_file.description=lokale Datei Variable
 bg.local_variable_number.description=Name der lokalen analogen Variable (int)\nDatentyp hängt vom \"Setze-Block\" ab
 bg.local_variable_digital.description=Name der lokalen digitalen Variable (bool)
 
-bc.string=char-Array
 bc.num=#
 bc.position=Position
 bc.variable_digital=bool_Variable
@@ -691,6 +690,7 @@ bd.array=Tabellen
 
 bg.arrayDivider1=|       analoge Tabellen      |
 bg.arrayDivider2=|       Zeichenketten      |
+bg.arrayDivider3=|       kopieren/ersetzen      |
 
 bg.create_char_array=Erstelle char-Array
 bg.read_char_array=lese char-Zeichen
@@ -712,6 +712,14 @@ 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_string=memcpy
+bg.memcpy_string.description=copy a block of memory from a location to another 
+bg.memset_string=memset
+bg.memset_string.description=kopiere ein Zeichen/Wert wiederholt in einer Zeichenkette oder Tabelle
+bg.strcpy_string=strcpy
+bg.strcpy_string.description=kopiere eine Zeichenkette in eine andere
+
+bc.string=char-Array
 bc.position=Stelle
 bc.array=Array-Name
 bc.vecsize=Anzahl Werte
diff --git a/src/main/resources/com/ardublock/block/block-mapping.properties b/src/main/resources/com/ardublock/block/block-mapping.properties
index a09aed5..cf5ef85 100644
--- a/src/main/resources/com/ardublock/block/block-mapping.properties
+++ b/src/main/resources/com/ardublock/block/block-mapping.properties
@@ -238,6 +238,10 @@ create_char_array=com.ardublock.translator.block.arrays.CreateCharArrayBlock
 read_char_array=com.ardublock.translator.block.arrays.ReadCharArrayBlock
 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
+strcpy_string=com.ardublock.translator.block.arrays.StrcpyBlock
+
 #COMMUNICATION
 #****************************
 serial_read=com.ardublock.translator.block.communication.SerialReadBlock
-- 
GitLab