/** * Copyright (c) 2011 - 2015, Lunifera GmbH (Gross Enzersdorf), Loetz KG (Heidelberg) * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Florian Pirchner - Initial implementation */ package org.lunifera.dsl.xtext.lazyresolver; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.util.EcoreUtil; import org.eclipse.xtext.common.types.JvmDeclaredType; import org.lunifera.dsl.xtext.lazyresolver.api.DerivedRootAdapter; public class IndexDerivedStateHelper { /** * Marks the given type to be derived later if its index is requested. * * @param type * @param context * @param isPrelinkingPhase */ public void markAsToBeDerivedLater(JvmDeclaredType type, EObject context, boolean isPrelinkingPhase) { markAsToBeDerivedLater(type, context, isPrelinkingPhase, ""); } /** * Marks the given type to be derived later if its index is requested. The * selector is used if more then one JvmType is derived with the same * semantic element. * * @param type * @param context * @param isPrelinkingPhase */ public void markAsToBeDerivedLater(JvmDeclaredType type, EObject context, boolean isPrelinkingPhase, String selector) { if (!isPrelinkingPhase) { DerivedRootAdapter adapter = new DerivedRootAdapter(context, selector); type.eAdapters().add(adapter); } } /** * Marks the given type as derived. * * @param type */ public void markAsDerived(JvmDeclaredType type) { DerivedRootAdapter adapter = (DerivedRootAdapter) EcoreUtil.getAdapter( type.eAdapters(), DerivedRootAdapter.class); if (adapter != null) { type.eAdapters().remove(adapter); } } }