ScopeStateFactory.java
package edu.udel.cis.vsl.tass.state.impl;
import edu.udel.cis.vsl.tass.dynamic.IF.DynamicFactoryIF;
import edu.udel.cis.vsl.tass.dynamic.IF.value.ValueIF;
import edu.udel.cis.vsl.tass.model.IF.scope.ScopeIF;
import edu.udel.cis.vsl.tass.morph.MorphicArray;
import edu.udel.cis.vsl.tass.morph.MorphicArrayFactory;
import edu.udel.cis.vsl.tass.morph.MorphicFactory;
import edu.udel.cis.vsl.tass.state.IF.ScopeStateIF;
public class ScopeStateFactory extends MorphicFactory<ScopeStateIF> {
private MorphicArrayFactory<ValueIF> valueFactory;
private DynamicFactoryIF dynamicFactory;
public ScopeStateFactory(DynamicFactoryIF dynamicFactory) {
this.dynamicFactory = dynamicFactory;
this.valueFactory = dynamicFactory.valueArrayFactory();
}
public ScopeStateSimplifier simplifier() {
return new ScopeStateSimplifier(this);
}
public DynamicFactoryIF dynamicFactory() {
return dynamicFactory;
}
public ScopeState scopeState(ScopeIF scope, MorphicArray<ValueIF> values) {
ScopeState scopeState = new ScopeState(scope, values);
return scopeState;
}
@Override
public void canonicalizeChildren(ScopeStateIF scopeState) {
((ScopeState) scopeState).canonicalizeChildren(valueFactory);
}
}