@Override public MutableByDeclarator mutateType(MutableByDeclarator type) { if (type == null) return null; type = type.clone(); if (type instanceof Function) { TypeRef fs = new TypeRef.FunctionSignature((Function)type).importDetails((Element)type, true); type = (MutableByDeclarator) new TypeRef.Pointer(fs, getPointerStyle()); } else if (type instanceof TypeRef) { type = (MutableByDeclarator) new TypeRef.Pointer((TypeRef)type, getPointerStyle()).importDetails((Element)type, true); } else throw new IllegalArgumentException(type.getClass().getName() + " cannot be mutated by pointer"); ((Element)type).importDetails(this, false); return getTarget() == null ? type : getTarget().mutateType(type); } public Declarator.PointerStyle getPointerStyle() {
ident(dummyNodeBufferFreeCallbackName), typeRef(void.class), new Arg("data", new TypeRef.Pointer(typeRef("char"), Declarator.PointerStyle.Pointer)), new Arg("hint", new TypeRef.Pointer(typeRef("void"), Declarator.PointerStyle.Pointer))); dummyNodeBufferFreeCallback.setBody(new Block()); sourceFile.addDeclaration(dummyNodeBufferFreeCallback);
ident(dummyNodeBufferFreeCallbackName), typeRef(void.class), new Arg("data", new TypeRef.Pointer(typeRef("char"), Declarator.PointerStyle.Pointer)), new Arg("hint", new TypeRef.Pointer(typeRef("void"), Declarator.PointerStyle.Pointer))); dummyNodeBufferFreeCallback.setBody(new Block()); sourceFile.addDeclaration(dummyNodeBufferFreeCallback);
mutType = new TypeRef.Pointer(typeRef(void.class), PointerStyle.Pointer);
String methodName = library + "_" + (function.getParentElement() instanceof Struct ? ((Struct) function.getParentElement()).getTag() + "_" : "") + function.getName(); Function method = new Function(Function.Type.CppMethod, ident(methodName), typeRef(v8Ident("Handle", v8Ident("Value")))); method.addArg(new Arg(argsName, new TypeRef.Pointer(typeRef(v8Ident("Arguments")), Declarator.PointerStyle.Reference).addModifiers(ModifierType.Const))); Block body = new Block(); methodCall(ident("node", "Buffer", "Data"), methodCall(argExpr.clone(), Expression.MemberRefStyle.Dot, templateIdent(ident("As"), varRef(v8Ident("Object")))))); argType = new TypeRef.Pointer(typeRef(ident("char")), Declarator.PointerStyle.Pointer); argUsageExpr = cast(transformTypeForCast(arg.getValueType()), varRef(arg.getName())); break; memberRef( methodCall(ident("node", "Buffer", "New"), cast(new TypeRef.Pointer(typeRef("char"), Declarator.PointerStyle.Pointer), varRef(returnValueName)), expr(1), varRef(dummyNodeBufferFreeCallbackName),
struct.moveAllCommentsBefore(); TypeRef pointerType = new TypeRef.Pointer(type, Declarator.PointerStyle.Pointer);
String methodName = library + "_" + (function.getParentElement() instanceof Struct ? ((Struct) function.getParentElement()).getTag() + "_" : "") + function.getName(); Function method = new Function(Function.Type.CppMethod, ident(methodName), typeRef(v8Ident("Handle", v8Ident("Value")))); method.addArg(new Arg(argsName, new TypeRef.Pointer(typeRef(v8Ident("Arguments")), Declarator.PointerStyle.Reference).addModifiers(ModifierType.Const))); Block body = new Block(); methodCall(ident("node", "Buffer", "Data"), methodCall(argExpr.clone(), Expression.MemberRefStyle.Dot, templateIdent(ident("As"), varRef(v8Ident("Object")))))); argType = new TypeRef.Pointer(typeRef(ident("char")), Declarator.PointerStyle.Pointer); argUsageExpr = cast(transformTypeForCast(arg.getValueType()), varRef(arg.getName())); break; memberRef( methodCall(ident("node", "Buffer", "New"), cast(new TypeRef.Pointer(typeRef("char"), Declarator.PointerStyle.Pointer), varRef(returnValueName)), expr(1), varRef(dummyNodeBufferFreeCallbackName),
type = new TypeRef.Pointer(pointed, Declarator.PointerStyle.Pointer);
type = (f1!=null?f1.signature:null); if ((f1!=null?f1.pointerStyle:null) != null) { type = new Pointer(type, (f1!=null?f1.pointerStyle:null));
vd.setValueType(new Pointer(tr, PointerStyle.Pointer)); ret.varDeclTypeRefsTransformedToPointers.add(vd); Expression defVal = decl.getDefaultValue();
vd.setValueType(new Pointer(tr, PointerStyle.Pointer)); ret.varDeclTypeRefsTransformedToPointers.add(vd); Expression defVal = decl.getDefaultValue();
type = new TypeRef.Pointer(typeRef("char"), PointerStyle.Pointer);
public static TypeRef fixReturnType(Function function) { TypeRef returnType = function.getValueType(); if (returnType == null) { returnType = RococoaUtils.ROCOCOA_ID_TYPEREF; } Struct declaringClass = function.findParentOfType(Struct.class); if (returnType.toString().equals("id")) { String pointedClassName; if (function.getName().toString().matches("^(alloc|(init|copy|mutableCopy)([A-Z].*)?)$") || RococoaUtils.methodNameMatchesObjcStaticConstructor(declaringClass, function.getName())) { pointedClassName = declaringClass.getTag().toString(); } else /// Lets subclasses redefine method return type when parent method return type is ID { pointedClassName = "NSObject"; } returnType = new TypeRef.Pointer(new TypeRef.SimpleTypeRef(pointedClassName), PointerStyle.Pointer); } return returnType; } }
public static TypeRef fixReturnType(Function function) { TypeRef returnType = function.getValueType(); if (returnType == null) { returnType = RococoaUtils.ROCOCOA_ID_TYPEREF; } Struct declaringClass = function.findParentOfType(Struct.class); if (returnType.toString().equals("id")) { String pointedClassName; if (function.getName().toString().matches("^(alloc|(init|copy|mutableCopy)([A-Z].*)?)$") || RococoaUtils.methodNameMatchesObjcStaticConstructor(declaringClass, function.getName())) { pointedClassName = declaringClass.getTag().toString(); } else /// Lets subclasses redefine method return type when parent method return type is ID { pointedClassName = "NSObject"; } returnType = new TypeRef.Pointer(new TypeRef.SimpleTypeRef(pointedClassName), PointerStyle.Pointer); } return returnType; } }
STAR = new TypeMutator() { @Override public TypeRef mutateType(TypeRef type) { return new TypeRef.Pointer(type, PointerStyle.Pointer); }}, HAT = new TypeMutator() { @Override public TypeRef mutateType(TypeRef type) {
private TypeRef transformTypeForCast(TypeRef tr) { if (tr instanceof TypeRef.TargettedTypeRef) { TypeRef.TargettedTypeRef ttr = (TypeRef.TargettedTypeRef) tr; return new TypeRef.Pointer(transformTypeForCast(ttr.getTarget()), Declarator.PointerStyle.Pointer); } return tr.clone(); }
private TypeRef transformTypeForCast(TypeRef tr) { if (tr instanceof TypeRef.TargettedTypeRef) { TypeRef.TargettedTypeRef ttr = (TypeRef.TargettedTypeRef) tr; return new TypeRef.Pointer(transformTypeForCast(ttr.getTarget()), Declarator.PointerStyle.Pointer); } return tr.clone(); }
CONST_STAR = new TypeMutator() { @Override public TypeRef mutateType(TypeRef type) { type = new TypeRef.Pointer(type, PointerStyle.Pointer); type.addModifiers(ModifierType.Const); return type; }}, STAR = new TypeMutator() { @Override public TypeRef mutateType(TypeRef type) {
AMPERSTAND = new TypeMutator() { @Override public TypeRef mutateType(TypeRef type) { return new TypeRef.Pointer(type, PointerStyle.Reference); }}, CONST = new TypeMutator() { @Override public TypeRef mutateType(TypeRef type) {
HAT = new TypeMutator() { @Override public TypeRef mutateType(TypeRef type) { return new TypeRef.Pointer(type, PointerStyle.HatPointer); }}, AMPERSTAND = new TypeMutator() { @Override public TypeRef mutateType(TypeRef type) {