-
Notifications
You must be signed in to change notification settings - Fork 192
Open
@awvwgk
Description
With types like the bitset_type
it might be a really useful feature to use them in normal IO (read
and write
data transfer). The bitset_type
for example implements a write_bitset
interface, but could as well define the very same function as derived type IO:
An interface to a formatted write usually looks like
subroutine write_formatted(self, unit, iotype, v_list, iostat, iomsg) !> Instance of the object to write. class(*), intent(inout) :: self !> Formatted unit for output. integer, intent(in) :: unit !> Type of formatted data transfer, has the value "LISTDIRECTED" for fmt=*, "NAMELIST" for namelist output or starts with "DT" for derived type output. character(len=*), intent(in) :: iotype !> Rank one array of default integer type containing the edit descriptors for derived type output. integer, intent(in) :: v_list(:) !> Status identifier to indicate success of output operation. integer, intent(out) :: iostat !> Buffer to return error message in case of failing output operation. character(len=*), intent(inout) :: iomsg end subroutine write_formatted
While an interface to an unformatted write is given here for short reference
subroutine write_unformatted(self, unit, iostat, iomsg) !> Instance of the object to write. class(*), intent(inout) :: self !> Formatted unit for output. integer, intent(in) :: unit !> Status identifier to indicate success of output operation. integer, intent(out) :: iostat !> Buffer to return error message in case of failing output operation. character(len=*), intent(inout) :: iomsg end subroutine write_unformatted
This would allow to easily write a bitset with
use stdlib_bitset, only : bitset_type type(bitset_type) :: bitset ! ... print*, bitset end