List<TaggedTypeRefDeclaration> getUnnamedTaggedTypeRefs(List<Declaration> ds) { List<TaggedTypeRefDeclaration> ret = new ArrayList<TaggedTypeRefDeclaration>(); for (Declaration d : ds) { if (d instanceof TaggedTypeRefDeclaration) { TaggedTypeRefDeclaration td = (TaggedTypeRefDeclaration) d; TaggedTypeRef tr = td.getTaggedTypeRef(); if (tr != null && tr.getTag() == null) { ret.add(td); } } } return ret; }
List<TaggedTypeRefDeclaration> getUnnamedTaggedTypeRefs(List<Declaration> ds) { List<TaggedTypeRefDeclaration> ret = new ArrayList<TaggedTypeRefDeclaration>(); for (Declaration d : ds) { if (d instanceof TaggedTypeRefDeclaration) { TaggedTypeRefDeclaration td = (TaggedTypeRefDeclaration) d; TaggedTypeRef tr = td.getTaggedTypeRef(); if (tr != null && tr.getTag() == null) { ret.add(td); } } } return ret; }
public TaggedTypeRef resolveFullTaggedTypeRef(TaggedTypeRef s) { Identifier tag = s.getTag(); if (tag != null && s.getResolvedJavaIdentifier() == null) { TaggedTypeRef rep = null; if (s instanceof Struct) { rep = structsByName.get(tag); } else if (s instanceof Enum) { rep = enumsByName.get(tag); } if (rep != null && rep != s) { s = rep; } } return s; }
methodCall(expr(typeRef(Rococoa.class)), MemberRefStyle.Dot, "cast", val, memberRef(expr(typeRef(instanceStruct.getTag())), MemberRefStyle.Dot, "class"));
protected TypeRef resolveType(TypeRef tr, boolean keepUnresolvedIdentifiers, Set<Identifier> resolvedTypeDefs) { if (tr instanceof TypeRef.TaggedTypeRef) { TypeRef.TaggedTypeRef ttr = (TypeRef.TaggedTypeRef) tr; if (ttr.isForwardDeclaration() && ttr.getTag() != null) { TypeRef resolved = null; if (ttr instanceof Enum) { resolved = resolveEnum(ttr.getTag()); } else if (ttr instanceof Struct) { resolved = resolveStruct(ttr.getTag());
public Identifier getActualTaggedTypeName(TaggedTypeRef struct) { Identifier structName = null; Identifier tag = struct.getTag(); if (tag == null || tag.isPlain() && tag.toString().startsWith("_")) { TypeDef parentDef = as(struct.getParentElement(), TypeDef.class); if (parentDef != null) { structName = new Identifier.SimpleIdentifier(JNAeratorUtils.findBestPlainStorageName(parentDef)); } else if (tag != null) { String better = tag.toString().substring(1); Pair<TypeDef, Declarator> pair = result.typeDefs.get(better); if (pair != null && pair.getFirst().getValueType() != null && pair.getSecond() instanceof DirectDeclarator) { TypeRef tr = pair.getFirst().getValueType(); DirectDeclarator dd = (DirectDeclarator) pair.getSecond(); if (tr instanceof SimpleTypeRef) { if (tag.equals(((SimpleTypeRef) tr).getName())) { structName = ident(dd.resolveName()); } } else if (tr instanceof TaggedTypeRef) { if (tag.equals(((TaggedTypeRef) tr).getTag())) { structName = ident(dd.resolveName()); } } } } } if (structName == null || structName.toString().equals("")) { structName = tag; } return structName == null ? null : structName.clone(); }
public Identifier getActualTaggedTypeName(TaggedTypeRef struct) { Identifier structName = null; Identifier tag = struct.getTag(); if (tag == null || tag.isPlain() && tag.toString().startsWith("_")) { TypeDef parentDef = as(struct.getParentElement(), TypeDef.class); if (parentDef != null) { structName = new Identifier.SimpleIdentifier(JNAeratorUtils.findBestPlainStorageName(parentDef)); } else if (tag != null) { String better = tag.toString().substring(1); Pair<TypeDef, Declarator> pair = result.typeDefs.get(better); if (pair != null && pair.getFirst().getValueType() != null && pair.getSecond() instanceof DirectDeclarator) { TypeRef tr = pair.getFirst().getValueType(); DirectDeclarator dd = (DirectDeclarator) pair.getSecond(); if (tr instanceof SimpleTypeRef) { if (tag.equals(((SimpleTypeRef) tr).getName())) { structName = ident(dd.resolveName()); } } else if (tr instanceof TaggedTypeRef) { if (tag.equals(((TaggedTypeRef) tr).getTag())) { structName = ident(dd.resolveName()); } } } } } if (structName == null || structName.toString().equals("")) { structName = tag; } return structName == null ? null : structName.clone(); }
/** * @return true if changed and revisited on change results (caller can give * up) */ private boolean chooseNameIfMissing(TaggedTypeRef taggedTypeRef) { // String tag = taggedTypeRef.getTag(); // taggedTypeRef.setTag(result.declarationsConverter.getActualTaggedTypeName(taggedTypeRef)); // if (!SyntaxUtils.equal(tag, taggedTypeRef.getTag())) { // taggedTypeRef.accept(this); // return true; // } //String betterTag = result.declarationsConverter.getActualTaggedTypeName(taggedTypeRef); if (isNull(taggedTypeRef.getTag()) && !(taggedTypeRef.getParentElement() instanceof TaggedTypeRefDeclaration)) { Identifier tag = result.declarationsConverter.getActualTaggedTypeName(taggedTypeRef); if (isNull(tag)) { List<String> ownerNames = JNAeratorUtils.guessOwnerName(taggedTypeRef);//.getParentElement() instanceof StructTypeRef ? struct.getParentElement() : struct); tag = ident(chooseName(taggedTypeRef, ownerNames, true)); } if (!isNull(tag)) { taggedTypeRef.setTag(tag.clone()); // taggedTypeRef.accept(this); return true; } } return false; }
/** * @return true if changed and revisited on change results (caller can give * up) */ private boolean chooseNameIfMissing(TaggedTypeRef taggedTypeRef) { // String tag = taggedTypeRef.getTag(); // taggedTypeRef.setTag(result.declarationsConverter.getActualTaggedTypeName(taggedTypeRef)); // if (!SyntaxUtils.equal(tag, taggedTypeRef.getTag())) { // taggedTypeRef.accept(this); // return true; // } //String betterTag = result.declarationsConverter.getActualTaggedTypeName(taggedTypeRef); if (isNull(taggedTypeRef.getTag()) && !(taggedTypeRef.getParentElement() instanceof TaggedTypeRefDeclaration)) { Identifier tag = result.declarationsConverter.getActualTaggedTypeName(taggedTypeRef); if (isNull(tag)) { List<String> ownerNames = JNAeratorUtils.guessOwnerName(taggedTypeRef);//.getParentElement() instanceof StructTypeRef ? struct.getParentElement() : struct); tag = ident(chooseName(taggedTypeRef, ownerNames, true)); } if (!isNull(tag)) { taggedTypeRef.setTag(tag.clone()); // taggedTypeRef.accept(this); return true; } } return false; }
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; }
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; }
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; }
@Override public boolean replaceChild(Element child, Element by) { if (child == getTag()) { setTag((Identifier)by); return true; } if (child == getOriginalTag()) { setOriginalTag((Identifier)by); return true; } if (child == getParentNamespace()) { setParentNamespace((Identifier) by); return true; } return super.replaceChild(child, by); }
public TaggedTypeRef resolveFullTaggedTypeRef(TaggedTypeRef s) { Identifier tag = s.getTag(); if (tag != null && s.getResolvedJavaIdentifier() == null) { TaggedTypeRef rep = null; if (s instanceof Struct) { rep = structsByName.get(tag); } else if (s instanceof Enum) { rep = enumsByName.get(tag); } if (rep != null && rep != s) { s = rep; } } return s; }
static boolean isUnnamed(TaggedTypeRefDeclaration d) { return d != null && d.getTaggedTypeRef() != null && isNull(d.getTaggedTypeRef().getTag()); }
static boolean isUnnamed(TaggedTypeRefDeclaration d) { return d != null && d.getTaggedTypeRef() != null && isNull(d.getTaggedTypeRef().getTag()); }
public static Identifier getName(Element element) { if (element instanceof Function) return ((Function) element).getName(); if (element instanceof TaggedTypeRefDeclaration) return getName(((TaggedTypeRefDeclaration) element).getTaggedTypeRef()); if (element instanceof TypeRef.TaggedTypeRef) return ((TypeRef.TaggedTypeRef) element).getTag(); return null; }
public void visitTaggedTypeRef(TaggedTypeRef taggedTypeRef) { visitTypeRef(taggedTypeRef); visit(taggedTypeRef.getTag()); visit(taggedTypeRef.getOriginalTag()); if (taggedTypeRef.getParentNamespace() != null) visitIdentifier(taggedTypeRef.getParentNamespace()); }