Пример #1
0
        static void buildTree(Asn1Reader root, Asn1TreeNode tree)
        {
            root.MoveNext();
            Int32 index = 0;

            do
            {
                tree.AddChild(new Asn1Lite(root, tree, index));
                index++;
            } while (root.MoveNextCurrentLevel());
            root.Reset();
            foreach (Asn1TreeNode node in tree.Children.Where(node => node.Value.IsContainer && node.Value.PayloadLength > 0))
            {
                root.MoveToPosition(node.Value.Offset);
                buildTree(root, node);
            }
        }
Пример #2
0
        static void buildTree(Asn1Reader asn, Asn1Node node, Asn1Tree rootTree)
        {
            asn.MoveNext();
            List <Int32> subNodeIndexes = new List <Int32>();
            Int32        index          = 0;

            do
            {
                node.AddUnsafe(new Asn1Node(asn, rootTree));
                if (asn.IsConstructed)
                {
                    subNodeIndexes.Add(index);
                }
                index++;
            } while (asn.MoveNextCurrentLevel());
            asn.Reset();
            foreach (Int32 subNodeIndex in subNodeIndexes)
            {
                Asn1Node subNode = node.Children[subNodeIndex];
                asn.MoveToPoisition(subNode.Offset);
                buildTree(asn, subNode, rootTree);
            }
        }