blob: c951526f61a98d27fda463f2708298f9da26c4ab [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2016 Willink Transformations 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
*
* Contributors:
* E.D.Willink - Initial API and implementation
*******************************************************************************/
package org.eclipse.qvtd.compiler.internal.qvtp2qvts;
import org.eclipse.jdt.annotation.NonNull;
import org.eclipse.qvtd.compiler.internal.utilities.SymbolNameBuilder;
/**
* A MicroMappingRegion provides the partitioned QVTs node-edge graph representation of a QVTp mapping.
* A MicroMappingRegion is created by the Partitioner to break a mapping into deadlock-free parts.
*/
public class MicroMappingRegion extends AbstractMappingRegion
{
protected final @NonNull MappingRegion mappingRegion;
private final @NonNull String prefix;
private final @NonNull String suffix;
public MicroMappingRegion(@NonNull MappingRegion mappingRegion, @NonNull String prefix, @NonNull String suffix) {
super(mappingRegion.getMultiRegion());
assert !(mappingRegion instanceof MicroMappingRegion);
this.mappingRegion = mappingRegion;
this.prefix = prefix;
this.suffix = suffix;
}
@Override
protected @NonNull SymbolNameBuilder computeSymbolName() {
SymbolNameBuilder s = new SymbolNameBuilder(mappingRegion.getSymbolName());
s.setSuffix(suffix);
return s;
}
@Override
public @NonNull String getName() {
return prefix + "\\n" + mappingRegion.getName();
}
}