private boolean hasArrayParameter(FunctionDefinition functionDefinition) { return functionDefinition.getPrototype().getParameters().stream() .anyMatch(item -> item.getArrayInfo() != null); }
@Override public void visitParameterDecl(ParameterDecl parameterDecl) { visit(parameterDecl.getType()); if (parameterDecl.getName() != null) { out.append(" " + parameterDecl.getName()); } if (parameterDecl.getArrayInfo() != null) { out.append("[" + parameterDecl.getArrayInfo().getSize() + "]"); } }
public FunctionCallExprTemplate(FunctionPrototype prototype) { this.name = prototype.getName(); this.resultType = prototype.getReturnType(); this.argTypes = new ArrayList<>(); for (ParameterDecl param : prototype.getParameters()) { assert param.getArrayInfo() == null; this.argTypes.add(param.getType()); } }
@Override public void visitParameterDecl(ParameterDecl parameterDecl) { visitChildFromParent(parameterDecl.getType(), parameterDecl); visitChildFromParent(this::visitArrayInfo, parameterDecl.getArrayInfo(), parameterDecl); }
@Override public void visitFunctionPrototype(FunctionPrototype functionPrototype) { encounteredFunctionPrototypes.add(functionPrototype); for (ParameterDecl p : functionPrototype.getParameters()) { visitParameterDecl(p); if (addEncounteredParametersToScope) { if (p.getName() == null) { continue; } currentScope.add(p.getName(), p.getArrayInfo() == null ? p.getType() : new ArrayType(p.getType(), p.getArrayInfo()), Optional.of(p)); } } }
assert prototype.getParameters().get(i).getArrayInfo() == null; if (!argType.getWithoutQualifiers() .equals(prototype.getParameters().get(i).getType().getWithoutQualifiers())) {