Set option data value (array).
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(option), | intent(inout) | :: | self | Option data. |
||
class(*), | intent(in) | :: | val(1:) | Value. |
||
character, | intent(in), | optional | :: | delimiter | Delimiter used for separating values. |
pure subroutine set_a_option(self, val, delimiter)
!< Set option data value (array).
class(option), intent(inout) :: self !< Option data.
class(*), intent(in) :: val(1:) !< Value.
character(*), intent(in), optional :: delimiter !< Delimiter used for separating values.
character(len=:), allocatable :: dlm !< Dummy string for delimiter handling.
integer(I4P) :: v !< Counter.
dlm = ' ' ; if (present(delimiter)) dlm = delimiter
self%ovals = ''
select type(val)
#ifdef _R16P
type is(real(R16P))
do v=1, size(val, dim=1)
self%ovals = self%ovals//dlm//trim(str(n=val(v)))
enddo
self%ovals = self%ovals%strip()
#endif
type is(real(R8P))
do v=1, size(val, dim=1)
self%ovals = self%ovals//dlm//trim(str(n=val(v)))
enddo
self%ovals = self%ovals%strip()
type is(real(R4P))
do v=1, size(val, dim=1)
self%ovals = self%ovals//dlm//trim(str(n=val(v)))
enddo
self%ovals = self%ovals%strip()
type is(integer(I8P))
do v=1, size(val, dim=1)
self%ovals = self%ovals//dlm//trim(str(n=val(v)))
enddo
self%ovals = self%ovals%strip()
type is(integer(I4P))
do v=1, size(val, dim=1)
self%ovals = self%ovals//dlm//trim(str(n=val(v)))
enddo
self%ovals = self%ovals%strip()
type is(integer(I2P))
do v=1, size(val, dim=1)
self%ovals = self%ovals//dlm//trim(str(n=val(v)))
enddo
self%ovals = self%ovals%strip()
type is(integer(I1P))
do v=1, size(val, dim=1)
self%ovals = self%ovals//dlm//trim(str(n=val(v)))
enddo
self%ovals = self%ovals%strip()
type is(logical)
do v=1, size(val, dim=1)
self%ovals = self%ovals//dlm//trim(str(n=val(v)))
enddo
self%ovals = self%ovals%strip()
type is(character(*))
do v=1, size(val, dim=1)
self%ovals = self%ovals//dlm//trim(val(v))
enddo
self%ovals = self%ovals%strip()
endselect
endsubroutine set_a_option