public static ObjectValue[] GetAllChildrenSync(this ObjectValue val, EvaluationOptions ops = null) { var children = new List <ObjectValue> (); var values = ops == null?val.GetAllChildren() : val.GetAllChildren(ops); for (int i = 0; i < values.Length; i++) { var value = values[i].Sync(); if (value.IsEvaluatingGroup) { if (ops != null) { children.AddRange(value.GetAllChildrenSync(ops)); } else { children.AddRange(value.GetAllChildrenSync()); } } else { children.Add(value); } } return(children.ToArray()); }
protected override bool OnTestExpandRow(TreeIter iter, TreePath path) { if (!allowExpanding) { return(true); } bool expanded = (bool)store.GetValue(iter, ExpandedCol); if (!expanded) { store.SetValue(iter, ExpandedCol, true); TreeIter it; store.IterChildren(out it, iter); store.Remove(ref it); ObjectValue val = (ObjectValue)store.GetValue(iter, ObjectCol); foreach (ObjectValue cval in val.GetAllChildren()) { AppendValue(iter, null, cval); } return(base.OnTestExpandRow(iter, path)); } else { return(false); } }
public static ObjectValue[] GetAllChildrenSync(this ObjectValue val) { var children = val.GetAllChildren(); foreach (var child in children) { child.Sync(); } return(children); }
static Task <ObjectValue[]> GetChildrenAsync(ObjectValue value, CancellationToken cancellationToken) { return(Task.Run(() => { try { return value.GetAllChildren(); } catch (Exception ex) { // Note: this should only happen if someone breaks ObjectValue.GetAllChildren() LoggingService.LogError("Failed to get ObjectValue children.", ex); return new ObjectValue[0]; } }, cancellationToken)); }
void PrintValue(ObjectValue val) { string result = val.Value; if (string.IsNullOrEmpty(result) || val.IsError || val.IsUnknown || val.IsNotSupported) { view.WriteOutput(GetErrorText(val)); FinishPrinting(); } else { var ops = GetEvaluationOptions(); var children = val.GetAllChildren(ops); var hasMore = false; view.WriteOutput(result); if (children.Length > 0 && string.Equals(children[0].Name, "[0..99]")) { // Big Arrays Hack children = children[0].GetAllChildren(); hasMore = true; } var evaluating = new Dictionary <ObjectValue, bool> (); foreach (var child in children) { if (child.IsEvaluating) { evaluating.Add(child, false); } else { PrintChildValue(child); } } if (evaluating.Count > 0) { foreach (var eval in evaluating) { WaitChildForCompleted(eval.Key, evaluating, hasMore); } } else { FinishPrinting(hasMore); } } }
public int EnumChildren(enum_DEBUGPROP_INFO_FLAGS fields, uint radix, ref Guid guidFilter, enum_DBG_ATTRIB_FLAGS attributeFilter, string filter, uint timeout, out IEnumDebugPropertyInfo2 enumerator) { enumerator = null; if (value.HasChildren) { var children = value.GetAllChildren(); var properties = new DEBUG_PROPERTY_INFO[children.Length]; for (var i = 0; i < children.Length; i++) { var child = children[i]; properties[i] = new MonoProperty(expression, child, this).ConstructDebugPropertyInfo(fields); } enumerator = new MonoPropertyEnumerator(properties); return(VSConstants.S_OK); } return(VSConstants.S_FALSE); }
public int EnumChildren(uint dwFields, uint dwRadix, ref Guid guidFilter, ulong dwAttribFilter, string pszNameFilter, uint dwTimeout, out IEnumDebugPropertyInfo2 ppEnum) { ppEnum = null; ObjectValue[] children = _value.GetAllChildren(); if (!_value.HasChildren && children.Length > 0) { return(S_FALSE); } DEBUG_PROPERTY_INFO[] props = new DEBUG_PROPERTY_INFO[children.Length]; for (var i = 0; i < children.Length; i++) { MonoProperty monoProp = new MonoProperty(this, children[i], _expression); props[i] = monoProp.CreatePropertyInfo(dwFields); } ppEnum = new MonoPropertyEnumerator(props); return(S_OK); }
private Variable CreateVariable(ObjectValue v) { var pname = String.Format("{0} {1}", v.TypeName, v.Name); return(new Variable(pname, v.DisplayValue, v.HasChildren ? _variableHandles.Create(v.GetAllChildren()) : 0)); }
private Variable CreateVariable(ObjectValue v) { var dv = v.DisplayValue; if (dv.Length > 1 && dv [0] == '{' && dv [dv.Length - 1] == '}') { dv = dv.Substring(1, dv.Length - 2); } return(new Variable(v.Name, dv, v.TypeName, v.HasChildren ? _variableHandles.Create(v.GetAllChildren()) : 0)); }
public CompletionData GetExpressionCompletionData(int frameIndex, string exp) { SelectFrame(frameIndex); bool pointer = exp.EndsWith("->"); int i; if (pointer || exp.EndsWith(".")) { exp = exp.Substring(0, exp.Length - (pointer ? 2 : 1)); i = 0; while (i < exp.Length) { ObjectValue val = CreateVarObject(exp); if (!val.IsUnknown && !val.IsError) { CompletionData data = new CompletionData(); foreach (ObjectValue cv in val.GetAllChildren()) { data.Items.Add(new CompletionItem(cv.Name, cv.Flags)); } data.ExpressionLength = 0; return(data); } i++; } return(null); } i = exp.Length - 1; bool lastWastLetter = false; while (i >= 0) { char c = exp[i--]; if (!char.IsLetterOrDigit(c) && c != '_') { break; } lastWastLetter = !char.IsDigit(c); } if (lastWastLetter) { string partialWord = exp.Substring(i + 1); CompletionData cdata = new CompletionData(); cdata.ExpressionLength = partialWord.Length; // Local variables GdbCommandResult res = session.RunCommand("-stack-list-locals", "0"); foreach (ResultData data in res.GetObject("locals")) { string name = data.GetValue("name"); if (name.StartsWith(partialWord)) { cdata.Items.Add(new CompletionItem(name, ObjectValueFlags.Variable)); } } // Parameters res = session.RunCommand("-stack-list-arguments", "0", frameIndex.ToString(), frameIndex.ToString()); foreach (ResultData data in res.GetObject("stack-args").GetObject(0).GetObject("frame").GetObject("args")) { string name = data.GetValue("name"); if (name.StartsWith(partialWord)) { cdata.Items.Add(new CompletionItem(name, ObjectValueFlags.Parameter)); } } if (cdata.Items.Count > 0) { return(cdata); } } return(null); }
private Variable CreateVariable(ObjectValue v) { return(new Variable(v.Name, v.DisplayValue, v.TypeName, v.HasChildren ? _variableHandles.Create(v.GetAllChildren()) : 0)); }