rdb_ocean_derived_catalog_name Function

public function rdb_ocean_derived_catalog_name(idx, buf, cap) result(len_out) bind(c, name="rdb_ocean_derived_catalog_name")

Name of derived-catalog entry idx (0-based, < the size above).

Arguments

Type IntentOptional Attributes Name
integer(kind=c_int), intent(in), value :: idx
character(kind=c_char, len=1), intent(out) :: buf(cap)
integer(kind=c_int), intent(in), value :: cap

Return Value integer(kind=c_int)


Calls

proc~~rdb_ocean_derived_catalog_name~~CallsGraph proc~rdb_ocean_derived_catalog_name rdb_ocean_derived_catalog_name proc~derived_catalog_name derived_catalog_name proc~rdb_ocean_derived_catalog_name->proc~derived_catalog_name proc~derived_catalog_size derived_catalog_size proc~rdb_ocean_derived_catalog_name->proc~derived_catalog_size proc~ensure_catalog_initialised ensure_catalog_initialised proc~derived_catalog_name->proc~ensure_catalog_initialised proc~derived_catalog_size->proc~ensure_catalog_initialised

Variables

Type Visibility Attributes Name Initial
integer, private :: i
integer, private :: n
character(len=64), private :: name
integer, private :: ncopy

Source Code

   function rdb_ocean_derived_catalog_name(idx, buf, cap) result(len_out) &
      bind(c, name="rdb_ocean_derived_catalog_name")
      !! Name of derived-catalog entry `idx` (0-based, < the size above).
      integer(c_int), intent(in), value :: idx
      integer(c_int), intent(in), value :: cap
      character(kind=c_char), intent(out) :: buf(cap)
      integer(c_int) :: len_out

      character(len=64) :: name
      integer :: n, ncopy, i

      len_out = 0_c_int
      if (idx < 0_c_int .or. idx >= int(derived_catalog_size(), c_int)) return
      if (cap <= 0_c_int) return

      name = derived_catalog_name(int(idx) + 1)
      n = len_trim(name)
      len_out = int(n, c_int)
      ncopy = min(n, int(cap))
      do i = 1, ncopy
         buf(i) = name(i:i)
      end do
      if (ncopy < cap) buf(ncopy + 1) = achar(0)
   end function rdb_ocean_derived_catalog_name