@Override public void visitDelete(Delete d) { d.replaceBy(stat(methodCall(d.getValue(), "release"))); }
@Override public void visitDelete(Delete d) { d.replaceBy(stat(methodCall(d.getValue(), "release"))); }
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; }
protected Function createNewStructMethod(String name, Struct byRef) { TypeRef tr = typeRef(byRef.getTag().clone()); Function f = new Function(Function.Type.JavaMethod, ident(name), tr); String varName = "s"; f.addModifiers(ModifierType.Protected); if (result.config.runtime != JNAeratorConfig.Runtime.JNA) { f.setBody(block( //new Statement.Return(methodCall("setupClone", new Expression.New(tr.clone(), methodCall(null)))) new Statement.Return(new Expression.New(tr.clone(), methodCall((String) null)))).setCompact(true)); } else { f.setBody(block( stat(tr.clone(), varName, new Expression.New(tr.clone(), methodCall((String) null))), stat(methodCall(varRef(varName), MemberRefStyle.Dot, "useMemory", methodCall("getPointer"))), stat(methodCall("write")), stat(methodCall(varRef(varName), MemberRefStyle.Dot, "read")), new Statement.Return(varRef(varName)))); } return f; }
protected Function createNewStructMethod(String name, Struct byRef) { TypeRef tr = typeRef(byRef.getTag().clone()); Function f = new Function(Function.Type.JavaMethod, ident(name), tr); String varName = "s"; f.addModifiers(ModifierType.Protected); if (result.config.runtime != JNAeratorConfig.Runtime.JNA) { f.setBody(block( //new Statement.Return(methodCall("setupClone", new Expression.New(tr.clone(), methodCall(null)))) new Statement.Return(new Expression.New(tr.clone(), methodCall((String) null)))).setCompact(true)); } else { f.setBody(block( stat(tr.clone(), varName, new Expression.New(tr.clone(), methodCall((String) null))), stat(methodCall(varRef(varName), MemberRefStyle.Dot, "useMemory", methodCall("getPointer"))), stat(methodCall("write")), stat(methodCall(varRef(varName), MemberRefStyle.Dot, "read")), new Statement.Return(varRef(varName)))); } 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; }
initMethod.replaceBy(null); sourceFile.addDeclaration(initMethod); sourceFile.addDeclaration(decl(stat(methodCall("NODE_MODULE", varRef(ident(library)), varRef(ident(initFunctionName)))))); writeLibraryInterface(result, sourceFiles, sourceFile, library, null);
@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; }
decl.setDefaultValue(referenced ? staticPtrMethod("allocate", result.typeConverter.typeLiteral(actualType)) : new Expression.New(actualType.clone())); Expression vr = varRef(new SimpleIdentifier(decl.resolveName())); Statement deleteStat = stat(methodCall(expr(typeRef(BridJ.class)), "delete", referenced ? methodCall(vr, "get") : vr)); deleteStat.setCommentAfter("// object would end up being deleted by the GC later, but in C++ it would be deleted here.");
decl.setDefaultValue(referenced ? staticPtrMethod("allocate", result.typeConverter.typeLiteral(actualType)) : new Expression.New(actualType.clone())); Expression vr = varRef(new SimpleIdentifier(decl.resolveName())); Statement deleteStat = stat(methodCall(expr(typeRef(BridJ.class)), "delete", referenced ? methodCall(vr, "get") : vr)); deleteStat.setCommentAfter("// object would end up being deleted by the GC later, but in C++ it would be deleted here.");
private Function createProxyCopy(Function originalMethod, Function meth) { if (isMethodExcludedFromStaticForwarding(originalMethod)) { return null; } Function proxyCopy = meth.clone(); proxyCopy.addModifiers(ModifierType.Public, ModifierType.Static); proxyCopy.reorganizeModifiers(); Expression[] args = new Expression[meth.getArgs().size()]; int i = 0; for (Arg arg : meth.getArgs()) { args[i++] = varRef(arg.getName()); } Expression val = methodCall(methodCall(null, null, classInstanceGetterName), Expression.MemberRefStyle.Dot, meth.getName().toString(), args); proxyCopy.setBody(new Block( meth.getValueType() == null || "void".equals(meth.getValueType().toString()) ? stat(val) : new Statement.Return(val))); return proxyCopy; } // protected static _class_ _CLASS_ = org.rococoa.Rococoa.createClass("NSURL", _class_.class);
private Function createProxyCopy(Function originalMethod, Function meth) { if (isMethodExcludedFromStaticForwarding(originalMethod)) { return null; } Function proxyCopy = meth.clone(); proxyCopy.addModifiers(ModifierType.Public, ModifierType.Static); proxyCopy.reorganizeModifiers(); Expression[] args = new Expression[meth.getArgs().size()]; int i = 0; for (Arg arg : meth.getArgs()) { args[i++] = varRef(arg.getName()); } Expression val = methodCall(methodCall(null, null, classInstanceGetterName), Expression.MemberRefStyle.Dot, meth.getName().toString(), args); proxyCopy.setBody(new Block( meth.getValueType() == null || "void".equals(meth.getValueType().toString()) ? stat(val) : new Statement.Return(val))); return proxyCopy; } // protected static _class_ _CLASS_ = org.rococoa.Rococoa.createClass("NSURL", _class_.class);
if (pair.getFirst().intValue() != 1) { ret.extraStatements.add( stat( methodCall( "checkArrayLength",
stat(expr(memberRef(thisRef(), MemberRefStyle.Dot, ident(name)), AssignmentOperator.Equal, varRef(name))))).addModifiers(ModifierType.Public); if (signatures.addMethod(setMethod)) { out.addDeclaration(setMethod);
stat(expr(memberRef(thisRef(), MemberRefStyle.Dot, ident(name)), AssignmentOperator.Equal, varRef(name))))).addModifiers(ModifierType.Public); if (signatures.addMethod(setMethod)) { out.addDeclaration(setMethod);
throw new UnsupportedConversionException(value, "Constant type not supported yet"); initBlock.addStatement(stat(methodCall(varRef(initTarget), MemberRefStyle.Arrow, "Set", methodCall(ident("v8", "String", "NewSymbol"), expr(name)), expr)));
throw new UnsupportedConversionException(value, "Constant type not supported yet"); initBlock.addStatement(stat(methodCall(varRef(initTarget), MemberRefStyle.Arrow, "Set", methodCall(ident("v8", "String", "NewSymbol"), expr(name)), expr)));