Example usage for org.eclipse.jdt.core.dom Modifier NATIVE

List of usage examples for org.eclipse.jdt.core.dom Modifier NATIVE

Introduction

In this page you can find the example usage for org.eclipse.jdt.core.dom Modifier NATIVE.

Prototype

int NATIVE

To view the source code for org.eclipse.jdt.core.dom Modifier NATIVE.

Click Source Link

Document

"native" modifier constant (bit mask).

Usage

From source file:astview.Binding.java

License:Open Source License

private static StringBuffer getModifiersString(int flags, boolean isMethod) {
    StringBuffer sb = new StringBuffer().append("0x").append(Integer.toHexString(flags)).append(" (");
    int prologLen = sb.length();
    int rest = flags;

    rest &= ~appendFlag(sb, flags, Modifier.PUBLIC, "public ");
    rest &= ~appendFlag(sb, flags, Modifier.PRIVATE, "private ");
    rest &= ~appendFlag(sb, flags, Modifier.PROTECTED, "protected ");
    rest &= ~appendFlag(sb, flags, Modifier.STATIC, "static ");
    rest &= ~appendFlag(sb, flags, Modifier.FINAL, "final ");
    if (isMethod) {
        rest &= ~appendFlag(sb, flags, Modifier.SYNCHRONIZED, "synchronized ");
        rest &= ~appendFlag(sb, flags, Modifier.DEFAULT, "default ");
    } else {/*from  w  w  w .  j a  v  a 2 s . c  o m*/
        rest &= ~appendFlag(sb, flags, Modifier.VOLATILE, "volatile ");
        rest &= ~appendFlag(sb, flags, Modifier.TRANSIENT, "transient ");
    }
    rest &= ~appendFlag(sb, flags, Modifier.NATIVE, "native ");
    rest &= ~appendFlag(sb, flags, Modifier.ABSTRACT, "abstract ");
    rest &= ~appendFlag(sb, flags, Modifier.STRICTFP, "strictfp ");

    if (rest != 0)
        sb.append("unknown:0x").append(Integer.toHexString(rest)).append(" ");
    int len = sb.length();
    if (len != prologLen)
        sb.setLength(len - 1);
    sb.append(")");
    return sb;
}

From source file:com.google.devtools.j2cpp.gen.CppImplementationGenerator.java

License:Open Source License

@Override
protected String methodDeclaration(MethodDeclaration m) {
    int modifiers = m.getModifiers();
    if ((modifiers & Modifier.NATIVE) > 0) {
        return super.methodDeclaration(m) + " " + extractNativeMethodBody(m) + "\n\n";
    }/*  w  w w .  jav a2  s.  co  m*/
    String methodBody = generateMethodBody(m);
    return super.methodDeclaration(m) + " " + reindent(methodBody) + "\n\n";
}

From source file:com.google.devtools.j2cpp.gen.CppImplementationGenerator.java

License:Open Source License

@Override
protected String mappedMethodDeclaration(MethodDeclaration method, IOSMethod mappedMethod) {
    String methodBody;//from   w w w . ja  va  2s.c o  m
    if ((method.getModifiers() & Modifier.NATIVE) > 0) {
        methodBody = extractNativeMethodBody(method);
    } else {
        methodBody = generateMethodBody(method);
    }
    return super.mappedMethodDeclaration(method, mappedMethod) + " " + reindent(methodBody) + "\n\n";
}

From source file:com.google.devtools.j2cpp.gen.CppImplementationGenerator.java

License:Open Source License

