| 6059 | } |
| 6060 | |
| 6061 | String WinDebugger::GetArrayItems(DbgCompileUnit* dbgCompileUnit, DebugVisualizerEntry* debugVis, DbgType* valueType, DbgTypedValue& curNode, int& count, String* outContinuationData) |
| 6062 | { |
| 6063 | DbgEvaluationContext conditionEvaluationContext(this, dbgCompileUnit, debugVis->mCondition); |
| 6064 | |
| 6065 | String addrs; |
| 6066 | |
| 6067 | bool checkLeft = true; |
| 6068 | |
| 6069 | int usedCount = 0; |
| 6070 | while (usedCount < count) |
| 6071 | { |
| 6072 | DbgTypedValue condVal = conditionEvaluationContext.EvaluateInContext(curNode); |
| 6073 | if (!condVal) |
| 6074 | break; |
| 6075 | if (condVal.mBool) |
| 6076 | { |
| 6077 | auto val = curNode; |
| 6078 | if (valueType == NULL) |
| 6079 | { |
| 6080 | String typeAddr = val.mType->ToStringRaw(); |
| 6081 | // RPad |
| 6082 | typeAddr.Append(' ', sizeof(addr_target) * 2 - typeAddr.length()); |
| 6083 | addrs += typeAddr; |
| 6084 | } |
| 6085 | |
| 6086 | String addr = EncodeDataPtr(val.mPtr, false); |
| 6087 | addrs += addr; |
| 6088 | usedCount++; |
| 6089 | } |
| 6090 | |
| 6091 | curNode.mPtr += curNode.mType->mTypeParam->GetStride(); |
| 6092 | } |
| 6093 | count = usedCount; |
| 6094 | |
| 6095 | if (outContinuationData != NULL) |
| 6096 | { |
| 6097 | *outContinuationData += EncodeDataPtr(debugVis, false) + EncodeDataPtr(valueType, false) + |
| 6098 | EncodeDataPtr(curNode.mType, false) + EncodeDataPtr(curNode.mPtr, false); |
| 6099 | } |
| 6100 | |
| 6101 | return addrs; |
| 6102 | } |
| 6103 | |
| 6104 | String WinDebugger::GetLinkedListItems(DbgCompileUnit* dbgCompileUnit, DebugVisualizerEntry* debugVis, addr_target endNodePtr, DbgType* valueType, DbgTypedValue& curNode, int& count, String* outContinuationData) |
| 6105 | { |
nothing calls this directly
no test coverage detected