var YesNo = new Enum(['NO', 'YES']); var Color = new Enum(['RED', 'GREEN', 'BLUE']);
public MutableByDeclarator mutateType(MutableByDeclarator type) { if (type == null) return null; type = type.clone(); if (type instanceof Function) { ((Function)type).setName(new Identifier.SimpleIdentifier(getName())); } ((Element)type).importDetails(this, false); return type; } @Override
Statement throwIfArraySizeDifferent(String varAndFieldName) { return new Statement.If( expr( memberRef(varRef(varAndFieldName), MemberRefStyle.Dot, "length"), BinaryOperator.IsDifferent, memberRef(memberRef(thisRef(), MemberRefStyle.Dot, varAndFieldName), MemberRefStyle.Dot, "length")), new Statement.Throw(new Expression.New(typeRef(IllegalArgumentException.class), expr("Wrong array size !"))), null); }
public static Statement tryRethrow(Statement st) { String exName = "$ex$"; return new Try(st, null, new Catch(new VariablesDeclaration(typeRef(Throwable.class), new Declarator.DirectDeclarator(exName)), new Throw(new New(typeRef(RuntimeException.class), varRef(exName))))); }
private void addParentNamespaceAnnotation(ModifiableElement dest, Identifier parentNamespace) { if (parentNamespace != null) { dest.addAnnotation(new Annotation(typeRef(org.bridj.ann.Namespace.class), expr(parentNamespace.toString()))); } } }
@Override public void visitArrayAccess(ArrayAccess arrayAccess) { super.visitArrayAccess(arrayAccess); arrayAccess.replaceBy(methodCall(arrayAccess.getTarget(), "get", arrayAccess.getIndex())); }
@Override public void visitTaggedTypeRefDeclaration(TaggedTypeRefDeclaration taggedTypeRefDeclaration) { TaggedTypeRef tr = taggedTypeRefDeclaration.getTaggedTypeRef(); if (tr != null) { String before = tr.getCommentBefore(); tr.setCommentBefore(taggedTypeRefDeclaration.getCommentBefore()); tr.addToCommentBefore(before); taggedTypeRefDeclaration.setCommentBefore(null); } super.visitTaggedTypeRefDeclaration(taggedTypeRefDeclaration); }
@Override public void visitIf(If ifStat) { super.visitIf(ifStat); Expression cond = ifStat.getCondition(); if (!(cond instanceof BinaryOp)) // TODO use typing rather than this hack to detect implicit boolean conversion in if statements (and not only there) { cond.replaceBy(expr(cond, BinaryOperator.IsDifferent, expr(0))); } }
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; }
@Override public QualifiedIdentifier eraseTemplateArguments() { return resolveAllButLastIdentifier().derive(getSeparator(), resolveLastSimpleIdentifier().eraseTemplateArguments()); } @Override
public void setName(String name) { if (declarator == null) setDeclarator(new Declarator.DirectDeclarator(name)); else declarator.propagateName(name); } @Override
@Override public void propagateName(String name) { if (getTarget() != null) getTarget().propagateName(name); else setTarget(new DirectDeclarator(name)); } }
boolean isResolved(Identifier i) { if (i == null || i.isPlain()) { return false; } return (i instanceof Identifier.QualifiedIdentifier) && Identifier.QualificationSeparator.Dot.equals(((Identifier.QualifiedIdentifier) i).getSeparator()); }
Statement throwIfArraySizeDifferent(String varAndFieldName) { return new Statement.If( expr( memberRef(varRef(varAndFieldName), MemberRefStyle.Dot, "length"), BinaryOperator.IsDifferent, memberRef(memberRef(thisRef(), MemberRefStyle.Dot, varAndFieldName), MemberRefStyle.Dot, "length")), new Statement.Throw(new Expression.New(typeRef(IllegalArgumentException.class), expr("Wrong array size !"))), null); }
private void addParentNamespaceAnnotation(ModifiableElement dest, Identifier parentNamespace) { if (parentNamespace != null) { dest.addAnnotation(new Annotation(typeRef(org.bridj.ann.Namespace.class), expr(parentNamespace.toString()))); } } }
@Override public void visitArrayAccess(ArrayAccess arrayAccess) { super.visitArrayAccess(arrayAccess); arrayAccess.replaceBy(methodCall(arrayAccess.getTarget(), "get", arrayAccess.getIndex())); }
@Override public void visitTaggedTypeRefDeclaration(TaggedTypeRefDeclaration taggedTypeRefDeclaration) { TaggedTypeRef tr = taggedTypeRefDeclaration.getTaggedTypeRef(); if (tr != null) { String before = tr.getCommentBefore(); tr.setCommentBefore(taggedTypeRefDeclaration.getCommentBefore()); tr.addToCommentBefore(before); taggedTypeRefDeclaration.setCommentBefore(null); } super.visitTaggedTypeRefDeclaration(taggedTypeRefDeclaration); }
@Override public void visitIf(If ifStat) { super.visitIf(ifStat); Expression cond = ifStat.getCondition(); if (!(cond instanceof BinaryOp)) // TODO use typing rather than this hack to detect implicit boolean conversion in if statements (and not only there) { cond.replaceBy(expr(cond, BinaryOperator.IsDifferent, expr(0))); } }