コード例 #1
0
        /// <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);
            }
        }
コード例 #2
0
            /// <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));
            }
コード例 #3
0
        /// <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);
        }
コード例 #4
0
 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
 }
コード例 #5
0
        /// <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;
        }
コード例 #6
0
 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
 }