/** * <copyright> * </copyright> * * $Id$ */ package net.sf.orcc.df.impl; import java.util.Collection; import java.util.List; import java.util.Map; import net.sf.orcc.df.Action; import net.sf.orcc.df.Actor; import net.sf.orcc.df.Argument; import net.sf.orcc.df.Connection; import net.sf.orcc.df.DfFactory; import net.sf.orcc.df.DfPackage; import net.sf.orcc.df.Entity; import net.sf.orcc.df.FSM; import net.sf.orcc.df.Instance; import net.sf.orcc.df.Network; import net.sf.orcc.df.Pattern; import net.sf.orcc.df.Port; import net.sf.orcc.df.State; import net.sf.orcc.df.Tag; import net.sf.orcc.df.Transition; import net.sf.orcc.df.Unit; import net.sf.orcc.graph.Vertex; import net.sf.orcc.ir.Expression; import net.sf.orcc.ir.IrFactory; import net.sf.orcc.ir.Procedure; import net.sf.orcc.ir.Type; import net.sf.orcc.ir.Var; import net.sf.orcc.util.Attribute; import org.eclipse.emf.ecore.EClass; import org.eclipse.emf.ecore.EDataType; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.EPackage; import org.eclipse.emf.ecore.impl.EFactoryImpl; import org.eclipse.emf.ecore.plugin.EcorePlugin; import org.eclipse.emf.ecore.util.EcoreUtil; /** * <!-- begin-user-doc --> An implementation of the model <b>Factory</b>. <!-- * end-user-doc --> * @generated */ public class DfFactoryImpl extends EFactoryImpl implements DfFactory { /** * <!-- begin-user-doc --> <!-- end-user-doc --> * @deprecated * @generated */ @Deprecated public static DfPackage getPackage() { return DfPackage.eINSTANCE; } /** * Creates the default factory implementation. * <!-- begin-user-doc --> <!-- * end-user-doc --> * @generated */ public static DfFactory init() { try { DfFactory theDfFactory = (DfFactory) EPackage.Registry.INSTANCE .getEFactory("http://orcc.sf.net/model/2011/Df"); if (theDfFactory != null) { return theDfFactory; } } catch (Exception exception) { EcorePlugin.INSTANCE.log(exception); } return new DfFactoryImpl(); } /** * Creates an instance of the factory. * <!-- begin-user-doc --> <!-- * end-user-doc --> * @generated */ public DfFactoryImpl() { super(); } /** * <!-- begin-user-doc --> <!-- end-user-doc --> * @generated */ @Override public EObject create(EClass eClass) { switch (eClass.getClassifierID()) { case DfPackage.UNIT: return createUnit(); case DfPackage.PORT: return createPort(); case DfPackage.INSTANCE: return createInstance(); case DfPackage.ENTITY: return createEntity(); case DfPackage.ACTOR: return createActor(); case DfPackage.NETWORK: return createNetwork(); case DfPackage.CONNECTION: return createConnection(); case DfPackage.ACTION: return createAction(); case DfPackage.FSM: return createFSM(); case DfPackage.PATTERN: return createPattern(); case DfPackage.STATE: return createState(); case DfPackage.TAG: return createTag(); case DfPackage.TRANSITION: return createTransition(); case DfPackage.PORT_TO_EINTEGER_OBJECT_MAP_ENTRY: return (EObject) createPortToEIntegerObjectMapEntry(); case DfPackage.PORT_TO_VAR_MAP_ENTRY: return (EObject) createPortToVarMapEntry(); case DfPackage.VAR_TO_PORT_MAP_ENTRY: return (EObject) createVarToPortMapEntry(); case DfPackage.ARGUMENT: return createArgument(); default: throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier"); } } /** * <!-- begin-user-doc --> <!-- end-user-doc --> * @generated */ @Override public Object createFromString(EDataType eDataType, String initialValue) { switch (eDataType.getClassifierID()) { case DfPackage.MAP: return createMapFromString(eDataType, initialValue); case DfPackage.LIST: return createListFromString(eDataType, initialValue); default: throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier"); } } /** * <!-- begin-user-doc --> <!-- end-user-doc --> * @generated */ @Override public String convertToString(EDataType eDataType, Object instanceValue) { switch (eDataType.getClassifierID()) { case DfPackage.MAP: return convertMapToString(eDataType, instanceValue); case DfPackage.LIST: return convertListToString(eDataType, instanceValue); default: throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier"); } } /** * <!-- begin-user-doc --> <!-- end-user-doc --> * @generated */ public Action createAction() { ActionImpl action = new ActionImpl(); return action; } @Override public Action createAction(String tagName, Pattern inputPattern, Pattern outputPattern, Pattern peekedPattern, Procedure scheduler, Procedure body) { ActionImpl action = new ActionImpl(); action.setBody(body); action.setInputPattern(inputPattern); action.setOutputPattern(outputPattern); action.setPeekPattern(peekedPattern); action.setScheduler(scheduler); action.setTag(createTag(tagName)); return action; } @Override public Action createAction(int lineNumber, String tag) { ActionImpl action = new ActionImpl(); action.setTag(createTag(tag)); Procedure body = IrFactory.eINSTANCE.createProcedure(tag, lineNumber, IrFactory.eINSTANCE.createTypeVoid()); action.setBody(body); action.setInputPattern(createPattern()); action.setOutputPattern(createPattern()); action.setPeekPattern(createPattern()); Procedure scheduler = IrFactory.eINSTANCE.createProcedure( "isSchedulable_" + tag, lineNumber, IrFactory.eINSTANCE.createTypeBool()); action.setScheduler(scheduler); return action; } @Override public Action createAction(Tag tag, Pattern inputPattern, Pattern outputPattern, Pattern peekedPattern, Procedure scheduler, Procedure body) { ActionImpl action = new ActionImpl(); action.setBody(body); action.setInputPattern(inputPattern); action.setOutputPattern(outputPattern); action.setPeekPattern(peekedPattern); action.setScheduler(scheduler); action.setTag(tag); return action; } /** * <!-- begin-user-doc --> <!-- end-user-doc --> * @generated */ public Actor createActor() { ActorImpl actor = new ActorImpl(); return actor; } /** * <!-- begin-user-doc --> <!-- end-user-doc --> * @generated */ public Argument createArgument() { ArgumentImpl argument = new ArgumentImpl(); return argument; } /** * <!-- begin-user-doc --> <!-- end-user-doc --> * @generated */ public Map<?, ?> createMapFromString(EDataType eDataType, String initialValue) { return (Map<?, ?>) super.createFromString(initialValue); } /** * <!-- begin-user-doc --> <!-- end-user-doc --> * @generated */ public String convertMapToString(EDataType eDataType, Object instanceValue) { return super.convertToString(instanceValue); } /** * <!-- begin-user-doc --> <!-- end-user-doc --> * @generated */ public List<?> createListFromString(EDataType eDataType, String initialValue) { return (List<?>) super.createFromString(initialValue); } /** * <!-- begin-user-doc --> <!-- end-user-doc --> * @generated */ public String convertListToString(EDataType eDataType, Object instanceValue) { return super.convertToString(instanceValue); } @Override public Argument createArgument(Var variable, Expression value) { ArgumentImpl argument = new ArgumentImpl(); argument.setVariable(variable); argument.setValue(value); return argument; } /** * <!-- begin-user-doc --> <!-- end-user-doc --> * @generated */ public Connection createConnection() { ConnectionImpl connection = new ConnectionImpl(); return connection; } @Override public Connection createConnection(Vertex source, Port sourcePort, Vertex target, Port targetPort) { ConnectionImpl connection = new ConnectionImpl(); connection.setSource(source); connection.setSourcePort(sourcePort); connection.setTarget(target); connection.setTargetPort(targetPort); return connection; } @Override public Connection createConnection(Vertex source, Port sourcePort, Vertex target, Port targetPort, Collection<Attribute> attributes) { Connection connection = createConnection(source, sourcePort, target, targetPort); connection.getAttributes().addAll(EcoreUtil.copyAll(attributes)); return connection; } @Override public Connection createConnection(Vertex source, Port sourcePort, Vertex target, Port targetPort, Integer size) { Connection connection = createConnection(source, sourcePort, target, targetPort); connection.setSize(size); return connection; } /** * <!-- begin-user-doc --> <!-- end-user-doc --> * @generated */ public FSM createFSM() { FSMImpl fsm = new FSMImpl(); return fsm; } /** * <!-- begin-user-doc --> <!-- end-user-doc --> * @generated */ public Instance createInstance() { InstanceImpl instance = new InstanceImpl(); return instance; } /** * <!-- begin-user-doc --> <!-- end-user-doc --> * @generated */ public Entity createEntity() { EntityImpl entity = new EntityImpl(); return entity; } @Override public Instance createInstance(String id, EObject entity) { InstanceImpl instance = new InstanceImpl(); instance.setName(id); instance.setEntity(entity); return instance; } /** * <!-- begin-user-doc --> <!-- end-user-doc --> * @generated */ public Network createNetwork() { NetworkImpl network = new NetworkImpl(); return network; } @Override public Network createNetwork(String fileName) { NetworkImpl network = new NetworkImpl(); network.setFileName(fileName); return network; } /** * <!-- begin-user-doc --> <!-- end-user-doc --> * @generated */ public Pattern createPattern() { PatternImpl pattern = new PatternImpl(); return pattern; } /** * <!-- begin-user-doc --> <!-- end-user-doc --> * @generated */ public Port createPort() { PortImpl port = new PortImpl(); return port; } @Override public Port createPort(Port port) { return EcoreUtil.copy(port); } @Override public Port createPort(Type type, String name) { PortImpl port = new PortImpl(); port.setName(name); port.setType(type); return port; } @Override public Port createPort(Type type, String name, boolean isNative) { PortImpl port = new PortImpl(); port.setName(name); port.setType(type); // only set the attribute when the port is native if (isNative) { port.addAttribute("native"); } return port; } /** * <!-- begin-user-doc --> <!-- end-user-doc --> * @generated */ public Map.Entry<Port, Integer> createPortToEIntegerObjectMapEntry() { PortToEIntegerObjectMapEntryImpl portToEIntegerObjectMapEntry = new PortToEIntegerObjectMapEntryImpl(); return portToEIntegerObjectMapEntry; } /** * <!-- begin-user-doc --> <!-- end-user-doc --> * @generated */ public Map.Entry<Port, Var> createPortToVarMapEntry() { PortToVarMapEntryImpl portToVarMapEntry = new PortToVarMapEntryImpl(); return portToVarMapEntry; } /** * <!-- begin-user-doc --> <!-- end-user-doc --> * @generated */ public State createState() { StateImpl state = new StateImpl(); return state; } @Override public State createState(String name) { StateImpl state = new StateImpl(); state.setName(name); return state; } /** * <!-- begin-user-doc --> <!-- end-user-doc --> * @generated */ public Tag createTag() { TagImpl tag = new TagImpl(); return tag; } @Override public Tag createTag(List<String> identifiers) { TagImpl tag = new TagImpl(); tag.getIdentifiers().addAll(identifiers); return tag; } @Override public Tag createTag(String tagName) { TagImpl tag = new TagImpl(); tag.getIdentifiers().add(tagName); return tag; } @Override public Tag createTag(Tag tag) { TagImpl newTag = new TagImpl(); newTag.getIdentifiers().addAll(tag.getIdentifiers()); return newTag; } /** * <!-- begin-user-doc --> <!-- end-user-doc --> * @generated */ public Transition createTransition() { TransitionImpl transition = new TransitionImpl(); return transition; } @Override public Transition createTransition(State source, State target) { TransitionImpl transition = new TransitionImpl(); transition.setSource(source); transition.setTarget(target); return transition; } @Override public Transition createTransition(State source, Action action, State target) { Transition transition = createTransition(source, target); transition.getActions().add(action); return transition; } /** * <!-- begin-user-doc --> <!-- end-user-doc --> * @generated */ public Unit createUnit() { UnitImpl unit = new UnitImpl(); return unit; } /** * <!-- begin-user-doc --> <!-- end-user-doc --> * @generated */ public Map.Entry<Var, Port> createVarToPortMapEntry() { VarToPortMapEntryImpl varToPortMapEntry = new VarToPortMapEntryImpl(); return varToPortMapEntry; } /** * <!-- begin-user-doc --> <!-- end-user-doc --> * @generated */ public DfPackage getDfPackage() { return (DfPackage) getEPackage(); } } // DfFactoryImpl