<T extends Element> void visitAllButConstants(List<T> elements) { if (elements == null) { return; } for (T element : elements) { if (element == null || (element instanceof Constant)) { continue; } element.accept(this); } }
public static String getFileOfAscendency(Element decl) { Element e = decl; String file = null; Set<Integer> visitedIds = new TreeSet<Integer>(); while (e != null && (file = e.getElementFile()) == null && visitedIds.add(e.getId())) { e = e.getParentElement(); } return file; }
public Element getPreviousSibling() { Element pe = getParentElement(); if (pe != null) return pe.getPreviousChild(this); return null; }
public void moveAllCommentsBefore() { if (getCommentAfter() != null) { addToCommentBefore(getCommentAfter()); setCommentAfter(null); } } public void deDioxygenizeCommentBefore() {
public Element importComments(Element e, String... extraComments) { if (e != null) { importDetails(e, false); moveAllCommentsBefore(); deDioxygenizeCommentBefore(); } addToCommentBefore(extraComments); return this; }
public Element importDetails(Element from, boolean move) { if (from == null) return this; if (from.getElementFile() != null) setElementFile(from.getElementFile()); if (from.getElementLine() >= 0) setElementLine(from.getElementLine()); if (from.getCommentBefore() != null) addToCommentBefore(from.getCommentBefore()); if (from.getCommentAfter() != null) setCommentAfter(from.getCommentAfter()); if (move) from.stripDetails(); return this; } protected <T> List<T> unmodifiableList(List<T> list) {
setter.invoke(element, valueToBeSet); if (!fieldName.equals("parentElement")) { assertNotNull("Parent element not set in " + setter, arg.getParentElement()); assertEquals("Parent element not set properly in " + setter, element, arg.getParentElement()); element.accept(new Scanner() { @Override protected void visitElement(Element d) { assertTrue("Scanner did not visit child element " + fieldName + " with a " + fieldTypeImplClass.getName() , visitedIds.contains(arg.getId())); arg.replaceBy(replace); Object got2 = getter.invoke(element); Element elementGot2 = container == null ? (Element)got2 : ((Collection<Element>)got2).iterator().next(); assertNull("Parent element not removed in " + setter, elementGot.getParentElement()); assertNotNull("Parent element not set in " + setter, elementGot2.getParentElement()); element, elementGot2.getParentElement());
public Declaration resolveUp(Identifier i) { Element p = i;// e.getParentElement(); for (; p != null;) { do {//while (!(p instanceof DeclarationsHolder)) { p = p.getParentElement(); } while (!(p instanceof DeclarationsHolder)); } return null; }
public Printer formatComments(Element e, boolean mergeCommentsAfter, boolean allowLineComments, boolean skipLineAfter, String... otherComments) { String cb = e.getCommentBefore(), ca = e.getCommentAfter(); if (cb != null || ca != null || otherComments.length > 0) { append(formatComments(indent, cb, ca, mergeCommentsAfter, allowLineComments, skipLineAfter, otherComments)); } return this; }
@SuppressWarnings("unchecked") static <E extends Element> E cleanClone(E e) { E c = (E) e.clone(); c.setCommentBefore(null); c.setCommentAfter(null); if (c instanceof Declaration) { Declaration d = (Declaration) c; d.setAnnotations(null); } return c; }
private ReferencedElements findReferencedElements(Element element) { final ReferencedElements ret = new ReferencedElements(); element.accept(new Scanner() { @Override public void visitUnaryOp(UnaryOp unaryOp) { String name = decl.getName(); String changedName = "p" + StringUtils.capitalize(name); referencedElementsChangedNames.put(e.getId(), changedName); decl.setName(changedName); VariablesDeclaration vd = (VariablesDeclaration) decl.getParentElement(); element.accept(new Scanner() { @Override public void visitIdentifier(Identifier identifier) {
public void addToCommentBefore(List<String> s) { String b = getCommentBefore(); List<String> ss = new ArrayList<String>(); if (b != null && (b = cleanComment(b)).length() > 0) ss.add(b); for (String a : s) if (a != null && (a = cleanComment(a)).length() > 0) ss.add(a); //s); //if (b != null && b.trim().length() > 0) // ss.add(0, b); setCommentBefore(ss.isEmpty() ? null : StringUtils.implode(ss, "\n")); } public void moveAllCommentsBefore() {
public String resolveFile(Element e) { String file = null; while (e != null && (file = e.getElementFile()) == null) { e = e.getParentElement(); } return file; }
ep.addToCommentBefore(typeDef.getCommentBefore()); ep.addToCommentBefore(typeDef.getCommentAfter()); typeDef.importDetails(ep, true); ep.replaceBy(null); typeDef.setValueType(e);
void replaceMalloc(TypeRef pointedType, Element toReplace, Expression sizeExpression) { // TODO handle casts and sizeof expressions ! Pair<TypeRef, Expression> typeAndSize = recognizeSizeOfMult(sizeExpression); if (typeAndSize != null && (pointedType == null || pointedType.equals(typeAndSize.getFirst()))) { String tStr = String.valueOf(typeAndSize.getFirst()); try { JavaPrim prim = JavaPrim.getJavaPrim(tStr); if (prim != null && prim.isPrimitive) { String cap = StringUtils.capitalize(tStr); toReplace.replaceBy(staticPtrMethod("allocate" + cap + "s", typeAndSize.getValue())); return; } } catch (Throwable th) { // Do nothing } } toReplace.replaceBy(staticPtrMethod("allocateBytes", sizeExpression)); }
if (elementListGettersAndSetters == null) { elementListGettersAndSetters = new ArrayList<GetterAndSetterInfo>(); GettersAndSettersHelper gettersAndSetters = getGettersAndSetters(); if (list instanceof SemiUnmodifiableList) list = ((SemiUnmodifiableList<Element>)list).getList(); int i = indexOfInstance(existingChild, list); if (i < 0) continue; childToInsert.setParentElement(this); return true; } catch (Exception e) {
public EnumSet<Language> resolvePossibleLanguages() { if (possibleLanguages != null) return possibleLanguages; Element parent = getParentElement(); if (parent != null) return parent.resolvePossibleLanguages(); return null; } public void setPossibleLanguages(EnumSet<Language> possibleLanguages) {