Changeset 8330

Show
Ignore:
Timestamp:
18/01/12 18:43:14 (4 months ago)
Author:
westram
Message:
  • DRYed get_area_level
Files:
1 modified

Legend:

Unmodified
Added
Removed
  • branches/e4fix/EDIT4/ED4_base.cxx

    r8306 r8330  
    644644 
    645645 
    646 ED4_AREA_LEVEL  ED4_base::get_area_level(ED4_multi_species_manager **multi_species_manager) const 
    647 { 
    648  
    649     ED4_base *temp_manager; 
    650     temp_manager = get_parent(ED4_L_AREA); 
    651     if (!temp_manager) { 
    652         return ED4_A_ERROR; 
    653     } 
    654  
    655     ED4_area_manager    *temp_parent; 
    656     temp_parent = temp_manager->to_area_manager(); 
    657  
    658     if (temp_parent == ED4_ROOT->top_area_man) 
    659     { 
    660         if (multi_species_manager) { 
    661             *multi_species_manager = temp_parent->get_defined_level(ED4_L_MULTI_SPECIES)->to_multi_species_manager(); 
    662         } 
    663         return ED4_A_TOP_AREA; 
    664     } 
    665  
    666     if (temp_parent == ED4_ROOT->middle_area_man) 
    667     { 
    668         if (multi_species_manager) { 
    669             *multi_species_manager = temp_parent->get_defined_level(ED4_L_MULTI_SPECIES)->to_multi_species_manager(); 
    670         } 
    671         return ED4_A_MIDDLE_AREA; 
    672     } 
    673  
    674     return ED4_A_ERROR; 
     646ED4_AREA_LEVEL ED4_base::get_area_level(ED4_multi_species_manager **multi_species_manager) const { 
     647    ED4_base       *area_base = get_parent(ED4_L_AREA); 
     648    ED4_AREA_LEVEL  result    = ED4_A_ERROR; 
     649 
     650    if (area_base) { 
     651        ED4_area_manager *area_man = area_base->to_area_manager(); 
     652 
     653        if      (area_man == ED4_ROOT->top_area_man)    result = ED4_A_TOP_AREA; 
     654        else if (area_man == ED4_ROOT->middle_area_man) result = ED4_A_MIDDLE_AREA; 
     655 
     656        if (result != ED4_A_ERROR && multi_species_manager) { 
     657            *multi_species_manager = area_man->get_defined_level(ED4_L_MULTI_SPECIES)->to_multi_species_manager(); 
     658        } 
     659    } 
     660    return result; 
    675661} 
    676662