// Path: de.tubs.variantsync.core/src/de/tubs/variantsync/core/managers/data/SourceFile.java
// public class SourceFile {
// 
// 	private IFile resource;
// 	List<CodeMapping> mappings = new ArrayList<>();
// 	
// 	public SourceFile(IFile res) {
// 		this.resource = res;
// 	}
// 	
// 	public SourceFile(IFile res, List<CodeMapping> mappings) {
// 		this.resource = res;
// 		this.mappings = mappings;
// 	}
// 
// 	public IFile getFile() {
// 		return resource;
// 	}
// 	
// 	public void setFile(IFile res) {
// 		this.resource = res;
// 	}
// 
// 	public List<CodeMapping> getMappings() {
// 		return mappings;
// 	}
// 	
// 	public void addMapping(CodeMapping mapping) {
// 		this.mappings.add(mapping);
// 	}
// 	
// 	public void setMapping(List<CodeMapping> mappings) {
// 		this.mappings = mappings;
// 	}
// 	
// }
// 
// Path: de.tubs.variantsync.core/src/de/tubs/variantsync/core/utilities/IVariantSyncMarker.java
// public interface IVariantSyncMarker {
// 
// 	/**
// 	 * Returns marker id.
// 	 * 
// 	 * @return markerId
// 	 */
// 	long getMarkerId();
// 
// 	/**
// 	 * Sets marker id.
// 	 * 
// 	 * @param markerId - id of marker
// 	 */
// 	void setMarkerId(long markerId);
// 
// 	/**
// 	 * Returns offset.
// 	 * 
// 	 * @return offset
// 	 */
// 	int getOffset();
// 
// 	/**
// 	 * Sets offset.
// 	 * 
// 	 * @param offset
// 	 */
// 	void setOffset(int offset);
// 
// 	/**
// 	 * Returns length.
// 	 * 
// 	 * @return length
// 	 */
// 	int getLength();
// 
// 	/**
// 	 * Sets length.
// 	 * 
// 	 * @param length
// 	 */
// 	void setLength(int length);
// 
// 	/**
// 	 * Returns feature context.
// 	 * 
// 	 * @return feature context
// 	 */
// 	String getContext();
// 
// 	/**
// 	 * Sets feature expression.
// 	 * 
// 	 * @param context - feature context
// 	 */
// 	void setContext(String context);
// 
// 	/**
// 	 * Returns whether the complete line is annotated
// 	 * 
// 	 * @return true, if the complete line is annotated
// 	 */
// 	boolean isLine();
// 
// 	/**
// 	 * Sets whether the complete line is annotated
// 	 * 
// 	 * @param true, if the complete line is annotated
// 	 */
// 	void setLine(boolean isLine);
// }


import java.util.List;
import org.eclipse.core.resources.IFile;
import de.tubs.variantsync.core.managers.data.SourceFile;
import de.tubs.variantsync.core.utilities.IVariantSyncMarker;
package de.tubs.variantsync.core.patch.interfaces;




public interface IMarkerHandler<T> {

	List<IVariantSyncMarker> getMarkers(IFile file, int offset, int length);

	List<IVariantSyncMarker> getMarkersForDelta(IFile file, IDelta<T> delta);

	List<IVariantSyncMarker> getMarkersForDeltas(IFile file, List<IDelta<T>> deltas);

// Path: de.tubs.variantsync.core/src/de/tubs/variantsync/core/managers/data/SourceFile.java
// public class SourceFile {
// 
// 	private IFile resource;
// 	List<CodeMapping> mappings = new ArrayList<>();
// 	
// 	public SourceFile(IFile res) {
// 		this.resource = res;
// 	}
// 	
// 	public SourceFile(IFile res, List<CodeMapping> mappings) {
// 		this.resource = res;
// 		this.mappings = mappings;
// 	}
// 
// 	public IFile getFile() {
// 		return resource;
// 	}
// 	
// 	public void setFile(IFile res) {
// 		this.resource = res;
// 	}
// 
// 	public List<CodeMapping> getMappings() {
// 		return mappings;
// 	}
// 	
// 	public void addMapping(CodeMapping mapping) {
// 		this.mappings.add(mapping);
// 	}
// 	
// 	public void setMapping(List<CodeMapping> mappings) {
// 		this.mappings = mappings;
// 	}
// 	
// }
// 
// Path: de.tubs.variantsync.core/src/de/tubs/variantsync/core/utilities/IVariantSyncMarker.java
// public interface IVariantSyncMarker {
// 
// 	/**
// 	 * Returns marker id.
// 	 * 
// 	 * @return markerId
// 	 */
// 	long getMarkerId();
// 
// 	/**
// 	 * Sets marker id.
// 	 * 
// 	 * @param markerId - id of marker
// 	 */
// 	void setMarkerId(long markerId);
// 
// 	/**
// 	 * Returns offset.
// 	 * 
// 	 * @return offset
// 	 */
// 	int getOffset();
// 
// 	/**
// 	 * Sets offset.
// 	 * 
// 	 * @param offset
// 	 */
// 	void setOffset(int offset);
// 
// 	/**
// 	 * Returns length.
// 	 * 
// 	 * @return length
// 	 */
// 	int getLength();
// 
// 	/**
// 	 * Sets length.
// 	 * 
// 	 * @param length
// 	 */
// 	void setLength(int length);
// 
// 	/**
// 	 * Returns feature context.
// 	 * 
// 	 * @return feature context
// 	 */
// 	String getContext();
// 
// 	/**
// 	 * Sets feature expression.
// 	 * 
// 	 * @param context - feature context
// 	 */
// 	void setContext(String context);
// 
// 	/**
// 	 * Returns whether the complete line is annotated
// 	 * 
// 	 * @return true, if the complete line is annotated
// 	 */
// 	boolean isLine();
// 
// 	/**
// 	 * Sets whether the complete line is annotated
// 	 * 
// 	 * @param true, if the complete line is annotated
// 	 */
// 	void setLine(boolean isLine);
// }


// Path: de.tubs.variantsync.core/src/de/tubs/variantsync/core/patch/interfaces/IMarkerHandler.java
import java.util.List;
import org.eclipse.core.resources.IFile;
import de.tubs.variantsync.core.managers.data.SourceFile;
import de.tubs.variantsync.core.utilities.IVariantSyncMarker;

package de.tubs.variantsync.core.patch.interfaces;




public interface IMarkerHandler<T> {

	List<IVariantSyncMarker> getMarkers(IFile file, int offset, int length);

	List<IVariantSyncMarker> getMarkersForDelta(IFile file, IDelta<T> delta);

	List<IVariantSyncMarker> getMarkersForDeltas(IFile file, List<IDelta<T>> deltas);

	boolean updateMarkerForDelta(SourceFile sourceFile, IDelta<T> delta, List<IVariantSyncMarker> variantSyncMarkers);