private void printMainMethod(MethodDeclaration m, String typeName, List<IMethodBinding> testMethods) {
    if (m != null) { // True for unit tests.
        Types.addFunction(Types.getMethodBinding(m));
    }/*  w ww.  ja v a 2  s  .c o m*/
    println("int main( int argc, const char *argv[] ) {");
    if (m != null && (m.getModifiers() & Modifier.NATIVE) > 0) {
        println(extractNativeMethodBody(m));
        return;
    }
    indent();
    if (Options.useReferenceCounting()) {
        printIndent();
        println("NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];");
    }

    if (m != null) {
        @SuppressWarnings("unchecked")
        List<SingleVariableDeclaration> params = m.parameters();
        assert params.size() == 1; // Previously checked in isMainMethod().
        printIndent();
        printf("IOSObjectArray *%s = JreEmulationMainArguments(argc, argv);\n\n",
                params.get(0).getName().getIdentifier());
        printMethodBody(m, true);
    }
    if (testMethods != null) {
        printIndent();
        printf("int exitCode = [JUnitRunner runTests:[%s class]", typeName);
        for (IMethodBinding test : testMethods) {
            printf(", @\"%s\"", test.getName());
        }
        println(", nil];");
    } else {
        printIndent();
        println("int exitCode = 0;");
    }
    if (Options.useReferenceCounting()) {
        print('\n');
        printIndent();
        println("[pool release];");
    }
    printIndent();
    println("return exitCode;");
    unindent();
    println("}");
}

From source file:com.google.devtools.j2cpp.gen.CppImplementationGenerator.java

License:Open Source License

private String extractNativeMethodBody(MethodDeclaration m) {
    assert (m.getModifiers() & Modifier.NATIVE) > 0;
    String nativeCode = extractNativeCode(m.getStartPosition(), m.getLength());
    if (nativeCode == null) {
        J2ObjC.error(m, "no native code found");
        return "ERROR";
    }//from   w  ww  .  jav a  2  s  .  c  o  m
    indent();
    String code = reindent('{' + nativeCode + '}');
    unindent();
    return code;
}

From source file:com.google.devtools.j2objc.gen.SourceFileGenerator.java

License:Open Source License

/**
 * Returns true if a native method has an OCNI block, warning if JSNI
 * delimiters are found instead./*from w  w w . j ava2  s  . co m*/
 */
protected boolean hasNativeCode(MethodDeclaration m, boolean reportJsniWarnings) {
    assert (m.getModifiers() & Modifier.NATIVE) > 0;
    String nativeCode = extractNativeCode(m.getStartPosition(), m.getLength(), reportJsniWarnings);
    return nativeCode != null;
}

From source file:com.google.devtools.j2objc.translate.Functionizer.java

License:Apache License

/**
 * Create an equivalent function declaration for a given method.
 *///w  ww.j a  v  a 2 s  . c  o m
private FunctionDeclaration makeFunction(MethodDeclaration method) {
    IMethodBinding m = method.getMethodBinding();
    ITypeBinding declaringClass = m.getDeclaringClass();
    boolean isInstanceMethod = !BindingUtil.isStatic(m) && !m.isConstructor();

    FunctionDeclaration function = new FunctionDeclaration(nameTable.getFullFunctionName(m), m.getReturnType());
    function.setLineNumber(method.getName().getLineNumber());

    if (!BindingUtil.isStatic(m)) {
        GeneratedVariableBinding var = new GeneratedVariableBinding(NameTable.SELF_NAME, 0, declaringClass,
                false, true, declaringClass, null);
        function.getParameters().add(new SingleVariableDeclaration(var));
    }
    TreeUtil.copyList(method.getParameters(), function.getParameters());
    function.setModifiers(BindingUtil.isPrivate(m) || isInstanceMethod ? Modifier.PRIVATE : Modifier.PUBLIC);

    if (Modifier.isNative(method.getModifiers())) {
        function.addModifiers(Modifier.NATIVE);
        return function;
    }

    function.setBody(TreeUtil.remove(method.getBody()));

    if (BindingUtil.isStatic(m)) {
        // Add class initialization invocation, since this may be the first use of this class.
        String initName = String.format("%s_initialize", nameTable.getFullName(declaringClass));
        ITypeBinding voidType = typeEnv.resolveJavaType("void");
        FunctionInvocation initCall = new FunctionInvocation(initName, voidType, voidType, declaringClass);
        function.getBody().getStatements().add(0, new ExpressionStatement(initCall));
    }

    if (!BindingUtil.isStatic(m)) {
        FunctionConverter.convert(function);
    }

    return function;
}

From source file:com.google.devtools.j2objc.translate.Functionizer.java

License:Apache License

/**
 *  Replace method block statements with single statement that invokes function.
 *//*from  w w  w.ja va  2 s. com*/
