/// <summary> /// Adds a new <see cref="GroupDefinition"/> to the graph and returns the ID for that group. /// </summary> /// <param name="id">The ID of the group that is being added.</param> /// <param name="group">The group that should be added to the graph.</param> /// <exception cref="ArgumentNullException"> /// Thrown if <paramref name="id"/> is <see langword="null" />. /// </exception> /// <exception cref="ArgumentNullException"> /// Thrown if <paramref name="group"/> is <see langword="null" />. /// </exception> public void Add(GroupCompositionId id, GroupDefinition group) { { Lokad.Enforce.Argument(() => id); Lokad.Enforce.Argument(() => group); } if (!m_Definitions.ContainsKey(group.Id)) { m_Definitions.Add(group.Id, group); } m_Groups.Add(id, group.Id); m_GroupConnections.AddVertex(id); foreach (var part in group.Parts) { var partId = new PartCompositionId(id, part.Id); m_Parts.Add(partId, new PartCompositionInfo(part)); m_PartConnections.AddVertex(partId); } var parts = PartsForGroup(id); ConnectParts(group.InternalConnections, parts, parts); }
/// <summary> /// Adds the <see cref="IScheduleAction"/> object with the variables it affects and the dependencies for that action. /// </summary> /// <param name="action">The action that should be stored.</param> /// <param name="name">The name of the action that is being described by this information object.</param> /// <param name="description">The description of the action that is being described by this information object.</param> /// <returns>An object identifying and describing the action.</returns> /// <exception cref="ArgumentNullException"> /// Thrown if <paramref name="action"/> is <see langword="null" />. /// </exception> public ScheduleActionInformation Add( IScheduleAction action, string name, string description) { { Lokad.Enforce.Argument(() => action); } var id = new ScheduleElementId(); var info = new ScheduleActionInformation(id, name, description); m_Actions.Add(id, new ActionMap(info, action)); return(info); }
/// <summary> /// Adds the <see cref="ISchedule"/> object with the variables it affects and the dependencies for that schedule. /// </summary> /// <param name="schedule">The schedule that should be stored.</param> /// <param name="name">The name of the schedule that is being described by this information object.</param> /// <param name="description">The description of the schedule that is being described by this information object.</param> /// <returns>An object identifying and describing the schedule.</returns> /// <exception cref="ArgumentNullException"> /// Thrown if <paramref name="schedule"/> is <see langword="null" />. /// </exception> public ScheduleInformation Add( ISchedule schedule, string name, string description) { { Lokad.Enforce.Argument(() => schedule); } var id = new ScheduleId(); var info = new ScheduleInformation(id, name, description); m_Schedules.Add(id, new ScheduleMap(info, schedule)); return(info); }