From 3926e84126805e0386f3b4a7432f1e0f3023df74 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Anian=20B=C3=BChler?=
 <anian.buehler@reutlingen-university.de>
Date: Wed, 15 Dec 2021 12:34:30 +0100
Subject: [PATCH] added bitwise operators for char

---
 .../translator/block/operators/PidBlock.java  |  2 +-
 .../com/ardublock/block/ardublock.properties  |  9 ++++
 .../com/ardublock/block/ardublock.xml         | 53 +++++++++++++++++++
 .../ardublock/block/ardublock_de.properties   |  8 +++
 .../block/ardublock_en_GB.properties          |  8 +++
 .../ardublock/block/block-mapping.properties  |  4 ++
 6 files changed, 83 insertions(+), 1 deletion(-)

diff --git a/src/main/java/com/ardublock/translator/block/operators/PidBlock.java b/src/main/java/com/ardublock/translator/block/operators/PidBlock.java
index 8fce63b..a306296 100644
--- a/src/main/java/com/ardublock/translator/block/operators/PidBlock.java
+++ b/src/main/java/com/ardublock/translator/block/operators/PidBlock.java
@@ -1,7 +1,6 @@
 package com.ardublock.translator.block.operators;
 
 import java.util.ResourceBundle;
-import java.util.function.ToIntFunction;
 
 import com.ardublock.translator.Translator;
 import com.ardublock.translator.block.TranslatorBlock;
@@ -34,6 +33,7 @@ public class PidBlock extends TranslatorBlock
 		boolean derivative  = tb_kd != null;
 		boolean limited     = (tb_limitL != null) && (tb_limitH != null);
 		
+		//TODO: TEST CONTROLLER FUNCTIONALITY!!!!!!!
 		
 		//FUNCTION CODE ASSEMBLY
 		String functionCode = "int computePID(int input, int setpoint, long interval, int kp";
diff --git a/src/main/resources/com/ardublock/block/ardublock.properties b/src/main/resources/com/ardublock/block/ardublock.properties
index 27c9c3b..4649738 100644
--- a/src/main/resources/com/ardublock/block/ardublock.properties
+++ b/src/main/resources/com/ardublock/block/ardublock.properties
@@ -457,6 +457,10 @@ bg.and=and
 bg.or=or
 bg.equal_digital===
 bg.not_equal_digital=!=
+bg.bit_and_poly=&
+bg.bit_or_poly=|
+bg.bit_xor_poly=^
+bg.bit_not_poly=~
 bg.bit_and=&
 bg.bit_or=|
 bg.bit_xor=^
@@ -464,6 +468,7 @@ bg.bit_not=~
 bg.bit_shift_left=<<
 bg.bit_shift_right=>>
 
+
 bg.greater.description=True if the first number is greater the second number
 bg.less.description=True if the first number is less then the second number
 bg.equal.description=True if the first number equals to the second number
@@ -477,6 +482,10 @@ bg.or.description=True if one or both of the two conditions are true.
 bg.not.description=The opposite of
 bg.equal_poly.description=True if first character is equal to the second character
 bg.not_equal_poly.description=True if first character is not equal to the second character
+bg.bit_and_poly.description=bitwise AND
+bg.bit_or_poly.description=bitwise OR
+bg.bit_xor_poly.description=bitwise XOR
+bg.bit_not_poly.description=bitwise NOT
 bg.bit_and.description=bitwise AND
 bg.bit_or.description=bitwise OR
 bg.bit_xor.description=bitwise XOR
diff --git a/src/main/resources/com/ardublock/block/ardublock.xml b/src/main/resources/com/ardublock/block/ardublock.xml
index 6be7bd5..339c3d5 100644
--- a/src/main/resources/com/ardublock/block/ardublock.xml
+++ b/src/main/resources/com/ardublock/block/ardublock.xml
@@ -1179,6 +1179,54 @@
 				<BlockConnector connector-type="string-list" connector-kind="socket" position-type="bottom" />
 			</BlockConnectors>
 		</BlockGenus>
+		<BlockGenus name="bit_and_poly" kind="function" color="255 20 147" initlabel="bg.bit_and_poly">
+			<description>
+				<text></text>
+			</description>
+			<BlockConnectors>
+				<BlockConnector connector-type="string-list" connector-kind="plug" position-type="mirror" >					
+					<DefaultArg genus-name="dummy" label="" />
+				</BlockConnector>
+				<BlockConnector connector-type="string-list" connector-kind="socket" position-type="bottom" />
+				<BlockConnector connector-type="string-list" connector-kind="socket" position-type="bottom" />
+			</BlockConnectors>
+		</BlockGenus>
+		<BlockGenus name="bit_or_poly" kind="function" color="255 20 147" initlabel="bg.bit_or_poly">
+			<description>
+				<text></text>
+			</description>
+			<BlockConnectors>
+				<BlockConnector connector-type="string-list" connector-kind="plug" position-type="mirror" >					
+					<DefaultArg genus-name="dummy" label="" />
+				</BlockConnector>
+				<BlockConnector connector-type="string-list" connector-kind="socket" position-type="bottom" />
+				<BlockConnector connector-type="string-list" connector-kind="socket" position-type="bottom" />
+			</BlockConnectors>
+		</BlockGenus>
+		<BlockGenus name="bit_xor_poly" kind="function" color="255 20 147" initlabel="bg.bit_xor_poly">
+			<description>
+				<text></text>
+			</description>
+			<BlockConnectors>
+				<BlockConnector connector-type="string-list" connector-kind="plug" position-type="mirror" >					
+					<DefaultArg genus-name="dummy" label="" />
+				</BlockConnector>
+				<BlockConnector connector-type="string-list" connector-kind="socket" position-type="bottom" />
+				<BlockConnector connector-type="string-list" connector-kind="socket" position-type="bottom" />
+			</BlockConnectors>
+		</BlockGenus>
+		<BlockGenus name="bit_not_poly" kind="function" color="255 20 147" initlabel="bg.bit_not_poly">
+			<description>
+				<text></text>
+			</description>
+			<BlockConnectors>
+				<BlockConnector connector-type="string-list" connector-kind="plug" position-type="mirror" >					
+					<DefaultArg genus-name="dummy" label="" />
+				</BlockConnector>
+				<BlockConnector connector-type="string-list" connector-kind="socket" position-type="bottom" />
+				<BlockConnector connector-type="string-list" connector-kind="socket" position-type="bottom" />
+			</BlockConnectors>
+		</BlockGenus>
 		<BlockGenus name="bit_and" kind="function" color="255 20 147" initlabel="bg.bit_and">
 			<description>
 				<text></text>
