Skip to content

Commit fa35e71

Browse files
committed
Make array name optional such as in np
1 parent a491510 commit fa35e71

File tree

3 files changed

+23
-16
lines changed

3 files changed

+23
-16
lines changed

src/stdlib_io_np.fypp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -163,17 +163,17 @@ module stdlib_io_np
163163
interface add_array
164164
#:for k1, t1 in KINDS_TYPES
165165
#:for rank in RANKS
166-
module subroutine add_array_${t1[0]}$${k1}$_${rank}$(arrays, array, name, stat, msg)
166+
module subroutine add_array_${t1[0]}$${k1}$_${rank}$(arrays, array, stat, msg, name)
167167
!> Array of arrays to which the array is to be added.
168168
type(t_array_wrapper), allocatable, intent(inout) :: arrays(:)
169169
!> Array to be added.
170170
${t1}$, intent(in) :: array${ranksuffix(rank)}$
171-
!> Name of the array to be added.
172-
character(len=*), intent(in) :: name
173171
!> Status of addition.
174172
integer, intent(out), optional :: stat
175173
!> Error message.
176174
character(len=:), allocatable, intent(out), optional :: msg
175+
!> Name of the array to be added. A default name will be used if not provided.
176+
character(len=*), intent(in), optional :: name
177177
end
178178
#:endfor
179179
#:endfor

src/stdlib_io_np_save.fypp

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -137,30 +137,38 @@ contains
137137

138138
#:for k1, t1 in KINDS_TYPES
139139
#:for rank in RANKS
140-
module subroutine add_array_${t1[0]}$${k1}$_${rank}$(arrays, array, name, stat, msg)
140+
module subroutine add_array_${t1[0]}$${k1}$_${rank}$(arrays, array, stat, msg, name)
141141
!> Array of arrays to which the array is to be added.
142142
type(t_array_wrapper), allocatable, intent(inout) :: arrays(:)
143143
!> Array to be added.
144144
${t1}$, intent(in) :: array${ranksuffix(rank)}$
145-
!> Name of the array to be added.
146-
character(len=*), intent(in) :: name
147145
!> Status of addition.
148146
integer, intent(out), optional :: stat
149147
!> Error message.
150148
character(len=:), allocatable, intent(out), optional :: msg
149+
!> Name of the array to be added. A default name will be used if not provided.
150+
character(len=*), intent(in), optional :: name
151151

152152
integer :: i, arr_size
153153
type(t_array_${t1[0]}$${k1}$_${rank}$) :: t_arr
154154

155155
if (present(stat)) stat = 0
156156

157-
if (trim(name) == '') then
158-
if (present(stat)) stat = 1
159-
if (present(msg)) msg = "Array name cannot be empty."
160-
return
157+
if (present(name)) then
158+
if (trim(name) == '') then
159+
if (present(stat)) stat = 1
160+
if (present(msg)) msg = "Array name cannot be empty."
161+
return
162+
end if
163+
t_arr%name = name
164+
else
165+
if (allocated(arrays)) then
166+
t_arr%name = "arr_"//trim(to_string(size(arrays)))//".npy"
167+
else
168+
t_arr%name = "arr_0.npy"
169+
end if
161170
end if
162171

163-
t_arr%name = name
164172
t_arr%values = array
165173

166174
if (.not. allocated(arrays)) then
@@ -171,9 +179,9 @@ contains
171179

172180
arr_size = size(arrays)
173181
do i = 1, arr_size
174-
if (arrays(i)%array%name == name) then
182+
if (arrays(i)%array%name == t_arr%name) then
175183
if (present(stat)) stat = 1
176-
if (present(msg)) msg = "Array with the same name '"//name//"' already exists."
184+
if (present(msg)) msg = "Array with the same name '"//t_arr%name//"' already exists."
177185
return
178186
end if
179187
end do

test/io/test_np.f90

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -952,17 +952,16 @@ subroutine npz_save_rdp_2(error)
952952
type(t_array_wrapper), allocatable :: arrays(:)
953953
integer :: stat
954954
character(*), parameter :: filename = "npz_save_rdp_2.npz"
955-
character(*), parameter :: arr_name = "arr_0.npy"
956955
real(dp), allocatable :: input_array(:,:), output(:,:)
957956

958957
allocate(input_array(10, 4))
959958
call random_number(input_array)
960-
call add_array(arrays, input_array, arr_name, stat)
959+
call add_array(arrays, input_array, stat)
961960
call check(error, stat, "Error adding an array to the list of arrays.")
962961
if (allocated(error)) return
963962
call check(error, size(arrays) == 1, "Array was not added to the list of arrays.")
964963
if (allocated(error)) return
965-
call check(error, arrays(1)%array%name == arr_name, "Wrong array name.")
964+
call check(error, arrays(1)%array%name == "arr_0.npy", "Wrong array name.")
966965
if (allocated(error)) return
967966

968967
! call save_npz(filename, arrays, stat)

0 commit comments

Comments
 (0)