MCPcopy Create free account
hub / github.com/creatale/node-dv / Delete

Method Delete

deps/tesseract/textord/tabvector.cpp:956–985  ·  view source on GitHub ↗

Delete this, but first, repoint all the partners to point to replacement. If replacement is NULL, then partner relationships are removed.

Source from the content-addressed store, hash-verified

954// replacement. If replacement is NULL, then partner relationships
955// are removed.
956void TabVector::Delete(TabVector* replacement) {
957 TabVector_C_IT it(&partners_);
958 for (it.mark_cycle_pt(); !it.cycled_list(); it.forward()) {
959 TabVector* partner = it.data();
960 TabVector_C_IT p_it(&partner->partners_);
961 // If partner already has replacement in its list, then make
962 // replacement null, and just remove this TabVector when we find it.
963 TabVector* partner_replacement = replacement;
964 for (p_it.mark_cycle_pt(); !p_it.cycled_list(); p_it.forward()) {
965 TabVector* p_partner = p_it.data();
966 if (p_partner == partner_replacement) {
967 partner_replacement = NULL;
968 break;
969 }
970 }
971 // Remove all references to this, and replace with replacement if not NULL.
972 for (p_it.mark_cycle_pt(); !p_it.cycled_list(); p_it.forward()) {
973 TabVector* p_partner = p_it.data();
974 if (p_partner == this) {
975 p_it.extract();
976 if (partner_replacement != NULL)
977 p_it.add_before_stay_put(partner_replacement);
978 }
979 }
980 if (partner_replacement != NULL) {
981 partner_replacement->AddPartner(partner);
982 }
983 }
984 delete this;
985}
986
987
988} // namespace tesseract.

Callers 1

MergeWithMethod · 0.45

Calls 7

dataMethod · 0.80
mark_cycle_ptMethod · 0.45
cycled_listMethod · 0.45
forwardMethod · 0.45
extractMethod · 0.45
add_before_stay_putMethod · 0.45
AddPartnerMethod · 0.45

Tested by

no test coverage detected