// check inheritance QString BrowserNode::check_inherit(const BrowserNode * new_parent) const { Q3PtrList<BrowserNode> all_parents; Q3PtrList<BrowserNode> notyet = parents(); if (notyet.findRef(new_parent) != -1) return TR("already generalize / realize"); notyet.append(new_parent); do { BrowserNode * cl = notyet.getFirst(); notyet.removeFirst(); if (cl == this) return TR("can't have circular generalization / realization"); if (all_parents.findRef(cl) == -1) { all_parents.append(cl); Q3PtrList<BrowserNode> grand_parents = cl->parents(); for (cl = grand_parents.first(); cl; cl = grand_parents.next()) if (notyet.findRef(cl) == -1) notyet.append(cl); } } while (! notyet.isEmpty()); return 0; }