MCPcopy Create free account
hub / github.com/SpartanJ/eepp / addVariables

Method addVariables

src/tools/ecode/plugins/debugger/models/variablesmodel.cpp:201–239  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

199}
200
201void VariablesHolder::addVariables( const int variablesReference, std::vector<Variable>&& vars ) {
202 Lock l( mModel->resourceMutex() );
203 auto parentNode = getNodeByReference( variablesReference );
204 if ( !parentNode ) {
205 auto node = mRootNode->getChildRecursive( variablesReference );
206 if ( !node )
207 return;
208 parentNode = *node;
209 }
210
211 bool invalidateIndexes = false;
212
213 for ( auto& var : vars ) {
214 if ( var.name.empty() )
215 continue;
216
217 auto found = parentNode->getChild( var.name );
218 if ( found ) {
219 ModelVariableNode::NodePtr child = *found;
220 child->var = std::move( var );
221
222 if ( child->var.variablesReference != 0 )
223 mNodeMap[child->var.variablesReference] = *found;
224
225 continue;
226 }
227
228 invalidateIndexes = true;
229
230 auto child = std::make_shared<ModelVariableNode>( std::move( var ), parentNode );
231 parentNode->addChild( child );
232
233 if ( child->var.variablesReference != 0 )
234 mNodeMap[child->var.variablesReference] = child;
235 }
236
237 mModel->invalidate( invalidateIndexes ? Model::UpdateFlag::InvalidateAllIndexes
238 : Model::UpdateFlag::DontInvalidateIndexes );
239}
240
241void VariablesHolder::addChild( ModelVariableNode::NodePtr child ) {
242 Lock l( mModel->resourceMutex() );

Callers 3

buildStatusBarMethod · 0.80
displayTooltipMethod · 0.80
variablesMethod · 0.80

Calls 5

getChildRecursiveMethod · 0.80
emptyMethod · 0.45
getChildMethod · 0.45
addChildMethod · 0.45
invalidateMethod · 0.45

Tested by

no test coverage detected