@Override public void visitStructNameType(StructNameType structNameType) { out.append(structNameType.getName()); }
@Override public StructNameType clone() { return new StructNameType(name); }
@Override public void visitStructNameType(StructNameType structNameType) { if (structNameType.equals(toLookFor)) { counter++; } }
private List<String> getStructNames(List<Declaration> toBeAdded) { return toBeAdded .stream() .map(StructUtils::getStructDefinitions) .reduce(new ArrayList<>(), ListConcat::concatenate) .stream() .filter(StructDefinitionType::hasStructNameType) .map(item -> item.getStructNameType().getName()) .collect(Collectors.toList()); }
private StructDefinitionType fuzzStruct() { List<String> names = new ArrayList<>(); List<Type> types = new ArrayList<>(); int numFields = generator.nextPositiveInt(MAX_FIELDS_PER_STRUCT); for (int i = 0; i < numFields; i++) { names.add(createName("a")); types.add(fuzzType()); } return new StructDefinitionType( new StructNameType(createName("S")), names, types); }
public StructDefinitionType getStructDefinition(StructNameType type) { return getStructDefinitions() .stream() .filter(item -> item.hasStructNameType() && item.getStructNameType().equals(type)) .findAny() .get(); }
public String getOuterStructName() { return outerStruct.getStructNameType().getName(); } }
private StructDefinitionType getStructDefinitionAndRecordStructType( Struct_specifierContext ctx) { StructNameType structNameType = null; if (ctx.IDENTIFIER() != null) { structNameType = new StructNameType(ctx.IDENTIFIER().getText()); assert !structs.contains(structNameType); structs.add(structNameType); } return makeStructDefinition(Optional.ofNullable(structNameType), ctx.member_list()); }
if (!structType.equals(innerStruct.getStructNameType())) { return;
private Set<String> getStructNamesFromShader(TranslationUnit tu) { return tu.getStructDefinitions() .stream() .filter(StructDefinitionType::hasStructNameType) .map(item -> item.getStructNameType()) .filter(item -> item instanceof StructNameType) .map(item -> ((StructNameType) item).getName()) .collect(Collectors.toSet()); }
default: final StructNameType maybeStructType = new StructNameType(typeConstructorExpr.getTypename()); if (structDeclarationMap.containsKey(maybeStructType)) { types.put(typeConstructorExpr, maybeStructType);
@Override public void visitTypeConstructorExpr(TypeConstructorExpr typeConstructorExpr) { super.visitTypeConstructorExpr(typeConstructorExpr); if (typeConstructorExpr.getTypename().equals(toLookFor.getName())) { counter++; } }
new StructNameType(Constants.STRUCTIFICATION_STRUCT_PREFIX + idGenerator.freshId()), fieldNames, fieldTypes)); result.addAll(subStructs);
@Override public void visitStructNameType(StructNameType structNameType) { super.visitStructNameType(structNameType); unusedStructs.remove(currentScope.lookupStructName(structNameType.getName())); }
private Type getType(Type_specifierContext typeSpecifier, List<TypeQualifier> qualifiers) { if (typeSpecifier.array_specifier() != null) { throw new RuntimeException(); } if (typeSpecifier.type_specifier_nonarray().builtin_type_specifier_nonarray() != null) { return new QualifiedType(getBuiltinType(typeSpecifier.type_specifier_nonarray() .builtin_type_specifier_nonarray()), qualifiers); } else if (typeSpecifier.type_specifier_nonarray().struct_specifier() != null) { return getStructDefinitionAndRecordStructType( typeSpecifier.type_specifier_nonarray().struct_specifier()); } else { assert typeSpecifier.type_specifier_nonarray().IDENTIFIER() != null; final StructNameType maybeStructNameType = new StructNameType( typeSpecifier.type_specifier_nonarray().IDENTIFIER().getText()); return new QualifiedType(maybeStructNameType, qualifiers); } }
public void addStructDefinition(StructDefinitionType sdt) { assert sdt.hasStructNameType(); structMapping.put(sdt.getStructNameType().getName(), sdt); }
final StructNameType structType = new StructNameType( header.function_identifier().variable_identifier().getText()); return new ArrayConstructorExpr(
@Override public void visitMemberLookupExpr(MemberLookupExpr memberLookupExpr) { super.visitMemberLookupExpr(memberLookupExpr); Type type = typer.lookupType(memberLookupExpr.getStructure()); if (type == null) { return; } type = type.getWithoutQualifiers(); if (!(type instanceof StructNameType)) { return; } final StructNameType structType = (StructNameType) type; assert structFieldRenaming.containsKey(structType.getName()); final Map<String, String> fieldRenaming = structFieldRenaming.get(structType.getName()); assert fieldRenaming.containsKey(memberLookupExpr.getMember()); memberLookupExpr.setMember(fieldRenaming .get(memberLookupExpr.getMember())); }
@Override public void visitTypeConstructorExpr(TypeConstructorExpr typeConstructorExpr) { super.visitTypeConstructorExpr(typeConstructorExpr); if (!typeConstructorExpr.getTypename().equals( targetStruct.getStructNameType().getName())) { return; } // This is the target struct, so remove the appropriate constructor component typeConstructorExpr.removeArg(index); } }.visit(subtreeInWhichStructIsUsed);