blob: 42aca4f0eb6d4832447fc248881ad2e3780d6dfe [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2015, 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.jdt.annotation.Nullable;
public abstract class AbstractNodeRole extends AbstractRole implements NodeRole
{
protected AbstractNodeRole(@NonNull Phase phase) {
super(phase);
}
@Override
public @NonNull NodeRole asNavigable() {
throw new UnsupportedOperationException();
}
@Override
public @NonNull AbstractNodeRole asPhase(@NonNull Phase phase) {
throw new UnsupportedOperationException();
}
@Override
public @NonNull NodeRole asPredicated() {
return asPhase(Phase.PREDICATED);
}
@Override
public @NonNull NodeRole asSpeculated() {
return asPhase(Phase.SPECULATED);
}
@Override
public @NonNull NodeRole asSpeculation() {
return asPhase(Phase.SPECULATION);
}
@Override
public @NonNull Integer getPenwidth() {
return isHead() /*&& !isResult()*/ ? HEAD_WIDTH : isGuard() ? GUARD_WIDTH : LINE_WIDTH;
}
@Override
public @Nullable String getShape() {
return null;
}
@Override
public @Nullable String getStyle() {
boolean isDashed = !isNavigable() && (isExpression() || !isRealized());
if (isDataType()) {
return isDashed ? "\"rounded,dashed\"" : "rounded";
}
else {
return isDashed ? "dashed" : null;
// return isNavigable() || isSpeculated() || isSpeculation() || isRealized() || isHead() ? null : "dashed";
}
}
@Override
public boolean isClass() {
return false;
}
@Override
public boolean isComposed() {
return false;
}
@Override
public boolean isDataType() {
return false;
}
@Override
public boolean isExpression() {
return false;
}
@Override
public boolean isExtraGuardVariable() {
return false;
}
@Override
public boolean isGuard() {
return false;
}
@Override
public boolean isHead() {
return false;
}
@Override
public boolean isInternal() {
return false;
}
@Override
public boolean isIterator() {
return false;
}
@Override
public boolean isMatchable() {
return false;
}
@Override
public boolean isNavigable() {
return false;
}
@Override
public boolean isNull() {
return false;
}
@Override
public boolean isOperation() {
return false;
}
@Override
public boolean isPattern() {
return false;
}
@Override
public boolean isTrue() {
return false;
}
@Override
public @NonNull NodeRole merge(@NonNull NodeRole nodeRole) {
if (nodeRole == this) {
return this;
}
throw new IllegalStateException(this + " cannot be merged with " + nodeRole);
}
@Override
public @NonNull NodeRole resetHead() {
if (!isHead()) {
return this;
}
throw new IllegalStateException(this + " cannot be reset as a non-head");
}
@Override
public @NonNull NodeRole setHead() {
if (isHead()) {
return this;
}
throw new IllegalStateException(this + " cannot be set as a head");
}
}