Examples of JNIType


Examples of org.fusesource.hawtjni.generator.model.JNIType

        }
    }

    void generate_objc_msgSend_stret(JNIMethod method, List<JNIParameter> params, String func) {
        output("\t\t*lparg0 = (*(");
        JNIType paramType = params.get(0).getType32(), paramType64 = params.get(0).getType64();
        output(paramType.getTypeSignature4(!paramType.equals(paramType64), true));
        output(" (*)(");
        for (int i = 1; i < params.size(); i++) {
            if (i != 1)
                output(", ");
            JNIParameter param = params.get(i);
            String cast = param.getCast();
            if( param.isPointer() ) {
                output("(intptr_t)");
            }
            if (cast.length() != 0 && !cast.equals("()")) {
                if (cast.startsWith("("))
                    cast = cast.substring(1);
                if (cast.endsWith(")"))
                    cast = cast.substring(0, cast.length() - 1);
                output(cast);
            } else {
                paramType = param.getType32();
                paramType64 = param.getType64();
                if (!(paramType.isPrimitive() || paramType.isArray())) {
                    if (param.getTypeClass().getFlag(ClassFlag.STRUCT) && !param.getTypeClass().getFlag(ClassFlag.TYPEDEF)) {
                        output("struct ");
                    }
                }
                output(paramType.getTypeSignature4(!paramType.equals(paramType64), param.getFlag(ArgFlag.BY_VALUE)));
            }
        }
        output("))");
        output(func);
        output(")");
View Full Code Here

Examples of org.fusesource.hawtjni.generator.model.JNIType

            output("jobject");
        }
        output(" that");
        for (int i = 0; i < params.size(); i++) {
            output(", ");
            JNIType paramType = params.get(i).getType32(), paramType64 = params.get(i).getType64();
            output(paramType.getTypeSignature2(!paramType.equals(paramType64)));
            output(" arg" + i);
        }
        output(")");
        if (!singleLine)
            outputln();
View Full Code Here

Examples of org.fusesource.hawtjni.generator.model.JNIType

        if (!singleLine)
            outputln();
    }

    boolean isCritical(JNIParameter param) {
        JNIType paramType = param.getType32();
        return paramType.isArray() && paramType.getComponentType().isPrimitive() && param.getFlag(ArgFlag.CRITICAL);
    }
View Full Code Here

Examples of org.fusesource.hawtjni.generator.model.JNIType

        }
        outputln("}");
    }

    public void generate(JNIField field) {
        JNIType type = field.getType();
        output("\tprintf(\"public static final ");
        output(field.getType().getTypeSignature3(false));
        output(" ");
        output(field.getName());
        output(" = ");
        if (type.isType("java.lang.String") || type.isType("[B"))
            output("\"%s\"");
        else
            output("0x%x");
        output(";\\n\", ");
        output(field.getName());
View Full Code Here

Examples of org.fusesource.hawtjni.generator.model.JNIType

                output(" = (*env)->GetFieldID(env, ");
            }
            output(simpleName);
            output("Fc.clazz, \"");
            output(field.getName());
            JNIType type = field.getType(), type64 = field.getType64();
            output("\", ");
            if (type.equals(type64))
                output("\"");
            output(type.getTypeSignature(!type.equals(type64)));
            if (type.equals(type64))
                output("\"");
            outputln(");");
        }
        // Makes sure compiler/cpu does not reorder the following write before the previous updates are done.
        outputln("\thawtjni_w_barrier();");
View Full Code Here

