static Expression arrowMethodCall(Expression target, String name, Expression... args) { return methodCall(target, Expression.MemberRefStyle.Arrow, name, args); } static final String argsName = "_arguments_";
static Expression arrowMethodCall(Expression target, String name, Expression... args) { return methodCall(target, Expression.MemberRefStyle.Arrow, name, args); } static final String argsName = "_arguments_";
private Expression createGetEnumValueExpression(Expression value) { return cast(typeRef(int.class), methodCall(value, "value")); } private Expression createGetIntegralValueExpression(Expression value) {
private Expression createGetEnumValueExpression(Expression value) { return cast(typeRef(int.class), methodCall(value, "value")); } private Expression createGetIntegralValueExpression(Expression value) {
private Expression createGetPeerExpression(Expression value) { return methodCall(expr(typeRef(org.bridj.Pointer.class)), "getPeer", value); } private Expression createPointerToAddressExpression(NL4JConversion pointerType, Expression value) {
Expression staticPtrMethod(String name, Expression... args) { return methodCall(expr(typeRef(ptrClass())), name, args); } int iFile = 0;
@Override public void visitDelete(Delete d) { d.replaceBy(stat(methodCall(d.getValue(), "release"))); }
@Override public void visitUnaryOp(UnaryOp unaryOp) { super.visitUnaryOp(unaryOp); switch (unaryOp.getOperator()) { case Dereference: unaryOp.replaceBy(methodCall(unaryOp.getOperand(), "get")); break; case Reference: // TODO handle special case of referenced primitives, for instance unaryOp.replaceBy(methodCall(unaryOp.getOperand(), "getReference")); break; } }
@Override public void visitArrayAccess(ArrayAccess arrayAccess) { super.visitArrayAccess(arrayAccess); arrayAccess.replaceBy(methodCall(arrayAccess.getTarget(), "get", arrayAccess.getIndex())); }
@Override public void visitArrayAccess(ArrayAccess arrayAccess) { super.visitArrayAccess(arrayAccess); arrayAccess.replaceBy(methodCall(arrayAccess.getTarget(), "get", arrayAccess.getIndex())); }
@Override public void visitVariableRef(VariableRef vr) { super.visitVariableRef(vr); Identifier ident = vr.getName(); if (isReferenced(ident)) { vr.replaceBy(methodCall(varRef(ident), "get")); } }
@Override public void visitVariableRef(VariableRef vr) { super.visitVariableRef(vr); Identifier ident = vr.getName(); if (isReferenced(ident)) { vr.replaceBy(methodCall(varRef(ident), "get")); } }
private Expression createEnumExpression(NL4JConversion enumType, Expression value) { TypeRef tr = enumType.getTypeRef(false); return methodCall(expr(typeRef(org.bridj.FlagSet.class)), "fromValue", value, result.typeConverter.typeLiteral(getSingleTypeParameter(tr))); }
@Override public void visitCast(Cast cast) { super.visitCast(cast); if (cast.getType() instanceof TargettedTypeRef) { cast.replaceBy(methodCall(cast.getTarget(), "as", result.typeConverter.typeLiteral(((TargettedTypeRef) cast.getType()).getTarget()))); } }
@Override public void visitCast(Cast cast) { super.visitCast(cast); if (cast.getType() instanceof TargettedTypeRef) { cast.replaceBy(methodCall(cast.getTarget(), "as", result.typeConverter.typeLiteral(((TargettedTypeRef) cast.getType()).getTarget()))); } }
private Function newStaticInit() { Function f = new Function(Function.Type.StaticInit, null, null).setBody(block( stat(methodCall( expr(typeRef(BridJ.class)), Expression.MemberRefStyle.Dot, "register")))).addModifiers(ModifierType.Static); return f; }
private Function newStaticInit() { Function f = new Function(Function.Type.StaticInit, null, null).setBody(block( stat(methodCall( expr(typeRef(BridJ.class)), Expression.MemberRefStyle.Dot, "register")))).addModifiers(ModifierType.Static); return f; }
@Override protected Struct createFakePointerClass(Identifier fakePointer) { Struct ptClass = result.declarationsConverter.publicStaticClass(fakePointer, ident(PointerType.class), Struct.Type.JavaClass, null); String pointerVarName = "address"; ptClass.addDeclaration(new Function(Function.Type.JavaMethod, fakePointer, null, new Arg(pointerVarName, typeRef(com.sun.jna.Pointer.class))).addModifiers(ModifierType.Public).setBody( block(stat(methodCall("super", varRef(pointerVarName)))))); ptClass.addDeclaration(new Function(Function.Type.JavaMethod, fakePointer, null) .addModifiers(ModifierType.Public) .setBody( block(stat(methodCall("super"))))); return ptClass; }
@Override protected Struct createFakePointerClass(Identifier fakePointer) { Struct ptClass = result.declarationsConverter.publicStaticClass(fakePointer, ident(TypedPointer.class), Struct.Type.JavaClass, null); String addressVarName = "address"; ptClass.addDeclaration(new Function(Function.Type.JavaMethod, fakePointer, null, new Arg(addressVarName, typeRef(long.class))).addModifiers(ModifierType.Public).setBody( block(stat(methodCall("super", varRef(addressVarName)))))); ptClass.addDeclaration(new Function(Function.Type.JavaMethod, fakePointer, null, new Arg(addressVarName, typeRef(org.bridj.Pointer.class))).addModifiers(ModifierType.Public).setBody( block(stat(methodCall("super", varRef(addressVarName)))))); return ptClass; }
@Override protected Struct createFakePointerClass(Identifier fakePointer) { Struct ptClass = result.declarationsConverter.publicStaticClass(fakePointer, ident(TypedPointer.class), Struct.Type.JavaClass, null); String addressVarName = "address"; ptClass.addDeclaration(new Function(Function.Type.JavaMethod, fakePointer, null, new Arg(addressVarName, typeRef(long.class))).addModifiers(ModifierType.Public).setBody( block(stat(methodCall("super", varRef(addressVarName)))))); ptClass.addDeclaration(new Function(Function.Type.JavaMethod, fakePointer, null, new Arg(addressVarName, typeRef(org.bridj.Pointer.class))).addModifiers(ModifierType.Public).setBody( block(stat(methodCall("super", varRef(addressVarName)))))); return ptClass; }