-
Notifications
You must be signed in to change notification settings - Fork 46
Supplementary routines
This module contains some supplementary material useful for writing GTK programs in Fortran. The functions are not listed in the gtk-fortran-index.csv file, either because they are not (currenty) extracted by the automatic tools, or because they are just convenient functions added here.
module gtk_supCurrently it contains:
- GTYPE: Definitions of the integer length and the values for each type.
- GtkTreeIter: Type definition, and its clear procedure.
- GValue: Pseudo type definition, and its clear procedure.
- GtkTextIter: Type definition.
- GError: Type definition.
- Interfaces for string conversions.
- Boolean conversion routines.
- Miscellaneous functions.
The various Gtype definitions from the gtype.h file.
These structures are always allocated in the calling program, rather than being declared as pointers and leaving GTK to allocate them.
- GtkTreeIter, Iterator for TreeView widgets
- GtkTextIter, Iterator for TextView widgets
- GValue, A value container.
GError is a transparent structure that returns error information.
subroutine clear_gtktreeiter(iter)
type(gtktreeiter), intent(inout) :: iterClear a tree iterator
| Argument | Type | Required? | Description |
|---|---|---|---|
| ITER | gtktreeiter | required | The iterator to clear |
subroutine clear_gvalue(gval)
type(gvalue), intent(inout) :: gvalClear a GValue
| Argument | Type | Required? | Description |
|---|---|---|---|
| GVAL | gvalue | required | The GValue to clear. |
subroutine c_f_string_copy_alloc(the_ptr, f_string)
type(c_ptr), intent(in) :: the_ptr
character(:), intent(out), allocatable :: f_string
character(kind=c_char), pointer :: f_array(:)
integer :: iCreate a default character deferred length allocatable copy of the value of a C string. This function should be preferred to c_f_string_copy() when using a Fortran>=2008 compiler. An advantage is that the trim() function will generally not be needed.
| Argument | Type | Required? | Description |
|---|---|---|---|
| THE_PTR | string | required | The C string to be converted. |
| F_STRING | f_string | required | A Scalar Fortran string. |
subroutine c_f_string_copy(the_ptr, f_string, status)
type(c_ptr), intent(in) :: the_ptr
character(*), intent(out) :: f_string
integer, intent(out), optional :: status
character(kind=c_char), pointer :: f_array(:)
integer :: iCreate a default character fixed length copy of the value of a C string.
| Argument | Type | Required? | Description |
|---|---|---|---|
| THE_PTR | string | required | The C string to be converted. |
| F_STRING | f_string | required | A Scalar Fortran string. |
| STATUS | integer | optional | Is set to -1 if the Fortran string is too short. |
If the Fortran string is too short, the C string is truncated.
subroutine c_f_string_chars(c_string, f_string)
character(len=1, kind=C_char), intent(in) :: c_string(*)
character(len=*), intent(out) :: f_string
integer :: iCopy a C string, passed as a char-array reference, to a Fortran string. String routine from C_interface_module by Joseph M. Krahn: http://fortranwiki.org/fortran/show/c_interface_module
| Argument | Type | Required? | Description |
|---|---|---|---|
| C_STRING | chars array | required | The C chars array to be converted. |
| F_STRING | f_string | required | A Scalar Fortran string. |
subroutine c_f_string_ptr(c_string, f_string)
type(C_ptr), intent(in) :: c_string
character(len=*), intent(out) :: f_string
character(len=1, kind=C_char), dimension(:), pointer :: p_chars
integer :: iCopy a C string, passed by pointer, to a Fortran string. If the C pointer is NULL, the Fortran string is blanked. c_string must be NUL terminated, or at least as long as f_string. If c_string is longer, it is truncated. Otherwise, f_string is blank-padded at the end.
| Argument | Type | Required? | Description |
|---|---|---|---|
| C_STRING | string | required | The C string to be converted. |
| F_STRING | f_string | required | A Scalar Fortran string. |
subroutine convert_c_string_scalar(textptr, f_string, status)
character(kind=c_char), dimension(:), intent(in) :: textptr
character(len=*), intent(out) :: f_string
integer(c_int), intent(out), optional :: statusConvert a null-terminated C-string to a Fortran string
| Argument | Type | Required? | Description |
|---|---|---|---|
| TEXTPTR | string | required | The C string to be converted. |
| F_STRING | f_string | required | A Scalar Fortran string. |
| STATUS | integer | optional | Is set to -1 if the Fortran string is too short. |
Usually called via the convert_c_string generic interface.
subroutine convert_c_string_array(textptr, f_string, status)
character(kind=c_char), dimension(:), intent(in) :: textptr
character(len=*), intent(out), dimension(:), allocatable :: f_string
integer, intent(out), optional :: statusConvert a null-terminated LF-separated C-string into a Fortran string array
| Argument | Type | Required? | Description |
|---|---|---|---|
| TEXTPTR | string | required | The C string to be converted. |
| F_STRING | f_string() | required | A Fortran string array. |
| STATUS | integer | optional | Is set to -1 if the Fortran string is too short for any line. |
Usually called via the convert_c_string generic interface.
subroutine convert_c_string_scalar_cptr(ctext, f_string, status)
type(c_ptr), intent(in) :: ctext
character(len=*), intent(out) :: f_string
integer, intent(out), optional :: statusConvert a null-terminated C-string to a Fortran string
| Argument | Type | Required? | Description |
|---|---|---|---|
| CTEXT | c_ptr | required | A C poiner to string to be converted. |
| F_STRING | f_string | required | A Scalar Fortran string. |
| STATUS | integer | optional | Is set to -1 if the Fortran string is too short. |
Usually called via the convert_c_string generic interface.
subroutine convert_c_string_array_cptr(ctext, f_string, status)
type(c_ptr), intent(in) :: ctext
character(len=*), intent(out), dimension(:), allocatable :: f_string
integer, intent(out), optional :: statusConvert a null-terminated LF-separated C-string into a Fortran string array
| Argument | Type | Required? | Description |
|---|---|---|---|
| CTEXT | c_ptr | required | A C poiner to string to be converted. |
| F_STRING | f_string() | required | A Fortran string. array |
| STATUS | integer | optional | Is set to -1 if the Fortran string is too short for any of the lines. |
Usually called via the convert_c_string generic interface.
subroutine convert_f_string_a(f_string, textptr, length)
character(len=*), intent(in), dimension(:) :: f_string
character(kind=c_char), dimension(:), intent(out), allocatable :: textptr
integer(c_int), intent(out), optional :: lengthConvert a Fortran string array into a null-terminated, LF_separated C-string
| Argument | Type | Required? | Description |
|---|---|---|---|
| F_STRING | f_string | required | The Fortran string to convert |
| TEXTPR | string | required | A C type string, (allocatable). |
| LENGTH | c_int | optional | The length of the generated C string. |
subroutine convert_f_string_s(f_string, textptr, length)
character(len=*), intent(in) :: f_string
character(kind=c_char), dimension(:), intent(out), allocatable :: textptr
integer(c_int), intent(out), optional :: lengthConvert a Fortran string into a null-terminated C-string
| Argument | Type | Required? | Description |
|---|---|---|---|
| F_STRING | f_string | required | The Fortran string to convert |
| TEXTPR | string | required | A C type string, (allocatable). |
| LENGTH | c_int | optional | The length of the generated C string. |
function c_f_logical(cbool)
logical :: c_f_logical
integer(c_int), intent(in) :: cboolConvert a gboolean to a Fortran logical
| Argument | Type | Required? | Description |
|---|---|---|---|
| CBOOL | boolean | required | The Gboolean to convert. |
function f_c_logical4(flog)
integer(c_int) :: f_c_logical4
logical, intent(in) :: flogConvert a Fortran default logical to a gboolean
| Argument | Type | Required? | Description |
|---|---|---|---|
| FLOG | logical | required | The Fortran logical to convert. |
Usually accessed via the generic f_c_logical interface
function f_c_logical1(flog)
integer(c_int) :: f_c_logical1
logical(1), intent(in) :: flogConvert a Fortran 1-byte logical to a gboolean
| Argument | Type | Required? | Description |
|---|---|---|---|
| FLOG | logical*1 | required | The Fortran logical to convert. |
Usually accessed via the generic f_c_logical interface
function is_UNIX_OS()
use g, only: g_get_current_dir
logical :: is_UNIX_OS
character(:), allocatable :: pathReturns .true. if the OS is of the UNIX type. On a Windows system, it will return .false. because an absolute path can not begin by a slash.
function fdate()
character(29) :: fdate
character(8) :: date
character(10) :: time
character(5) :: zoneReturns date, time and timezone in a string without spaces, for example: 2022-05-06T15:58:43.790+02:00
- Installation
- My first gtk-fortran application
- Drawing an image in a PNG file (without GUI)
- A program also usable without GUI
- Using Glade3 and gtkf-sketcher (GTK 3)
- Using gtk-fortran as a fpm dependency
- Debugging with GtkInspector
- Learning from examples
- Video tutorials
- How to start my own project from a gtk-fortran example
- git basics
- CMake basics
- Alternatives to CMake
- How to migrate to GTK 4
- How to contribute to gtk-fortran
- How to hack the cfwrapper with other C libraries