40 use,
intrinsic :: iso_c_binding
58 use kim_convert_string_module
, only : kim_convert_c_char_ptr_to_string
61 type(c_ptr)
recursive function get_sem_ver() &
62 bind(c, name=
"KIM_SEM_VER_GetSemVer")
63 use,
intrinsic :: iso_c_binding
65 end function get_sem_ver
67 character(len=*, kind=c_char),
intent(out) :: version
72 call kim_convert_c_char_ptr_to_string(p, version)
84 integer(c_int) recursive function is_less_than_func(lhs, rhs, &
85 is_less_than) bind(c, name="KIM_SEM_VER_IsLessThan")
86 use,
intrinsic :: iso_c_binding
88 character(c_char),
intent(in) :: lhs(*)
89 character(c_char),
intent(in) :: rhs(*)
90 integer(c_int),
intent(out) :: is_less_than
91 end function is_less_than_func
93 character(len=*, kind=c_char),
intent(in) :: lhs
94 character(len=*, kind=c_char),
intent(in) :: rhs
95 integer(c_int),
intent(out) :: is_less_than
96 integer(c_int),
intent(out) :: ierr
98 ierr = is_less_than_func(trim(lhs)//c_null_char, trim(rhs)//c_null_char, &
108 prerelease, build_metadata, ierr)
109 use kim_convert_string_module
, only : kim_convert_c_char_array_to_string
112 integer(c_int) recursive function parse_sem_ver(version, &
113 prerelease_length, build_metadata_length, major, minor, patch, &
114 prerelease, build_metadata) bind(c, name="KIM_SEM_VER_ParseSemVer")
115 use,
intrinsic :: iso_c_binding
117 character(c_char),
intent(in) :: version(*)
118 integer(c_int),
intent(in),
value :: prerelease_length
119 integer(c_int),
intent(in),
value :: build_metadata_length
120 integer(c_int),
intent(out) :: major
121 integer(c_int),
intent(out) :: minor
122 integer(c_int),
intent(out) :: patch
123 type(c_ptr),
intent(in),
value :: prerelease
124 type(c_ptr),
intent(in),
value :: build_metadata
125 end function parse_sem_ver
127 character(len=*, kind=c_char),
intent(in) :: version
128 integer(c_int),
intent(out) :: major
129 integer(c_int),
intent(out) :: minor
130 integer(c_int),
intent(out) :: patch
131 character(len=*, kind=c_char),
intent(out) :: prerelease
132 character(len=*, kind=c_char),
intent(out) :: build_metadata
133 integer(c_int),
intent(out) :: ierr
135 character(len=1, kind=c_char),
target :: prerelease_local(len(prerelease))
136 character(len=1, kind=c_char),
target :: &
137 build_metadata_local(len(build_metadata))
139 ierr = parse_sem_ver(trim(version)//c_null_char, len(prerelease), &
140 len(build_metadata), major, minor, patch, c_loc(prerelease_local), &
141 c_loc(build_metadata_local))
142 call kim_convert_c_char_array_to_string(prerelease_local, prerelease)
143 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.