18 MODULE vol7d_serialize_csv_class
19 use,
INTRINSIC :: iso_c_binding
24 type,extends(vol7d_serialize) :: vol7d_serialize_csv
25 INTEGER :: csv_header=1
27 procedure :: vol7d_serialize_optionparser
28 procedure :: vol7d_serialize_export
29 END TYPE vol7d_serialize_csv
32 PUBLIC vol7d_serialize_csv, vol7d_serialize_csv_new
36 FUNCTION vol7d_serialize_csv_new() RESULT(this)
37 TYPE(vol7d_serialize_csv
) :: this
39 this%vol7d_serialize = vol7d_serialize_new()
41 END FUNCTION vol7d_serialize_csv_new
44 SUBROUTINE vol7d_serialize_optionparser(this, opt, ext)
45 class(vol7d_serialize_csv),
INTENT(inout) :: this
46 TYPE(optionparser
),
INTENT(inout),
OPTIONAL :: opt
47 CHARACTER(len=*),
INTENT(in),
OPTIONAL :: ext
49 IF (present(ext))
THEN
56 this%vol7d_serialize%cachedesc = .true.
59 CALL this%vol7d_serialize%vol7d_serialize_optionparser(opt, ext)
62 CALL optionparser_add(opt,
' ',
'csv-header', this%csv_header, 2, help= &
63 'write 0 to 2 header lines at the beginning of csv output')
66 END SUBROUTINE vol7d_serialize_optionparser
69 SUBROUTINE vol7d_serialize_export(this, iun)
70 class(vol7d_serialize_csv),
INTENT(inout) :: this
71 INTEGER,
INTENT(in) :: iun
73 CHARACTER(len=64),
TARGET,
ALLOCATABLE :: col(:)
74 CHARACTER(len=2048),
TARGET :: line
75 CHARACTER(len=1),
POINTER :: pline
77 TYPE(vol7d_serialize_iterline
) :: linei
78 TYPE(vol7d_serialize_itercol
) :: coli
82 IF (this%csv_header >= 2)
WRITE(iun,
'(A)')
'written by v7d_transform'
86 coli = this%vol7d_serialize_itercol_new()
90 line(len_trim(line)+1:) =
','
93 pline => line(len_trim(line)+1:len_trim(line)+1)
94 CALL coli%export(c_loc(pline))
97 IF (this%csv_header >= 1)
WRITE(iun,
'(A)')trim(line)
101 linei = this%vol7d_serialize_iterline_new()
102 DO WHILE(linei%next())
104 coli = linei%vol7d_serialize_itercol_new()
105 DO WHILE(coli%next())
108 line(len_trim(line)+1:) =
','
110 CALL coli%export(c_loc(col(i)(1:1)))
111 line(len_trim(line)+1:) = col(i)
113 WRITE(iun,
'(A)')trim(line)
116 END SUBROUTINE vol7d_serialize_export
118 END MODULE vol7d_serialize_csv_class
Module for parsing command-line optons.
Extension of vol7d_class for serializing the contents of a volume.