public subroutine placeat_ga_dynlong_vec(me, val, pos, length)
adds the values starting from a given position inside the growing array.
if the requested position is outside the current array bounds, the array
will be resized accordingly. if it is inside the current array bounds, the
elements starting from the requested position will be replaced up to
the element at position pos + size(val) - 1.
Nodes of different colours represent the following:
Solid arrows point from a procedure to one which it calls. Dashed
arrows point from an interface to procedures which implement that interface.
This could include the module procedures in a generic interface or the
implementation in a submodule of an interface in a parent module.
Nodes of different colours represent the following:
Solid arrows point from a procedure to one which it calls. Dashed
arrows point from an interface to procedures which implement that interface.
This could include the module procedures in a generic interface or the
implementation in a submodule of an interface in a parent module.
Source Code
subroutine placeat_ga_dynlong_vec(me,val,pos,length)type(grw_dynlongarray_type)::me!< array to append the value totype(dyn_longarray_type),intent(in)::val(:)!< values to appendinteger,intent(in)::pos!< predefined position!> optional length to expand the arrayinteger,intent(in),optional::lengthinteger::ub,iiif(me%nvals==huge(me%nvals))then write(*,*)"reached end of integer range for growing array!"write(*,*)"aborting!!"stop end ifub=pos+size(val)-1if(ub>me%containersize)then! expand the array, if its boundary is reachedcall expand(me=me,pos=ub,length=length)end ifme%nvals=max(ub,me%nvals)do ii=pos,ubme%val(ii)=val(1+ii-pos)end do end subroutine placeat_ga_dynlong_vec