The following code demonstrates how to count the number of reference makers that are directly observing a reference target.
unsigned int GetImmediateDependencyCount(ReferenceTarget* rtarg) { unsigned int count = 0; DependentIterator di(rtarg); while (di.Next() != NULL) { count++; } return count; }
To count all references that are dependent on an object, directly or indirectly you would use ReferenceTarget::DoEnumDependents(). This would be done as follows:
unsigned int GetAllDependencyCount(ReferenceTarget* rtarg) { struct CallBack : DependentEnumProc { int count; CallBack() : count(0) { } virtual int proc(ReferenceMaker* rmaker) { ++count; } }; CallBack cb; rtarg->DoEnumDependents(&cb); return cb.count(); }