Пример #1
0
        int IDebugProperty2.EnumChildren(
            enum_DEBUGPROP_INFO_FLAGS dwFields,
            uint dwRadix,
            ref Guid guidFilter,
            enum_DBG_ATTRIB_FLAGS dwAttribFilter,
            string pszNameFilter,
            uint dwTimeout,
            out IEnumDebugPropertyInfo2 ppEnum)
        {
            ppEnum = null;
            if (guidFilter != Guid.Empty && !Filter.LocalsSelected(ref guidFilter))
            {
                return(VSConstants.S_OK);
            }

            if (JsValue is JsObjectRef)
            {
                var obj = Debugger.Lookup(FrameNumber, ScopeNumber, JsValue as JsObjectRef);
                if (obj == null)
                {
                    return(VSConstants.S_OK);
                }

                JsValue = obj;
                foreach (JsValue objProp in obj.Properties.Where(x => x.HasData))
                {
                    Children[GetChildKey(objProp.Name)]
                        = Create(StackFrame, ScopeNumber, objProp, this);
                }
            }

            if (!Children.Any())
            {
                return(VSConstants.S_OK);
            }

            ppEnum = PropertyEnum.Create(Children.Select(x =>
            {
                var info = new DEBUG_PROPERTY_INFO[1];
                (x.Value as IDebugProperty2).GetPropertyInfo(dwFields, dwRadix, 0,
                                                             new IDebugReference2[0], 0, info);
                return(info[0]);
            }));
            return(VSConstants.S_OK);
        }
Пример #2
0
        int IDebugStackFrame2.EnumProperties(
            enum_DEBUGPROP_INFO_FLAGS dwFields,
            uint nRadix,
            ref Guid guidFilter,
            uint dwTimeout,
            out uint pcelt,
            out IEnumDebugPropertyInfo2 ppEnum)
        {
            pcelt  = 0;
            ppEnum = null;

            if (guidFilter != Guid.Empty && !Property.Filter.LocalsSelected(ref guidFilter))
            {
                return(VSConstants.S_OK);
            }

            InitThread.Wait();
            pcelt  = 0;
            ppEnum = PropertyEnum.Create(Properties
                                         .SelectMany(x => x.Value
                                                     .Select(y => y.Value.GetInfo(dwFields))));

            return(VSConstants.S_OK);
        }