package jetbrains.mps.baseLanguage.jdk7.generator.template.util; /*Generated by MPS */ import org.jetbrains.mps.openapi.model.SNode; import jetbrains.mps.internal.collections.runtime.Sequence; import jetbrains.mps.lang.smodel.generator.smodelAdapter.SLinkOperations; import jetbrains.mps.smodel.adapter.structure.MetaAdapterFactory; import jetbrains.mps.internal.collections.runtime.ISelector; import jetbrains.mps.lang.smodel.generator.smodelAdapter.SPropertyOperations; import jetbrains.mps.lang.smodel.generator.smodelAdapter.SNodeOperations; import java.util.Map; import jetbrains.mps.generator.template.TemplateQueryContext; import jetbrains.mps.internal.collections.runtime.MapSequence; import java.util.HashMap; public class SwitchGenUtil { public SwitchGenUtil() { } public static Iterable<SNode> getNodes(SNode node) { return Sequence.fromIterable(SLinkOperations.collect(SLinkOperations.getChildren(node, MetaAdapterFactory.getContainmentLink(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, 0x10ef02a8c6aL, 0x10ef02edcafL, "case")), MetaAdapterFactory.getContainmentLink(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, 0x10ef02cdd1bL, 0x10ef02d67cfL, "expression"))).sort(new ISelector<SNode, String>() { public String select(SNode it) { return SPropertyOperations.getString(SNodeOperations.cast(it, MetaAdapterFactory.getConcept(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, 0xf93d565d10L, "jetbrains.mps.baseLanguage.structure.StringLiteral")), MetaAdapterFactory.getProperty(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, 0xf93d565d10L, 0xf93d565d11L, "value")); } }, true); } public static Map<String, Integer> getMap(SNode node, TemplateQueryContext genContext) { Map<String, Integer> m = (Map<String, Integer>) genContext.getTransientObject("switch" + node.getNodeId().toString()); if (m != null) { return m; } final Iterable<SNode> nodes = getNodes(node); m = MapSequence.fromMap(new HashMap<String, Integer>()); int index = 0; for (SNode e : nodes) { MapSequence.fromMap(m).put(SPropertyOperations.getString(SNodeOperations.cast(e, MetaAdapterFactory.getConcept(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, 0xf93d565d10L, "jetbrains.mps.baseLanguage.structure.StringLiteral")), MetaAdapterFactory.getProperty(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, 0xf93d565d10L, 0xf93d565d11L, "value")), index++); } genContext.putTransientObject("switch" + node.getNodeId().toString(), m); return m; } }