All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.eclipse.xtext.parsetree.reconstr.ITransientValueService Maven / Gradle / Ivy

There is a newer version: 2.4.3
Show newest version
/*******************************************************************************
 * Copyright (c) 2009 itemis AG (http://www.itemis.eu) and others.
 * 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
 *******************************************************************************/
package org.eclipse.xtext.parsetree.reconstr;

import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EStructuralFeature;

/**
 * Implementations of this service are called when a model is serialized and can decide whether a value needs to be
 * serialized or not.
 * 
 * @author Moritz Eysholdt - Initial contribution and API
 */
public interface ITransientValueService {

	/**
	 * For features with isMany() == true, isCheckElementsIndividually() has to return true when isTransient should be called for each
	 * element of the list instead of once for the whole list.
	 * 
	 * @param owner the feature holder
	 * @param feature the multi value feature
	 * @return true if all values should be checked individually for their transient state. 
	 */
	boolean isCheckElementsIndividually(EObject owner, EStructuralFeature feature);

	/**
	 * Decides whether a value should be serialized.
	 * 
	 * If !feature.isMany() or !isMixedList(feature), this method is only called once for each feature. In this case,
	 * index is < 0.
	 * 
	 * If feature.isMany() and isMixedList(feature), this method is called for each of the feature's values.
	 * 
	 * Attention: Values marked transient are only not serialized when they are optional in the grammar. Example: Rule1:
	 * transientF=INT normalF=INT; In this case, the grammar requires to serialize transientF to produce a valid
	 * DSL-script.
	 * 
	 * Attention: Think of how many times the serializer calls this method and supply a fast implementation. The
	 * serializer tries to avoid multiple calls to this method using the same parameters, but depending on the grammar
	 * and the model, it may happen.
	 * 
	 * @param owner
	 *            The EObject holding the feature's value
	 * @param feature the to-be-checked feature
	 * @param index the index in the list for multi value features
	 * @return true, if the feature's value(s) should NOT be serialized
	 */
	boolean isTransient(EObject owner, EStructuralFeature feature, int index);

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy