LCOV - code coverage report
Current view: top level - src/input - cp_parser_inpp_types.F (source / functions) Coverage Total Hit
Test: CP2K Regtests (git:42dac4a) Lines: 96.0 % 25 24
Test Date: 2025-07-25 12:55:17 Functions: 66.7 % 3 2

            Line data    Source code
       1              : !--------------------------------------------------------------------------------------------------!
       2              : !   CP2K: A general program to perform molecular dynamics simulations                              !
       3              : !   Copyright 2000-2025 CP2K developers group <https://cp2k.org>                                   !
       4              : !                                                                                                  !
       5              : !   SPDX-License-Identifier: GPL-2.0-or-later                                                      !
       6              : !--------------------------------------------------------------------------------------------------!
       7              : 
       8              : ! **************************************************************************************************
       9              : !> \brief a module to allow simple internal preprocessing in input files.
      10              : !> \par History
      11              : !>      - standalone proof-of-concept implementation (20.02.2008,AK)
      12              : !>      - integration into cp2k (22.02.2008,tlaino)
      13              : !>      - variables added (25.02.2008,AK)
      14              : !> \author Axel Kohlmeyer [AK] - CMM/UPenn Philadelphia
      15              : !> \date 25.02.2008
      16              : ! **************************************************************************************************
      17              : MODULE cp_parser_inpp_types
      18              : 
      19              :    USE kinds, ONLY: default_path_length
      20              : #include "../base/base_uses.f90"
      21              : 
      22              :    IMPLICIT NONE
      23              :    PRIVATE
      24              : 
      25              :    TYPE inpp_type
      26              :       ! for '@INCLUDE "some_file.inc"'
      27              :       ! currently open include file stack pointer
      28              :       INTEGER                              :: io_stack_level = 0
      29              :       ! include file stack data
      30              :       INTEGER, POINTER, DIMENSION(:)       :: io_stack_channel => NULL(), &
      31              :                                               io_stack_lineno => NULL()
      32              :       CHARACTER(len=default_path_length), &
      33              :          POINTER, DIMENSION(:)             :: io_stack_filename => NULL()
      34              :       ! for '@SET VAR value' and '${VAR}'
      35              :       ! table size
      36              :       INTEGER                              :: num_variables = 0
      37              :       ! table entries
      38              :       CHARACTER(len=default_path_length), &
      39              :          POINTER, DIMENSION(:)       :: variable_name => NULL()
      40              :       CHARACTER(len=default_path_length), &
      41              :          POINTER, DIMENSION(:)       :: variable_value => NULL()
      42              :    END TYPE inpp_type
      43              : 
      44              :    PUBLIC :: inpp_type, create_inpp_type, release_inpp_type
      45              :    CHARACTER(len=*), PARAMETER, PRIVATE :: moduleN = 'cp_parser_inpp_types'
      46              : 
      47              : CONTAINS
      48              : 
      49              : ! ****************************************************************************
      50              : !> \brief creates the internal preprocessing type
      51              : !> \param inpp ...
      52              : !> \param initial_variables ...
      53              : !> \date  22.02.2008
      54              : !> \author Teodoro Laino [tlaino] - University of Zurich
      55              : ! **************************************************************************************************
      56        54061 :    SUBROUTINE create_inpp_type(inpp, initial_variables)
      57              :       TYPE(inpp_type), POINTER                           :: inpp
      58              :       CHARACTER(len=default_path_length), &
      59              :          DIMENSION(:, :), POINTER                        :: initial_variables
      60              : 
      61        54061 :       CPASSERT(.NOT. ASSOCIATED(inpp))
      62        54061 :       ALLOCATE (inpp)
      63              : 
      64        54061 :       IF (ASSOCIATED(initial_variables)) THEN
      65           86 :          inpp%num_variables = SIZE(initial_variables, 2)
      66          258 :          ALLOCATE (inpp%variable_name(inpp%num_variables))
      67          516 :          inpp%variable_name = initial_variables(1, :)
      68          258 :          ALLOCATE (inpp%variable_value(inpp%num_variables))
      69          516 :          inpp%variable_value = initial_variables(2, :)
      70              :       END IF
      71              : 
      72        54061 :    END SUBROUTINE create_inpp_type
      73              : 
      74              : ! ****************************************************************************
      75              : !> \brief releases the internal preprocessing type
      76              : !> \param inpp ...
      77              : !> \date  22.02.2008
      78              : !> \author Teodoro Laino [tlaino] - University of Zurich
      79              : ! **************************************************************************************************
      80        54061 :    SUBROUTINE release_inpp_type(inpp)
      81              :       TYPE(inpp_type), POINTER                           :: inpp
      82              : 
      83        54061 :       CPASSERT(ASSOCIATED(inpp))
      84              : 
      85        54061 :       IF (ASSOCIATED(inpp%io_stack_channel)) THEN
      86          182 :          DEALLOCATE (inpp%io_stack_channel)
      87              :       END IF
      88        54061 :       IF (ASSOCIATED(inpp%io_stack_lineno)) THEN
      89          182 :          DEALLOCATE (inpp%io_stack_lineno)
      90              :       END IF
      91        54061 :       IF (ASSOCIATED(inpp%io_stack_filename)) THEN
      92          182 :          DEALLOCATE (inpp%io_stack_filename)
      93              :       END IF
      94              : 
      95        54061 :       IF (ASSOCIATED(inpp%variable_name)) THEN
      96          425 :          DEALLOCATE (inpp%variable_name)
      97              :       END IF
      98        54061 :       IF (ASSOCIATED(inpp%variable_value)) THEN
      99          425 :          DEALLOCATE (inpp%variable_value)
     100              :       END IF
     101              : 
     102        54061 :       DEALLOCATE (inpp)
     103        54061 :    END SUBROUTINE release_inpp_type
     104              : 
     105            0 : END MODULE cp_parser_inpp_types
        

Generated by: LCOV version 2.0-1