36 use,
intrinsic :: iso_c_binding
53 use kim_convert_string_module
, only: kim_convert_c_char_ptr_to_string
56 type(c_ptr)
recursive function get_sem_ver() &
57 bind(c, name=
"KIM_SEM_VER_GetSemVer")
58 use,
intrinsic :: iso_c_binding
60 end function get_sem_ver
62 character(len=*, kind=c_char),
intent(out) :: version
67 call kim_convert_c_char_ptr_to_string(p, version)
78 integer(c_int) recursive function is_less_than_func(lhs, rhs, &
80 bind(c, name=
"KIM_SEM_VER_IsLessThan")
81 use,
intrinsic :: iso_c_binding
83 character(c_char),
intent(in) :: lhs(*)
84 character(c_char),
intent(in) :: rhs(*)
85 integer(c_int),
intent(out) :: is_less_than
86 end function is_less_than_func
88 character(len=*, kind=c_char),
intent(in) :: lhs
89 character(len=*, kind=c_char),
intent(in) :: rhs
90 integer(c_int),
intent(out) :: is_less_than
91 integer(c_int),
intent(out) :: ierr
93 ierr = is_less_than_func(trim(lhs)//c_null_char, trim(rhs)//c_null_char, &
103 prerelease, build_metadata, ierr)
104 use kim_convert_string_module
, only: kim_convert_c_char_array_to_string
107 integer(c_int) recursive function parse_sem_ver( &
108 version, prerelease_length, build_metadata_length, major, minor, &
109 patch, prerelease, build_metadata) &
110 bind(c, name=
"KIM_SEM_VER_ParseSemVer")
111 use,
intrinsic :: iso_c_binding
113 character(c_char),
intent(in) :: version(*)
114 integer(c_int),
intent(in),
value :: prerelease_length
115 integer(c_int),
intent(in),
value :: build_metadata_length
116 integer(c_int),
intent(out) :: major
117 integer(c_int),
intent(out) :: minor
118 integer(c_int),
intent(out) :: patch
119 type(c_ptr),
intent(in),
value :: prerelease
120 type(c_ptr),
intent(in),
value :: build_metadata
121 end function parse_sem_ver
123 character(len=*, kind=c_char),
intent(in) :: version
124 integer(c_int),
intent(out) :: major
125 integer(c_int),
intent(out) :: minor
126 integer(c_int),
intent(out) :: patch
127 character(len=*, kind=c_char),
intent(out) :: prerelease
128 character(len=*, kind=c_char),
intent(out) :: build_metadata
129 integer(c_int),
intent(out) :: ierr
131 character(len=1, kind=c_char),
target :: prerelease_local(len(prerelease))
132 character(len=1, kind=c_char),
target :: &
133 build_metadata_local(len(build_metadata))
135 ierr = parse_sem_ver(trim(version)//c_null_char, len(prerelease), &
136 len(build_metadata), major, minor, patch, &
137 c_loc(prerelease_local), c_loc(build_metadata_local))
138 call kim_convert_c_char_array_to_string(prerelease_local, prerelease)
139 call kim_convert_c_char_array_to_string(build_metadata_local, &
recursive subroutine, public kim_get_sem_ver(version)
Get the KIM API complete Semantic Version string.
recursive subroutine, public kim_is_less_than(lhs, rhs, is_less_than, ierr)
Compare two Semantic Version strings.
recursive subroutine, public kim_parse_sem_ver(version, major, minor, patch, prerelease, build_metadata, ierr)
Parse Semantic Version string into its six components.
Contains routines related to the KIM API Semantic Version.