public static TypeRef recognizeSizeOf(Expression e) { if (!(e instanceof FunctionCall)) { return null; } FunctionCall fc = (FunctionCall) e; List<Pair<String, Expression>> args = fc.getArguments(); if (args.size() != 1) { return null; } Pair<String, Expression> arg = args.get(0); if (arg == null) { return null; } Expression f = fc.getFunction(); if (!(f instanceof VariableRef)) { return null; } VariableRef vr = (VariableRef) f; if (!"sizeof".equals(String.valueOf(vr.getName()))) { return null; } Expression a = arg.getSecond(); if (!(a instanceof Expression.TypeRefExpression)) { return null; } Expression.TypeRefExpression tr = (Expression.TypeRefExpression) a; return tr.getType(); }
public static TypeRef recognizeSizeOf(Expression e) { if (!(e instanceof FunctionCall)) { return null; } FunctionCall fc = (FunctionCall) e; List<Pair<String, Expression>> args = fc.getArguments(); if (args.size() != 1) { return null; } Pair<String, Expression> arg = args.get(0); if (arg == null) { return null; } Expression f = fc.getFunction(); if (!(f instanceof VariableRef)) { return null; } VariableRef vr = (VariableRef) f; if (!"sizeof".equals(String.valueOf(vr.getName()))) { return null; } Expression a = arg.getSecond(); if (!(a instanceof Expression.TypeRefExpression)) { return null; } Expression.TypeRefExpression tr = (Expression.TypeRefExpression) a; return tr.getType(); }
public static TypeRef getSingleTypeParameter(TypeRef tr) { if (!(tr instanceof SimpleTypeRef)) { return null; } SimpleTypeRef str = (SimpleTypeRef) tr; Identifier name = str.getName(); if (name == null) { return null; } SimpleIdentifier id = name.resolveLastSimpleIdentifier(); List<Expression> templateArguments = id.getTemplateArguments(); if (templateArguments.size() != 1) { return null; } Expression x = templateArguments.get(0); if (!(x instanceof TypeRefExpression)) { return null; } return ((TypeRefExpression) x).getType(); }
TypeRef tr = tre.getType(); if (tr instanceof TypeRef.SimpleTypeRef) { TypeRef.SimpleTypeRef str = (TypeRef.SimpleTypeRef) tr;
TypeRef tr = tre.getType(); if (tr instanceof TypeRef.SimpleTypeRef) { TypeRef.SimpleTypeRef str = (TypeRef.SimpleTypeRef) tr;
Expression.TypeRefExpression typeEx = SyntaxUtils.as(fc.getArguments().get(0).getValue(), Expression.TypeRefExpression.class); if (typeEx != null) { res = typed(sizeofToJava(typeEx.getType(), libraryClassName), typeRef(Integer.TYPE));
Expression.TypeRefExpression typeEx = SyntaxUtils.as(fc.getArguments().get(0).getValue(), Expression.TypeRefExpression.class); if (typeEx != null) { res = typed(sizeofToJava(typeEx.getType(), libraryClassName), typeRef(Integer.TYPE));
TypeRef tr = tre.getType(); if (tr instanceof TypeRef.SimpleTypeRef) { TypeRef.SimpleTypeRef str = (TypeRef.SimpleTypeRef) tr;
public Identifier findObjCClassIdent(Identifier name) { if (name instanceof SimpleIdentifier) { SimpleIdentifier sname = (SimpleIdentifier) name; String n = sname.getName(); if (n.equals("id") && sname.getTemplateArguments().size() == 1/* && conversionMode != TypeConversionMode.NativeParameter && conversionMode != TypeConversionMode.NativeParameterWithStructsPtrPtrs*/) { Expression x = sname.getTemplateArguments().get(0); TypeRefExpression trx = x instanceof TypeRefExpression ? (TypeRefExpression) x : null; SimpleTypeRef str = trx.getType() instanceof SimpleTypeRef ? (SimpleTypeRef) trx.getType() : null; if (str != null) { name = str.getName(); } } } Class<?> class1 = predefObjCClasses.get(name.toString()); if (class1 != null) { return ident(class1); } Struct s = result.resolveObjCClass(name); if (s != null) { return result.objectiveCGenerator.getFullClassName(s); } return null; }
TypeRef tr = tre.getType(); if (tr instanceof TypeRef.SimpleTypeRef) { TypeRef.SimpleTypeRef str = (TypeRef.SimpleTypeRef) tr;
public Identifier findObjCClassIdent(Identifier name) { if (name instanceof SimpleIdentifier) { SimpleIdentifier sname = (SimpleIdentifier) name; String n = sname.getName(); if (n.equals("id") && sname.getTemplateArguments().size() == 1/* && conversionMode != TypeConversionMode.NativeParameter && conversionMode != TypeConversionMode.NativeParameterWithStructsPtrPtrs*/) { Expression x = sname.getTemplateArguments().get(0); TypeRefExpression trx = x instanceof TypeRefExpression ? (TypeRefExpression) x : null; SimpleTypeRef str = trx.getType() instanceof SimpleTypeRef ? (SimpleTypeRef) trx.getType() : null; if (str != null) { name = str.getName(); } } } Class<?> class1 = predefObjCClasses.get(name.toString()); if (class1 != null) { return ident(class1); } Struct s = result.resolveObjCClass(name); if (s != null) { return result.objectiveCGenerator.getFullClassName(s); } return null; }
@Override public Expression typeLiteral(TypeRef c) { if (c instanceof SimpleTypeRef && result.config.runtime == JNAeratorConfig.Runtime.BridJ) { Identifier id = ((SimpleTypeRef) c).getName(); Identifier.SimpleIdentifier sid = id.resolveLastSimpleIdentifier(); if (!sid.getTemplateArguments().isEmpty()) { Identifier erased = id.eraseTemplateArguments(); List<Expression> exprs = new ArrayList<Expression>(); exprs.add(typeLiteral(typeRef(erased.clone()))); for (Expression t : sid.getTemplateArguments()) { if (t instanceof Expression.TypeRefExpression) { exprs.add(typeLiteral(((Expression.TypeRefExpression) t).getType().clone())); } } return methodCall(expr(typeRef(DefaultParameterizedType.class)), "paramType", exprs.toArray(new Expression[exprs.size()])); } } return super.typeLiteral(c); }
@Override public Expression typeLiteral(TypeRef c) { if (c instanceof SimpleTypeRef && result.config.runtime == JNAeratorConfig.Runtime.BridJ) { Identifier id = ((SimpleTypeRef) c).getName(); Identifier.SimpleIdentifier sid = id.resolveLastSimpleIdentifier(); if (!sid.getTemplateArguments().isEmpty()) { Identifier erased = id.eraseTemplateArguments(); List<Expression> exprs = new ArrayList<Expression>(); exprs.add(typeLiteral(typeRef(erased.clone()))); for (Expression t : sid.getTemplateArguments()) { if (t instanceof Expression.TypeRefExpression) { exprs.add(typeLiteral(((Expression.TypeRefExpression) t).getType().clone())); } } return methodCall(expr(typeRef(DefaultParameterizedType.class)), "paramType", exprs.toArray(new Expression[exprs.size()])); } } return super.typeLiteral(c); }
public void visitTypeRefExpression(TypeRefExpression typeRefExpression) { visitExpression(typeRefExpression); visit(typeRefExpression.getType()); }
@Override public boolean replaceChild(Element child, Element by) { if (child == getType()) { setType((TypeRef) by); return true; } return super.replaceChild(child, by); } }
public void visitTypeRefExpression(TypeRefExpression e) { expressionPre(e); append(e.getType()); expressionPost(e); }