checkArgument(parameters.length > 0, "Aggregation input function must have at least one parameter"); checkArgument(parameters.length == dataChannelMetadata.size() + lambdaInterfaces.size(), "Wenlei TODO..."); checkArgument(dataChannelMetadata.stream().filter(m -> m.getParameterType() == STATE).count() == stateDescriptors.size(), "Number of state parameter in input function must be the same as size of stateDescriptors"); checkArgument(dataChannelMetadata.get(0).getParameterType() == STATE, "First parameter must be state"); for (int i = 0; i < dataChannelMetadata.size(); i++) { ParameterMetadata metadata = dataChannelMetadata.get(i); switch (metadata.getParameterType()) { case STATE: checkArgument(stateDescriptors.get(stateIndex).getStateInterface() == parameters[i], String.format("State argument must be of type %s", stateDescriptors.get(stateIndex).getStateInterface())); break; default: throw new IllegalArgumentException("Unsupported parameter: " + metadata.getParameterType());
Class<?> parameterType = parameterTypes[i]; BytecodeExpression getChannel = channels.invoke("get", Object.class, constantInt(inputChannel)).cast(int.class); switch (parameterMetadata.getParameterType()) { case STATE: expressions.add(scope.getThis().getField(stateField.get(stateIndex))); break; default: throw new IllegalArgumentException("Unsupported parameter type: " + parameterMetadata.getParameterType());
for (int i = 0; i < parameterMetadatas.size(); i++) { ParameterMetadata parameterMetadata = parameterMetadatas.get(i); switch (parameterMetadata.getParameterType()) { case STATE: block.append(scope.getThis().getField(stateField.get(stateIndex))); break; default: throw new IllegalArgumentException("Unsupported parameter type: " + parameterMetadata.getParameterType());
switch (metadata.getParameterType()) { case INPUT_CHANNEL: case BLOCK_INPUT_CHANNEL:
for (int i = 0; i < parameters.length; i++) { ParameterMetadata parameterMetadata = parameterMetadatas.get(i); switch (parameterMetadata.getParameterType()) { case STATE: block.append(scope.getThis().getField(stateField)); break; default: throw new IllegalArgumentException("Unsupported parameter type: " + parameterMetadata.getParameterType());
checkArgument(stateInterface == parameters[0], "First argument of aggregation input function must be %s", stateInterface.getSimpleName()); checkArgument(parameters.length > 0, "Aggregation input function must have at least one parameter"); checkArgument(parameterMetadatas.get(0).getParameterType() == STATE, "First parameter must be state"); for (int i = 1; i < parameters.length; i++) { ParameterMetadata metadata = parameterMetadatas.get(i); switch (metadata.getParameterType()) { case BLOCK_INPUT_CHANNEL: case NULLABLE_BLOCK_INPUT_CHANNEL: break; default: throw new IllegalArgumentException("Unsupported parameter: " + metadata.getParameterType());
public static int countInputChannels(List<ParameterMetadata> metadatas) { int parameters = 0; for (ParameterMetadata metadata : metadatas) { if (metadata.getParameterType() == INPUT_CHANNEL || metadata.getParameterType() == BLOCK_INPUT_CHANNEL || metadata.getParameterType() == NULLABLE_BLOCK_INPUT_CHANNEL) { parameters++; } } return parameters; }
switch (metadata.getParameterType()) { case INPUT_CHANNEL: case BLOCK_INPUT_CHANNEL:
private static BytecodeExpression anyParametersAreNull( List<ParameterMetadata> parameterMetadatas, Variable index, Variable channels, Variable position) { int inputChannel = 0; BytecodeExpression isNull = constantFalse(); for (ParameterMetadata parameterMetadata : parameterMetadatas) { switch (parameterMetadata.getParameterType()) { case BLOCK_INPUT_CHANNEL: case INPUT_CHANNEL: BytecodeExpression getChannel = channels.invoke("get", Object.class, constantInt(inputChannel)).cast(int.class); isNull = BytecodeExpressions.or(isNull, index.invoke("isNull", boolean.class, getChannel, position)); inputChannel++; break; case NULLABLE_BLOCK_INPUT_CHANNEL: inputChannel++; break; } } return isNull; }
public static int countInputChannels(List<ParameterMetadata> metadatas) { int parameters = 0; for (ParameterMetadata metadata : metadatas) { if (metadata.getParameterType() == INPUT_CHANNEL || metadata.getParameterType() == BLOCK_INPUT_CHANNEL || metadata.getParameterType() == NULLABLE_BLOCK_INPUT_CHANNEL) { parameters++; } } return parameters; }