Пример #1
0
 public ClassTreeNode(TypedefEntry typedef)
     : base(Types.RemoveNamespacePath(typedef.Name))
 {
     Typedef            = typedef;
     ImageIndex         = ImageSelector.ForType(Typedef);
     SelectedImageIndex = ImageSelector.ForType(Typedef);
 }
Пример #2
0
        public static int ForType(TypedefEntry type)
        {
            var visibilityAndSemantic = Types.GetAccessAndSemantic(type.Attributes);

            if (Types.IsPrivate(type.Attributes))
            {
                var nested  = type.Name.IndexOf('+');
                var generic = type.Name.IndexOf('<');
                if (nested == -1 || (generic != -1 && nested > generic))
                {
                    visibilityAndSemantic |= TypeAttributes.NestedAssembly;
                }
            }

            if (Types.IsValueType(type.Attributes))
            {
                visibilityAndSemantic |= TypeAttributes.LayoutMask;
            }

            int index;

            if (typeImages.TryGetValue(visibilityAndSemantic, out index))
            {
                return(index);
            }

            return(-1);
        }
Пример #3
0
 private static void CopyCoverage(TypedefEntry dst, TypedefEntry src)
 {
     foreach (var el in src.Methods)
     {
         var srcEntry = el;
         var dstEntry = dst.Methods.Find(x => x.Name == srcEntry.Name && x.Signature == srcEntry.Signature);
         CopyCoverage(dstEntry, srcEntry);
     }
 }
Пример #4
0
 /// <summary>
 /// Called when receiving a report about a type
 /// </summary>
 /// <param name="typedefName"></param>
 /// <param name="flags"></param>
 public void EnterTypedef(string typedefName, uint flags)
 {
     currentAssembly.Types.Add(currentTypedef = new TypedefEntry
     {
         Assembly   = currentAssembly,
         Name       = typedefName,
         Attributes = (TypeAttributes)flags
     });
 }
Пример #5
0
        private static TreeNode GetNamespaceNode(AssemblyTreeNode asmNode, TypedefEntry iClass)
        {
            var      names      = Types.GetNamespaceChain(iClass.Name);
            TreeNode parentNode = asmNode;

            for (var i = 0; i < names.Length - 1; ++i)
            {
                var nextNode = FindNamespaceNode(parentNode.Nodes, names[i]);
                if (nextNode == null)
                {
                    nextNode = new NamespaceTreeNode(asmNode.Assembly, names[i])
                    {
                        NamespacePath = string.Join(".", names, 0, i + 1)
                    };
                    parentNode.Nodes.Add(nextNode);
                }
                parentNode = nextNode;
            }
            return(parentNode);
        }
Пример #6
0
 public void Select(TypedefEntry typedef)
 {
     Deselect();
 }
Пример #7
0
 public void Select(TypedefEntry typedef)
 {
     SelectionHandlers.ForEach(x => x.Select(typedef));
 }
Пример #8
0
        public static void Load(XmlElement node, Report report)
        {
            report.Date = ReadAttributeDate(node, "date");

            foreach (var dFile in SelectChildNodes(node, "file"))
            {
                report.Files.Add(new FileEntry
                {
                    Id      = ReadAttributeInt(dFile, "id"),
                    PathUri = ReadAttribute(dFile, "url")
                });
            }

            foreach (var asmNode in SelectChildNodes(node, "assembly"))
            {
                report.Assemblies.Add(new AssemblyEntry
                {
                    AssemblyRef = ReadAttributeInt(asmNode, "id"),
                    Name        = ReadAttribute(asmNode, "name"),
                    Module      = ReadAttribute(asmNode, "module"),
                    Domain      = ReadAttribute(asmNode, "domain"),
                    DomainIndex = ReadAttributeInt(asmNode, "domainIdx")
                });
            }

            foreach (var typeNode in SelectChildNodes(node, "type"))
            {
                var assmRef       = ReadAttributeInt(typeNode, "asmref");
                var assemblyEntry = report.Assemblies.Find(x => x.AssemblyRef == assmRef);
                if (assemblyEntry == null)
                {
                    continue;
                }

                var typedefEntry = new TypedefEntry
                {
                    Name       = ReadAttribute(typeNode, "name"),
                    Attributes = (TypeAttributes)ReadAttributeLong(typeNode, "flags"),
                    Assembly   = assemblyEntry
                };
                assemblyEntry.Types.Add(typedefEntry);

                foreach (var methodNode in SelectChildNodes(typeNode, "method"))
                {
                    var methodEntry = new MethodEntry
                    {
                        Name      = ReadAttribute(methodNode, "name"),
                        Signature = ReadAttribute(methodNode, "sig"),
                        BodySize  = ReadAttributeInt(methodNode, "bodysize"),
                        Flags     = (MethodAttributes)ReadAttributeLong(methodNode, "flags"),
                        ImplFlags = (MethodImplAttributes)ReadAttributeLong(methodNode, "iflags")
                    };
                    typedefEntry.Methods.Add(methodEntry);


                    foreach (var pointNode in SelectChildNodes(methodNode, "pt"))
                    {
                        methodEntry.Blocks.Add(new MethodBlock
                        {
                            VisitCount = ReadAttributeInt(pointNode, "visit"),
                            Offset     = ReadAttributeInt(pointNode, "pos"),
                            Length     = ReadAttributeInt(pointNode, "len"),
                            File       = ReadAttributeInt(pointNode, "fid"),
                            Start      = new Position
                            {
                                Column = ReadAttributeInt(pointNode, "sc"),
                                Line   = ReadAttributeInt(pointNode, "sl")
                            },
                            End = new Position
                            {
                                Column = ReadAttributeInt(pointNode, "ec"),
                                Line   = ReadAttributeInt(pointNode, "el")
                            }
                        });
                    }
                }
            }
        }
Пример #9
0
 public void Select(TypedefEntry typedef)
 {
     rtbNodeProps.Rtf = string.Format(TYPEDEF_INFO, typedef.Name, typedef.Attributes);
 }