!   Copyright 2003, 2004 Free Software Foundation, Inc.
!   Contributed by Kejia Zhao <kejia_zh@yahoo.com.cn>
!
!This file is part of the GNU Fortran 95 runtime library (libgfor).
!
!GNU libgfor is free software; you can redistribute it and/or
!modify it under the terms of the GNU Lesser General Public
!License as published by the Free Software Foundation; either
!version 2.1 of the License, or (at your option) any later version.
!
!GNU libgfor is distributed in the hope that it will be useful,
!but WITHOUT ANY WARRANTY; without even the implied warranty of
!MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
!GNU Lesser General Public License for more details.
!
!You should have received a copy of the GNU Lesser General Public
!License along with libgfor; see the file COPYING.  If not,
!write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
!Boston, MA 02111-1307, USA.
!

function selected_int_kind (r)
  implicit none
  integer, intent (in) :: r
  integer :: selected_int_kind
  integer :: i
  ! Integer kind_range table
  type :: int_info
    integer :: kind
    integer :: range
  end type int_info

  include "selected_int_kind.inc"

  do i = 1, c
    if (r <= int_infos (i) % range) then
      selected_int_kind = int_infos (i) % kind
      return
    end if
  end do
  selected_int_kind = -1
  return
end function
