Construct new preprocess array from a TOML data structure.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(preprocess_config_t), | intent(out), | allocatable | :: | preprocessors(:) |
Instance of the preprocess configuration |
|
type(toml_table), | intent(inout) | :: | table |
Instance of the TOML data structure |
||
type(error_t), | intent(out), | allocatable | :: | error |
Error handling |
subroutine new_preprocessors(preprocessors, table, error)
!> Instance of the preprocess configuration
type(preprocess_config_t), allocatable, intent(out) :: preprocessors(:)
!> Instance of the TOML data structure
type(toml_table), intent(inout) :: table
!> Error handling
type(error_t), allocatable, intent(out) :: error
type(toml_table), pointer :: node
type(toml_key), allocatable :: list(:)
integer :: iprep, stat
call table%get_keys(list)
! An empty table is not allowed
if (size(list) == 0) then
call syntax_error(error, "No preprocessors defined")
end if
allocate(preprocessors(size(list)))
do iprep = 1, size(list)
call get_value(table, list(iprep)%key, node, stat=stat)
if (stat /= toml_stat%success) then
call syntax_error(error, "Preprocessor "//list(iprep)%key//" must be a table entry")
exit
end if
call new_preprocess_config(preprocessors(iprep), node, error)
if (allocated(error)) exit
end do
end subroutine new_preprocessors