FrameFactory.java
package edu.udel.cis.vsl.tass.state.impl;
import edu.udel.cis.vsl.tass.dynamic.IF.DynamicFactoryIF;
import edu.udel.cis.vsl.tass.model.IF.location.LocationIF;
import edu.udel.cis.vsl.tass.morph.MorphicFactory;
import edu.udel.cis.vsl.tass.morph.MorphicVector;
import edu.udel.cis.vsl.tass.morph.MorphicVectorFactory;
import edu.udel.cis.vsl.tass.state.IF.FrameIF;
import edu.udel.cis.vsl.tass.state.IF.ScopeStateIF;
public class FrameFactory extends MorphicFactory<FrameIF> {
private MorphicVectorFactory<ScopeStateIF> scopeStateVectorFactory;
private ScopeStateFactory scopeStateFactory;
public FrameFactory(ScopeStateFactory scopeStateFactory) {
this.scopeStateFactory = scopeStateFactory;
this.scopeStateVectorFactory = new MorphicVectorFactory<ScopeStateIF>(
scopeStateFactory);
}
public DynamicFactoryIF dynamicFactory() {
return scopeStateFactory.dynamicFactory();
}
public FrameSimplifier simplifier() {
return new FrameSimplifier(this);
}
public ScopeStateFactory scopeStateFactory() {
return scopeStateFactory;
}
public MorphicVectorFactory<ScopeStateIF> scopeStateVectorFactory() {
return scopeStateVectorFactory;
}
public Frame frame(LocationIF location,
MorphicVector<ScopeStateIF> scopeStates) {
Frame frame = new Frame(location, scopeStates);
return frame;
}
@Override
public void canonicalizeChildren(FrameIF frame) {
((Frame) frame).canonicalizeChildren(scopeStateVectorFactory);
}
}