Skip to content

Commit 49bb9d9

Browse files
committed
mv self%buffer and seld%len_buffer to local variables (inside subroutines)
1 parent e5bc47f commit 49bb9d9

File tree

1 file changed

+80
-76
lines changed

1 file changed

+80
-76
lines changed

src/stdlib_logger.f90

Lines changed: 80 additions & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -77,9 +77,7 @@ module stdlib_logger
7777
private
7878

7979
logical :: add_blank_line = .false.
80-
character(:), allocatable :: buffer
8180
logical :: indent_lines = .true.
82-
integer :: len_buffer = 0
8381
integer, allocatable :: log_units(:)
8482
integer :: max_width = 0
8583
logical :: time_stamp = .true.
@@ -517,22 +515,24 @@ subroutine final_logger( self )
517515
end subroutine final_logger
518516

519517

520-
subroutine format_output_string( self, string, col_indent )
518+
subroutine format_output_string( self, string, col_indent, len_buffer, buffer )
521519
!! version: experimental
522520

523521
!! Writes the STRING to UNIT ensuring that the number of characters
524522
!! does not exceed MAX_WIDTH and that the lines after the first
525523
!! one are indented four characters.
526-
class(logger_type), intent(inout) :: self
527-
character(*), intent(in) :: string
528-
character(*), intent(in) :: col_indent
524+
class(logger_type), intent(inout) :: self
525+
integer, intent(out) :: len_buffer
526+
character(*), intent(in) :: string
527+
character(*), intent(in) :: col_indent
528+
character(len=:), allocatable, intent(out) :: buffer
529529

530530
integer :: count, indent_len, index_, length, remain
531531
integer, parameter :: new_len = len(new_line('a'))
532532

533533
length = len_trim(string)
534-
allocate( character(2*length) :: self % buffer )
535-
self % len_buffer = 0
534+
allocate( character(2*length) :: buffer )
535+
len_buffer = 0
536536
indent_len = len(col_indent)
537537
call format_first_line()
538538

@@ -553,8 +553,8 @@ subroutine format_first_line()
553553
if ( self % max_width == 0 .or. &
554554
( length <= self % max_width .and. &
555555
index( string(1:length), new_line('a')) == 0 ) ) then
556-
self % buffer(1:length) = string(1:length)
557-
self % len_buffer = length
556+
buffer(1:length) = string(1:length)
557+
len_buffer = length
558558
remain = 0
559559
return
560560
else
@@ -568,15 +568,15 @@ subroutine format_first_line()
568568
end if
569569

570570
if ( index_ == 0 ) then
571-
self % buffer(1:self % max_width) = &
571+
buffer(1:self % max_width) = &
572572
string(1:self % max_width)
573-
self % len_buffer = self % max_width
573+
len_buffer = self % max_width
574574
count = self % max_width
575575
remain = length - count
576576
return
577577
else
578-
self % buffer(1:index_-1) = string(1:index_-1)
579-
self % len_buffer = index_-1
578+
buffer(1:index_-1) = string(1:index_-1)
579+
len_buffer = index_-1
580580
count = index_
581581
remain = length - count
582582
return
@@ -591,15 +591,15 @@ subroutine format_subsequent_line()
591591
character(:), allocatable :: dummy
592592

593593
if ( remain <= self % max_width ) then
594-
new_len_buffer = self % len_buffer + length - count + new_len
595-
if ( new_len_buffer > len( self % buffer ) ) then
596-
allocate( character( 2*len( self % buffer ) ) :: dummy )
597-
dummy = self % buffer
598-
call move_alloc( dummy, self % buffer )
594+
new_len_buffer = len_buffer + length - count + new_len
595+
if ( new_len_buffer > len( buffer ) ) then
596+
allocate( character( 2*len( buffer ) ) :: dummy )
597+
dummy = buffer
598+
call move_alloc( dummy, buffer )
599599
end if
600-
self % buffer( self % len_buffer+1:new_len_buffer ) = &
600+
buffer( len_buffer+1:new_len_buffer ) = &
601601
new_line('a') // string(count+1:length)
602-
self % len_buffer = new_len_buffer
602+
len_buffer = new_len_buffer
603603
count = length
604604
remain = 0
605605
return
@@ -614,30 +614,30 @@ subroutine format_subsequent_line()
614614
end if
615615

