/// <summary> /// Figure out the parent target or the parent build request for the given context /// </summary> private void ProcessBuildContext(EngineCallback engineCallback, ProjectBuildState buildContext, Target target) { BuildRequest parentRequest = null; TargetIdWrapper parentName = FindParentTarget(engineCallback, buildContext, target, out parentRequest); if (parentName != null) { parentTargets.Add(parentName); } if (parentRequest != null) { parentBuildRequests.Add(parentRequest); } }
/// <summary> /// Override the equals operator to give valuetype comparison semantics /// </summary> public override bool Equals(object obj) { TargetIdWrapper other = obj as TargetIdWrapper; if (other != null) { if (other.projectId == projectId && other.nodeId == nodeId && (String.Compare(other.name, name, StringComparison.OrdinalIgnoreCase) == 0)) { return(true); } return(false); } return(base.Equals(obj)); }
/// <summary> /// This function checks if the given ProjectBuildState is caused by a given parent target (via /// a dependency, onerror or IBuildEngine relationship) /// </summary> internal bool CheckBuildContextForParentMatch ( EngineCallback engineCallback, TargetIdWrapper parentId, Target target, ProjectBuildState projectBuildState ) { BuildRequest parentRequest = null; TargetInProgessState.TargetIdWrapper parentName = FindParentTarget(engineCallback, projectBuildState, target, out parentRequest); if (parentName != null && parentName.Equals(parentId)) { return(true); } if (parentRequest != null) { for (int j = 0; j < parentBuildRequests.Count; j++) { if (parentRequest.HandleId == parentBuildRequests[j].HandleId && parentRequest.RequestId == parentBuildRequests[j].RequestId) { if (parentTargetsForBuildRequests[j].Equals(parentId)) { return(true); } else { return(false); } } } } return(false); }
internal void CreateFromStream(BinaryReader reader) { #region TargetId if (reader.ReadByte() == 0) { targetId = null; } else { targetId = new TargetIdWrapper(); targetId.CreateFromStream(reader); } #endregion #region ParentTargets if (reader.ReadByte() == 0) { parentTargets = null; } else { int numberOfTargets = reader.ReadInt32(); parentTargets = new List<TargetIdWrapper>(numberOfTargets); for (int i = 0; i < numberOfTargets; i++) { if (reader.ReadByte() == 0) { parentTargets.Add(null); } else { TargetIdWrapper wrapper = new TargetIdWrapper(); wrapper.CreateFromStream(reader); parentTargets.Add(wrapper); } } } #endregion #region ParentBuildRequests if (reader.ReadByte() == 0) { parentBuildRequests = null; } else { int numberOfRequests = reader.ReadInt32(); parentBuildRequests = new List<BuildRequest>(numberOfRequests); for (int i = 0; i < numberOfRequests; i++) { if (reader.ReadByte() == 0) { parentBuildRequests.Add(null); } else { parentBuildRequests.Add(BuildRequest.CreateFromStream(reader)); } } } #endregion #region OutstandingBuildRequests if (reader.ReadByte() == 0) { outstandingBuildRequests = null; } else { int numberOfBuildRequests = reader.ReadInt32(); outstandingBuildRequests = new BuildRequest[numberOfBuildRequests]; for (int i = 0; i < numberOfBuildRequests; i++) { if (reader.ReadByte() == 0) { outstandingBuildRequests[i] = null; } else { outstandingBuildRequests[i] = BuildRequest.CreateFromStream(reader); } } } #endregion #region ParentTargetsForBuildRequests if (reader.ReadByte() == 0) { parentTargetsForBuildRequests = null; } else { int numberOfTargetsForBuildRequests = reader.ReadInt32(); parentTargetsForBuildRequests = new TargetIdWrapper[numberOfTargetsForBuildRequests]; for (int i = 0; i < numberOfTargetsForBuildRequests; i++) { if (reader.ReadByte() == 0) { parentTargetsForBuildRequests[i] = null; } else { TargetIdWrapper wrapper = new TargetIdWrapper(); wrapper.CreateFromStream(reader); parentTargetsForBuildRequests[i] = wrapper; } } } #endregion #region ProjectName if (reader.ReadByte() == 0) { projectName = null; } else { projectName = reader.ReadString(); } #endregion }
/// <summary> /// This function checks if the given ProjectBuildState is caused by a given parent target (via /// a dependency, onerror or IBuildEngine relationship) /// </summary> internal bool CheckBuildContextForParentMatch ( EngineCallback engineCallback, TargetIdWrapper parentId, Target target, ProjectBuildState projectBuildState ) { BuildRequest parentRequest = null; TargetInProgessState.TargetIdWrapper parentName = FindParentTarget(engineCallback, projectBuildState, target, out parentRequest); if (parentName != null && parentName.Equals(parentId)) { return true; } if (parentRequest != null) { for (int j = 0; j < parentBuildRequests.Count; j++) { if (parentRequest.HandleId == parentBuildRequests[j].HandleId && parentRequest.RequestId == parentBuildRequests[j].RequestId) { if (parentTargetsForBuildRequests[j].Equals(parentId)) { return true; } else { return false; } } } } return false; }
internal void CreateFromStream(BinaryReader reader) { #region TargetId if (reader.ReadByte() == 0) { targetId = null; } else { targetId = new TargetIdWrapper(); targetId.CreateFromStream(reader); } #endregion #region ParentTargets if (reader.ReadByte() == 0) { parentTargets = null; } else { int numberOfTargets = reader.ReadInt32(); parentTargets = new List <TargetIdWrapper>(numberOfTargets); for (int i = 0; i < numberOfTargets; i++) { if (reader.ReadByte() == 0) { parentTargets.Add(null); } else { TargetIdWrapper wrapper = new TargetIdWrapper(); wrapper.CreateFromStream(reader); parentTargets.Add(wrapper); } } } #endregion #region ParentBuildRequests if (reader.ReadByte() == 0) { parentBuildRequests = null; } else { int numberOfRequests = reader.ReadInt32(); parentBuildRequests = new List <BuildRequest>(numberOfRequests); for (int i = 0; i < numberOfRequests; i++) { if (reader.ReadByte() == 0) { parentBuildRequests.Add(null); } else { parentBuildRequests.Add(BuildRequest.CreateFromStream(reader)); } } } #endregion #region OutstandingBuildRequests if (reader.ReadByte() == 0) { outstandingBuildRequests = null; } else { int numberOfBuildRequests = reader.ReadInt32(); outstandingBuildRequests = new BuildRequest[numberOfBuildRequests]; for (int i = 0; i < numberOfBuildRequests; i++) { if (reader.ReadByte() == 0) { outstandingBuildRequests[i] = null; } else { outstandingBuildRequests[i] = BuildRequest.CreateFromStream(reader); } } } #endregion #region ParentTargetsForBuildRequests if (reader.ReadByte() == 0) { parentTargetsForBuildRequests = null; } else { int numberOfTargetsForBuildRequests = reader.ReadInt32(); parentTargetsForBuildRequests = new TargetIdWrapper[numberOfTargetsForBuildRequests]; for (int i = 0; i < numberOfTargetsForBuildRequests; i++) { if (reader.ReadByte() == 0) { parentTargetsForBuildRequests[i] = null; } else { TargetIdWrapper wrapper = new TargetIdWrapper(); wrapper.CreateFromStream(reader); parentTargetsForBuildRequests[i] = wrapper; } } } #endregion #region ProjectName if (reader.ReadByte() == 0) { projectName = null; } else { projectName = reader.ReadString(); } #endregion }