Resource_List* WorkFlowManagement::required_res( ) { Resource_List* return_val = new Resource_List() ; // outgoing calls this->required_res_( return_val ); return return_val; } void WorkFlowManagement::required_res_ ( Resource_List* & return_val ) { tasks ->required_res_( return_val ); } void Task::required_res_ ( Resource_List* & return_val ) { // variables for carrying in and out Resource_List* r ; // assignments for carrying in r = resources; ; // outgoing calls timing ->required_res_( return_val, r ); } void Timing::required_res_ ( Resource_List* & return_val, Resource_List* r ) { startDate ->required_res_( return_val, r ); } void Date::required_res_ ( Resource_List* & return_val, Resource_List* r ) { } void DateSelected::required_res_ ( Resource_List* & return_val, Resource_List* r ) { // prefix blocks return_val -> concatenate(r); } void Task_List::required_res_ ( Resource_List* & return_val ) { // outgoing calls Task_list_iterator next_Task(*this); Task* each_Task; while ( each_Task = next_Task() ) { each_Task->required_res_( return_val ); } }