scitools.com

← Graph catalog

Object References is one of the interactive graphs Understand can draw of your code — call trees, dependencies, control flow, and more.

Object References

Languages: Ada, Any, C#, C++, Fortran, Java, Jovial, Pascal, Rust, VHDL, Web
Targets: Functions, Objects
Variants: Classic, Compare (Classic), With Called By (Classic), With Called By (Cluster)

Show what directly references a selected object, macro, variable, field, or property.

The root is the selected entity. Each direct reference is added as a child — anything that sets, uses, or modifies it — with the edge colored by how: a set is green, a modify is orange, and a use (or anything else) is the default blue.

Rooted at GlobalObject below, the graph shows three direct references in demo.cpp: functionPtrDemo (a use, in if (GlobalObject > n)), simpleOverridesDemo (a modify, via GlobalObject++), and complexOverridesDemo (a set, via GlobalObject = 0).

See the following code and corresponding graph

// demo.cpp
int GlobalObject = 0;

int functionPtrDemo(int n)
{
  if (GlobalObject > n)
    return n;
  /* ... */
}

void simpleOverridesDemo()
{
  /* ... */
  GlobalObject ++;
}

void complexOverridesDemo()
{
  /* ... */
  GlobalObject = 0;
}

void callDemo(int n)
{
  /* ... */
  functionPtrDemo(n);
  simpleOverridesDemo();
  complexOverridesDemo();
  /* ... */
}

// callby.cpp
class CallbyDerivedA : public CallbyBase {
public:
  void pureVirtualCall() override { callDemo(0); };
};

void altFirst()
{
  callDemo(1);
}

Object References - Classic

This variant shows only the direct references above — it doesn't continue further to callers, and doesn't cluster entities by file or architecture. See also the compare and with called by graphs.


This variant is a plugin. It can be enabled/disabled from the Plugin Manager.

Back to Object References

Object References - Compare (Classic)

This variant compares those same references against the project's comparison database: an entity present unchanged in both versions is left unfilled, one whose own contents changed is filled blue, one that's new is filled green, and one that no longer exists is filled orange. In a version where functionPtrDemo was renamed from functionPointerDemo, demo.cpp is filled blue since its contents changed, and the rename shows up as two separate entities — functionPtrDemo (its new name, filled green) and functionPointerDemo (its old name, filled orange) — both still shown using GlobalObject. See also the classic and with called by graphs.


This variant is a plugin. It can be enabled/disabled from the Plugin Manager.

Back to Object References

Object References - With Called By (Classic)

This variant also continues from each reference with a Called By relationship: whatever calls that function, then whatever calls that caller in turn, as many levels deep as the Called By Depth option allows. functionPtrDemo, simpleOverridesDemo, and complexOverridesDemo are all called by callDemo, which is itself called by altFirst and by CallbyDerivedA::pureVirtualCall, both in callby.cpp. See also the classic and compare graphs.


This variant is a plugin. It can be enabled/disabled from the Plugin Manager.

Back to Object References

Object References - With Called By (Cluster)

This variant also continues from each reference with a Called By relationship: whatever calls that function, then whatever calls that caller in turn, as many levels deep as the Called By Depth option allows. functionPtrDemo, simpleOverridesDemo, and complexOverridesDemo are all called by callDemo, which is itself called by altFirst and by CallbyDerivedA::pureVirtualCall, both in callby.cpp. This variant also supports clustering.


Back to Object References