Examples of JNIParameter


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

    }

    boolean generateLocalVars(JNIMethod method, List<JNIParameter> params, JNIType returnType, JNIType returnType64) {
        boolean needsReturn = enterExitMacro;
        for (int i = 0; i < params.size(); i++) {
            JNIParameter param = params.get(i);
            JNIType paramType = param.getType32(), paramType64 = param.getType64();
            if (paramType.isPrimitive() || isSystemClass(paramType))
                continue;
            output("\t");
            if (paramType.isArray()) {
                JNIType componentType = paramType.getComponentType();
                if( "long".equals( componentType.getName() ) && param.isPointer() ) {
                    output("void **lparg" + i+"=NULL;");
                } else if (componentType.isPrimitive()) {
                    output(componentType.getTypeSignature2(!paramType.equals(paramType64)));
                    output(" *lparg" + i);
                    output("=NULL;");
                } else {
                    throw new Error("not done");
                }
            } else if (paramType.isType("org.fusesource.hawtjni.runtime.JNIEnv")) {
                // no need to generate a local for this one..
            } else if (paramType.isType("java.lang.String")) {
                if (param.getFlag(ArgFlag.UNICODE)) {
                    output("const jchar *lparg" + i);
                } else {
                    output("const char *lparg" + i);
                }
                output("= NULL;");
            } else {
                if (param.getTypeClass().getFlag(ClassFlag.STRUCT) && !param.getTypeClass().getFlag(ClassFlag.TYPEDEF)) {
                    output("struct ");
                }
                output(paramType.getNativeName());
                output(" _arg" + i);
                if (param.getFlag(ArgFlag.INIT))
                    output("={0}");
                output(", *lparg" + i);
                output("=NULL;");
            }
            outputln();
View Full Code Here

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

    }

    void generateSetters(JNIMethod method, List<JNIParameter> params) {
        int criticalCount = 0;
        for (int i = params.size() - 1; i >= 0; i--) {
            JNIParameter param = params.get(i);
            if( !"org.fusesource.hawtjni.runtime.JNIEnv".equals(param.getTypeClass().getName()) ) {
                if (isCritical(param)) {
                    criticalCount++;
                }
            }
        }
        if (criticalCount != 0) {
            outputln("#ifdef JNI_VERSION_1_2");
            outputln("\tif (IS_JNI_1_2) {");
            for (int i = params.size() - 1; i >= 0; i--) {
                JNIParameter param = params.get(i);
                if( !"org.fusesource.hawtjni.runtime.JNIEnv".equals(param.getTypeClass().getName()) ) {
                    if (isCritical(param)) {
                        output("\t");
                        generateSetParameter(param, true);
                    }
                }
            }
            outputln("\t} else");
            outputln("#endif");
            outputln("\t{");
            for (int i = params.size() - 1; i >= 0; i--) {
                JNIParameter param = params.get(i);
                if( !"org.fusesource.hawtjni.runtime.JNIEnv".equals(param.getTypeClass().getName()) ) {
                    if (isCritical(param)) {
                        output("\t");
                        generateSetParameter(param, false);
                    }
                }
            }
            outputln("\t}");
        }
        for (int i = params.size() - 1; i >= 0; i--) {
            JNIParameter param = params.get(i);
            if( !"org.fusesource.hawtjni.runtime.JNIEnv".equals(param.getTypeClass().getName()) ) {
                if (!isCritical(param)) {
                    generateSetParameter(param, false);
                }
            }
        }
View Full Code Here

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

        output(returnType.getTypeSignature2(!returnType.equals(returnType64)));
        output(" (CALLING_CONVENTION*)(");
        for (int i = 0; i < params.size(); i++) {
            if (i != 0)
                output(", ");
            JNIParameter param = params.get(i);
            String cast = param.getCast();
            if( param.isPointer() ) {
                output("(intptr_t)");
            }
            boolean isStruct = param.getFlag(ArgFlag.BY_VALUE);
            if (cast.length() > 2) {
                cast = cast.substring(1, cast.length() - 1);
                if (isStruct) {
                    int index = cast.lastIndexOf('*');
                    if (index != -1)
                        cast = cast.substring(0, index).trim();
                }
                output(cast);
            } else {
                JNIType paramType = param.getType32(), paramType64 = param.getType64();
                output(paramType.getTypeSignature4(!paramType.equals(paramType64), isStruct));
            }
        }
        output("))");
        output("fp");
View Full Code Here

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

            if (method.getFlag(MethodFlag.JNI)) {
                if (!isCPP)
                    output("env, ");
            }
            for (int i = paramStart; i < params.size(); i++) {
                JNIParameter param = params.get(i);
                if (i != paramStart)
                    output(", ");
                if (param.getFlag(ArgFlag.BY_VALUE))
                    output("*");
                output(param.getCast());
                if( param.isPointer() ) {
                    output("(intptr_t)");
                }
                if (param.getFlag(ArgFlag.CS_OBJECT))
                    output("TO_OBJECT(");
                if (i == params.size() - 1 && param.getFlag(ArgFlag.SENTINEL)) {
                    output("NULL");
                } else {
                    if( "org.fusesource.hawtjni.runtime.JNIEnv".equals(param.getTypeClass().getName()) ) {
                        output("env");
                    } else {
                        JNIType paramType = param.getType32();
                        if (!paramType.isPrimitive() && !isSystemClass(paramType))
                            output("lp");
                        output("arg" + i);
                    }
                }
                if (param.getFlag(ArgFlag.CS_OBJECT))
                    output(")");
            }
            output(")");
        }
    }
