summaryrefslogtreecommitdiffstats
path: root/extras/japi/java/jvpp/gen/jvppgen/jni_common_gen.py
diff options
context:
space:
mode:
authorOle Troan <ot@cisco.com>2018-11-28 11:36:05 +0100
committerNeale Ranns <nranns@cisco.com>2018-12-13 12:11:50 +0000
commit413f4a5b2123c1625d615315db293a080078482b (patch)
tree6cfd8376c1d84b93793b062731ec9594487dc95e /extras/japi/java/jvpp/gen/jvppgen/jni_common_gen.py
parent6f666ad99ae1e384aa851af5e0feed3d2a25e709 (diff)
API: Use string type instead of u8.
The new string type is modelled after string in proto3. It is always variable length. Change-Id: I64884067e28a80072c8dac31b7c7c82d6e306051 Signed-off-by: Ole Troan <ot@cisco.com> Signed-off-by: Michal Cmarada <mcmarada@cisco.com> Signed-off-by: Ole Troan <ot@cisco.com>
Diffstat (limited to 'extras/japi/java/jvpp/gen/jvppgen/jni_common_gen.py')
-rwxr-xr-xextras/japi/java/jvpp/gen/jvppgen/jni_common_gen.py20
1 files changed, 17 insertions, 3 deletions
diff --git a/extras/japi/java/jvpp/gen/jvppgen/jni_common_gen.py b/extras/japi/java/jvpp/gen/jvppgen/jni_common_gen.py
index 708cc1cba81..b52e5ff2d2c 100755
--- a/extras/japi/java/jvpp/gen/jvppgen/jni_common_gen.py
+++ b/extras/japi/java/jvpp/gen/jvppgen/jni_common_gen.py
@@ -165,6 +165,7 @@ def _generate_field_length_check(field):
else:
return ""
+
# Make sure we do not write more elements that are expected
_FIELD_LENGTH_CHECK = Template("""
size_t max_size = ${field_length};
@@ -177,9 +178,13 @@ def _generate_j2c_scalar_swap(field, struct_ref_name, is_alias):
host = field.java_name
if not is_alias:
net = "%s->%s" % (struct_ref_name, field.name)
- return " %s;" % field_type.get_host_to_net_function(host, net)
+ if field_type.name == "string":
+ net = "%s->%s" % (struct_ref_name, field.name)
+ return " _host_to_net_%s(env, %s, (vl_api_string_t *) &%s);" % (field_type.name, host, net)
+ else:
+ return " %s;" % field_type.get_host_to_net_function(host, net)
else:
- net = "%s" % (struct_ref_name)
+ net = "%s" % struct_ref_name
return " *%s;" % field_type.get_host_to_net_function(host, net)
else:
return " %s->%s = %s;" % (struct_ref_name, field.name, field.java_name)
@@ -424,7 +429,10 @@ _C2J_ENUM_SWAP_TEMPLATE = Template("""
def _generate_c2j_primitive_type_swap(msg_java_name, field, object_ref_name, struct_ref_name, is_alias):
field_type = field.type
if not is_alias:
- template = _C2J_PRIMITIVE_TYPE_SWAP_TEMPLATE
+ if field_type.name == "string":
+ template = _C2J_STRING_TYPE_SWAP_TEMPLATE
+ else:
+ template = _C2J_PRIMITIVE_TYPE_SWAP_TEMPLATE
else:
template = _C2J_ALIAS_PRIMITIVE_TYPE_SWAP_TEMPLATE
return template.substitute(
@@ -444,6 +452,12 @@ _C2J_PRIMITIVE_TYPE_SWAP_TEMPLATE = Template("""
""")
+_C2J_STRING_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, (const vl_api_string_t *) &${struct_ref_name}->${c_name}));
+""")
+
+
_C2J_ALIAS_PRIMITIVE_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}(*${struct_ref_name}));