616616
if ( index_ == count ) then
617-
new_len_buffer = self % len_buffer + self % max_width + &
617+
new_len_buffer = len_buffer + self % max_width + &
618618
new_len
619-
if ( new_len_buffer > len( self % buffer ) ) then
620-
allocate( character( 2*len( self % buffer ) ) :: dummy )
621-
dummy = self % buffer
622-
call move_alloc( dummy, self % buffer )
619+
if ( new_len_buffer > len( buffer ) ) then
620+
allocate( character( 2*len( buffer ) ) :: dummy )
621+
dummy = buffer
622+
call move_alloc( dummy, buffer )
623623
end if
624-
self % buffer( self % len_buffer+1:new_len_buffer ) = &
624+
buffer( len_buffer+1:new_len_buffer ) = &
625625
new_line('a') // string(count+1:count+self % max_width)
626-
self % len_buffer = new_len_buffer
626+
len_buffer = new_len_buffer
627627
count = count + self % max_width
628628
remain = length - count
629629
return
630630
else
631-
new_len_buffer = self % len_buffer + index_ - 1 &
631+
new_len_buffer = len_buffer + index_ - 1 &
632632
- count + new_len
633-
if ( new_len_buffer > len( self % buffer ) ) then
634-
allocate( character( 2*len( self % buffer ) ) :: dummy )
635-
dummy = self % buffer
636-
call move_alloc( dummy, self % buffer )
633+
if ( new_len_buffer > len( buffer ) ) then
634+
allocate( character( 2*len( buffer ) ) :: dummy )
635+
dummy = buffer
636+
call move_alloc( dummy, buffer )
637637
end if
638-
self % buffer( self % len_buffer+1:new_len_buffer ) = &
638+
buffer( len_buffer+1:new_len_buffer ) = &
639639
new_line('a') // string(count+1:index_-1)
640-
self % len_buffer = new_len_buffer
640+
len_buffer = new_len_buffer
641641
count = index_
642642
remain = length - count
643643
return
@@ -653,16 +653,16 @@ subroutine indent_format_subsequent_line()
653653

654654
if ( index( string(count+1:length), new_line('a')) == 0 .and. &
655655
remain <= self % max_width - indent_len ) then
656-
new_len_buffer = self % len_buffer + length &
656+
new_len_buffer = len_buffer + length &
657657
- count + new_len + indent_len
658-
if ( new_len_buffer > len( self % buffer ) ) then
659-
allocate( character( 2*len( self % buffer ) ) :: dummy )
660-
dummy = self % buffer
661-
call move_alloc( dummy, self % buffer )
658+
if ( new_len_buffer > len( buffer ) ) then
659+
allocate( character( 2*len( buffer ) ) :: dummy )
660+
dummy = buffer
661+
call move_alloc( dummy, buffer )
662662
end if
663-
self % buffer( self % len_buffer+1:new_len_buffer ) = &
663+
buffer( len_buffer+1:new_len_buffer ) = &
664664
new_line('a') // col_indent // string(count+1:length)
665-
self % len_buffer = new_len_buffer
665+
len_buffer = new_len_buffer
666666
count = length
667667
remain = 0
668668
return
@@ -678,31 +678,31 @@ subroutine indent_format_subsequent_line()
678678
end if
679679

680680
if ( index_ == count ) then
681-
new_len_buffer = self % len_buffer + self % max_width &
681+
new_len_buffer = len_buffer + self % max_width &
682682
+ new_len
683-
if ( new_len_buffer > len( self % buffer ) ) then
684-
allocate( character( 2*len( self % buffer ) ) :: dummy )
685-
dummy = self % buffer
686-
call move_alloc( dummy, self % buffer )
683+
if ( new_len_buffer > len( buffer ) ) then
684+
allocate( character( 2*len( buffer ) ) :: dummy )
685+
dummy = buffer
686+
call move_alloc( dummy, buffer )
687687
end if
688-
self % buffer( self % len_buffer+1: new_len_buffer ) = &
688+
buffer( len_buffer+1: new_len_buffer ) = &
689689
new_line('a') // col_indent // &
690690
string(count+1:count+self % max_width-indent_len)
691-
self % len_buffer = new_len_buffer
691+
len_buffer = new_len_buffer
692692
count = count + self % max_width - indent_len
693693
remain = length - count
694694
return
695695
else
696-
new_len_buffer = self % len_buffer + index_ - count - 1 &
696+
new_len_buffer = len_buffer + index_ - count - 1 &
697697
+ new_len + indent_len
698-
if ( new_len_buffer > len( self % buffer ) ) then
699-
allocate( character( 2*len( self % buffer ) ) :: dummy )
700-
dummy = self % buffer
701-
call move_alloc( dummy, self % buffer )
698+
if ( new_len_buffer > len( buffer ) ) then
699+
allocate( character( 2*len( buffer ) ) :: dummy )
700+
dummy = buffer
701+
call move_alloc( dummy, buffer )
702702
end if
703-
self % buffer( self % len_buffer+1: new_len_buffer ) = &
703+
buffer( len_buffer+1: new_len_buffer ) = &
704704
new_line('a') // col_indent // string(count+1:index_-1)
705-
self % len_buffer = new_len_buffer
705+
len_buffer = new_len_buffer
706706
count = index_
707707
remain = length - count
708708
return
@@ -1040,9 +1040,11 @@ subroutine log_message( self, message, module, procedure, prefix )
10401040

10411041
integer :: unit
10421042
integer :: iostat
1043+
integer :: len_buffer
10431044
character(*), parameter :: procedure_name = 'log_message'
10441045
character(256) :: iomsg
10451046
character(:), allocatable :: d_and_t, m_and_p, pref
1047+
character(:), allocatable :: buffer
10461048

