diff --git a/src/main/java/com/ardublock/translator/block/cast/CastAtoi.java b/src/main/java/com/ardublock/translator/block/cast/CastAtoi.java new file mode 100644 index 0000000000000000000000000000000000000000..71915b27523307859dd4a48ee01249eb608a03da --- /dev/null +++ b/src/main/java/com/ardublock/translator/block/cast/CastAtoi.java @@ -0,0 +1,23 @@ +package com.ardublock.translator.block.cast; + +import com.ardublock.translator.Translator; +import com.ardublock.translator.block.TranslatorBlock; +import com.ardublock.translator.block.exception.SocketNullException; +import com.ardublock.translator.block.exception.SubroutineNotDeclaredException; + +public class CastAtoi extends TranslatorBlock +{ + public CastAtoi(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 = this.getRequiredTranslatorBlockAtSocket(0); + String charArray = tb.toCode().replaceAll("\\s*_.new\\b\\s*", ""); + + return "atoi("+ charArray + ")"; + } + +} diff --git a/src/main/java/com/ardublock/translator/block/cast/CastItoa.java b/src/main/java/com/ardublock/translator/block/cast/CastItoa.java new file mode 100644 index 0000000000000000000000000000000000000000..09ef7e23e9a5ab2151ce6ec5dd63e47cf23395f6 --- /dev/null +++ b/src/main/java/com/ardublock/translator/block/cast/CastItoa.java @@ -0,0 +1,23 @@ +package com.ardublock.translator.block.cast; + +import com.ardublock.translator.Translator; +import com.ardublock.translator.block.TranslatorBlock; +import com.ardublock.translator.block.exception.SocketNullException; +import com.ardublock.translator.block.exception.SubroutineNotDeclaredException; + +public class CastItoa extends TranslatorBlock +{ + public CastItoa(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 = this.getRequiredTranslatorBlockAtSocket(0); + String intValue = tb.toCode().replaceAll("\\s*_.new\\b\\s*", ""); + + return "itoa("+ intValue + ")"; + } + +} diff --git a/src/main/resources/com/ardublock/block/ardublock.properties b/src/main/resources/com/ardublock/block/ardublock.properties index 0b86b9677f6a0b927d6454ff268a95b3f6c92e1b..cc3fb0ed919164d80a52af3e833504910d3300b8 100644 --- a/src/main/resources/com/ardublock/block/ardublock.properties +++ b/src/main/resources/com/ardublock/block/ardublock.properties @@ -536,6 +536,12 @@ bc.element = element #**************************** bd.cast=type cast +bg.castDivider1=| ASCII <-> int | +bg.castDivider2=| datatypes | +bg.castDivider3=| byte <-> char | + +bg.cast_atoi=atoi +bg.cast_itoa=itoa bg.cast_number=cast analog bg.cast_number_byte=cast short analog bg.cast_number_long=cast long analog @@ -547,6 +553,8 @@ bg.cast_up_int_char=cast upper byte of int to char bg.cast_char_int=cast int from two char bg.cast_byte_int=cast int from two byte +bg.cast_atoi.description=read int from char-array +bg.cast_itoa.description=create char-array from int bg.cast_number.description=cast int bg.cast_number_byte.description=cast byte bg.cast_number_long.description=cast long diff --git a/src/main/resources/com/ardublock/block/ardublock.xml b/src/main/resources/com/ardublock/block/ardublock.xml index 520e9f613500f3648d2d0ba354223e1feb3373ff..441a061ffa2501fb3d084b1c6a189e5a86019de0 100644 --- a/src/main/resources/com/ardublock/block/ardublock.xml +++ b/src/main/resources/com/ardublock/block/ardublock.xml @@ -1468,6 +1468,32 @@ </BlockGenus> <!-- ******************** Cast *************** --> + <BlockGenus name="castDivider1" kind="command" is-starter="yes" is-terminator="yes" initlabel="bg.castDivider1" color="150 150 150" /> + <BlockGenus name="castDivider2" kind="command" is-starter="yes" is-terminator="yes" initlabel="bg.castDivider2" color="150 150 150" /> + <BlockGenus name="castDivider3" kind="command" is-starter="yes" is-terminator="yes" initlabel="bg.castDivider3" color="150 150 150" /> + + <BlockGenus name="cast_atoi" kind="data" initlabel="bg.cast_atoi" editable-label="no" is-label-value="yes" color="255 50 0"> + <description> + <text> + cast atoi + </text> + </description> + <BlockConnectors> + <BlockConnector connector-type="number" connector-kind="plug" /> + <BlockConnector connector-type="string" connector-kind="socket" /> + </BlockConnectors> + </BlockGenus> + <BlockGenus name="cast_itoa" kind="data" initlabel="bg.cast_itoa" editable-label="no" is-label-value="yes" color="255 50 0"> + <description> + <text> + cast itoa + </text> + </description> + <BlockConnectors> + <BlockConnector connector-type="string" connector-kind="plug" /> + <BlockConnector connector-type="number" connector-kind="socket" /> + </BlockConnectors> + </BlockGenus> <BlockGenus name="cast_number" kind="data" initlabel="bg.cast_number" editable-label="no" is-label-value="yes" color="255 50 0"> <description> <text> @@ -3108,11 +3134,17 @@ </BlockDrawer> <BlockDrawer button-color="255 50 0" name="bd.cast" type="custom"> + <BlockGenusMember>castDivider1</BlockGenusMember> + <BlockGenusMember>cast_atoi</BlockGenusMember> + <BlockGenusMember>cast_itoa</BlockGenusMember> + + <BlockGenusMember>castDivider2</BlockGenusMember> <BlockGenusMember>cast_number</BlockGenusMember> <BlockGenusMember>cast_number_byte</BlockGenusMember> <BlockGenusMember>cast_number_long</BlockGenusMember> <BlockGenusMember>cast_number_float</BlockGenusMember> + <BlockGenusMember>castDivider3</BlockGenusMember> <BlockGenusMember>cast_up_int_char</BlockGenusMember> <BlockGenusMember>cast_low_int_char</BlockGenusMember> diff --git a/src/main/resources/com/ardublock/block/ardublock_de.properties b/src/main/resources/com/ardublock/block/ardublock_de.properties index eb574f2f213e080cc4d2de4ad4ffbe1fc904d0da..140642b134e0cbd3dc8f6c980b9ab7791d693d9a 100644 --- a/src/main/resources/com/ardublock/block/ardublock_de.properties +++ b/src/main/resources/com/ardublock/block/ardublock_de.properties @@ -533,6 +533,12 @@ bc.element = Element #**************************** bd.cast=Typ Konvertierung +bg.castDivider1=| Zeichenketten <-> analoge Werte | +bg.castDivider2=| Datentypen | +bg.castDivider3=| kurze analoge Werte <-> Zeichen | + +bg.cast_atoi=Zeichenkette zu analogem Wert +bg.cast_itoa=analoger Wert zu Zeichenkette bg.cast_number=wandle in analogen Wert bg.cast_number_byte=wandle in kurzen analogen Wert bg.cast_number_long=wandle in langen analogen Wert @@ -544,6 +550,8 @@ bg.cast_up_int_char=oberer Teil analoger Wert zu Zeichen bg.cast_char_int=Zeichen zu analoger Wert bg.cast_byte_int=kurzer analoger Wert zu analogem Wert +bg.cast_atoi.description=lese analogen Wert (int) aus Zeichenkette (char) +bg.cast_itoa.description=erstelle Zeichenkette (char) aus analogem Wert (int) bg.cast_number.description=wandle in analogen Wert bg.cast_number_byte.description=wandle in kurzen analogen Wert bg.cast_number_long.description=wandle in langen analogen Wert 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 2a04923287e4ce65037914e1fbba47e272acfef4..c3b40f10ebb4dae576ac204ceba7dbac783895e2 100644 --- a/src/main/resources/com/ardublock/block/ardublock_en_GB.properties +++ b/src/main/resources/com/ardublock/block/ardublock_en_GB.properties @@ -533,6 +533,12 @@ bc.element = Element #**************************** bd.cast=Typ Konvertierung +bg.castDivider1=| ASCII <-> int | +bg.castDivider2=| Datentypen | +bg.castDivider3=| byte <-> char | + +bg.cast_atoi=atoi +bg.cast_itoa=itoa bg.cast_number=(int) bg.cast_number_byte=(byte) bg.cast_number_long=(long) @@ -544,6 +550,8 @@ bg.cast_up_int_char=(int >> 8) zu char bg.cast_char_int=char zu int bg.cast_byte_int=byte zu int +bg.cast_atoi.description=lese int-Wert aus char-array +bg.cast_itoa.description=erstelle char-array aus int-Wert bg.cast_number.description=wandle zu int bg.cast_number_byte.description=wandle zu byte bg.cast_number_long.description=wandle zu long diff --git a/src/main/resources/com/ardublock/block/block-mapping.properties b/src/main/resources/com/ardublock/block/block-mapping.properties index 381d417e77576251fb2cdcdf9dba70bce3076029..bdd771c77c0eb554bec04970c17e5e9f794442fc 100644 --- a/src/main/resources/com/ardublock/block/block-mapping.properties +++ b/src/main/resources/com/ardublock/block/block-mapping.properties @@ -168,6 +168,8 @@ map=com.ardublock.translator.block.operators.MapBlock #CAST #**************************** +cast_atoi=com.ardublock.translator.block.cast.CastAtoi +cast_itoa=com.ardublock.translator.block.cast.CastItoa cast_number=com.ardublock.translator.block.cast.CastNumberBlock cast_number_byte=com.ardublock.translator.block.cast.CastNumberByteBlock cast_number_long=com.ardublock.translator.block.cast.CastNumberLongBlock