コード例 #1
0
        public override DocumentTreeNodeFilterResult GetResult(ResourceElementNode node)
        {
            bool isMatch = (flags & VisibleMembersFlags.ResourceElement) != 0;

            if (!isMatch)
            {
                return(new DocumentTreeNodeFilterResult(FilterType.Hide, isMatch));
            }
            return(new DocumentTreeNodeFilterResult(FilterType.Visible, isMatch));
        }
コード例 #2
0
        void RegenerateEmbeddedResource(ModuleDef module)
        {
            TreeNode.EnsureChildrenLoaded();
            var outStream = new MemoryStream();
            var resources = new ResourceElementSet();

            foreach (DocumentTreeNodeData child in TreeNode.DataChildren)
            {
                var resourceElement = ResourceElementNode.GetResourceElement(child);
                if (resourceElement is null)
                {
                    throw new InvalidOperationException();
                }
                resources.Add(resourceElement);
            }

            ResourceWriter.Write(module, outStream, resources);
            Resource = new EmbeddedResource(Resource.Name, outStream.ToArray(), Resource.Attributes);
        }
コード例 #3
0
        public DocumentTreeNodeData Create(ModuleDef module, ResourceElement resourceElement, ITreeNodeGroup treeNodeGroup)
        {
            if (module is null)
            {
                throw new ArgumentNullException(nameof(module));
            }
            if (resourceElement is null)
            {
                throw new ArgumentNullException(nameof(resourceElement));
            }
            if (treeNodeGroup is null)
            {
                throw new ArgumentNullException(nameof(treeNodeGroup));
            }
            var node = CreateNode(module, resourceElement, treeNodeGroup);

            ResourceElementNode.AddResourceElement(node, resourceElement);
            return(node);
        }
コード例 #4
0
 public virtual DocumentTreeNodeFilterResult GetResult(ResourceElementNode node) => new DocumentTreeNodeFilterResult();
コード例 #5
0
 public NodeAndResourceElement(DocumentTreeNodeData node)
 {
     Debug2.Assert(ResourceElementNode.GetResourceElement(node) is not null);
     this.node = node;
 }
コード例 #6
0
 void Decompile(ResourceElementNode node) =>
 node.WriteShort(output, decompiler, decompiler.Settings.GetBoolean(DecompilerOptionConstants.ShowTokenAndRvaComments_GUID));
コード例 #7
0
 public virtual DocumentTreeNodeFilterResult GetResult(ResourceElementNode node) => this.filter.GetResult(node);
コード例 #8
0
 public virtual DocumentTreeNodeFilterResult GetResult(ResourceElementNode node) => new DocumentTreeNodeFilterResult(FilterType.Hide, false);
コード例 #9
0
ファイル: FilterSearcher.cs プロジェクト: dotfornet/dnSPy
        void SearchResourceElementTreeNode(IDsDocument module, ResourceNode resTreeNode, ResourceElementNode resElNode)
        {
            var res = options.Filter.GetResult(resElNode);

            if (res.FilterType == FilterType.Hide)
            {
                return;
            }

            if (res.IsMatch)
            {
                bool m = IsMatch(resElNode.Name, resElNode);
                if (!m)
                {
                    var builtin = resElNode.ResourceElement.ResourceData as BuiltInResourceData;
                    if (builtin != null)
                    {
                        var val = builtin.Data;
                        if (builtin.Code == ResourceTypeCode.TimeSpan)
                        {
                            val = ((TimeSpan)val).Ticks;
                        }
                        m = IsMatch(val as string, val);
                    }
                }
                if (!m)
                {
                    m = IsMatch(ToString(resElNode), null);
                }
                if (m)
                {
                    options.OnMatch(new SearchResult {
                        Context                = options.Context,
                        Object                 = resElNode,
                        NameObject             = resElNode,
                        ObjectImageReference   = resElNode.Icon,
                        LocationObject         = resTreeNode,
                        LocationImageReference = resTreeNode.Icon,
                        Document               = module,
                    });
                }
            }
        }