Dynamics.java

package dev.civl.mc.dynamic.IF;

import dev.civl.mc.dynamic.common.CommonSymbolicUtility;
import dev.civl.mc.dynamic.immutable.ImmutableDynamicMemoryLocationSetFactory;
import dev.civl.mc.model.IF.CIVLTypeFactory;
import dev.civl.mc.model.IF.ModelFactory;
import dev.civl.mc.state.IF.StateFactory;
import dev.civl.sarl.IF.SymbolicUniverse;
import dev.civl.sarl.IF.expr.SymbolicExpression;

/**
 * Entry point of the module <strong>dynamic</strong>.
 * 
 * @author Manchun Zheng, Ziqing Luo
 * 
 */
public class Dynamics {

	/**
	 * Creates a new instance of symbolic utility.
	 * 
	 * @param universe
	 *            The symbolic universe to be used.
	 * @param modelFactory
	 *            The model factory to be used.
	 * @return The new symbolic utility created.
	 */
	public static SymbolicUtility newSymbolicUtility(SymbolicUniverse universe,
			ModelFactory modelFactory, StateFactory stateFactory) {
		return new CommonSymbolicUtility(universe, modelFactory, stateFactory);
	}

	/**
	 * Creates a new instance of {@link DynamicMemoryLocationSetFactory}.
	 * 
	 * @param universe
	 *            A reference to a {@link SymbolicUniverse}
	 * @param typeFactory
	 *            a reference to a {@link CIVLTypeFactory}
	 * @param collectedScopeValue
	 *            the unique scope value that represents a scope has been
	 *            collected.
	 * @return a new instance of {@link DynamicMemoryLocationSetFactory}.
	 */
	public static DynamicMemoryLocationSetFactory newDynamicMemoryLocationSetFactory(
			SymbolicUniverse universe, CIVLTypeFactory typeFactory,
			SymbolicExpression collectedScopeValue) {
		return new ImmutableDynamicMemoryLocationSetFactory(universe, typeFactory,
				collectedScopeValue);
	}
}