public String getName() { return declarator == null ? null : declarator.resolveName(); } public void setName(String name) {
@Override public String resolveName() { return getTarget() != null ? getTarget().resolveName() : null; } @Override
@Override public void visitTypeDef(TypeDef typeDef) { super.visitTypeDef(typeDef); for (Declarator vs : typeDef.getDeclarators()) { typeDefs.put(vs.resolveName(), new Pair<TypeDef, Declarator>(typeDef, vs)); } } private static Pattern frameworkPathPattern = Pattern.compile(".*/(\\w+)\\.framework/(?:.*/)?Headers/(?:.*/)?([^/]+)\\.[^/.]+$");
@Override public void visitTypeDef(TypeDef typeDef) { super.visitTypeDef(typeDef); for (Declarator vs : typeDef.getDeclarators()) { typeDefs.put(vs.resolveName(), new Pair<TypeDef, Declarator>(typeDef, vs)); } } private static Pattern frameworkPathPattern = Pattern.compile(".*/(\\w+)\\.framework/(?:.*/)?Headers/(?:.*/)?([^/]+)\\.[^/.]+$");
@Override public void visitTypeDef(TypeDef typeDef) { super.visitTypeDef(typeDef); List<Declarator> declaratorsToRemove = null; for (Declarator d : typeDef.getDeclarators()) { String n = d.resolveName(); if (forcedTypeDefs.contains(n) && !seenOnce.add(n)) { if (declaratorsToRemove == null) { declaratorsToRemove = new ArrayList<Declarator>(); } declaratorsToRemove.add(d); } } if (declaratorsToRemove != null) { for (Declarator d : declaratorsToRemove) { d.replaceBy(null); } } } });
@Override public void visitTypeDef(TypeDef typeDef) { super.visitTypeDef(typeDef); List<Declarator> declaratorsToRemove = null; for (Declarator d : typeDef.getDeclarators()) { String n = d.resolveName(); if (forcedTypeDefs.contains(n) && !seenOnce.add(n)) { if (declaratorsToRemove == null) { declaratorsToRemove = new ArrayList<Declarator>(); } declaratorsToRemove.add(d); } } if (declaratorsToRemove != null) { for (Declarator d : declaratorsToRemove) { d.replaceBy(null); } } } });
List<String> getNames(Declaration d) { if (d instanceof StoredDeclarations) { List<String> ret = new ArrayList<String>(); for (Declarator declarator : ((StoredDeclarations) d).getDeclarators()) { ret.add(declarator.resolveName()); } return ret; } else if (d instanceof TaggedTypeRefDeclaration) { TaggedTypeRef tr = ((TaggedTypeRefDeclaration) d).getTaggedTypeRef(); Identifier id = tr.getTag(); if (id instanceof SimpleIdentifier) { return Collections.singletonList(((SimpleIdentifier) id).getName()); } } return Collections.EMPTY_LIST; }
List<String> getNames(Declaration d) { if (d instanceof StoredDeclarations) { List<String> ret = new ArrayList<String>(); for (Declarator declarator : ((StoredDeclarations) d).getDeclarators()) { ret.add(declarator.resolveName()); } return ret; } else if (d instanceof TaggedTypeRefDeclaration) { TaggedTypeRef tr = ((TaggedTypeRefDeclaration) d).getTaggedTypeRef(); Identifier id = tr.getTag(); if (id instanceof SimpleIdentifier) { return Collections.singletonList(((SimpleIdentifier) id).getName()); } } return Collections.EMPTY_LIST; }
Set<Identifier> listChildIdentifiers(DeclarationsHolder h) { List<Identifier> list = new ArrayList<Identifier>(); for (Declaration d : h.getDeclarations()) { if (d instanceof Function) { list.add(((Function) d).getName()); } else if (d instanceof TaggedTypeRefDeclaration) { TaggedTypeRefDeclaration td = (TaggedTypeRefDeclaration) d; TaggedTypeRef tr = td.getTaggedTypeRef(); if (tr != null) { list.add(tr.getTag()); } } else if (d instanceof VariablesDeclaration) { for (Declarator dc : ((VariablesDeclaration) d).getDeclarators()) { list.add(ident(dc.resolveName())); } } } Set<Identifier> ret = new HashSet<Identifier>(); for (Identifier i : list) { if (i != null) { ret.add(i); } } return ret; }
@Override public void visitVariablesDeclaration(VariablesDeclaration v) { super.visitVariablesDeclaration(v); if (v.findParentOfTypes(Struct.class, Function.class, Enum.class) != null) { return; } for (Declarator d : v.getDeclarators()) { globalVariablesByName.put(ident(d.resolveName()), v); } getList(globalsByLibrary, getLibrary(v)).add(v); }
Set<Identifier> listChildIdentifiers(DeclarationsHolder h) { List<Identifier> list = new ArrayList<Identifier>(); for (Declaration d : h.getDeclarations()) { if (d instanceof Function) { list.add(((Function) d).getName()); } else if (d instanceof TaggedTypeRefDeclaration) { TaggedTypeRefDeclaration td = (TaggedTypeRefDeclaration) d; TaggedTypeRef tr = td.getTaggedTypeRef(); if (tr != null) { list.add(tr.getTag()); } } else if (d instanceof VariablesDeclaration) { for (Declarator dc : ((VariablesDeclaration) d).getDeclarators()) { list.add(ident(dc.resolveName())); } } } Set<Identifier> ret = new HashSet<Identifier>(); for (Identifier i : list) { if (i != null) { ret.add(i); } } return ret; }
String rname = value == null ? null : value.resolveName(); if (rname != null) { if (name.equals("id")) {
@Override public void visitVariablesDeclaration(VariablesDeclaration v) { super.visitVariablesDeclaration(v); if (v.findParentOfTypes(Struct.class, Function.class, Enum.class) != null) { return; } for (Declarator d : v.getDeclarators()) { globalVariablesByName.put(ident(d.resolveName()), v); } getList(globalsByLibrary, getLibrary(v)).add(v); }
String rname = value == null ? null : value.resolveName(); if (rname != null) { if (name.equals("id")) {
protected void valueTypeAndStorageSuffix(StoredDeclarations e) { if (e.getValueType() instanceof FunctionSignature) { FunctionSignature sig = (FunctionSignature) e.getValueType(); if (sig.getFunction() != null) { Identifier name = sig.getFunction().getName(); if (name != null && e.declarators.size() == 1) { String stoName = e.declarators.get(0).resolveName(); if (name.equals(stoName) || stoName == null) { append(sig); return; } } } } append(e.getValueType()).space(!e.getDeclarators().isEmpty()).implode(e.getDeclarators(), ", "); }
String name = vs.resolveName(); if (name == null || name.length() == 0) { name = "anonymous" + (nextAnonymousFieldId++); if (!(vs instanceof DirectDeclarator)) { mutatedType = (TypeRef) vs.mutateTypeKeepingParent(valueType); vs = new DirectDeclarator(vs.resolveName());
String name = decl.resolveName(); if (e.getTag() != null && !StringUtils.trimUnderscores(e.getTag().toString()).equals(name)) { return false;
String name = vs.resolveName(); if (vs instanceof DirectDeclarator && name.equals(bestName) && ttr != null && origName != null) { DirectDeclarator rep = new DirectDeclarator(origName);
@Override public void visitArg(Arg arg) { Declarator d = arg.getDeclarator(); if (d == null) { TypeRef tr = arg.getValueType(); if (tr instanceof TypeRef.Pointer) { TypeRef target = ((TypeRef.Pointer)tr).getTarget(); if (target instanceof TypeRef.FunctionSignature) { TypeRef.FunctionSignature fs = (TypeRef.FunctionSignature) target; Identifier name = fs.getFunction() == null ? null : fs.getFunction().getName(); if (name != null) { arg.setDeclarator(new DirectDeclarator(name.toString())); fs.getFunction().setName(null); } } } } else if (!(d instanceof DirectDeclarator)) { MutableByDeclarator type = d.mutateType(arg.getValueType()); if (type instanceof TypeRef) { arg.setValueType((TypeRef) type); arg.setDeclarator(new DirectDeclarator(d.resolveName(), d.getBits(), arg.getDefaultValue())); } else { type = null; } } super.visitArg(arg); } private static final boolean mutateDeclaratorTypes = true;
@Override public void visitArg(Arg arg) { Declarator d = arg.getDeclarator(); if (d == null) { TypeRef tr = arg.getValueType(); if (tr instanceof TypeRef.Pointer) { TypeRef target = ((TypeRef.Pointer)tr).getTarget(); if (target instanceof TypeRef.FunctionSignature) { TypeRef.FunctionSignature fs = (TypeRef.FunctionSignature) target; Identifier name = fs.getFunction() == null ? null : fs.getFunction().getName(); if (name != null) { arg.setDeclarator(new DirectDeclarator(name.toString())); fs.getFunction().setName(null); } } } } else if (!(d instanceof DirectDeclarator)) { MutableByDeclarator type = d.mutateType(arg.getValueType()); if (type instanceof TypeRef) { arg.setValueType((TypeRef) type); arg.setDeclarator(new DirectDeclarator(d.resolveName(), d.getBits(), arg.getDefaultValue())); } else { type = null; } } super.visitArg(arg); } private static final boolean mutateDeclaratorTypes = true;