Commit 61bd2305 authored by Ralf Mueller's avatar Ralf Mueller
Browse files

improve regext for integer types:

* use word-boundary
* avoid false types like int_64_t
* adopt the f2003 example for large integer for dates
* add autogenerated mo_cdo.f90
parent 933c21e6
......@@ -72,7 +72,7 @@
! Loop over the number of time steps
DO tsID = 0, nts-1
! Set the verification date to 1985-01-01 + tsID
CALL taxisDefVdate(taxisID, 19850101+tsID)
CALL taxisDefVdate(taxisID, INT(19850101+tsID,8))
! Set the verification time to 12:00:00
CALL taxisDefVtime(taxisID, 120000)
! Define the time step
......
......@@ -661,7 +661,7 @@ def matchTemplate(regexString, matchString)
regexString = regexString.gsub("<opaqueTypes>", opaqueTypesString)
publicTypesString = '(' + $publicTypes.collect{ |type| type }.join('|') + ')'
regexString = regexString.gsub('<publicTypes>', publicTypesString)
regexString = regexString.gsub('<integerTypes>', '(short|int|long|size_t|intmax_t|int_(least|fast)(8|16|32|64)_t)')
regexString = regexString.gsub('<integerTypes>', '(\bshort\b|\bint\b|\blong\b|\bsize_t\b|\bintmax_t\b|\bint_(least|fast)(8|16|32|64)_t\b|\bint(8|16|32|64)_t\b)')
regexString = regexString.gsub('<floatTypes>', '(float|double)')
return Regexp.new(regexString).match(matchString)
end
......
......@@ -489,6 +489,9 @@ module mo_cdi
integer(c_int), public, parameter :: CDI_KEY_MPIMUSER = 815
integer(c_int), public, parameter :: CDI_KEY_REVSTATUS = 816
integer(c_int), public, parameter :: CDI_KEY_REVNUMBER = 817
integer(c_int), public, parameter :: CDI_KEY_GRIB2LOCALSECTIONNUMBER = 818
integer(c_int), public, parameter :: CDI_KEY_SECTION2PADDINGLENGTH = 819
integer(c_int), public, parameter :: CDI_KEY_SECTION2PADDING = 820
public :: cdiDefKeyInt
public :: cdiInqKeyInt
public :: cdiDefKeyBytes
......@@ -565,8 +568,10 @@ module mo_cdi
public :: gridInqNvertex
public :: gridDefXbounds
public :: gridInqXbounds
public :: gridInqXboundsPart
public :: gridDefYbounds
public :: gridInqYbounds
public :: gridInqYboundsPart
public :: gridDefRowlon
public :: gridInqRowlon
public :: gridChangeType
......@@ -766,8 +771,8 @@ module mo_cdi
subroutine cdiDecodeDate(date_dummy, year_dummy, month_dummy, day_dummy)&
& bind(c, name = 'cdiDecodeDate')
import c_int
integer(c_int), value :: date_dummy
import c_int, c_int64_t
integer(c_int64_t), value :: date_dummy
integer(c_int), intent(inout) :: year_dummy
integer(c_int), intent(inout) :: month_dummy
integer(c_int), intent(inout) :: day_dummy
......@@ -775,11 +780,11 @@ module mo_cdi
function cdiEncodeDate(year_dummy, month_dummy, day_dummy) bind(c, name =&
& 'cdiEncodeDate') result(f_result)
import c_int
import c_int, c_int64_t
integer(c_int), value :: year_dummy
integer(c_int), value :: month_dummy
integer(c_int), value :: day_dummy
integer(c_int) :: f_result
integer(c_int64_t) :: f_result
end function cdiEncodeDate
subroutine cdiDecodeTime(time_dummy, hour_dummy, minute_dummy,&
......@@ -2236,6 +2241,16 @@ module mo_cdi
integer(c_size_t) :: f_result
end function gridInqXbounds
function gridInqXboundsPart(gridID_dummy, start_dummy, size_dummy,&
& xbounds_dummy) bind(c, name = 'gridInqXboundsPart') result(f_result)
import c_double, c_int, c_size_t
integer(c_int), value :: gridID_dummy
integer(c_int), value :: start_dummy
integer(c_size_t), value :: size_dummy
real(c_double), intent(inout) :: xbounds_dummy(*)
integer(c_size_t) :: f_result
end function gridInqXboundsPart
subroutine gridDefYbounds(gridID_dummy, ybounds_dummy) bind(c, name =&
& 'gridDefYbounds')
import c_double, c_int
......@@ -2251,6 +2266,16 @@ module mo_cdi
integer(c_size_t) :: f_result
end function gridInqYbounds
function gridInqYboundsPart(gridID_dummy, start_dummy, size_dummy,&
& ybounds_dummy) bind(c, name = 'gridInqYboundsPart') result(f_result)
import c_double, c_int, c_size_t
integer(c_int), value :: gridID_dummy
integer(c_int), value :: start_dummy
integer(c_size_t), value :: size_dummy
real(c_double), intent(inout) :: ybounds_dummy(*)
integer(c_size_t) :: f_result
end function gridInqYboundsPart
subroutine gridDefRowlon(gridID_dummy, nrowlon_dummy, rowlon_dummy) bind(c,&
& name = 'gridDefRowlon')
import c_int
......@@ -2596,9 +2621,9 @@ module mo_cdi
subroutine taxisDefVdate(taxisID_dummy, date_dummy) bind(c, name =&
& 'taxisDefVdate')
import c_int
import c_int, c_int64_t
integer(c_int), value :: taxisID_dummy
integer(c_int), value :: date_dummy
integer(c_int64_t), value :: date_dummy
end subroutine taxisDefVdate
subroutine taxisDefVtime(taxisID_dummy, time_dummy) bind(c, name =&
......@@ -2610,9 +2635,9 @@ module mo_cdi
function taxisInqVdate(taxisID_dummy) bind(c, name = 'taxisInqVdate')&
& result(f_result)
import c_int
import c_int, c_int64_t
integer(c_int), value :: taxisID_dummy
integer(c_int) :: f_result
integer(c_int64_t) :: f_result
end function taxisInqVdate
function taxisInqVtime(taxisID_dummy) bind(c, name = 'taxisInqVtime')&
......@@ -2624,9 +2649,9 @@ module mo_cdi
subroutine taxisDefRdate(taxisID_dummy, date_dummy) bind(c, name =&
& 'taxisDefRdate')
import c_int
import c_int, c_int64_t
integer(c_int), value :: taxisID_dummy
integer(c_int), value :: date_dummy
integer(c_int64_t), value :: date_dummy
end subroutine taxisDefRdate
subroutine taxisDefRtime(taxisID_dummy, time_dummy) bind(c, name =&
......@@ -2638,9 +2663,9 @@ module mo_cdi
function taxisInqRdate(taxisID_dummy) bind(c, name = 'taxisInqRdate')&
& result(f_result)
import c_int
import c_int, c_int64_t
integer(c_int), value :: taxisID_dummy
integer(c_int) :: f_result
integer(c_int64_t) :: f_result
end function taxisInqRdate
function taxisInqRtime(taxisID_dummy) bind(c, name = 'taxisInqRtime')&
......@@ -2652,9 +2677,9 @@ module mo_cdi
subroutine taxisDefFdate(taxisID_dummy, date_dummy) bind(c, name =&
& 'taxisDefFdate')
import c_int
import c_int, c_int64_t
integer(c_int), value :: taxisID_dummy
integer(c_int), value :: date_dummy
integer(c_int64_t), value :: date_dummy
end subroutine taxisDefFdate
subroutine taxisDefFtime(taxisID_dummy, time_dummy) bind(c, name =&
......@@ -2666,9 +2691,9 @@ module mo_cdi
function taxisInqFdate(taxisID_dummy) bind(c, name = 'taxisInqFdate')&
& result(f_result)
import c_int
import c_int, c_int64_t
integer(c_int), value :: taxisID_dummy
integer(c_int) :: f_result
integer(c_int64_t) :: f_result
end function taxisInqFdate
function taxisInqFtime(taxisID_dummy) bind(c, name = 'taxisInqFtime')&
......@@ -2698,10 +2723,10 @@ module mo_cdi
subroutine taxisDefVdateBounds(taxisID_dummy, vdate_lb_dummy,&
& vdate_ub_dummy) bind(c, name = 'taxisDefVdateBounds')
import c_int
import c_int, c_int64_t
integer(c_int), value :: taxisID_dummy
integer(c_int), value :: vdate_lb_dummy
integer(c_int), value :: vdate_ub_dummy
integer(c_int64_t), value :: vdate_lb_dummy
integer(c_int64_t), value :: vdate_ub_dummy
end subroutine taxisDefVdateBounds
subroutine taxisDefVtimeBounds(taxisID_dummy, vtime_lb_dummy,&
......@@ -2714,10 +2739,10 @@ module mo_cdi
subroutine taxisInqVdateBounds(taxisID_dummy, vdate_lb_dummy,&
& vdate_ub_dummy) bind(c, name = 'taxisInqVdateBounds')
import c_int
import c_int, c_int64_t
integer(c_int), value :: taxisID_dummy
integer(c_int), intent(inout) :: vdate_lb_dummy
integer(c_int), intent(inout) :: vdate_ub_dummy
integer(c_int64_t), intent(inout) :: vdate_lb_dummy
integer(c_int64_t), intent(inout) :: vdate_ub_dummy
end subroutine taxisInqVdateBounds
subroutine taxisInqVtimeBounds(taxisID_dummy, vtime_lb_dummy,&
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment