Skip to content
Snippets Groups Projects
Commit e5f821dc authored by Anian Bühler's avatar Anian Bühler
Browse files

added ArrayReferenceBlock (&array[1])

parent 0f986d06
Branches
No related tags found
1 merge request!1dev_prefereences to master
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.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
{
private static ResourceBundle uiMessageBundle = ResourceBundle.getBundle("com/ardublock/block/ardublock");
public ArrayReferenceBlock(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);
TranslatorBlock tb_offset = this.getRequiredTranslatorBlockAtSocket(1);
String arrayName = tb_name.toCode();
String referenceOffset = tb_offset.toCode();
if ((tb_name instanceof StringBlock) || (tb_name instanceof NumberBlock)) {
throw new BlockException(blockId, uiMessageBundle.getString("ardublock.error_msg.var_slot"));
}
String ret = "&"+arrayName+"[" + referenceOffset + "]";
return ret;
}
}
......@@ -106,6 +106,7 @@ ardublock.error_msg.char_var_slot=Char variable slot must take a char variable n
ardublock.error_msg.array_var_slot='Array variable' slot must take an 'array variable' name.\nHint: Look at the 'variable' socket on the highlighted block
ardublock.error_msg.array_size_slot='Array size' slot must take a standard integer constant
ardublock.error_msg.string_var_slot=String variable slot must take a String variable name.\nHint: Look at the 'variable' socket on the highlighted block
ardublock.error_msg.var_slot= The slot must take an variable-block
ardublock.error_msg.string_slot=String slot must take a String variable or a String variable name.\nHint: Look at the 'variable' socket on the highlighted block
ardublock.error_msg.Digital_pin_slot=Pin# must be a valid digital pin number found on an Arduino Board
ardublock.error_msg.Analog_pin_slot=Pin# must be a valid analog input pin number found on an Arduino Board
......
......
......@@ -2260,6 +2260,35 @@
</BlockConnector>
</BlockConnectors>
</BlockGenus>
<BlockGenus name="reference_string" kind="data" color="200 0 0" initlabel="bg.reference_string">
<description>
<text>reference_string</text>
</description>
<BlockConnectors>
<BlockConnector connector-type="string" connector-kind="plug" />
<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">
<DefaultArg genus-name="number" label="0" />
</BlockConnector>
</BlockConnectors>
</BlockGenus>
<BlockGenus name="reference_number" kind="data" color="200 0 0" initlabel="bg.reference_number">
<description>
<text>reference_number</text>
</description>
<BlockConnectors>
<BlockConnector connector-type="number" connector-kind="plug" />
<BlockConnector connector-type="number" connector-kind="socket" label="bc.string">
<DefaultArg genus-name="variable_number" label="Name_der_Tabelle" />
</BlockConnector>
<BlockConnector connector-type="number" connector-kind="socket" label="offset">
<DefaultArg genus-name="number" label="0" />
</BlockConnector>
</BlockConnectors>
</BlockGenus>
<!-- ******************** Communication *************** -->
<BlockGenus name="communicationDivider1" kind="command" is-starter="yes" is-terminator="yes" initlabel="bg.communicationDivider1" color="150 150 150" />
......@@ -3450,6 +3479,8 @@
<BlockGenusMember>memcpy_string</BlockGenusMember>
<BlockGenusMember>memset_string</BlockGenusMember>
<BlockGenusMember>strcpy_string</BlockGenusMember>
<BlockGenusMember>reference_string</BlockGenusMember>
<BlockGenusMember>reference_number</BlockGenusMember>
</BlockDrawer>
<BlockDrawer button-color="165 42 42" name="bd.communication" type="default">
......
......
......@@ -109,6 +109,7 @@ ardublock.error_msg.array_var_slot=Der 'Variable'-Sockel ben
ardublock.error_msg.array_size_slot=Der 'Gre' Slot muss einen analogen Wert enthalten
ardublock.error_msg.string_var_slot=Der 'Variable'-Slot bentigt einen 'Name_der_String_Variable'-Block.\nTIPP: Schaue an dem 'Variable' Sockel an dem hervorgehobenen Block!
ardublock.error_msg.string_slot= Der 'Wert'-Slot bentigt einen 'String_Variable'-Block oder einen 'Name_der_String_Variable'-Block.\nTIPP: Schaue an dem 'Variable' Sockel an dem hervorgehobenen Block!
ardublock.error_msg.var_slot= Der Slot bentigt einen 'Variable'-Block
ardublock.error_msg.local_var_slot=Der 'Variable'-Sockel bentigt einen 'lokale_X_Variable'-Block.\nTIPP: Schaue an dem 'Variable' Sockel an dem hervorgehobenen Block!
ardublock.error_msg.var_value_slot=Der Sockel bentigt einen 'Variable' oder 'Wert'-Block.\nTIPP: Schaue an dem hervorgehobenen Block!
ardublock.error_msg.var_value_slot=Es ist nur ein Rueckgabeparameter pro Unterprogramm erlaubt!
......@@ -719,6 +720,10 @@ 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
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
bc.string=Zeichenkette
bc.position=Stelle
......
......
......@@ -109,6 +109,7 @@ ardublock.error_msg.array_var_slot=Der 'Variable'-Sockel ben
ardublock.error_msg.number_const_write=
ardublock.error_msg.array_size_slot=Der 'Gre' Slot muss einen analogen Wert enthalten
ardublock.error_msg.string_var_slot=Der 'Variable'-Slot bentigt einen 'Name_der_String_Variable'-Block.\nTIPP: Schaue an dem 'Variable' Sockel an dem hervorgehobenen Block!
ardublock.error_msg.var_slot= Der Slot bentigt einen 'Variable'-Block
ardublock.error_msg.string_slot= Der 'Wert'-Slot bentigt einen 'String_Variable'-Block oder einen 'Name_der_String_Variable'-Block.\nTIPP: Schaue an dem 'Variable' Sockel an dem hervorgehobenen Block!
ardublock.error_msg.local_var_slot=Der 'Variable'-Sockel bentigt einen 'lokale_X_Variable'-Block.\nTIPP: Schaue an dem 'Variable' Sockel an dem hervorgehobenen Block!
ardublock.error_msg.var_value_slot=Der Sockel bentigt einen 'Variable' oder 'Wert'-Block.\nTIPP: Schaue an dem hervorgehobenen Block!
......@@ -718,6 +719,10 @@ 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
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
bc.string=char-Array
bc.position=Stelle
......
......
......@@ -241,6 +241,8 @@ 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
reference_string=com.ardublock.translator.block.arrays.ArrayReferenceBlock
reference_number=com.ardublock.translator.block.arrays.ArrayReferenceBlock
#COMMUNICATION
#****************************
......
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment