public ObjectCreationExpr getSocketListParam( DefinedParamType definedParamType, ClassOrInterfaceType socketType, String inputOrOutputPostfix) { // System.out.println("Generating for default " + // (definedParamType.getDefaultValue().isPresent() ? // definedParamType.getDefaultValue().get().getName().toString() : "null")); return new ObjectCreationExpr( null, socketType, Arrays.asList( new NameExpr("eventBus"), new NameExpr( definedParamType.getName() + inputOrOutputPostfix + SocketHintDeclaration.HINT_POSTFIX))); }
public List<Expression> getSocketAssignments(String inputParamId, String outputParamId) { List<Expression> assignments = new ArrayList<>(); int inputIndex = 0; int outputIndex = 0; for (DefinedParamType paramType : paramTypes) { // We still need to increment the values if the param is ignored if (paramType.isIgnored()) continue; int index; String paramId; if (inputParamTypes.contains(paramType) && outputParamTypes.contains(paramType)) { if (paramType.getType().toStringWithoutComments().contains("Mat")) { assignments.add( generateCopyExpression( paramType, inputParamId, inputParamTypes.indexOf(paramType), outputParamId, outputParamTypes.indexOf(paramType))); } else { throw new IllegalStateException( "Can not generate Input/Output Socket for type: " + paramType.getType().toString()); } // We have used the input socket inputIndex++; } // Generate the output socket event if this is an input/output socket if (outputParamTypes.contains(paramType)) { paramId = outputParamId; index = outputIndex; outputIndex++; } else if (inputParamTypes.contains(paramType)) { paramId = inputParamId; index = inputIndex; inputIndex++; } else { assert false : "The paramType was not in either the input or output list"; return null; } final MethodCallExpr getValueExpression = getValueExpression(paramId, index); final Expression assignExpression; if (paramType.getType() instanceof PrimitiveType && (!((PrimitiveType) paramType.getType()) .getType() .equals(PrimitiveType.Primitive.Boolean))) { final String numberConversionFunction; switch (((PrimitiveType) paramType.getType()).getType()) { case Int: numberConversionFunction = "intValue"; break; case Short: case Char: numberConversionFunction = "shortValue"; break; case Float: numberConversionFunction = "floatValue"; break; case Double: numberConversionFunction = "doubleValue"; break; case Byte: numberConversionFunction = "byteValue"; break; case Long: numberConversionFunction = "longValue"; break; default: throw new IllegalStateException( "Conversion for type " + paramType.getType() + " is not defined"); } assignExpression = new MethodCallExpr( new EnclosedExpr( new CastExpr(ASTHelper.createReferenceType("Number", 0), getValueExpression)), numberConversionFunction); } else { assignExpression = new CastExpr(paramType.getTypeBoxedIfPossible(), getValueExpression); } assignments.add( new VariableDeclarationExpr( ModifierSet.FINAL, paramType.getType(), Collections.singletonList( new VariableDeclarator( new VariableDeclaratorId(paramType.getName()), assignExpression)))); } return assignments; }