10471049
if ( present(prefix) ) then
10481050
pref = prefix // ': '
@@ -1071,36 +1073,38 @@ subroutine log_message( self, message, module, procedure, prefix )
10711073
call format_output_string( self, &
10721074
d_and_t // m_and_p // pref // &
10731075
trim( message ), &
1074-
' ' )
1076+
' ', &
1077+
len_buffer, &
1078+
buffer)
10751079

10761080
if ( self % units == 0 ) then
10771081
if ( self % add_blank_line ) then
10781082
write( output_unit, '(a)', err=999, iostat=iostat, &
10791083
iomsg=iomsg) &
1080-
new_line('a') // self % buffer(1:self % len_buffer)
1084+
new_line('a') // buffer(1:len_buffer)
10811085
else
10821086
write( output_unit, '(a)', err=999, iostat=iostat, &
10831087
iomsg=iomsg ) &
1084-
self % buffer(1:self % len_buffer)
1088+
buffer(1:len_buffer)
10851089
end if
10861090
else
10871091
if ( self % add_blank_line ) then
10881092
do unit=1, self % units
10891093
write( self % log_units(unit), '(a)', err=999, iostat=iostat, &
10901094
iomsg=iomsg ) new_line('a') // &
1091-
self % buffer(1:self % len_buffer)
1095+
buffer(1:len_buffer)
10921096
end do
10931097
else
10941098
do unit=1, self % units
10951099
write( self % log_units(unit), '(a)', err=999, iostat=iostat, &
10961100
iomsg=iomsg ) &
1097-
self % buffer(1:self % len_buffer)
1101+
buffer(1:len_buffer)
10981102
end do
10991103
end if
11001104
end if
11011105

1102-
deallocate( self % buffer )
1103-
self % len_buffer = 0
1106+
deallocate( buffer )
1107+
len_buffer = 0
11041108

11051109
return
11061110

@@ -1169,11 +1173,12 @@ subroutine log_text_error( self, line, column, summary, filename, &
11691173
!! greater than `len(line)`, and `write_failure` if any of the `write`
11701174
!! statements has failed.
11711175

1172-
character(1) :: acaret
1173-
character(128) :: iomsg
1174-
integer :: iostat
1175-
integer :: lun
1176-
character(*), parameter :: procedure_name = 'LOG_TEXT_ERROR'
1176+
character(1) :: acaret
1177+
character(128) :: iomsg
1178+
integer :: iostat
1179+
integer :: lun
1180+
character(*), parameter :: procedure_name = 'LOG_TEXT_ERROR'
1181+
character(len=:), allocatable :: buffer
11771182

11781183
acaret = optval(caret, '^')
11791184

@@ -1192,14 +1197,13 @@ subroutine log_text_error( self, line, column, summary, filename, &
11921197

11931198
call write_log_text_error_buffer( )
11941199
if ( self % units == 0 ) then
1195-
write( output_unit, '(a)' ) self % buffer
1200+
write( output_unit, '(a)' ) buffer
11961201
else
11971202
do lun=1, self % units
1198-
write( self % log_units(lun), '(a)' ) self % buffer
1203+
write( self % log_units(lun), '(a)' ) buffer
11991204
end do
12001205
end if
1201-
deallocate( self % buffer )
1202-
self % len_buffer = 0
1206+
deallocate( buffer )
12031207

12041208
contains
12051209

@@ -1243,26 +1247,26 @@ subroutine write_log_text_error_buffer( )
12431247
marker(column:column) = acaret
12441248
if ( self % add_blank_line ) then
12451249
if ( self % time_stamp ) then
1246-
self % buffer = new_line('a') // time_stamp() // &
1250+
buffer = new_line('a') // time_stamp() // &
12471251
new_line('a') // trim(location) // &
12481252
new_line('a') // new_line('a') // trim(line) // &
12491253
new_line('a') // marker // &
12501254
new_line('a') // 'Error: ' // trim(summary)
12511255
else
1252-
self % buffer = new_line('a') // trim(location) // &
1256+
buffer = new_line('a') // trim(location) // &
12531257
new_line('a') // new_line('a') // trim(line) // &
12541258
new_line('a') // marker // &
12551259
new_line('a') // 'Error: ' // trim(summary)
12561260
end if
12571261
else
12581262
if ( self % time_stamp ) then
1259-
self % buffer = time_stamp() // &
1263+
buffer = time_stamp() // &
12601264
new_line('a') // trim(location) // &
12611265
new_line('a') // new_line('a') // trim(line) // &
12621266
new_line('a') // marker // &
12631267
new_line('a') // 'Error: ' // trim(summary)
12641268
else
1265-
self % buffer = trim(location) // &
1269+
buffer = trim(location) // &
12661270
new_line('a') // new_line('a') // trim(line) // &
12671271
new_line('a') // marker // &
12681272
new_line('a') // 'Error: ' // trim(summary)

0 commit comments

Comments
 (0)