Examples of org.fusesource.hawtjni.generator.model.JNIType

                continue;
            String conditional = field.getConditional();
            if (conditional!=null) {
                outputln("#if "+conditional);
            }
            JNIType type = field.getType(), type64 = field.getType64();
            String simpleName = type.getSimpleName();
            String accessor = field.getAccessor();
            if (accessor == null || accessor.length() == 0)
                accessor = field.getName();
            if (type.isPrimitive()) {
                output("\tlpStruct->");
                output(accessor);
                output(" = ");
                output(field.getCast());
                if( field.isPointer() ) {
                    output("(intptr_t)");
                }
                if (isCPP) {
                    output("env->Get");
                } else {
                    output("(*env)->Get");
                }
                output(type.getTypeSignature1(!type.equals(type64)));
                if (isCPP) {
                    output("Field(lpObject, ");
                } else {
                    output("Field(env, lpObject, ");
                }
                output(field.getDeclaringClass().getSimpleName());
                output("Fc.");
                output(field.getName());
                output(");");
            } else if (type.isArray()) {
                JNIType componentType = type.getComponentType(), componentType64 = type64.getComponentType();
                if (componentType.isPrimitive()) {
                    outputln("\t{");
                    output("\t");
                    output(type.getTypeSignature2(!type.equals(type64)));
                    output(" lpObject1 = (");
                    output(type.getTypeSignature2(!type.equals(type64)));
                    if (isCPP) {
                        output(")env->GetObjectField(lpObject, ");
                    } else {
                        output(")(*env)->GetObjectField(env, lpObject, ");
                    }
                    output(field.getDeclaringClass().getSimpleName());
                    output("Fc.");
                    output(field.getName());
                    outputln(");");
                    if (isCPP) {
                        output("\tenv->Get");
                    } else {
                        output("\t(*env)->Get");
                    }
                    output(componentType.getTypeSignature1(!componentType.equals(componentType64)));
                    if (isCPP) {
                        output("ArrayRegion(lpObject1, 0, sizeof(lpStruct->");
                    } else {
                        output("ArrayRegion(env, lpObject1, 0, sizeof(lpStruct->");
                    }
                    output(accessor);
                    output(")");
                    if (!componentType.isType("byte")) {
                        output(" / sizeof(");
                        output(componentType.getTypeSignature2(!componentType.equals(componentType64)));
                        output(")");
                    }
                    output(", (");
                    output(type.getTypeSignature4(!type.equals(type64), false));
                    output(")lpStruct->");
View Full Code Here

Examples of org.fusesource.hawtjni.generator.model.JNIType

                continue;
            String conditional = field.getConditional();
            if (conditional!=null) {
                outputln("#if "+conditional);
            }
            JNIType type = field.getType(), type64 = field.getType64();
            boolean allowConversion = !type.equals(type64);
           
            String simpleName = type.getSimpleName();
            String accessor = field.getAccessor();
            if (accessor == null || accessor.length() == 0)
                accessor = field.getName();
            if (type.isPrimitive()) {
                if (isCPP) {
                    output("\tenv->Set");
                } else {
                    output("\t(*env)->Set");
                }
                output(type.getTypeSignature1(allowConversion));
                if (isCPP) {
                    output("Field(lpObject, ");
                } else {
                    output("Field(env, lpObject, ");
                }
                output(field.getDeclaringClass().getSimpleName());
                output("Fc.");
                output(field.getName());
                output(", ");
                output("("+type.getTypeSignature2(allowConversion)+")");
                if( field.isPointer() ) {
                    output("(intptr_t)");
                }
                output("lpStruct->"+accessor);
                output(");");
            } else if (type.isArray()) {
                JNIType componentType = type.getComponentType(), componentType64 = type64.getComponentType();
                if (componentType.isPrimitive()) {
                    outputln("\t{");
                    output("\t");
                    output(type.getTypeSignature2(allowConversion));
                    output(" lpObject1 = (");
                    output(type.getTypeSignature2(allowConversion));
                    if (isCPP) {
                        output(")env->GetObjectField(lpObject, ");
                    } else {
                        output(")(*env)->GetObjectField(env, lpObject, ");
                    }
                    output(field.getDeclaringClass().getSimpleName());
                    output("Fc.");
                    output(field.getName());
                    outputln(");");
                    if (isCPP) {
                        output("\tenv->Set");
                    } else {
                        output("\t(*env)->Set");
                    }
                    output(componentType.getTypeSignature1(!componentType.equals(componentType64)));
                    if (isCPP) {
                        output("ArrayRegion(lpObject1, 0, sizeof(lpStruct->");
                    } else {
                        output("ArrayRegion(env, lpObject1, 0, sizeof(lpStruct->");
                    }
                    output(accessor);
                    output(")");
                    if (!componentType.isType("byte")) {
                        output(" / sizeof(");
                        output(componentType.getTypeSignature2(!componentType.equals(componentType64)));
                        output(")");
                    }
                    output(", (");
                    output(type.getTypeSignature4(allowConversion, false));
                    output(")lpStruct->");
View Full Code Here

Examples of org.fusesource.hawtjni.generator.model.JNIType

        }
        return params;
    }

    String getReturn(JNIMethod method) {
        JNIType returnType = method.getReturnType32();
        if (!returnType.isType("int"))
            return returnType.getTypeSignature3(false);
        String modifierStr = Modifier.toString(method.getModifiers());
        String name = method.getName();
        Pattern p = Pattern.compile(modifierStr + ".*" + name + ".*(.*)");
        Matcher m = p.matcher(classSource);
        if (m.find()) {
View Full Code Here

Examples of org.fusesource.hawtjni.generator.model.JNIType

            String conditional = field.getConditional();
            if (conditional!=null) {
                outputln("#if "+conditional);
            }
            JNIType type = field.getType(), type64 = field.getType64();
            boolean allowConversion = !type.equals(type64);
           
            String simpleName = type.getSimpleName();
            String accessor = field.getAccessor();
            if (accessor == null || accessor.length() == 0)
                accessor = field.getName();

            String fieldId = "(*env)->GetStaticFieldID(env, that, \""+field.getName()+"\", \""+type.getTypeSignature(allowConversion)+"\")";
            if (isCPP) {
                fieldId = "env->GetStaticFieldID(that, \""+field.getName()+"\", \""+type.getTypeSignature(allowConversion)+"\")";
            }

            if (type.isPrimitive()) {
                if (isCPP) {
                    output("\tenv->SetStatic"+type.getTypeSignature1(allowConversion)+"Field(that, "+fieldId +", ");
                } else {
                    output("\t(*env)->SetStatic"+type.getTypeSignature1(allowConversion)+"Field(env, that, "+fieldId +", ");
                }
                output("("+type.getTypeSignature2(allowConversion)+")");
                if( field.isPointer() ) {
                    output("(intptr_t)");
                }
                output(accessor);
                output(");");
               
            } else if (type.isArray()) {
                JNIType componentType = type.getComponentType(), componentType64 = type64.getComponentType();
                if (componentType.isPrimitive()) {
                    outputln("\t{");
                    output("\t");
                    output(type.getTypeSignature2(allowConversion));
                    output(" lpObject1 = (");
                    output(type.getTypeSignature2(allowConversion));
                    if (isCPP) {
                        output(")env->GetStaticObjectField(that, ");
                    } else {
                        output(")(*env)->GetStaticObjectField(env, that, ");
                    }
                    output(field.getDeclaringClass().getSimpleName());
                    output(fieldId);
                    outputln(");");
                    if (isCPP) {
                        output("\tenv->Set");
                    } else {
                        output("\t(*env)->Set");
                    }
                    output(componentType.getTypeSignature1(!componentType.equals(componentType64)));
                    if (isCPP) {
                        output("ArrayRegion(lpObject1, 0, sizeof(");
                    } else {
                        output("ArrayRegion(env, lpObject1, 0, sizeof(");
                    }
                    output(accessor);
                    output(")");
                    if (!componentType.isType("byte")) {
                        output(" / sizeof(");
                        output(componentType.getTypeSignature2(!componentType.equals(componentType64)));
                        output(")");
                    }
                    output(", (");
                    output(type.getTypeSignature4(allowConversion, false));
                    output(")");
View Full Code Here

Examples of org.fusesource.hawtjni.generator.model.JNIType

   
    public void generate(JNIMethod method) {
        if (method.getFlag(MethodFlag.METHOD_SKIP))
            return;
       
        JNIType returnType = method.getReturnType32(), returnType64 = method.getReturnType64();

        if( method.getFlag(CONSTANT_INITIALIZER)) {
            if( returnType.isType("void") && method.getParameters().isEmpty() ) {
                generateConstantsInitializer(method);
            } else {
                output("#error Warning: invalid CONSTANT_INITIALIZER tagged method. It must be void and take no arguments: ");
                outputln(method.toString());
            }
            return;
        }
       
        if (!(returnType.isType("void") || returnType.isPrimitive() || isSystemClass(returnType) || returnType.isType("java.lang.String"))) {
            output("#error Warning: bad return type. :");
            outputln(method.toString());
            return;
        }
       
View Full Code Here
TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.