| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
 100
 101
 102
 103
 104
 105
 106
 107
 108
 109
 110
 111
 112
 113
 114
 115
 116
 
 | !
! CDDL HEADER START
!
! The contents of this file are subject to the terms of the Common Development
! and Distribution License Version 1.0 (the "License").
!
! You can obtain a copy of the license at
! http://www.opensource.org/licenses/CDDL-1.0.  See the License for the
! specific language governing permissions and limitations under the License.
!
! When distributing Covered Code, include this CDDL HEADER in each file and
! include the License file in a prominent location with the name LICENSE.CDDL.
! If applicable, add the following below this CDDL HEADER, with the fields
! enclosed by brackets "[]" replaced with your own identifying information:
!
! Portions Copyright (c) [yyyy] [name of copyright owner]. All rights reserved.
!
! CDDL HEADER END
!
!
! Copyright (c) 2016--2018, Regents of the University of Minnesota.
! All rights reserved.
!
! Contributors:
!    Ryan S. Elliott
!
!
! Release: This file is part of the kim-api.git repository.
!
module kim_numbering_module
  use, intrinsic :: iso_c_binding
  implicit none
  private
  public &
    kim_numbering_type, &
    kim_numbering_from_string, &
    operator (.eq.), &
    operator (.ne.), &
    kim_numbering_string, &
    kim_numbering_zero_based, &
    kim_numbering_one_based, &
    kim_numbering_get_number_of_numberings, &
    kim_numbering_get_numbering
  type, bind(c) :: kim_numbering_type
    integer(c_int) :: numbering_id
  end type kim_numbering_type
  type(kim_numbering_type), protected, &
    bind(c, name="KIM_NUMBERING_zeroBased") &
    :: kim_numbering_zero_based
  type(kim_numbering_type), protected, &
    bind(c, name="KIM_NUMBERING_oneBased") &
    :: kim_numbering_one_based
  interface operator (.eq.)
    logical function kim_numbering_equal(left, right)
      use, intrinsic :: iso_c_binding
      import kim_numbering_type
      implicit none
      type(kim_numbering_type), intent(in) :: left
      type(kim_numbering_type), intent(in) :: right
    end function kim_numbering_equal
  end interface operator (.eq.)
  interface operator (.ne.)
    logical function kim_numbering_not_equal(left, right)
      use, intrinsic :: iso_c_binding
      import kim_numbering_type
      implicit none
      type(kim_numbering_type), intent(in) :: left
      type(kim_numbering_type), intent(in) :: right
    end function kim_numbering_not_equal
  end interface operator (.ne.)
  interface
    subroutine kim_numbering_from_string(string, numbering)
      use, intrinsic :: iso_c_binding
      import kim_numbering_type
      implicit none
      character(len=*, kind=c_char), intent(in) :: string
      type(kim_numbering_type), intent(out) :: numbering
    end subroutine kim_numbering_from_string
    subroutine kim_numbering_string(numbering, string)
      use, intrinsic :: iso_c_binding
      import kim_numbering_type
      implicit none
      type(kim_numbering_type), intent(in), value :: numbering
      character(len=*, kind=c_char), intent(out) :: string
    end subroutine kim_numbering_string
    subroutine kim_numbering_get_number_of_numberings(number_of_numberings)
      use, intrinsic :: iso_c_binding
      implicit none
      integer(c_int), intent(out) :: number_of_numberings
    end subroutine kim_numbering_get_number_of_numberings
    subroutine kim_numbering_get_numbering(index, numbering, ierr)
      use, intrinsic :: iso_c_binding
      import kim_numbering_type
      implicit none
      integer(c_int), intent(in), value :: index
      type(kim_numbering_type), intent(out) :: numbering
      integer(c_int), intent(out) :: ierr
    end subroutine kim_numbering_get_numbering
  end interface
end module kim_numbering_module
 |