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(); }
Element parent = taggedTypeRef.getParentElement(); if (holder != null && holder != taggedTypeRef.getParentElement() && !(parent instanceof DeclarationsHolder)) { TaggedTypeRefDeclaration td = new TaggedTypeRefDeclaration(); if (parent instanceof VariablesDeclaration && ((VariablesDeclaration) parent).getDeclarators().isEmpty()) {
Element parent = taggedTypeRef.getParentElement(); if (holder != null && holder != taggedTypeRef.getParentElement() && !(parent instanceof DeclarationsHolder)) { TaggedTypeRefDeclaration td = new TaggedTypeRefDeclaration(); if (parent instanceof VariablesDeclaration && ((VariablesDeclaration) parent).getDeclarators().isEmpty()) {
/** * @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; }
static int declarativePower(TaggedTypeRef e) { if (e == null) { return 0; } int base = e.isForwardDeclaration() ? 0 : 10; Element p = e.getParentElement(); if (p instanceof TypeDef) { return base + 4; } if (p instanceof TaggedTypeRefDeclaration) { return base + 3; } return base + 1; }
static int declarativePower(TaggedTypeRef e) { if (e == null) { return 0; } int base = e.isForwardDeclaration() ? 0 : 10; Element p = e.getParentElement(); if (p instanceof TypeDef) { return base + 4; } if (p instanceof TaggedTypeRefDeclaration) { return base + 3; } return base + 1; }