@@ -3116,6 +3164,11 @@
 				
 				<BlockGenusMember>bit_shift_left</BlockGenusMember>
 				<BlockGenusMember>bit_shift_right</BlockGenusMember>
+				
+				<BlockGenusMember>bit_and_poly</BlockGenusMember>
+				<BlockGenusMember>bit_or_poly</BlockGenusMember>
+				<BlockGenusMember>bit_xor_poly</BlockGenusMember>
+				<BlockGenusMember>bit_not_poly</BlockGenusMember>
 			</BlockDrawer>
 			<BlockDrawer button-color="255 20 147" name="bd.logic" type="page">
 				<BlockGenusMember>logicDivider1</BlockGenusMember> 
diff --git a/src/main/resources/com/ardublock/block/ardublock_de.properties b/src/main/resources/com/ardublock/block/ardublock_de.properties
index c74aa13..33bbb79 100644
--- a/src/main/resources/com/ardublock/block/ardublock_de.properties
+++ b/src/main/resources/com/ardublock/block/ardublock_de.properties
@@ -455,6 +455,10 @@ bg.and=UND
 bg.or=ODER
 bg.equal_digital===
 bg.not_equal_digital=!=
+bg.bit_and_poly=&
+bg.bit_or_poly=|
+bg.bit_xor_poly=^
+bg.bit_not_poly=~
 bg.bit_and=&
 bg.bit_or=|
 bg.bit_xor=^
@@ -475,6 +479,10 @@ bg.or.description=WAHR, wenn eine oder beide Bedingungen erf
 bg.not.description= Das Gegenteil von (z.B. WAHR wird zu FALSCH)
 bg.equal_poly.description=WAHR wenn die zwei Zeichen identisch sind
 bg.not_equal_poly.description=WAHR wenn die zwei Zeichen NICHT identisch sind
+bg.bit_and_poly.description=bitweises UND
+bg.bit_or_poly.description=bitweises ODER
+bg.bit_xor_poly.description=bitweises XOR
+bg.bit_not_poly.description=bitweises NICHT
 bg.bit_and.description=bitweises UND
 bg.bit_or.description=bitweises ODER
 bg.bit_xor.description=bitweises EXCLUSIV-ODER
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 b403f41..80189ec 100644
--- a/src/main/resources/com/ardublock/block/ardublock_en_GB.properties
+++ b/src/main/resources/com/ardublock/block/ardublock_en_GB.properties
@@ -456,6 +456,10 @@ bg.and=&& (AND)
 bg.or=|| (OR)
 bg.equal_digital===
 bg.not_equal_digital=!=
+bg.bit_and_poly=&
+bg.bit_or_poly=|
+bg.bit_xor_poly=^
+bg.bit_not_poly=~
 bg.bit_and=&
 bg.bit_or=|
 bg.bit_xor=^
@@ -476,6 +480,10 @@ bg.or.description=ODER - WAHR, wenn eine oder beide Bedingungen erf
 bg.not.description=NICHT - Das Gegenteil von (z.B. WAHR wird zu FALSCH)
 bg.equal_poly.description=WAHR wenn die zwei Zeichen identisch sind
 bg.not_equal_poly.description=WAHR wenn die zwei Zeichen NICHT identisch sind
+bg.bit_and_poly.description=bitweises UND
+bg.bit_or_poly.description=bitweises ODER
+bg.bit_xor_poly.description=bitweises XOR
+bg.bit_not_poly.description=bitweises NICHT
 bg.bit_and.description=bitweises UND
 bg.bit_or.description=bitweises ODER
 bg.bit_xor.description=bitweises EXCLUSIV-ODER
diff --git a/src/main/resources/com/ardublock/block/block-mapping.properties b/src/main/resources/com/ardublock/block/block-mapping.properties
index 3707487..a09aed5 100644
--- a/src/main/resources/com/ardublock/block/block-mapping.properties
+++ b/src/main/resources/com/ardublock/block/block-mapping.properties
@@ -138,6 +138,10 @@ greater_equal=com.ardublock.translator.block.logic.GreaterEqualBlock
 less_equal=com.ardublock.translator.block.logic.LessEqualBlock
 not_equal=com.ardublock.translator.block.logic.NotEqualBlock
 equal=com.ardublock.translator.block.logic.EqualBlock
+bit_and_poly=com.ardublock.translator.block.logic.BitAndBlock
+bit_or_poly=com.ardublock.translator.block.logic.BitOrBlock
+bit_xor_poly=com.ardublock.translator.block.logic.BitXorBlock
+bit_not_poly=com.ardublock.translator.block.logic.BitNotBlock
 bit_and=com.ardublock.translator.block.logic.BitAndBlock
 bit_or=com.ardublock.translator.block.logic.BitOrBlock
 bit_xor=com.ardublock.translator.block.logic.BitXorBlock
-- 
GitLab