GCC Code Coverage Report
Directory: ./ Exec Total Coverage
File: phylmd/buffer_mod.F90 Lines: 0 28 0.0 %
Date: 2023-06-30 12:56:34 Branches: 0 24 0.0 %

Line Branch Exec Source
1
MODULE buffer_mod
2
3
PRIVATE
4
  REAL,PARAMETER :: grow_factor=1.5
5
6
  INTEGER, POINTER, SAVE :: buffer_i(:)
7
  INTEGER,SAVE :: size_buffer_i = 0
8
!$OMP THREADPRIVATE(buffer_i,size_buffer_i)
9
10
  REAL,POINTER,SAVE      :: buffer_r(:)
11
  INTEGER,SAVE :: size_buffer_r = 0
12
!$OMP THREADPRIVATE(buffer_r,size_buffer_r)
13
14
  LOGICAL,POINTER,SAVE   :: buffer_l(:)
15
  INTEGER,SAVE :: size_buffer_l = 0
16
!$OMP THREADPRIVATE(buffer_l,size_buffer_l)
17
18
  CHARACTER,POINTER,SAVE :: buffer_c(:)
19
  INTEGER,SAVE :: size_buffer_c = 0
20
!$OMP THREADPRIVATE(buffer_c,size_buffer_c)
21
22
INTERFACE get_buffer
23
  MODULE PROCEDURE get_buffer_i, get_buffer_r, get_buffer_l, get_buffer_c
24
END INTERFACE
25
26
PUBLIC :: get_buffer
27
28
CONTAINS
29
30
  SUBROUTINE get_buffer_i(buff,buff_size)
31
  IMPLICIT NONE
32
    INTEGER,POINTER    :: buff(:)
33
    INTEGER,INTENT(IN) :: buff_size
34
35
    IF (buff_size>size_buffer_i) THEN
36
      DEALLOCATE(buffer_i)
37
      size_buffer_i=MAX(2,INT(size_buffer_i*grow_factor))
38
      ALLOCATE(buffer_i(size_buffer_i))
39
    ENDIF
40
41
    buff=>buffer_i
42
  END SUBROUTINE get_buffer_i
43
44
  SUBROUTINE get_buffer_r(buff,buff_size)
45
  IMPLICIT NONE
46
    REAL,POINTER       :: buff(:)
47
    INTEGER,INTENT(IN) :: buff_size
48
49
    IF (buff_size>size_buffer_r) THEN
50
      DEALLOCATE(buffer_r)
51
      size_buffer_r=MAX(2,INT(size_buffer_r*grow_factor))
52
      ALLOCATE(buffer_r(size_buffer_r))
53
    ENDIF
54
55
    buff=>buffer_r
56
  END SUBROUTINE get_buffer_r
57
58
  SUBROUTINE get_buffer_l(buff,buff_size)
59
  IMPLICIT NONE
60
    LOGICAL,POINTER    :: buff(:)
61
    INTEGER,INTENT(IN) :: buff_size
62
63
    IF (buff_size>size_buffer_l) THEN
64
      DEALLOCATE(buffer_l)
65
      size_buffer_l=MAX(2,INT(size_buffer_l*grow_factor))
66
      ALLOCATE(buffer_l(size_buffer_l))
67
    ENDIF
68
69
    buff=>buffer_l
70
  END SUBROUTINE get_buffer_l
71
72
  SUBROUTINE get_buffer_c(buff,buff_size)
73
  IMPLICIT NONE
74
    CHARACTER,POINTER  :: buff(:)
75
    INTEGER,INTENT(IN) :: buff_size
76
77
    IF (buff_size>size_buffer_c) THEN
78
      DEALLOCATE(buffer_c)
79
      size_buffer_c=MAX(2,INT(size_buffer_c*grow_factor))
80
      ALLOCATE(buffer_c(size_buffer_c))
81
    ENDIF
82
83
    buff=>buffer_c
84
  END SUBROUTINE get_buffer_c
85
86
END MODULE buffer_mod