summaryrefslogtreecommitdiffstats
path: root/java/jvpp/gen/jvppgen/enumsets_gen.py
diff options
context:
space:
mode:
authorMichal Cmarada <mcmarada@cisco.com>2019-05-03 08:49:28 +0200
committerMichal Cmarada <mcmarada@cisco.com>2019-05-03 08:49:28 +0200
commit84e13a8718f480485123999539997dd22702a349 (patch)
tree301d8fb83b84b6bd9937fb09e1363cb07e407f86 /java/jvpp/gen/jvppgen/enumsets_gen.py
parent6fc28b0523978a6eca6d7d6ce12b6807bf6492c0 (diff)
Fix enumset values for types other than u8(byte)
Usually enumsets use integer as its base type, however to reduce memory usage in VPP less memory consuming types can be used. This fixes enumset generator so other types can be used (byte, short...) Change-Id: I6c02153eecb879038f833491b0d7a4324d6ac102 Signed-off-by: Michal Cmarada <mcmarada@cisco.com>
Diffstat (limited to 'java/jvpp/gen/jvppgen/enumsets_gen.py')
-rwxr-xr-xjava/jvpp/gen/jvppgen/enumsets_gen.py13
1 files changed, 7 insertions, 6 deletions
diff --git a/java/jvpp/gen/jvppgen/enumsets_gen.py b/java/jvpp/gen/jvppgen/enumsets_gen.py
index e1f5c8d..4a04c07 100755
--- a/java/jvpp/gen/jvppgen/enumsets_gen.py
+++ b/java/jvpp/gen/jvppgen/enumsets_gen.py
@@ -32,7 +32,7 @@ def generate_enumsets(work_dir, model, logger):
json_definition=t.doc,
java_name=type_class_name,
java_enum_name=type_class_name + "Options",
- constants=_generate_constants(t.constants),
+ constants=_generate_constants(t.constants, t.value.type.java_name),
value_type=t.value.type.java_name
)
with open("%s/%s.java" % (work_dir, type_class_name), "w") as f:
@@ -80,7 +80,7 @@ public final class $java_name {
public $value_type getOptionsValue() {
$value_type optionsValue = 0;
for ($java_enum_name opts : options) {
- optionsValue = optionsValue | opts.value;
+ optionsValue = ($value_type) (optionsValue | opts.value);
}
return optionsValue;
}
@@ -90,7 +90,7 @@ public final class $java_name {
if (value == 0) {
// if value is "0" set default value and exit
- options.add($java_enum_name.forValue(0));
+ options.add($java_enum_name.forValue(($value_type)0));
return;
}
@@ -168,8 +168,9 @@ $constants;
""")
-def _generate_constants(constants):
- return ",\n".join(_CONSTANT_TEMPLATE.substitute(name=c['name'], value=c['value']) for c in constants)
+def _generate_constants(constants, type_name):
+ return ",\n".join(_CONSTANT_TEMPLATE.substitute(name=c['name'], value=c['value'],
+ value_type=type_name) for c in constants)
-_CONSTANT_TEMPLATE = Template(""" $name($value)""")
+_CONSTANT_TEMPLATE = Template(""" $name(($value_type)$value)""")