Skip to content
Snippets Groups Projects
Commit 1c945a6e authored by Sebastian Ebert's avatar Sebastian Ebert
Browse files

initial merge state

parents d740a665 d79785b9
No related branches found
No related tags found
1 merge request!11Merge/dev to fork master merge
Showing
with 348 additions and 2 deletions
// --- update definitions --- // --- update definitions ---
// native types, synthesized // native types, synthesized
send NativeTypesSyn.BooleanValue;
send NativeTypesSyn.IntValue; send NativeTypesSyn.IntValue;
send NativeTypesSyn.ShortValue; send NativeTypesSyn.ShortValue;
send NativeTypesSyn.LongValue; send NativeTypesSyn.LongValue;
...@@ -8,7 +9,18 @@ send NativeTypesSyn.DoubleValue; ...@@ -8,7 +9,18 @@ send NativeTypesSyn.DoubleValue;
send NativeTypesSyn.CharValue; send NativeTypesSyn.CharValue;
send NativeTypesSyn.StringValue; send NativeTypesSyn.StringValue;
// native types, synthesized, transformed
send NativeTypesSyn.BooleanValueTransformed using BooleanTransformation;
send NativeTypesSyn.IntValueTransformed using IntTransformation;
send NativeTypesSyn.ShortValueTransformed using ShortTransformation;
send NativeTypesSyn.LongValueTransformed using LongTransformation;
send NativeTypesSyn.FloatValueTransformed using FloatTransformation;
send NativeTypesSyn.DoubleValueTransformed using DoubleTransformation;
send NativeTypesSyn.CharValueTransformed using CharTransformation;
send NativeTypesSyn.StringValueTransformed using StringTransformation;
// boxed types, synthesized // boxed types, synthesized
send BoxedTypesSyn.BooleanValue;
send BoxedTypesSyn.IntValue; send BoxedTypesSyn.IntValue;
send BoxedTypesSyn.ShortValue; send BoxedTypesSyn.ShortValue;
send BoxedTypesSyn.LongValue; send BoxedTypesSyn.LongValue;
...@@ -16,7 +28,17 @@ send BoxedTypesSyn.FloatValue; ...@@ -16,7 +28,17 @@ send BoxedTypesSyn.FloatValue;
send BoxedTypesSyn.DoubleValue; send BoxedTypesSyn.DoubleValue;
send BoxedTypesSyn.CharValue; send BoxedTypesSyn.CharValue;
// boxed types, synthesized, transformed
send BoxedTypesSyn.BooleanValueTransformed using BooleanTransformation;
send BoxedTypesSyn.IntValueTransformed using IntTransformation;
send BoxedTypesSyn.ShortValueTransformed using ShortTransformation;
send BoxedTypesSyn.LongValueTransformed using LongTransformation;
send BoxedTypesSyn.FloatValueTransformed using FloatTransformation;
send BoxedTypesSyn.DoubleValueTransformed using DoubleTransformation;
send BoxedTypesSyn.CharValueTransformed using CharTransformation;
// --- dependency definitions --- // --- dependency definitions ---
NativeTypesSyn.BooleanValue canDependOn NativeTypesSyn.DriverSyn as nativeBooleanDependency;
NativeTypesSyn.IntValue canDependOn NativeTypesSyn.DriverSyn as nativeIntDependency; NativeTypesSyn.IntValue canDependOn NativeTypesSyn.DriverSyn as nativeIntDependency;
NativeTypesSyn.ShortValue canDependOn NativeTypesSyn.DriverSyn as nativeShortDependency; NativeTypesSyn.ShortValue canDependOn NativeTypesSyn.DriverSyn as nativeShortDependency;
NativeTypesSyn.LongValue canDependOn NativeTypesSyn.DriverSyn as nativeLongDependency; NativeTypesSyn.LongValue canDependOn NativeTypesSyn.DriverSyn as nativeLongDependency;
...@@ -24,6 +46,8 @@ NativeTypesSyn.FloatValue canDependOn NativeTypesSyn.DriverSyn as nativeFloatDep ...@@ -24,6 +46,8 @@ NativeTypesSyn.FloatValue canDependOn NativeTypesSyn.DriverSyn as nativeFloatDep
NativeTypesSyn.DoubleValue canDependOn NativeTypesSyn.DriverSyn as nativeDoubleDependency; NativeTypesSyn.DoubleValue canDependOn NativeTypesSyn.DriverSyn as nativeDoubleDependency;
NativeTypesSyn.CharValue canDependOn NativeTypesSyn.DriverSyn as nativeCharDependency; NativeTypesSyn.CharValue canDependOn NativeTypesSyn.DriverSyn as nativeCharDependency;
NativeTypesSyn.StringValue canDependOn NativeTypesSyn.DriverSyn as nativeStringDependency; NativeTypesSyn.StringValue canDependOn NativeTypesSyn.DriverSyn as nativeStringDependency;
BoxedTypesSyn.BooleanValue canDependOn BoxedTypesSyn.DriverSyn as boxedBooleanDependency;
BoxedTypesSyn.IntValue canDependOn BoxedTypesSyn.DriverSyn as boxedIntDependency; BoxedTypesSyn.IntValue canDependOn BoxedTypesSyn.DriverSyn as boxedIntDependency;
BoxedTypesSyn.ShortValue canDependOn BoxedTypesSyn.DriverSyn as boxedShortDependency; BoxedTypesSyn.ShortValue canDependOn BoxedTypesSyn.DriverSyn as boxedShortDependency;
BoxedTypesSyn.LongValue canDependOn BoxedTypesSyn.DriverSyn as boxedLongDependency; BoxedTypesSyn.LongValue canDependOn BoxedTypesSyn.DriverSyn as boxedLongDependency;
...@@ -31,6 +55,23 @@ BoxedTypesSyn.FloatValue canDependOn BoxedTypesSyn.DriverSyn as boxedFloatDepend ...@@ -31,6 +55,23 @@ BoxedTypesSyn.FloatValue canDependOn BoxedTypesSyn.DriverSyn as boxedFloatDepend
BoxedTypesSyn.DoubleValue canDependOn BoxedTypesSyn.DriverSyn as boxedDoubleDependency; BoxedTypesSyn.DoubleValue canDependOn BoxedTypesSyn.DriverSyn as boxedDoubleDependency;
BoxedTypesSyn.CharValue canDependOn BoxedTypesSyn.DriverSyn as boxedCharDependency; BoxedTypesSyn.CharValue canDependOn BoxedTypesSyn.DriverSyn as boxedCharDependency;
NativeTypesSyn.BooleanValueTransformed canDependOn NativeTypesSyn.DriverSyn as nativeBooleanTransformedDependency;
NativeTypesSyn.IntValueTransformed canDependOn NativeTypesSyn.DriverSyn as nativeIntTransformedDependency;
NativeTypesSyn.ShortValueTransformed canDependOn NativeTypesSyn.DriverSyn as nativeShortTransformedDependency;
NativeTypesSyn.LongValueTransformed canDependOn NativeTypesSyn.DriverSyn as nativeLongTransformedDependency;
NativeTypesSyn.FloatValueTransformed canDependOn NativeTypesSyn.DriverSyn as nativeFloatTransformedDependency;
NativeTypesSyn.DoubleValueTransformed canDependOn NativeTypesSyn.DriverSyn as nativeDoubleTransformedDependency;
NativeTypesSyn.CharValueTransformed canDependOn NativeTypesSyn.DriverSyn as nativeCharTransformedDependency;
NativeTypesSyn.StringValueTransformed canDependOn NativeTypesSyn.DriverSyn as nativeStringTransformedDependency;
BoxedTypesSyn.BooleanValueTransformed canDependOn BoxedTypesSyn.DriverSyn as boxedBooleanTransformedDependency;
BoxedTypesSyn.IntValueTransformed canDependOn BoxedTypesSyn.DriverSyn as boxedIntTransformedDependency;
BoxedTypesSyn.ShortValueTransformed canDependOn BoxedTypesSyn.DriverSyn as boxedShortTransformedDependency;
BoxedTypesSyn.LongValueTransformed canDependOn BoxedTypesSyn.DriverSyn as boxedLongTransformedDependency;
BoxedTypesSyn.FloatValueTransformed canDependOn BoxedTypesSyn.DriverSyn as boxedFloatTransformedDependency;
BoxedTypesSyn.DoubleValueTransformed canDependOn BoxedTypesSyn.DriverSyn as boxedDoubleTransformedDependency;
BoxedTypesSyn.CharValueTransformed canDependOn BoxedTypesSyn.DriverSyn as boxedCharTransformedDependency;
// --- inherited attributes not supported --- // --- inherited attributes not supported ---
//// native types, inherited //// native types, inherited
...@@ -49,3 +90,28 @@ BoxedTypesSyn.CharValue canDependOn BoxedTypesSyn.DriverSyn as boxedCharDependen ...@@ -49,3 +90,28 @@ BoxedTypesSyn.CharValue canDependOn BoxedTypesSyn.DriverSyn as boxedCharDependen
//send BoxedTypesInh.FloatValue; //send BoxedTypesInh.FloatValue;
//send BoxedTypesInh.DoubleValue; //send BoxedTypesInh.DoubleValue;
//send BoxedTypesInh.CharValue; //send BoxedTypesInh.CharValue;
BooleanTransformation maps boolean b to boolean {:
return b;
:}
IntTransformation maps int i to int {:
return i;
:}
ShortTransformation maps short s to short {:
return s;
:}
LongTransformation maps long l to long {:
return l;
:}
FloatTransformation maps float f to float {:
return f;
:}
DoubleTransformation maps double d to double {:
return d;
:}
CharTransformation maps char c to char {:
return c;
:}
StringTransformation maps String s to String {:
return s;
:}
aspect Computation { aspect Computation {
// native types, synthesized // native types, synthesized
syn boolean NativeTypesSyn.getBooleanValue() = Integer.parseInt(getDriverSyn()) > 1;
syn int NativeTypesSyn.getIntValue() = Integer.parseInt(getDriverSyn()); syn int NativeTypesSyn.getIntValue() = Integer.parseInt(getDriverSyn());
syn short NativeTypesSyn.getShortValue() = Short.parseShort(getDriverSyn()); syn short NativeTypesSyn.getShortValue() = Short.parseShort(getDriverSyn());
syn long NativeTypesSyn.getLongValue() = Long.parseLong(getDriverSyn()); syn long NativeTypesSyn.getLongValue() = Long.parseLong(getDriverSyn());
...@@ -8,7 +9,17 @@ aspect Computation { ...@@ -8,7 +9,17 @@ aspect Computation {
syn char NativeTypesSyn.getCharValue() = getDriverSyn().charAt(0); syn char NativeTypesSyn.getCharValue() = getDriverSyn().charAt(0);
syn String NativeTypesSyn.getStringValue() = new String(getDriverSyn()); syn String NativeTypesSyn.getStringValue() = new String(getDriverSyn());
syn boolean NativeTypesSyn.getBooleanValueTransformed() = Integer.parseInt(getDriverSyn()) > 1;
syn int NativeTypesSyn.getIntValueTransformed() = Integer.parseInt(getDriverSyn());
syn short NativeTypesSyn.getShortValueTransformed() = Short.parseShort(getDriverSyn());
syn long NativeTypesSyn.getLongValueTransformed() = Long.parseLong(getDriverSyn());
syn float NativeTypesSyn.getFloatValueTransformed() = Float.parseFloat(getDriverSyn());
syn double NativeTypesSyn.getDoubleValueTransformed() = Double.parseDouble(getDriverSyn());
syn char NativeTypesSyn.getCharValueTransformed() = getDriverSyn().charAt(0);
syn String NativeTypesSyn.getStringValueTransformed() = new String(getDriverSyn());
// boxed types, synthesized // boxed types, synthesized
syn Boolean BoxedTypesSyn.getBooleanValue() = Integer.parseInt(getDriverSyn()) > 1;
syn Integer BoxedTypesSyn.getIntValue() = Integer.valueOf(getDriverSyn()); syn Integer BoxedTypesSyn.getIntValue() = Integer.valueOf(getDriverSyn());
syn Short BoxedTypesSyn.getShortValue() = Short.valueOf(getDriverSyn()); syn Short BoxedTypesSyn.getShortValue() = Short.valueOf(getDriverSyn());
syn Long BoxedTypesSyn.getLongValue() = Long.valueOf(getDriverSyn()); syn Long BoxedTypesSyn.getLongValue() = Long.valueOf(getDriverSyn());
...@@ -16,6 +27,14 @@ aspect Computation { ...@@ -16,6 +27,14 @@ aspect Computation {
syn Double BoxedTypesSyn.getDoubleValue() = Double.valueOf(getDriverSyn()); syn Double BoxedTypesSyn.getDoubleValue() = Double.valueOf(getDriverSyn());
syn Character BoxedTypesSyn.getCharValue() = getDriverSyn().charAt(0); syn Character BoxedTypesSyn.getCharValue() = getDriverSyn().charAt(0);
syn Boolean BoxedTypesSyn.getBooleanValueTransformed() = Integer.parseInt(getDriverSyn()) > 1;
syn Integer BoxedTypesSyn.getIntValueTransformed() = Integer.valueOf(getDriverSyn());
syn Short BoxedTypesSyn.getShortValueTransformed() = Short.valueOf(getDriverSyn());
syn Long BoxedTypesSyn.getLongValueTransformed() = Long.valueOf(getDriverSyn());
syn Float BoxedTypesSyn.getFloatValueTransformed() = Float.valueOf(getDriverSyn());
syn Double BoxedTypesSyn.getDoubleValueTransformed() = Double.valueOf(getDriverSyn());
syn Character BoxedTypesSyn.getCharValueTransformed() = getDriverSyn().charAt(0);
// --- inherited attributes not supported --- // --- inherited attributes not supported ---
// // native types, inherited // // native types, inherited
// inh int NativeTypesInh.getIntValue(); // inh int NativeTypesInh.getIntValue();
......
A ::= NativeTypesSyn* BoxedTypesSyn* <DriverInh:String>; A ::= NativeTypesSyn* BoxedTypesSyn* <DriverInh:String>;
// native types, synthesized // native types, synthesized
NativeTypesSyn ::= <DriverSyn:String> /<IntValue:int>/ /<ShortValue:short>/ /<LongValue:long>/ /<FloatValue:float>/ /<DoubleValue:double>/ /<CharValue:char>/ /<StringValue:String>/ ; NativeTypesSyn ::= <DriverSyn:String> /<BooleanValue:boolean>/ /<IntValue:int>/ /<ShortValue:short>/ /<LongValue:long>/ /<FloatValue:float>/ /<DoubleValue:double>/ /<CharValue:char>/ /<StringValue:String>/ /<BooleanValueTransformed:boolean>/ /<IntValueTransformed:int>/ /<ShortValueTransformed:short>/ /<LongValueTransformed:long>/ /<FloatValueTransformed:float>/ /<DoubleValueTransformed:double>/ /<CharValueTransformed:char>/ /<StringValueTransformed:String>/ ;
// boxed types, synthesized // boxed types, synthesized
BoxedTypesSyn ::= <DriverSyn:String> /<IntValue:Integer>/ /<ShortValue:Short>/ /<LongValue:Long>/ /<FloatValue:Float>/ /<DoubleValue:Double>/ /<CharValue:Character>/ ; BoxedTypesSyn ::= <DriverSyn:String> /<BooleanValue:Boolean>/ /<IntValue:Integer>/ /<ShortValue:Short>/ /<LongValue:Long>/ /<FloatValue:Float>/ /<DoubleValue:Double>/ /<CharValue:Character>/ /<BooleanValueTransformed:Boolean>/ /<IntValueTransformed:Integer>/ /<ShortValueTransformed:Short>/ /<LongValueTransformed:Long>/ /<FloatValueTransformed:Float>/ /<DoubleValueTransformed:Double>/ /<CharValueTransformed:Character>/ ;
// --- inherited attributes not supported --- // --- inherited attributes not supported ---
//// native types, inherited //// native types, inherited
......
Part1.connect Line 3, column 1: Receive definition already defined for DoubledValue
Part1.connect Line 4, column 1: Receive definition already defined for DoubledValue
Part1.connect Line 10, column 1: Receiving target token must not be an NTA token!
Part1.connect Line 13, column 1: No suitable default mapping found for type java.util.List
Part1.connect Line 13, column 1: to-type of last mapping (java.util.List) not assignable to type of the Token (String)!
Part1.connect Line 16, column 1: to-type of last mapping (List) not assignable to type of the Token (String)!
Part1.connect Line 19, column 1: to-type of last mapping (int) not assignable to type of the Token (String)!
Part2.connect Line 5, column 1: Send definition already defined for DoubledValue
Part2.connect Line 6, column 1: Send definition already defined for DoubledValue
Part2.connect Line 17, column 1: The name of a dependency definition must not be equal to a list-node on the source
Part2.connect Line 22, column 1: Dependency definition already defined for D with name DoubledValue
// --- update receive definitions ---
// Error: there must not be two receive definitions for the same token
receive B.DoubledValue ;
receive B.DoubledValue using IntToInt ;
// NOT HANDLED \\ Error: the token must be resolvable within the parent type
// NOT HANDLED \\ receive B.NonExisting ;
// Error: the Token must not be a TokenNTA (i.e., check for !Token.getNTA())
receive B.ErrorNTA ;
// Error: from-type of first mapping must be byte[] or a supported primitive type
receive B.ErrorTypeOfFirstMapping using ListToList ;
// Error: to-type of last mapping must be type of the Token
receive B.ErrorTypeOfLastMapping using StringToList ;
// Error: types of mappings must match (modulo inheritance)
receive B.ErrorTypeMismatch using StringToList, IntToInt ;
// --- update send definitions ---
// NOT HANDLED \\ Error: the token must be resolvable within the parent type
// NOT HANDLED \\ receive C.NonExisting ;
// Error: Token must be a TokenNTA (i.e., check for Token.getNTA())
send C.ErrorNotNTA ;
// Error: from-type of first mapping must be type of Token
send C.ErrorTypeOfFirstMapping using IntToInt ;
// Error: to-type of last mapping must be byte[] or a supported primitive type
send C.ErrorTypeOfLastMapping1 using StringToList ;
send C.ErrorTypeOfLastMapping2 ;
// Error: types of mappings must match (modulo inheritance)
send C.ErrorTypeMismatch using StringToList, IntToInt ;
// Error: no more than one send mapping for each TokenComponent
send C.DoubledValue ;
send C.DoubledValue using IntToInt ;
// --- dependency definitions ---
// NOT HANDLED \\ Error: Both, source and target must be resolvable within the parent type
// NOT HANDLED \\ D.SourceNonExistingTarget canDependOn D.NonExisting as NonExistingTarget ;
// NOT HANDLED \\ D.NonExisting canDependOn D.TargetNonExistingSource as NonExistingSource ;
// Error: There must be a send update definition for the target token
D.SourceNoWriteDef canDependOn D.TargetNoWriteDef as NoWriteDef ;
// Error: The name of a dependency definition must not be equal to a list-node on the source
D.SourceSameAsListNode canDependOn D.TargetSameAsListNode as MyList ;
send D.TargetSameAsListNode;
// Error: There must not be two dependency definitions with the same name
D.SourceDoubledValue canDependOn D.TargetDoubledValue as DoubledValue ;
D.SourceDoubledValue canDependOn D.TargetDoubledValue as DoubledValue ;
send D.TargetDoubledValue;
// --- mapping definitions ---
ListToList maps java.util.List<String> list to java.util.List<String> {:
return list;
:}
StringToList maps String s to List<String> {:
java.util.List<String> result = new java.util.ArrayList<>();
result.add(s);
return result;
:}
IntToInt maps int number to int {:
return number + 1;
:}
Standard.connect Line 3, column 1: Receive definition already defined for DoubledValue
Standard.connect Line 4, column 1: Receive definition already defined for DoubledValue
Standard.connect Line 10, column 1: Receiving target token must not be an NTA token!
Standard.connect Line 13, column 1: No suitable default mapping found for type java.util.List
Standard.connect Line 13, column 1: to-type of last mapping (java.util.List) not assignable to type of the Token (String)!
Standard.connect Line 16, column 1: to-type of last mapping (List) not assignable to type of the Token (String)!
Standard.connect Line 19, column 1: to-type of last mapping (int) not assignable to type of the Token (String)!
Standard.connect Line 39, column 1: Send definition already defined for DoubledValue
Standard.connect Line 40, column 1: Send definition already defined for DoubledValue
Standard.connect Line 51, column 1: The name of a dependency definition must not be equal to a list-node on the source
Standard.connect Line 56, column 1: Dependency definition already defined for D with name DoubledValue
# Tutorial
Idea: Test the example from the [documentation](https://jastadd.pages.st.inf.tu-dresden.de/ragconnect/using.html) with activated incremental dependency tracking
// endpoint definitions
receive A.Input ;
send A.OutputOnA ;
send B.OutputOnB using Transformation ;
// mapping definitions
Transformation maps String s to String {:
return s + "Postfix";
:}
// dependency definitions
A.OutputOnA canDependOn A.Input as dependencyA ;
B.OutputOnB canDependOn A.Input as dependencyB ;
aspect Computation {
syn String A.getOutputOnA() = "a" + getInput();
syn String B.getOutputOnB() = "b" + input();
inh String B.input();
eq A.getB().input() = getInput();
}
A ::= <Input:String> /<OutputOnA:String>/ B* ;
B ::= /<OutputOnB:String>/ ;
# List
Idea: send and receive lists of subtrees.
Once without incremental evaluation (i.e., using manual dependencies), and the other time with incremental evaluation
## Execution-Model
```
SenderRoot ReceiverRoot
|- A* ---( mqtt: a ) ---+------> A* --------------------|
| \------> WidthAddFromA:A* ------|
|- SingleA:A* ,-> FromSingleA:A* --------|
\---( mqtt: single-a ) -+-> WithAddFromSingleA:A* -|
```
## Execution-Trace (SendInitialValue)
| Input | # | A* | WidthAddFromA | FromSingleA | WithAddFromSingleA:A |
|---|---|---|---|---|---|
| 0 | 1 | [] | [0] | [] | [0] |
| 1 | 2 | [1] | [1] | [1] | [0,1] |
| 1 | 2 | [1] | [1] | [1] | [0,1] |
| 2 | 3 | [1,2] | [2] | [1,1,2] | [0,1,2] |
| 3 | 4 | [1,2,3] | [3] | [1,1,2,1,2,3] | [0,1,2,3] |
## Execution-Trace (OnlyUpdate)
| Input | # | A* | WidthAddFromA | FromSingleA | WithAddFromSingleA:A |
|---|---|---|---|---|---|
| - | 0 | [] | [] | [] | [] |
| 1 | 1 | [1] | [1] | [1] | [1] |
| 1 | 1 | [1] | [1] | [1] | [1] |
| 2 | 2 | [1,2] | [2] | [1,1,2] | [1,2] |
| 3 | 3 | [1,2,3] | [3] | [1,1,2,1,2,3] | [1,2,3] |
send list SenderRoot.A ;
send list SenderRoot.SingleA ;
receive list ReceiverRoot.A ;
receive list ReceiverRoot.FromSingleA ;
receive list with add ReceiverRoot.WithAddFromA ;
receive list with add ReceiverRoot.WithAddFromSingleA ;
aspect Computation {
syn JastAddList<A> SenderRoot.getAList() {
var result = new JastAddList<A>();
for (int i = 1; i <= getInput(); i++) {
A a = new A().setID(i);
B b = new B().setID(i + 1);
a.addB(b);
result.addChild(a);
}
return result;
}
syn JastAddList<A> SenderRoot.getSingleAList() {
var result = new JastAddList<A>();
A a = new A().setID(getInput());
result.addChild(a);
return result;
}
syn boolean ASTNode.isNameable() = false;
eq Nameable.isNameable() = true;
}
aspect Testing {
class ReceiverRoot implements org.jastadd.ragconnect.tests.list.AbstractListTest.TestWrapperReceiverRoot {}
class A implements org.jastadd.ragconnect.tests.list.AbstractListTest.TestWrapperA {}
class B implements org.jastadd.ragconnect.tests.list.AbstractListTest.TestWrapperB {}
class JastAddList<T> implements org.jastadd.ragconnect.tests.list.AbstractListTest.TestWrapperJastAddList<T> {}
}
aspect NameResolution {
// overriding customID guarantees to produce the same JSON representation for equal lists
// otherwise, the value for id is different each time
@Override
protected String Nameable.customID() {
return getClass().getSimpleName() + getID();
}
}
Root ::= SenderRoot* ReceiverRoot* ;
Nameable ::= <ID:int> ;
SenderRoot : Nameable ::= <Input:int> /A*/ /SingleA:A*/ ;
ReceiverRoot : Nameable ::= A* FromSingleA:A* WithAddFromA:A* WithAddFromSingleA:A* ;
A : Nameable ::= B* ;
B : Nameable ;
SenderRoot.A canDependOn SenderRoot.Input as InputDependencyToA ;
SenderRoot.SingleA canDependOn SenderRoot.Input as InputDependencyToSingleA ;
# Default Mapping
Idea: Check different numbers of sequential mappings
receive NativeTypes.IntValue using String2Int ;
receive NativeTypes.ShortValue using String2Int, Int2Short ;
receive NativeTypes.LongValue using String2Int, Int2Short, Short2Long ;
receive NativeTypes.FloatValue using String2Int, Int2Short, Short2Long, Long2Float ;
receive NativeTypes.DoubleValue using String2Int, Int2Short, Short2Long, Long2Float, Float2Double ;
receive NativeTypes.CharValue using String2Int, Int2Short, Short2Long, Long2Float, Float2Double, Double2Char ;
receive NativeTypes.BooleanValue using String2Int, Int2Short, Short2Long, Long2Float, Float2Double, Double2Char, Char2Boolean ;
send NativeTypes.WriteIntValue using String2Int ;
send NativeTypes.WriteShortValue using String2Int, Int2Short ;
send NativeTypes.WriteLongValue using String2Int, Int2Short, Short2Long ;
send NativeTypes.WriteFloatValue using String2Int, Int2Short, Short2Long, Long2Float ;
send NativeTypes.WriteDoubleValue using String2Int, Int2Short, Short2Long, Long2Float, Float2Double ;
send NativeTypes.WriteCharValue using String2Int, Int2Short, Short2Long, Long2Float, Float2Double, Double2Char ;
send NativeTypes.WriteBooleanValue using String2Int, Int2Short, Short2Long, Long2Float, Float2Double, Double2Char, Char2Boolean ;
receive BoxedTypes.IntValue using String2Int ;
receive BoxedTypes.ShortValue using String2Int, Int2Short ;
receive BoxedTypes.LongValue using String2Int, Int2Short, Short2Long ;
receive BoxedTypes.FloatValue using String2Int, Int2Short, Short2Long, Long2Float ;
receive BoxedTypes.DoubleValue using String2Int, Int2Short, Short2Long, Long2Float, Float2Double ;
receive BoxedTypes.CharValue using String2Int, Int2Short, Short2Long, Long2Float, Float2Double, Double2Char ;
receive BoxedTypes.BooleanValue using String2Int, Int2Short, Short2Long, Long2Float, Float2Double, Double2Char, Char2Boolean ;
String2Int maps String s to int {:
return Integer.parseInt(s);
:}
Int2Short maps int i to short {:
return (short) i;
:}
Short2Long maps short s to long {:
return (long) s;
:}
Long2Float maps long l to float {:
return (float) (l + 0.01);
:}
Float2Double maps float f to double {:
return (double) f;
:}
Double2Char maps double d to char {:
return (char) ((int) d);
:}
Char2Boolean maps char c to boolean {:
return c > 21;
:}
NativeTypes.WriteIntValue canDependOn NativeTypes.Driver as nativeIntDependency;
NativeTypes.WriteShortValue canDependOn NativeTypes.Driver as nativeShortDependency;
NativeTypes.WriteLongValue canDependOn NativeTypes.Driver as nativeLongDependency;
NativeTypes.WriteFloatValue canDependOn NativeTypes.Driver as nativeFloatDependency;
NativeTypes.WriteDoubleValue canDependOn NativeTypes.Driver as nativeDoubleDependency;
NativeTypes.WriteCharValue canDependOn NativeTypes.Driver as nativeCharDependency;
NativeTypes.WriteBooleanValue canDependOn NativeTypes.Driver as nativeBooleanDependency;
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment