| 755 | } |
| 756 | |
| 757 | void |
| 758 | RecursiveInstanceIterator::push (RecursiveInstanceReceiver *receiver) |
| 759 | { |
| 760 | // force reset so we can validate with a receiver |
| 761 | reset (); |
| 762 | |
| 763 | receiver->begin (this); |
| 764 | |
| 765 | try { |
| 766 | |
| 767 | validate (receiver); |
| 768 | |
| 769 | while (! at_end ()) { |
| 770 | next (receiver); |
| 771 | } |
| 772 | |
| 773 | receiver->end (this); |
| 774 | |
| 775 | } catch (...) { |
| 776 | |
| 777 | receiver->end (this); |
| 778 | throw; |
| 779 | |
| 780 | } |
| 781 | } |
| 782 | |
| 783 | } |
| 784 |