summaryrefslogtreecommitdiffstats
path: root/java/jvpp/gen/jvppgen/jni_common_gen.py
diff options
context:
space:
mode:
Diffstat (limited to 'java/jvpp/gen/jvppgen/jni_common_gen.py')
-rwxr-xr-xjava/jvpp/gen/jvppgen/jni_common_gen.py12
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