@@ -127,6 +127,55 @@ subroutine julia_eval_string_c(code) bind(c, name='julia_eval_string')
127127 use , intrinsic :: iso_c_binding, only: c_char
128128 character (kind= c_char), dimension (* ), intent (in ) :: code
129129 end subroutine
130+
131+ ! >
132+ ! ! @fn LibTrixi::trixi_version_major::trixi_version_major()
133+ ! !
134+ ! ! @brief Return major version number of libtrixi.
135+ ! !
136+ ! ! @return Major version number as integer.
137+ ! !
138+ ! ! @see @ref trixi_version_major_api_c "trixi_version_major (C API)"
139+ integer (c_int) function trixi_version_major() bind(c)
140+ use , intrinsic :: iso_c_binding, only: c_int
141+ end function
142+
143+ ! >
144+ ! ! @fn LibTrixi::trixi_version_minor::trixi_version_minor()
145+ ! !
146+ ! ! @brief Return minor version number of libtrixi.
147+ ! !
148+ ! ! @return Minor version number as integer.
149+ ! !
150+ ! ! @see @ref trixi_version_minor_api_c "trixi_version_minor (C API)"
151+ integer (c_int) function trixi_version_minor() bind(c)
152+ use , intrinsic :: iso_c_binding, only: c_int
153+ end function
154+
155+ ! >
156+ ! ! @fn LibTrixi::trixi_version_patch::trixi_version_patch()
157+ ! !
158+ ! ! @brief Return patch version number of libtrixi.
159+ ! !
160+ ! ! @return Patch version number as integer.
161+ ! !
162+ ! ! @see @ref trixi_version_patch_api_c "trixi_version_patch (C API)"
163+ integer (c_int) function trixi_version_patch() bind(c)
164+ use , intrinsic :: iso_c_binding, only: c_int
165+ end function
166+
167+ ! >
168+ ! ! @fn LibTrixi::trixi_version_c::trixi_version_c()
169+ ! !
170+ ! ! @brief Return full version string of libtrixi (C char pointer version).
171+ ! !
172+ ! ! @return Full version string as C char pointer.
173+ ! !
174+ ! ! @see @ref trixi_version "trixi_version (Fortran convenience version)"
175+ ! ! @see @ref trixi_version_api_c "trixi_version (C API)"
176+ type (c_ptr) function trixi_version_c() bind(c, name= ' trixi_version' )
177+ use , intrinsic :: iso_c_binding, only: c_ptr
178+ end function
130179 end interface
131180
132181 contains
@@ -205,6 +254,35 @@ subroutine julia_eval_string(code)
205254
206255 call julia_eval_string_c(trim (adjustl (code)) // c_null_char)
207256 end subroutine
257+
258+ ! >
259+ ! ! @brief Return full version string of libtrixi (Fortran convenience version).
260+ ! !
261+ ! ! @return Full version string as Fortran allocatable string.
262+ ! !
263+ ! ! @see @ref trixi_version_c::trixi_version_c
264+ ! ! "trixi_version_c (C char pointer version)"
265+ ! ! @see @ref trixi_version_api_c
266+ ! ! "trixi_version (C API)"
267+ function trixi_version ()
268+ use , intrinsic :: iso_c_binding, only: c_char, c_null_char, c_f_pointer
269+ character (len= :), allocatable :: trixi_version
270+ character (len= 128 , kind= c_char), pointer :: buffer
271+ integer :: length, i
272+
273+ ! Associate buffer with C pointer
274+ call c_f_pointer(trixi_version_c(), buffer)
275+
276+ ! Determine the actual length of the version string
277+ length = 0
278+ do i = 1 ,128
279+ if ( buffer(i:i) == c_null_char ) exit
280+ length = length + 1
281+ end do
282+
283+ ! Store relevant part in return value
284+ trixi_version = buffer(1 :(length + 1 ))
285+ end function
208286end module
209287
210288! >
0 commit comments