ComIn 0.5.1
ICON Community Interface
Loading...
Searching...
No Matches
comin_keyval_ifc.F90
Go to the documentation of this file.
1!> @file comin_keyval_ifc.F90
2!! @brief Interfaces for key-value maps based on std::unordered_map.
3!
4! @authors 06/2025 :: ICON Community Interface <icon@dwd.de>
5!
6! SPDX-License-Identifier: BSD-3-Clause
7!
8! See LICENSES for license information.
9! Where software is supplied by third parties, it is indicated in the
10! headers of the routines.
11!
13 use, INTRINSIC :: iso_c_binding, only: c_int, c_ptr, c_bool, c_double
14
15 PRIVATE
16
17 PUBLIC :: comin_keyval_create_c
18 PUBLIC :: comin_keyval_delete_c
19 PUBLIC :: comin_keyval_query_c
34
35 INTERFACE
36 SUBROUTINE comin_keyval_create_c(comin_keyval_c) BIND(C)
37 IMPORT c_ptr
38 TYPE(c_ptr) :: comin_keyval_c
39 END SUBROUTINE comin_keyval_create_c
40
41 SUBROUTINE comin_keyval_delete_c(comin_keyval_c) BIND(C)
42 IMPORT c_ptr
43 TYPE(c_ptr), VALUE, INTENT(in) :: comin_keyval_c
44 END SUBROUTINE comin_keyval_delete_c
45
46 SUBROUTINE comin_keyval_query_c(ckey, idx, keyval_c) BIND(C)
47 IMPORT c_ptr, c_int
48 TYPE(c_ptr), VALUE, INTENT(in) :: ckey
49 INTEGER(KIND=c_int), INTENT(out) :: idx
50 TYPE(c_ptr), VALUE, INTENT(in) :: keyval_c
51 END SUBROUTINE comin_keyval_query_c
52
53 SUBROUTINE comin_keyval_set_int_c(ckey, val, keyval_c) BIND(C)
54 IMPORT c_ptr, c_int
55 TYPE(c_ptr), VALUE, INTENT(in) :: ckey
56 INTEGER(KIND=c_int), VALUE, INTENT(in) :: val
57 TYPE(c_ptr), VALUE, INTENT(in) :: keyval_c
58 END SUBROUTINE comin_keyval_set_int_c
59
60 SUBROUTINE comin_keyval_get_int_c(ckey, val, keyval_c) BIND(C)
61 IMPORT c_ptr, c_int
62 TYPE(c_ptr), VALUE, INTENT(in) :: ckey
63 INTEGER(KIND=c_int), INTENT(out) :: val
64 TYPE(c_ptr), VALUE, INTENT(in) :: keyval_c
65 END SUBROUTINE comin_keyval_get_int_c
66
67 SUBROUTINE comin_keyval_set_double_c(ckey, val, keyval_c) BIND(C)
68 IMPORT c_ptr, c_double
69 TYPE(c_ptr), VALUE, INTENT(in) :: ckey
70 REAL(KIND=c_double), VALUE, INTENT(in) :: val
71 TYPE(c_ptr), VALUE, INTENT(in) :: keyval_c
72 END SUBROUTINE comin_keyval_set_double_c
73
74 SUBROUTINE comin_keyval_get_double_c(ckey, val, keyval_c) BIND(C)
75 IMPORT c_ptr, c_double
76 TYPE(c_ptr), VALUE, INTENT(in) :: ckey
77 REAL(KIND=c_double), INTENT(out) :: val
78 TYPE(c_ptr), VALUE, INTENT(in) :: keyval_c
79 END SUBROUTINE comin_keyval_get_double_c
80
81 SUBROUTINE comin_keyval_set_char_c(ckey, cval, keyval_c) BIND(C)
82 IMPORT c_ptr
83 TYPE(c_ptr), VALUE, INTENT(in) :: ckey
84 TYPE(c_ptr), VALUE, INTENT(in) :: cval
85 TYPE(c_ptr), VALUE, INTENT(in) :: keyval_c
86 END SUBROUTINE comin_keyval_set_char_c
87
88 SUBROUTINE comin_keyval_get_char_c(ckey, cval, keyval_c) BIND(C)
89 IMPORT c_ptr
90 TYPE(c_ptr), VALUE, INTENT(in) :: ckey
91 TYPE(c_ptr) :: cval
92 TYPE(c_ptr), VALUE, INTENT(in) :: keyval_c
93 END SUBROUTINE comin_keyval_get_char_c
94
95 SUBROUTINE comin_keyval_set_bool_c(ckey, val, keyval_c) BIND(C)
96 IMPORT c_ptr, c_bool
97 TYPE(c_ptr), VALUE, INTENT(in) :: ckey
98 LOGICAL(KIND=c_bool), VALUE, INTENT(in) :: val
99 TYPE(c_ptr), VALUE, INTENT(in) :: keyval_c
100 END SUBROUTINE comin_keyval_set_bool_c
101
102 SUBROUTINE comin_keyval_get_bool_c(ckey, val, keyval_c) BIND(C)
103 IMPORT c_ptr, c_bool
104 TYPE(c_ptr), VALUE, INTENT(in) :: ckey
105 LOGICAL(KIND=c_bool), INTENT(out) :: val
106 TYPE(c_ptr), VALUE, INTENT(in) :: keyval_c
107 END SUBROUTINE comin_keyval_get_bool_c
108
109 SUBROUTINE comin_keyval_iterator_begin_c(keyval_c, iterator) BIND(C)
110 IMPORT c_ptr
111 TYPE(c_ptr), VALUE, INTENT(in) :: keyval_c
112 TYPE(c_ptr) :: iterator
113 END SUBROUTINE comin_keyval_iterator_begin_c
114
115 SUBROUTINE comin_keyval_iterator_end_c(keyval_c, iterator) BIND(C)
116 IMPORT c_ptr
117 TYPE(c_ptr), VALUE, INTENT(in) :: keyval_c
118 TYPE(c_ptr) :: iterator
119 END SUBROUTINE comin_keyval_iterator_end_c
120
121 FUNCTION comin_keyval_iterator_get_key_c(iterator) RESULT(ckey) BIND(C)
122 IMPORT c_ptr
123 TYPE(c_ptr), VALUE, INTENT(in) :: iterator
124 TYPE(c_ptr) :: ckey
126
127 SUBROUTINE comin_keyval_iterator_next_c(iterator) BIND(C)
128 IMPORT c_ptr
129 TYPE(c_ptr), VALUE, INTENT(in) :: iterator
130 END SUBROUTINE comin_keyval_iterator_next_c
131
132 SUBROUTINE comin_keyval_iterator_delete_c(iterator) BIND(C)
133 IMPORT c_ptr
134 TYPE(c_ptr), VALUE, INTENT(in) :: iterator
135 END SUBROUTINE comin_keyval_iterator_delete_c
136
137 FUNCTION comin_keyval_iterator_compare_c(iterator1, iterator2) BIND(C)
138 IMPORT c_ptr, c_bool
139 TYPE(c_ptr), VALUE, INTENT(in) :: iterator1, iterator2
140 LOGICAL(KIND=c_bool) :: comin_keyval_iterator_compare_c
142 END INTERFACE
143
144END MODULE