diff options
author | Michal Cmarada <mcmarada@cisco.com> | 2019-02-08 12:28:09 +0100 |
---|---|---|
committer | Michal Cmarada <mcmarada@cisco.com> | 2019-03-01 14:06:25 +0100 |
commit | 2fc03523c64803826e74ce0af42880f65f60a107 (patch) | |
tree | 3376ef620ac9b52c26d04ca93ac4e7e5f5ae7365 /java/jvpp/gen/jvppgen/jni_common_gen.py | |
parent | cbdc927c3c401e81ca3e8a3cb875820efac27513 (diff) |
introduce EnumSets for Flag types
- this enables to set multiple enum options for flag types in VPP
Change-Id: If7a59f8c3a47f712f6f591e1ce2547b15e0b2afb
Signed-off-by: Michal Cmarada <mcmarada@cisco.com>
Diffstat (limited to 'java/jvpp/gen/jvppgen/jni_common_gen.py')
-rwxr-xr-x | java/jvpp/gen/jvppgen/jni_common_gen.py | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/java/jvpp/gen/jvppgen/jni_common_gen.py b/java/jvpp/gen/jvppgen/jni_common_gen.py index b52e5ff..120241a 100755 --- a/java/jvpp/gen/jvppgen/jni_common_gen.py +++ b/java/jvpp/gen/jvppgen/jni_common_gen.py @@ -15,7 +15,7 @@ # from string import Template -from jvpp_model import is_array, is_retval, Class, Enum, Union +from jvpp_model import is_array, is_retval, Class, Enum, EnumSet, Union def generate_j2c_identifiers(element, class_ref_name, object_ref_name): @@ -432,7 +432,10 @@ def _generate_c2j_primitive_type_swap(msg_java_name, field, object_ref_name, str if field_type.name == "string": template = _C2J_STRING_TYPE_SWAP_TEMPLATE else: - template = _C2J_PRIMITIVE_TYPE_SWAP_TEMPLATE + if isinstance(field_type, EnumSet): + template = _C2J_ENUMSET_TYPE_SWAP_TEMPLATE + else: + template = _C2J_PRIMITIVE_TYPE_SWAP_TEMPLATE else: template = _C2J_ALIAS_PRIMITIVE_TYPE_SWAP_TEMPLATE return template.substitute( @@ -463,6 +466,11 @@ _C2J_ALIAS_PRIMITIVE_TYPE_SWAP_TEMPLATE = Template(""" (*env)->Set${jni_accessor}Field(env, ${object_ref_name}, ${java_name}FieldId, ${net_to_host_function}(*${struct_ref_name})); """) +_C2J_ENUMSET_TYPE_SWAP_TEMPLATE = Template(""" + jfieldID ${java_name}FieldId = (*env)->GetFieldID(env, ${class_ref_name}Class, "${java_name}", "${jni_signature}"); + (*env)->Set${jni_accessor}Field(env, ${object_ref_name}, ${java_name}FieldId, ${net_to_host_function}(env, ${struct_ref_name}->${c_name})); +""") + def _generate_c2j_primitive_type_no_swap(msg_java_name, field, object_ref_name, struct_ref_name): field_type = field.type |