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); }
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); }