Example #1
0
            public NodeResultInfo SumMetaDataB(int index)
            {
                NodeResultInfo result        = new NodeResultInfo();
                int            metaDataSum   = 0;
                int            nodeLength    = 2;
                var            numNodes      = nodeInfo[index];
                var            metaDataCount = nodeInfo[index + 1];
                var            nodeOffset    = 0;
                var            childNodes    = new List <NodeResultInfo>();

                if (numNodes > 0)
                {
                    for (int numIndex = 0; numIndex <= numNodes - 1; numIndex++)
                    {
                        var nodeResult = SumMetaDataB(index + nodeLength + nodeOffset);
                        nodeOffset += nodeResult.NodeLength;
                        childNodes.Add(nodeResult);
                    }
                    for (int metaIndex = 0; metaIndex <= metaDataCount - 1; metaIndex++)
                    {
                        var childNodeIndex = nodeInfo[index + 2 + nodeOffset + metaIndex];
                        if (childNodes.Count >= childNodeIndex)
                        {
                            metaDataSum += childNodes[childNodeIndex - 1].MetaDataSum;
                        }
                    }
                }
                else
                {
                    for (int metaIndex = 0; metaIndex <= metaDataCount - 1; metaIndex++)
                    {
                        metaDataSum += nodeInfo[index + 2 + nodeOffset + metaIndex];
                    }
                }

                result.NodeLength  = nodeLength + nodeOffset + metaDataCount;
                result.MetaDataSum = metaDataSum;
                return(result);
            }
Example #2
0
            public NodeResultInfo SumMetaData(int index)
            {
                NodeResultInfo result        = new NodeResultInfo();
                int            metaDataSum   = 0;
                int            nodeLength    = 2;
                var            numNodes      = nodeInfo[index];
                var            metaDataCount = nodeInfo[index + 1];
                var            nodeOffset    = 0;

                for (int numIndex = 0; numIndex <= numNodes - 1; numIndex++)
                {
                    var nodeResult = SumMetaData(index + nodeLength + nodeOffset);
                    nodeOffset  += nodeResult.NodeLength;
                    metaDataSum += nodeResult.MetaDataSum;
                }
                for (int metaIndex = 0; metaIndex <= metaDataCount - 1; metaIndex++)
                {
                    metaDataSum += nodeInfo[index + 2 + nodeOffset + metaIndex];
                }
                result.NodeLength  = nodeLength + nodeOffset + metaDataCount;
                result.MetaDataSum = metaDataSum;
                return(result);
            }