private void setFunctionCaller(MethodDeclaration method, FunctionDeclaration function) {
    IMethodBinding methodBinding = method.getMethodBinding();
    ITypeBinding returnType = function.getReturnType().getTypeBinding();
    ITypeBinding declaringClass = methodBinding.getDeclaringClass();
    Block body = new Block();
    method.setBody(body);
    method.removeModifiers(Modifier.NATIVE);
    List<Statement> stmts = body.getStatements();
    FunctionInvocation invocation = new FunctionInvocation(function.getName(), returnType, returnType,
            declaringClass);
    List<Expression> args = invocation.getArguments();
    if (!BindingUtil.isStatic(methodBinding)) {
        args.add(new ThisExpression(methodBinding.getDeclaringClass()));
    }
    for (SingleVariableDeclaration param : method.getParameters()) {
        args.add(new SimpleName(param.getVariableBinding()));
    }
    if (typeEnv.isVoidType(returnType)) {
        stmts.add(new ExpressionStatement(invocation));
        if (methodBinding.isConstructor()) {
            stmts.add(new ReturnStatement(new ThisExpression(declaringClass)));
        }
    } else {
        stmts.add(new ReturnStatement(invocation));
    }
}

From source file:com.google.devtools.j2objc.translate.OcniExtractor.java

License:Apache License

@Override
public void endVisit(MethodDeclaration node) {
    int modifiers = node.getModifiers();
    if (Modifier.isNative(modifiers)) {
        String nativeCode = extractNativeCode(node);
        if (nativeCode != null) {
            Block body = new Block();
            body.getStatements().add(new NativeStatement(nativeCode));
            node.setBody(body);/*from  w  ww. ja  va2  s .co  m*/
            node.removeModifiers(Modifier.NATIVE);
        }
    }
    if (Modifier.isSynchronized(modifiers)) {
        ITypeBinding declaringClass = node.getMethodBinding().getDeclaringClass();
        SynchronizedStatement syncStmt = new SynchronizedStatement(
                Modifier.isStatic(modifiers) ? new TypeLiteral(declaringClass, typeEnv)
                        : new ThisExpression(declaringClass));
        syncStmt.setBody(TreeUtil.remove(node.getBody()));
        Block newBody = new Block();
        newBody.getStatements().add(syncStmt);
        node.setBody(newBody);
        node.removeModifiers(Modifier.SYNCHRONIZED);
    }
}

From source file:com.ibm.wala.cast.java.translator.jdt.JDT2CAstUtils.java

License:Open Source License

public static Collection<CAstQualifier> mapModifiersToQualifiers(int modifiers, boolean isInterface,
        boolean isAnnotation) {
    Set<CAstQualifier> quals = new LinkedHashSet<CAstQualifier>();

    if (isInterface)
        quals.add(CAstQualifier.INTERFACE);

    if (isAnnotation)
        quals.add(CAstQualifier.ANNOTATION);

    if ((modifiers & Modifier.ABSTRACT) != 0)
        quals.add(CAstQualifier.ABSTRACT);
    if ((modifiers & Modifier.FINAL) != 0)
        quals.add(CAstQualifier.FINAL);/*w  w  w  .j  ava  2s .  c  om*/
    if ((modifiers & Modifier.NATIVE) != 0)
        quals.add(CAstQualifier.NATIVE);
    // if (flags.isPackage()) quals.add(CAstQualifier.PACKAGE);
    if ((modifiers & Modifier.PRIVATE) != 0)
        quals.add(CAstQualifier.PRIVATE);
    if ((modifiers & Modifier.PROTECTED) != 0)
        quals.add(CAstQualifier.PROTECTED);
    if ((modifiers & Modifier.PUBLIC) != 0)
        quals.add(CAstQualifier.PUBLIC);
    if ((modifiers & Modifier.STATIC) != 0)
        quals.add(CAstQualifier.STATIC);
    if ((modifiers & Modifier.STRICTFP) != 0)
        quals.add(CAstQualifier.STRICTFP);
    if ((modifiers & Modifier.SYNCHRONIZED) != 0)
        quals.add(CAstQualifier.SYNCHRONIZED);
    if ((modifiers & Modifier.TRANSIENT) != 0)
        quals.add(CAstQualifier.TRANSIENT);
    if ((modifiers & Modifier.VOLATILE) != 0)
        quals.add(CAstQualifier.VOLATILE);

    return quals;
}