+
+ switch (fn.kind()) {
+ case FKind.FlatOpNode:
+ FlatOpNode fon = (FlatOpNode) fn;
+ injectTarget = fon.getDest();
+
+ int op = fon.getOp().getOp();
+ if (injectTarget.getType().isPrimitive()
+ && (op == Operation.DIV || (agg && (op == Operation.ADD || op == Operation.SUB
+ || op == Operation.MULT || op == Operation.MOD || op == Operation.LOGIC_AND
+ || op == Operation.LOGIC_OR || op == Operation.LOGIC_NOT || op == Operation.NOTEQUAL
+ || op == Operation.BIT_AND || op == Operation.BIT_OR || op == Operation.BIT_XOR/*|| op == Operation.EQUAL*/)))) {
+ // inject a random value
+ initializeInjection(output);
+ output.println(" " + buildCode.generateTemp(fm, injectTarget) + " = ("
+ + injectTarget.getType().getSafeSymbol() + ") rand();");
+ closingInjection(output);
+ }
+ break;
+
+ // case FKind.FlatFieldNode:
+ // injectTarget = ((FlatFieldNode) fn).getDst();
+ // break;
+ //
+ // case FKind.FlatElementNode:
+ // injectTarget = ((FlatElementNode) fn).getDst();
+ // break;
+
+ case FKind.FlatSetFieldNode:
+ FlatSetFieldNode fsn = (FlatSetFieldNode) fn;
+ injectTarget = fsn.getDst();
+ injectField = fsn.getField();
+
+ if (injectTarget != null && injectField != null && injectField.getType().isPrimitive()
+ && !injectTarget.getType().isArray() && !injectField.isStatic()) {
+ initializeInjection(output);
+ // inject a random value
+ output.println(" " + buildCode.generateTemp(fm, injectTarget) + "->"
+ + injectField.getSafeSymbol() + " = (" + injectField.getType().getSafeSymbol()
+ + ") rand();");
+ closingInjection(output);
+
+ }
+
+ break;
+
+ case FKind.FlatSetElementNode:
+ FlatSetElementNode fsen = (FlatSetElementNode) fn;
+ injectTarget = fsen.getDst();
+
+ if (injectTarget != null && injectTarget.getType().isPrimitive()) {
+ initializeInjection(output);
+
+ String type;
+ TypeDescriptor elementtype = fsen.getDst().getType().dereference();
+ if (elementtype.isClass() && elementtype.getClassDesc().isEnum()) {
+ type = "int ";
+ } else if (elementtype.isArray() || elementtype.isClass() || (elementtype.isNull()))
+ type = "void *";
+ else
+ type = elementtype.getSafeSymbol() + " ";
+
+ output.println("((" + type + "*)(((char *) &(" + buildCode.generateTemp(fm, injectTarget)
+ + "->___length___))+sizeof(int)))[" + buildCode.generateTemp(fm, fsen.getIndex())
+ + "] = (" + type + ") rand();");
+
+ closingInjection(output);
+ }
+ break;
+
+ }
+