private void obfuscateTranslationUnit(TranslationUnit tu) { this.typer = new Typer(tu, tu.getShadingLanguageVersion()); visit(tu); for (VariableDeclInfo declInfo : varDeclMapping.keySet()) { assert varDeclMapping.containsKey(declInfo); declInfo.setName(varDeclMapping.get(declInfo)); } for (ParameterDecl parameterDecl : paramDeclMapping.keySet()) { assert paramDeclMapping.containsKey(parameterDecl); parameterDecl.setName(paramDeclMapping.get(parameterDecl)); } for (StructDefinitionType structDefinitionType : structDefinitionTypes) { if (structDefinitionType.hasStructNameType()) { final StructNameType structNameType = structDefinitionType.getStructNameType(); for (int i = 0; i < structDefinitionType.getNumFields(); i++) { assert structFieldRenaming.get(structNameType) .containsKey(structDefinitionType.getFieldName(i)); structDefinitionType.setFieldName(i, structFieldRenaming.get(structNameType) .get(structDefinitionType.getFieldName(i))); } } } new StandardVisitor() { @Override public void visitStructNameType(StructNameType structNameType) { structNameType.setName(namedStructRenaming.get(structNameType.getName())); } }.visit(tu); }
private Expr makeInitializationExpr(StructDefinitionType structDefinitionType, Expr originalInitializer) { List<Expr> args = new ArrayList<>(); for (int i = 0; i < structDefinitionType.getNumFields(); i++) { if (structDefinitionType.getFieldName(i).startsWith(Constants.STRUCTIFICATION_FIELD_PREFIX)) { final Type fieldType = structDefinitionType.getFieldType(i); args.add(fieldType instanceof StructNameType ? makeInitializationExpr(tu.getStructDefinition((StructNameType) fieldType), originalInitializer) : fieldType.getCanonicalConstant()); } else { args.add(originalInitializer); } } return new TypeConstructorExpr(structDefinitionType.getStructNameType().getName(), args); }
.getArg(currentIndex))); if (structDefinitionType.getFieldName(i).startsWith(Constants.STRUCTIFICATION_FIELD_PREFIX)) { return Optional.of(new StructifiedVariableInfo(structDefinitionType.getFieldName(i), structDefinitionType.getFieldType(i), componentInitializer));
final String oldFieldName = innerStruct.getFieldName(i); final String newFieldName = oldFieldName.startsWith(Constants.STRUCTIFICATION_FIELD_PREFIX) ? fieldToInline + oldFieldName