public AssignmentSignal AssignmentPort(ISignalsParentSection parent, Port port) { return(new AssignmentSignal(port, parent) { Name = port.Name }); }
public static AssignmentSignal Parse(ISignalsParentSection parent, string text, SignalDefenition defaultDefenition = null) { var signalStr = Regex.Match(text, PC.VHDLName + PC.MFS + PC.Enumeration).Value; var name = Regex.Match(signalStr, PC.VHDLName).Value; name = string.IsNullOrEmpty(name) ? Regex.Match(text, ParsConstants.VHDLName).Value : name; EnumerationBase enumeration = null; if (!String.IsNullOrEmpty(signalStr)) { var enumerationStr = Regex.Match(signalStr, PC.Enumeration).Value; enumeration = EnumerationParser.Parse(enumerationStr); if (enumeration == null) { return(null); } } var isComponentPort = false; bool?isSource = null; var defenition = defaultDefenition ?? parent.Document.Signals.GetSignalDefenition(name); if (defenition == null) { //Error unknown signal defenition = parent.Document.Entity.Ports.FirstOrDefault(x => x.Name == name); if (defenition == null) { var component = parent.Document.Components .FirstOrDefault(x => x.Name == parent.EntityName); if (component != null) { defenition = component.Ports.FirstOrDefault(f => f.Name == name); } else { defenition = new Port(null) { Name = name, PortType = PortTypes.In }; //TODO Delete } } isComponentPort = true; isSource = (defenition as Port).PortType != PortTypes.In; } return(new AssignmentSignal(defenition, parent) { Name = Regex.Match(text, ParsConstants.VHDLName).Value, IsComponentPort = isComponentPort, IsSource = isSource, Enumeration = enumeration }); }
public AssignmentSignal AssignmentSignal(ISignalsParentSection parent, SignalDefenition defenition, EnumerationBase enumeration = null) { if (!_routes.ContainsKey(defenition.Name)) { return(null); } enumeration = enumeration ?? defenition.Enumeration?.CloneEnumeration(); var result = new AssignmentSignal(defenition, parent) { Name = defenition.Name, Enumeration = enumeration }; _routes[defenition.Name].AddSignal(result); return(result); }
public AssignmentSignal(SignalDefenition defenition, ISignalsParentSection parent) { Defenition = defenition; SignalsParentSection = parent; }