Exemplo n.º 1
0
def generate_c2j_swap(element, object_ref_name, struct_ref_name):
    msg_java_name = element.java_name_lower
    setters = []
    for field in element.fields:
        field_type = field.type
        if is_retval(field):
            # For retval don't generate setters and generate retval check
            continue
        elif is_array(field):
            jni_name = ""
            template = _ARRAY_C2J_SWAP_TEMPLATE if field_type.is_swap_needed else _ARRAY_C2J_NO_SWAP_TEMPLATE
            if isinstance(field_type.base_type, Class):
                template = _ARRAY_C2J_CLASS_SWAP_TEMPLATE
                jni_name = field_type.base_type.jni_name
            setters.append(
                template.substitute(
                    field_reference_name=field.java_name,
                    class_ref_name=msg_java_name,
                    jni_signature=field_type.jni_signature,
                    jni_type=field_type.jni_type,
                    jni_name=jni_name,
                    base_type=field_type.base_type.jni_accessor,
                    field_length=_generate_array_length(
                        field, struct_ref_name),
                    jni_base_type=field_type.base_type.jni_type,
                    object_ref_name=object_ref_name,
                    struct_ref_name=struct_ref_name,
                    net_to_host_function=field_type.net_to_host_function,
                    c_name=field.name))
        else:
            if field_type.is_swap_needed:
                template = _SIMPLE_TYPE_FIELD_SETTER_TEMPLATE
                jni_name = ""
                if isinstance(field_type, Class):
                    template = _STRUCT_SETTER_TEMPLATE
                    jni_name = field_type.jni_name
                setters.append(
                    template.substitute(
                        java_name=field.java_name,
                        class_ref_name=msg_java_name,
                        jni_signature=field_type.jni_signature,
                        jni_name=jni_name,
                        jni_accessor=field_type.jni_accessor,
                        object_ref_name=object_ref_name,
                        struct_ref_name=struct_ref_name,
                        net_to_host_function=field_type.net_to_host_function,
                        c_name=field.name))
            else:
                setters.append(
                    _SIMPLE_TYPE_NO_SWAP_FIELD_SETTER_TEMPLATE.substitute(
                        java_name=field.java_name,
                        class_ref_name=msg_java_name,
                        jni_signature=field_type.jni_signature,
                        jni_accessor=field_type.jni_accessor,
                        object_ref_name=object_ref_name,
                        struct_ref_name=struct_ref_name,
                        c_name=field.name))
    return "".join(setters)
Exemplo n.º 2
0
def generate_j2c_swap(element, struct_ref_name):
    initialization = []
    for field in element.fields:
        if is_array(field):
            initialization.append(
                _generate_j2c_array_swap(field, struct_ref_name))
        else:
            initialization.append(
                _generate_j2c_scalar_swap(field, struct_ref_name))

    return "\n".join(initialization)
Exemplo n.º 3
0
def generate_equals(class_name, fields):
    comparisons = []
    for f in fields:
        if is_array(f):
            comparisons.append(_EQUALS_ARRAY_FIELD_TEMPLATE.substitute(field_name=f.java_name))
        else:
            comparisons.append(_EQUALS_FIELD_TEMPLATE.substitute(field_name=f.java_name))

    if comparisons:
        comparisons.insert(0, _EQUALS_OTHER_TEMPLATE.substitute(cls_name=class_name))
    return _EQUALS_TEMPLATE.substitute(comparisons="\n".join(comparisons))
Exemplo n.º 4
0
def generate_c2j_swap(element, object_ref_name, struct_ref_name, is_alias):
    msg_java_name = element.java_name_lower
    initialization = []
    for field in element.fields:
        if is_retval(field):
            # For retval don't generate setters and generate retval check
            continue
        elif is_array(field):
            initialization.append(_generate_c2j_array_swap(msg_java_name, field, object_ref_name, struct_ref_name, is_alias))
        else:
            initialization.append(_generate_c2j_scalar_swap(msg_java_name, field, object_ref_name, struct_ref_name, is_alias))
    return "".join(initialization)
Exemplo n.º 5
0
def generate_to_string(class_name, fields):
    to_string = []
    for f in fields:
        if is_array(f):
            to_string.append(_TO_STRING_ARRAY_FIELD_TEMPLATE.substitute(field_name=f.java_name))
        else:
            to_string.append(_TO_STRING_FIELD_TEMPLATE.substitute(field_name=f.java_name))

    to_string_fields = " \"}\";"
    if to_string:
        to_string_fields = " + \", \" +\n".join(to_string) + " + \"}\";"

    return _TO_STRING_TEMPLATE.substitute(
        class_name=class_name,
        to_string_fields=to_string_fields
    )
Exemplo n.º 6
0
def generate_j2c_swap(element, struct_ref_name):
    initialization = []
    for field in element.fields:
        field_type = field.type
        if is_array(field):
            template = _ARRAY_J2C_NO_SWAP_TEMPLATE
            field_reference_name = field.java_name
            c_name = field.name
            swap_elements = None
            jni_name = None
            if field_type.is_swap_needed:
                template = _ARRAY_J2C_SWAP_TEMPLATE
                host = "%sArrayElements[_i]" % field_reference_name
                net = "%s->%s[_i]" % (struct_ref_name, c_name)
                swap_elements = field_type.get_host_to_net_function(host, net)
            if isinstance(field_type.base_type, Class):
                jni_name = field_type.base_type.jni_name
                host = "%sArrayElement" % field_reference_name
                net = "%s->%s[_i]" % (struct_ref_name, c_name)
                swap_elements = field_type.get_host_to_net_function(host, net)
                template = _CLASS_ARRAY_J2C_TEMPLATE

            initialization.append(
                template.substitute(
                    field_reference_name=field_reference_name,
                    field_length_check=_generate_field_length_check(field),
                    base_type=field_type.base_type.jni_accessor,
                    jni_base_type=field_type.base_type.jni_type,
                    struct_reference_name=struct_ref_name,
                    jni_name=jni_name,
                    c_name=c_name,
                    swap_elements=swap_elements))
        else:
            if field_type.is_swap_needed:
                host = field.java_name
                net = "%s->%s" % (struct_ref_name, field.name)
                initialization.append(
                    "    %s;" % field_type.get_host_to_net_function(host, net))
            else:
                initialization.append(
                    "    %s->%s = %s;" %
                    (struct_ref_name, field.name, field.java_name))

    return "\n".join(initialization)
Exemplo n.º 7
0
def generate_hash_code(fields):
    if len(fields) == 1 and is_array(fields[0]):
        return _HASH_CODE_SINGLE_ARRAY_TEMPLATE.substitute(array_field=fields[0].java_name)
    return _HASH_CODE_TEMPLATE.substitute(fields=", ".join(f.java_name for f in fields))
Exemplo n.º 8
0
def generate_j2c_field_swap(field, struct_ref_name):
    if is_array(field):
        return _generate_j2c_array_swap(field, struct_ref_name)
    else:
        return _generate_j2c_scalar_swap(field, struct_ref_name)