Esempio n. 1
0
        private void SetLinkValue(RawLink value)
        {
            LinkType type   = value.Type;
            int      endId1 = value.End1Id;
            int      endId2 = value.End2Id;

            switch (type)
            {
            case LinkType.EtherNet:
                _ethLinksMatrix[endId1, endId2] = value;
                break;

            case LinkType.RapidIO:
                _rioLinksMatrix[endId1, endId2] = value;
                break;

            case LinkType.GTX:
                GtxLinksMatrix[endId1, endId2] = value;
                break;

            default:    //LinkType.LVDS
                LvdsLinksMatrix[endId1, endId2] = value;
                break;
            }
        }
 protected override void SetPointers(IResizableDirectMemory memory)
 {
     _header                = (LinksHeader <ulong> *)memory.Pointer;
     _links                 = (RawLink <ulong> *)memory.Pointer;
     SourcesTreeMethods     = _createSourceTreeMethods();
     TargetsTreeMethods     = _createTargetTreeMethods();
     UnusedLinksListMethods = new UInt64UnusedLinksListMethods(_links, _header);
 }
Esempio n. 3
0
        }                                                            //LVDS连接矩阵

        public RawTopo(int nodeNum)
        {
            NodeArray       = new RawNode[nodeNum];
            _ethLinksMatrix = new RawLink[nodeNum, nodeNum];
            _rioLinksMatrix = new RawLink[nodeNum, nodeNum];
            GtxLinksMatrix  = new RawLink[nodeNum, nodeNum];
            LvdsLinksMatrix = new RawLink[nodeNum, nodeNum];
        }
Esempio n. 4
0
        //添加一个RowSubLink到相关的RowLink上
        private void AddSubLinkInner(LinkType type, int urlId1, int urlId2, RawSubLink sLink)
        {
            //获取一条RowLink
            RawLink rowLink = GetLinkValue(type, urlId1, urlId2);

            if (rowLink == null)
            {
                rowLink = new RawLink(type, urlId1, urlId2);
                SetLinkValue(rowLink);
            }
            rowLink.AddSubLine(sLink);
        }
Esempio n. 5
0
        //获取与RowNode相连的RowLink的集合,集合数组的下标为对端RowNode的urlId
        public RawLink[] GetConnectedLink(LinkType linkType, RawNode node)
        {
            RawLink[] resultLinks = new RawLink[NodeArray.Length];

            for (int i = 0; i < NodeArray.Length; i++)
            {
                if ((i != node.UrlId) && (NodeArray[i].Type != EndType.VPX))
                {//对端端点不能为自己,且不能为vpx端点
                    RawLink rLink = GetLinkValue(linkType, node.UrlId, i);
                    if (rLink != null)
                    {
                        resultLinks[i] = rLink;
                    }
                }
            }
            return(resultLinks);
        }
Esempio n. 6
0
        //按照深度优先的方式搜索所有节点
        private void DFS_Node(LinkType linkType, RawNode node, int[] visitedNodes, List <RawNode> nodeList)
        {
            visitedNodes[node.UrlId] = 1;
            nodeList.Add(node);

            for (int i = 0; i < NodeArray.Length; i++)
            {
                //访问该顶点互联的其他顶点(不能是vpx端点,且端点没被访问过)
                if ((NodeArray[i].Type != EndType.VPX) && (visitedNodes[NodeArray[i].UrlId] == 0))
                {
                    RawLink gLink = GetLinkValue(linkType, node.UrlId, i);
                    if (gLink != null)
                    {
                        DFS_Node(linkType, NodeArray[i], visitedNodes, nodeList);
                    }
                }
            }
        }
Esempio n. 7
0
 protected UInt64LinksAvlBalancedTreeMethodsBase(LinksConstants <ulong> constants, RawLink <ulong> *links, LinksHeader <ulong> *header)
     : base(constants, (byte *)links, (byte *)header)
 {
     Links  = links;
     Header = header;
 }
Esempio n. 8
0
 protected UInt32LinksRecursionlessSizeBalancedTreeMethodsBase(LinksConstants <uint> constants, RawLink <uint> *links, LinksHeader <uint> *header)
     : base(constants, (byte *)links, (byte *)header)
 {
     Links  = links;
     Header = header;
 }
Esempio n. 9
0
 public UInt32LinksSourcesRecursionlessSizeBalancedTreeMethods(LinksConstants <uint> constants, RawLink <uint> *links, LinksHeader <uint> *header) : base(constants, links, header)
 {
 }
Esempio n. 10
0
 public UInt64LinksSourcesSizeBalancedTreeMethods(LinksConstants <ulong> constants, RawLink <ulong> *links, LinksHeader <ulong> *header) : base(constants, links, header)
 {
 }
 public UInt32UnusedLinksListMethods(RawLink <uint> *links, LinksHeader <uint> *header)
     : base((byte *)links, (byte *)header)
 {
     _links  = links;
     _header = header;
 }
 protected override void ResetPointers()
 {
     base.ResetPointers();
     _links  = null;
     _header = null;
 }
Esempio n. 13
0
 public UInt32LinksTargetsSizeBalancedTreeMethods(LinksConstants <uint> constants, RawLink <uint> *links, LinksHeader <uint> *header) : base(constants, links, header)
 {
 }
Esempio n. 14
0
 public UInt64LinksTargetsAvlBalancedTreeMethods(LinksConstants <ulong> constants, RawLink <ulong> *links, LinksHeader <ulong> *header) : base(constants, links, header)
 {
 }