rename_components Subroutine

private recursive subroutine rename_components(cmp_tree, no_cmp, prefix, postfix)

Arguments

Type IntentOptional Attributes Name
class(type_node), intent(inout), pointer :: cmp_tree
type(type_dictionary), intent(inout) :: no_cmp
character(len=*), intent(in) :: prefix
character(len=*), intent(in) :: postfix

Calls

proc~~rename_components~~CallsGraph proc~rename_components rename_components proc~rename_components->proc~rename_components get_integer get_integer proc~rename_components->get_integer get_string get_string proc~rename_components->get_string key key proc~rename_components->key proc~abort_if abort_if proc~rename_components->proc~abort_if proc~increment_int_dict increment_int_dict proc~rename_components->proc~increment_int_dict proc~rename_id rename_id proc~rename_components->proc~rename_id proc~select_dict select_dict proc~rename_components->proc~select_dict set_string set_string proc~rename_components->set_string proc~increment_int_dict->get_integer proc~increment_int_dict->proc~abort_if proc~increment_int_dict->set_string interface~to_str to_str proc~increment_int_dict->interface~to_str proc~rename_id->get_string proc~rename_id->proc~rename_id proc~rename_id->proc~select_dict proc~rename_id->set_string get_dictionary get_dictionary proc~rename_id->get_dictionary get_list get_list proc~rename_id->get_list proc~str_from_int str_from_int interface~to_str->proc~str_from_int proc~str_from_real str_from_real interface~to_str->proc~str_from_real

Called by

proc~~rename_components~~CalledByGraph proc~rename_components rename_components proc~rename_components->proc~rename_components proc~input_open_yaml input_t%input_open_yaml proc~input_open_yaml->proc~rename_components

Source Code

recursive subroutine rename_components(cmp_tree,no_cmp,prefix,postfix)
    class(type_node), pointer, intent(inout) :: cmp_tree
    type(type_dictionary),     intent(inout) :: no_cmp
    character(*),              intent(in)    :: prefix, postfix

    type(type_error),allocatable :: err
    type(type_key_value_pair), pointer :: pair
    type(type_list_item), pointer :: item
    character(:), allocatable :: prefix1, postfix1, type_name
    type(type_dictionary),pointer :: cmp
    integer :: ln

    select type(cmp_tree)
    class is(type_dictionary)
        pair => cmp_tree%first
        do while(associated(pair))
            ln = len(pair%key)
            prefix1 = prefix
            postfix1 = postfix
            if (ln>2 .and. pair%key(1:1)=='_') then
                postfix1 = postfix//pair%key(2:ln)
            endif
            if (ln>2 .and. pair%key(ln:ln)=='_') then
                prefix1 = pair%key(1:ln-1)//prefix
            endif
            if(pair%key(1:1)/='.') then
                call rename_components(pair%value,no_cmp,prefix1,postfix1)
            endif
            pair=>pair%next
        enddo
    class is(type_list)
        item => cmp_tree%first
        do while(associated(item))
            ! add elements to no_cmp an calculate size
            cmp => select_dict(item%node)
            type_name = cmp%get_string('type',error=err)
            call abort_if(err)
            ln = no_cmp%get_integer(type_name,-1,err)
            if(ln == -1) then
                call no_cmp%set_string(type_name,'0')
            endif
            ln = increment_int_dict(no_cmp,type_name)

            ! renaming main id an connection id
            call rename_id(cmp,prefix,postfix)
    
            item => item%next
        enddo
    end select
end subroutine rename_components