public ReqProRequirementPrx[] GetRequirementTracesTo(int nMaxTraceCount, ref eTraceAbortReason eAbort,
                                                             out int nTraceCount, ReqProRequirementPrx reqReqPrxTracesTo)
        {
            if (rpxReq != null)
            {
                int i = 0;
                int nTraceCountTo;
                int nTraceCountChildren;

                ReqProRequirementPrx[] aReqPrxTo = GetRequirementTraces(rpxReq.TracesTo, nMaxTraceCount,
                                                                        out nTraceCountTo, reqReqPrxTracesTo);
                if (nTraceCountTo != aReqPrxTo.GetLength(0))
                {
                    eAbort = eAbort | eTraceAbortReason.eTooManyTracesTo;
                }
                ReqProRequirementPrx[] aReqPrxChildren = GetRequirementTraces(rpxReq.Children, -1,
                                                                              out nTraceCountChildren, reqReqPrxTracesTo);

                ReqProRequirementPrx[] aReqPrx;
                aReqPrx = new ReqProRequirementPrx[aReqPrxTo.GetLength(0) + aReqPrxChildren.GetLength(0)];
                foreach (ReqProRequirementPrx reqPrx in aReqPrxTo)
                {
                    aReqPrx[i++] = reqPrx;
                }
                foreach (ReqProRequirementPrx reqPrx in aReqPrxChildren)
                {
                    aReqPrx[i++] = reqPrx;
                }
                nTraceCount = nTraceCountTo + nTraceCountChildren;

                return(aReqPrx);
            }
            nTraceCount = 0;
            return(new ReqProRequirementPrx[0]);
        }
        public ReqProRequirementPrx[] GetRequirementTracesFrom(int nMaxTraceCount, ref eTraceAbortReason eAbort,
                                                               out int nTraceCount, ReqProRequirementPrx reqReqPrxTracesFrom)
        {
            if (rpxReq != null)
            {
                ReqProRequirementPrx[] aReqPrx = GetRequirementTraces(rpxReq.TracesFrom, nMaxTraceCount,
                                                                      out nTraceCount, reqReqPrxTracesFrom);
                if (nTraceCount != aReqPrx.GetLength(0))
                {
                    eAbort = eAbort | eTraceAbortReason.eTooManyTracesFrom;
                }
                if (!rpxReq.IsRoot)
                {
                    ReqProRequirementPrx[] aOut;
                    int i;

                    ReqProRequirementPrx reqParent = GetRequirementTrace(
                        rpxReq.get_Parent(enumRequirementsWeights.eReqWeight_Medium),
                        enumRelationshipDirections.eRelDirection_Parent);
                    aOut = new ReqProRequirementPrx[aReqPrx.GetLength(0) + 1];
                    for (i = 0; i < aReqPrx.GetLength(0); i++)
                    {
                        aOut[i] = aReqPrx[i];
                    }
                    aOut[i] = reqParent;
                    nTraceCount++;
                }

                return(aReqPrx);
            }
            nTraceCount = 0;
            return(new ReqProRequirementPrx[0]);
        }
示例#3
0
        public ReqTraceNode(ReqProRequirementPrx reqProReqPrx, ulong ulDegreeRel, bool bIsRootNode,
                            ReqProRequirementPrx[] aReqProReqPrxTracesFrom, ReqProRequirementPrx[] aReqProReqPrxTracesTo,
                            int nTraceFromCount, int nTraceToCount, eTraceAbortReason eAbort, int nTraceFromHopCount, int nTraceToHopCount)
            : base(reqProReqPrx)
        {
            x = int.MinValue;
            y = int.MinValue;
            this.nTraceFromHopCount = int.MaxValue;
            this.nTraceToHopCount   = int.MaxValue;

            OnceAgain(ulDegreeRel, bIsRootNode, aReqProReqPrxTracesFrom, aReqProReqPrxTracesTo,
                      nTraceFromCount, nTraceToCount, eAbort, nTraceFromHopCount, nTraceToHopCount);
        }
示例#4
0
        public void OnceAgain(ulong ulDegreeRel, bool bIsRootNode,
                              ReqProRequirementPrx[] aReqProReqPrxTracesFrom, ReqProRequirementPrx[] aReqProReqPrxTracesTo,
                              int nTraceFromCount, int nTraceToCount, eTraceAbortReason eAbort, int nTraceFromHopCount, int nTraceToHopCount)
        {
            this.bIsRootNode             = bIsRootNode;
            this.ulDegreeRel             = ulDegreeRel;
            this.aReqProReqPrxTracesFrom = aReqProReqPrxTracesFrom;
            this.aReqProReqPrxTracesTo   = aReqProReqPrxTracesTo;
            this.nTraceFromCount         = nTraceFromCount;
            this.nTraceToCount           = nTraceToCount;
            this.eAbort = eAbort;

            if (nTraceFromHopCount < this.nTraceFromHopCount)
            {
                this.nTraceFromHopCount = nTraceFromHopCount;
            }
            if (nTraceToHopCount < this.nTraceToHopCount)
            {
                this.nTraceToHopCount = nTraceToHopCount;
            }
        }