From 73c5587f4ea29e40fa05becd061a63e6ac0673ee Mon Sep 17 00:00:00 2001 From: Tor Egge Date: Tue, 30 Jul 2019 13:42:28 +0200 Subject: Use enum class when generating c++ code. --- .../java/com/yahoo/config/codegen/CppClassBuilder.java | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) (limited to 'configgen/src/main/java/com/yahoo') diff --git a/configgen/src/main/java/com/yahoo/config/codegen/CppClassBuilder.java b/configgen/src/main/java/com/yahoo/config/codegen/CppClassBuilder.java index 14f1e15f4f2..bc8369677fc 100644 --- a/configgen/src/main/java/com/yahoo/config/codegen/CppClassBuilder.java +++ b/configgen/src/main/java/com/yahoo/config/codegen/CppClassBuilder.java @@ -272,7 +272,7 @@ public class CppClassBuilder implements ClassBuilder { String typeName = getTypeName(child, false); declaredTypes.add(child.getName()); if (child instanceof LeafCNode.EnumLeaf) { - w.write(indent + "enum " + typeName + " { "); + w.write(indent + "enum class " + typeName + " { "); LeafCNode.EnumLeaf leaf = (LeafCNode.EnumLeaf) child; for (int i=0; i(t) << \")\";\n" + " return ost.str();\n" + " }\n" + " }\n" @@ -687,6 +687,9 @@ public class CppClassBuilder implements ClassBuilder { } else if (child instanceof LeafCNode) { // If we have a default value, use that.. LeafCNode leaf = (LeafCNode) child; if (leaf.getDefaultValue() != null) { + if (leaf.getType().equals("enum")) { + w.write(getTypeName(leaf, false) + "::"); + } w.write(getDefaultValue(leaf)); } else { // Defines empty constructor defaults for primitives without default set @@ -699,7 +702,7 @@ public class CppClassBuilder implements ClassBuilder { } else if (leaf.getType().equals("string")) { } else if (leaf.getType().equals("enum")) { LeafCNode.EnumLeaf enumNode = (LeafCNode.EnumLeaf) leaf; - w.write(enumNode.getLegalValues()[0]); + w.write(getTypeName(leaf, false) + "::" + enumNode.getLegalValues()[0]); } else if (leaf.getType().equals("reference")) { } else if (leaf.getType().equals("file")) { } @@ -1097,6 +1100,9 @@ public class CppClassBuilder implements ClassBuilder { if (child instanceof LeafCNode && ((LeafCNode) child).getDefaultValue() != null) { LeafCNode leaf = (LeafCNode) child; String defaultValue = getDefaultValue(leaf); + if (leaf.getType().equals("enum")) { + defaultValue = getTypeName(leaf, false) + "::" + defaultValue; + } w.write("()(" + childInspector + ", " + defaultValue + ");\n"); } else if (child instanceof InnerCNode) { w.write("()(" + childInspector + ");\n"); -- cgit v1.2.3