39 use,
intrinsic :: iso_c_binding
56 use kim_convert_string_module
, only: kim_convert_c_char_ptr_to_string
59 type(c_ptr)
recursive function get_sem_ver() &
60 bind(c, name=
"KIM_SEM_VER_GetSemVer")
61 use,
intrinsic :: iso_c_binding
63 end function get_sem_ver
65 character(len=*, kind=c_char),
intent(out) :: version
70 call kim_convert_c_char_ptr_to_string(p, version)
81 integer(c_int) recursive function is_less_than_func(lhs, rhs, &
83 bind(c, name=
"KIM_SEM_VER_IsLessThan")
84 use,
intrinsic :: iso_c_binding
86 character(c_char),
intent(in) :: lhs(*)
87 character(c_char),
intent(in) :: rhs(*)
88 integer(c_int),
intent(out) :: is_less_than
89 end function is_less_than_func
91 character(len=*, kind=c_char),
intent(in) :: lhs
92 character(len=*, kind=c_char),
intent(in) :: rhs
93 integer(c_int),
intent(out) :: is_less_than
94 integer(c_int),
intent(out) :: ierr
96 ierr = is_less_than_func(trim(lhs)//c_null_char, trim(rhs)//c_null_char, &
106 prerelease, build_metadata, ierr)
107 use kim_convert_string_module
, only: kim_convert_c_char_array_to_string
110 integer(c_int) recursive function parse_sem_ver( &
111 version, prerelease_length, build_metadata_length, major, minor, &
112 patch, prerelease, build_metadata) &
113 bind(c, name=
"KIM_SEM_VER_ParseSemVer")
114 use,
intrinsic :: iso_c_binding
116 character(c_char),
intent(in) :: version(*)
117 integer(c_int),
intent(in),
value :: prerelease_length
118 integer(c_int),
intent(in),
value :: build_metadata_length
119 integer(c_int),
intent(out) :: major
120 integer(c_int),
intent(out) :: minor
121 integer(c_int),
intent(out) :: patch
122 type(c_ptr),
intent(in),
value :: prerelease
123 type(c_ptr),
intent(in),
value :: build_metadata
124 end function parse_sem_ver
126 character(len=*, kind=c_char),
intent(in) :: version
127 integer(c_int),
intent(out) :: major
128 integer(c_int),
intent(out) :: minor
129 integer(c_int),
intent(out) :: patch
130 character(len=*, kind=c_char),
intent(out) :: prerelease
131 character(len=*, kind=c_char),
intent(out) :: build_metadata
132 integer(c_int),
intent(out) :: ierr
134 character(len=1, kind=c_char),
target :: prerelease_local(len(prerelease))
135 character(len=1, kind=c_char),
target :: &
136 build_metadata_local(len(build_metadata))
138 ierr = parse_sem_ver(trim(version)//c_null_char, len(prerelease), &
139 len(build_metadata), major, minor, patch, &
140 c_loc(prerelease_local), c_loc(build_metadata_local))
141 call kim_convert_c_char_array_to_string(prerelease_local, prerelease)
142 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.