public CodeVariableElement(Set<Modifier> modifiers, TypeMirror type, String name, String init) { this(modifiers, type, name); if (init != null) { this.init = new CodeTree(null, CodeTreeKind.STRING, null, init); } }
public boolean containsKind(CodeTreeKind k) { if (this.kind == k) { return true; } if (children != null) { for (CodeTree child : children) { if (child.containsKind(k)) { return true; } } } return false; }
@Override public void visitTree(CodeTree e, Void p, Element enclosing) { if (e.getCodeKind() == CodeTreeKind.STATIC_FIELD_REFERENCE) { visitStaticFieldReference(enclosing, e.getType(), e.getString()); } else if (e.getCodeKind() == CodeTreeKind.STATIC_METHOD_REFERENCE) { visitStaticMethodReference(enclosing, e.getType(), e.getString()); } else if (e.getType() != null) { visitTypeReference(enclosing, e.getType()); } super.visitTree(e, p, enclosing); }
@Override public void visitTree(CodeTree e, Void p, Element enclosingElement) { switch (e.getCodeKind()) { case COMMA_GROUP: List<CodeTree> children = e.getEnclosedElements(); if (children != null) { for (int i = 0; i < children.size(); i++) { visitTree(children.get(i), p, enclosingElement); if (i < e.getEnclosedElements().size() - 1) { b.append(", "); break; case STRING: if (e.getString() != null) { write(e.getString()); } else { write("null"); write(ElementUtils.getSimpleName(e.getType())); break; default:
private boolean clearLastRec(CodeTreeKind kind, List<CodeTree> children) { if (children == null) { return false; } for (int i = children.size() - 1; i >= 0; i--) { CodeTree child = children.get(i); if (child.getCodeKind() == kind) { children.remove(children.get(i)); return true; } else { if (clearLastRec(kind, child.getEnclosedElements())) { return true; } } } return false; }
private static boolean isEmpty(CodeTree e) { return e == null || e.isEmpty(); }
private static CodeTree createTryExecuteChild(LocalVariable value, CodeTree executeChild, boolean needDeclaration, boolean hasTry) { CodeTreeBuilder builder = CodeTreeBuilder.createBuilder(); boolean hasDeclaration = false; if ((hasTry || !executeChild.isSingleLine()) && needDeclaration) { builder.tree(value.createDeclaration(null)); hasDeclaration = true; } if (hasTry) { builder.startTryBlock(); } else { builder.startGroup(); } if (executeChild.isSingleLine()) { builder.startStatement(); if (hasDeclaration || !needDeclaration) { builder.tree(executeChild); } else { builder.type(value.getTypeMirror()).string(" ").tree(executeChild); } builder.end(); } else { builder.tree(executeChild); } builder.end(); return builder.build(); }
public void add(CodeTree element) { if (children == null) { children = new ArrayList<>(); } element.setParent(this); children.add(element); }
public void visitTree(CodeTree e, P p, Element parent) { List<CodeTree> elements = e.getEnclosedElements(); if (elements != null) { for (CodeTree tree : e.getEnclosedElements()) { visitTree(tree, p, parent); } } }
@Override public void visitTree(CodeTree e, Void p, Element enclosingElement) { switch (e.getCodeKind()) { case COMMA_GROUP: List<CodeTree> children = e.getEnclosedElements(); if (children != null) { for (int i = 0; i < children.size(); i++) { visitTree(children.get(i), p, enclosingElement); if (i < e.getEnclosedElements().size() - 1) { b.append(", "); break; case STRING: if (e.getString() != null) { write(e.getString()); } else { write("null"); write(ElementUtils.getSimpleName(e.getType())); break; default:
private boolean clearLastRec(CodeTreeKind kind, List<CodeTree> children) { if (children == null) { return false; } for (int i = children.size() - 1; i >= 0; i--) { CodeTree child = children.get(i); if (child.getCodeKind() == kind) { children.remove(children.get(i)); return true; } else { if (clearLastRec(kind, child.getEnclosedElements())) { return true; } } } return false; }
public static int materialize(CodeTreeBuilder builder, Collection<IfTriple> triples, boolean forceNoBlocks) { int blockCount = 0; boolean otherPrepare = false; for (IfTriple triple : triples) { if (triple.prepare != null && !triple.prepare.isEmpty()) { if (!otherPrepare) { if (blockCount == 0 && !forceNoBlocks) { builder.startBlock(); blockCount++; } otherPrepare = true; } builder.tree(triple.prepare); } if (triple.condition != null && !triple.condition.isEmpty()) { if (forceNoBlocks) { throw new AssertionError("no blocks forced but block required"); } builder.startIf().tree(triple.condition).end().startBlock(); blockCount++; } if (triple.statements != null && !triple.statements.isEmpty()) { builder.tree(triple.statements); } } return blockCount; }
private static CodeTree createTryExecuteChild(LocalVariable value, CodeTree executeChild, boolean needDeclaration, boolean hasTry) { CodeTreeBuilder builder = CodeTreeBuilder.createBuilder(); boolean hasDeclaration = false; if ((hasTry || !executeChild.isSingleLine()) && needDeclaration) { builder.tree(value.createDeclaration(null)); hasDeclaration = true; } if (hasTry) { builder.startTryBlock(); } else { builder.startGroup(); } if (executeChild.isSingleLine()) { builder.startStatement(); if (hasDeclaration || !needDeclaration) { builder.tree(executeChild); } else { builder.type(value.getTypeMirror()).string(" ").tree(executeChild); } builder.end(); } else { builder.tree(executeChild); } builder.end(); return builder.build(); }
public void add(CodeTree element) { if (children == null) { children = new ArrayList<>(); } element.setParent(this); children.add(element); }
public void visitTree(CodeTree e, P p, Element parent) { List<CodeTree> elements = e.getEnclosedElements(); if (elements != null) { for (CodeTree tree : e.getEnclosedElements()) { visitTree(tree, p, parent); } } }
@Override public void visitTree(CodeTree e, Void p, Element enclosingElement) { CodeTreeKind kind = e.getCodeKind(); List<CodeTree> children = e.getEnclosedElements(); if (children != null) { for (int i = 0; i < children.size(); i++) { visitTree(children.get(i), p, enclosingElement); if (i < e.getEnclosedElements().size() - 1) { write(", "); break; case STRING: if (e.getString() != null) { write(e.getString()); } else { write("null"); if (e.getString() != null) { write(imports.createStaticFieldReference(enclosingElement, e.getType(), e.getString())); } else { write("null"); if (e.getString() != null) { write(imports.createStaticMethodReference(enclosingElement, e.getType(), e.getString())); } else { write("null"); write(useImport(enclosingElement, e.getType())); break;
@Override public void visitTree(CodeTree e, Void p, Element enclosing) { if (e.getCodeKind() == CodeTreeKind.STATIC_FIELD_REFERENCE) { visitStaticFieldReference(enclosing, e.getType(), e.getString()); } else if (e.getCodeKind() == CodeTreeKind.STATIC_METHOD_REFERENCE) { visitStaticMethodReference(enclosing, e.getType(), e.getString()); } else if (e.getType() != null) { visitTypeReference(enclosing, e.getType()); } super.visitTree(e, p, enclosing); }
private static CodeTree combineTrees(String sep, CodeTree... trees) { CodeTreeBuilder builder = CodeTreeBuilder.createBuilder(); String s = ""; for (CodeTree tree : trees) { if (tree != null && !tree.isEmpty()) { if (sep != null) { builder.string(s); } builder.tree(tree); s = sep; } } return builder.build(); }