package jetbrains.mps.lang.descriptor.generator.template.utils; /*Generated by MPS */ import org.jetbrains.mps.openapi.model.SModel; import jetbrains.mps.generator.template.TemplateQueryContext; import org.jetbrains.mps.openapi.language.SAbstractConcept; import java.util.List; import org.jetbrains.mps.openapi.model.SNode; import jetbrains.mps.lang.smodel.generator.smodelAdapter.SModelOperations; import jetbrains.mps.internal.collections.runtime.ListSequence; import jetbrains.mps.internal.collections.runtime.IWhereFilter; import jetbrains.mps.lang.smodel.generator.smodelAdapter.SConceptOperations; import jetbrains.mps.lang.smodel.generator.smodelAdapter.SNodeOperations; import jetbrains.mps.smodel.adapter.structure.MetaAdapterFactory; import jetbrains.mps.lang.smodel.generator.smodelAdapter.SPropertyOperations; import jetbrains.mps.lang.smodel.generator.smodelAdapter.SLinkOperations; public class LanguageRuntimeGeneratorUtils { public static boolean isAspectOfLanguage(SModel aspectModel, TemplateQueryContext genContext, final SAbstractConcept... rootConcepts) { if (aspectModel == null) { return false; } List<SNode> roots = SModelOperations.roots(((SModel) aspectModel), null); return (rootConcepts.length == 0 ? ListSequence.fromList(roots).isNotEmpty() : ListSequence.fromList(roots).findFirst(new IWhereFilter<SNode>() { public boolean accept(SNode it) { for (SAbstractConcept rootConcept : rootConcepts) { if (SConceptOperations.isSubConceptOf(SNodeOperations.asSConcept(SNodeOperations.getConcept(it)), SNodeOperations.asSConcept(rootConcept))) { return true; } } return false; } }) != null); } public static boolean hasManualEditorAspectDescriptor(SModel editorModel) { List<SNode> roots = SModelOperations.roots(((SModel) editorModel), MetaAdapterFactory.getConcept(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, 0xf8c108ca66L, "jetbrains.mps.baseLanguage.structure.ClassConcept")); return ListSequence.fromList(roots).any(new IWhereFilter<SNode>() { public boolean accept(SNode it) { return "EditorAspectDescriptorImpl".equals(SPropertyOperations.getString(it, MetaAdapterFactory.getProperty(0xceab519525ea4f22L, 0x9b92103b95ca8c0cL, 0x110396eaaa4L, 0x110396ec041L, "name"))); } }); } public static boolean hasStyleAttributeDeclaration(SModel editorModel) { List<SNode> roots = SModelOperations.roots(((SModel) editorModel), MetaAdapterFactory.getConcept(0x18bc659203a64e29L, 0xa83a7ff23bde13baL, 0x1143b151743L, "jetbrains.mps.lang.editor.structure.StyleSheet")); return ListSequence.fromList(roots).any(new IWhereFilter<SNode>() { public boolean accept(SNode it) { return ListSequence.fromList(SLinkOperations.getChildren(it, MetaAdapterFactory.getContainmentLink(0x18bc659203a64e29L, 0xa83a7ff23bde13baL, 0x1143b151743L, 0x1143b180146L, "styleClass"))).any(new IWhereFilter<SNode>() { public boolean accept(SNode it) { return SNodeOperations.isInstanceOf(it, MetaAdapterFactory.getConcept(0x18bc659203a64e29L, 0xa83a7ff23bde13baL, 0x3744c0f9ea5367ebL, "jetbrains.mps.lang.editor.structure.StyleAttributeDeclaration")); } }); } }); } }