View Full Code Here

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

            outputln("if (sizeof(_arg0) > STRUCT_SIZE_LIMIT) {");
            generate_objc_msgSend_stret(method, params, name);
            paramStart = 1;
        } else if (name.equalsIgnoreCase("call")) {
            output("(");
            JNIParameter param = params.get(0);
            String cast = param.getCast();
            if (cast.length() != 0 && !cast.equals("()")) {
                output(cast);
                if( param.isPointer() ) {
                    output("(intptr_t)");
                }
            } else {
                output("(");
                output(returnType.getTypeSignature2(!returnType.equals(returnType64)));
                output(" (*)())");
            }
            output("arg0)");
            paramStart = 1;
        } else if (name.startsWith("VtblCall") || name.startsWith("_VtblCall")) {
            output("((");
            output(returnType.getTypeSignature2(!returnType.equals(returnType64)));
            output(" (STDMETHODCALLTYPE *)(");
            for (int i = 1; i < params.size(); i++) {
                if (i != 1)
                    output(", ");
                JNIParameter param = params.get(i);
                JNIType paramType = param.getType32(), paramType64 = param.getType64();
                output(paramType.getTypeSignature4(!paramType.equals(paramType64), false));
            }
            output("))(*(");
            JNIType paramType = params.get(1).getType32(), paramType64 = params.get(1).getType64();
            output(paramType.getTypeSignature4(!paramType.equals(paramType64), false));
            output(" **)arg1)[arg0])");
            paramStart = 1;
        } else if (method.getFlag(MethodFlag.CPP_METHOD) || method.getFlag(MethodFlag.SETTER) || method.getFlag(MethodFlag.GETTER) || method.getFlag(MethodFlag.ADDER)) {

            String[] parts = getNativeNameParts(method);
            String className = parts[0];
            String methodName = parts[1];

            if (method.getFlag(MethodFlag.CS_OBJECT)) {
                output("TO_HANDLE(");
            }
            output("(");
            if( params.isEmpty() ) {
                throw new Error(String.format("C++ bound method '%s' missing the 'this' parameter", method.getDeclaringClass().getSimpleName()+"."+method.getName()));
            }
            JNIParameter param = params.get(0);
            if (param.getFlag(ArgFlag.BY_VALUE))
                output("*");
            String cast = param.getCast();
            if (cast.length() != 0 && !cast.equals("()")) {
                output(cast);
                if( param.isPointer() ) {
                    output("(intptr_t)");
                }
            } else {
                output("("+className+" *)(intptr_t)");
            }
            if (param.getFlag(ArgFlag.CS_OBJECT)) {
                output("TO_OBJECT(");
            }
            output("arg0");
            if (param.getFlag(ArgFlag.CS_OBJECT)) {
                output(")");
            }
            output(")->");
            output(methodName);
            paramStart = 1;
        } else if (method.getFlag(MethodFlag.CS_NEW)) {
            output("TO_HANDLE(gcnew ");
            String accessor = method.getAccessor();
            if (accessor.length() != 0) {
                output(accessor);
            } else {
                JNIClass dc = method.getDeclaringClass();
                if( dc.getFlag(ClassFlag.CPP) || dc.getFlag(ClassFlag.STRUCT) ) {
                    output(dc.getNativeName());
                } else {
                    int index = -1;
                    if ((index = name.indexOf('_')) != -1) {
                        output(name.substring(index + 1));
                    } else {
                        output(name);
                    }
                }
            }
        } else if (method.getFlag(MethodFlag.CPP_NEW)) {
            if (method.getFlag(MethodFlag.CS_OBJECT)) {
                output("TO_HANDLE(");
            }
            output("new ");
            String accessor = method.getAccessor();
            if (accessor.length() != 0) {
                output(accessor);
            } else {

                JNIClass dc = method.getDeclaringClass();
                if( dc.getFlag(ClassFlag.CPP) ) {
                    output(method.getDeclaringClass().getNativeName());
                } else {
                    int index = -1;
                    if ((index = name.indexOf('_')) != -1) {
                        output(name.substring(index+1));
                    } else {
                        output(name);
                    }
                }

            }
        } else if (method.getFlag(MethodFlag.CPP_DELETE)) {
            String[] parts = getNativeNameParts(method);
            String className = parts[0];

            output("delete ");
            JNIParameter param = params.get(0);
            String cast = param.getCast();
            if (cast.length() != 0 && !cast.equals("()")) {
                output(cast);
                if( param.isPointer() ) {
                    output("(intptr_t)");
                }
            } else {
                output("("+className+" *)(intptr_t)");
            }
            outputln("arg0;");
            return;
        } else {
            if (method.getFlag(MethodFlag.CS_OBJECT)) {
                output("TO_HANDLE(");
            }
            if (method.getFlag(MethodFlag.CAST)) {
                output("((");
                String returnCast = returnType.getTypeSignature2(!returnType.equals(returnType64));
                if (name.equals("objc_msgSend_bool") && returnCast.equals("jboolean")) {
                    returnCast = "BOOL";
                }
                output(returnCast);
                output(" (*)(");
                for (int i = 0; i < params.size(); i++) {
                    if (i != 0)
                        output(", ");
                    JNIParameter param = params.get(i);
                    String cast = param.getCast();
                    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 {
                        JNIType 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("))");
            }
            String accessor = method.getAccessor();
View Full Code Here

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

        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
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.