[325] | 1 | #include "xios_fortran_prefix.hpp" |
---|
| 2 | |
---|
| 3 | MODULE IXML_TREE |
---|
| 4 | USE, INTRINSIC :: ISO_C_BINDING |
---|
| 5 | USE IAXIS |
---|
| 6 | USE IFILE |
---|
| 7 | USE IFIELD |
---|
| 8 | USE IGRID |
---|
| 9 | USE IDOMAIN |
---|
| 10 | |
---|
| 11 | INTERFACE ! Ne pas appeler directement/Interface FORTRAN 2003 <-> C99 |
---|
| 12 | |
---|
| 13 | SUBROUTINE cxios_xml_tree_add_field(parent_, child_, child_id, child_id_size) BIND(C) |
---|
| 14 | USE ISO_C_BINDING |
---|
| 15 | INTEGER (kind = C_INTPTR_T), VALUE :: parent_ |
---|
| 16 | INTEGER (kind = C_INTPTR_T) :: child_ |
---|
| 17 | CHARACTER(kind = C_CHAR) , DIMENSION(*) :: child_id |
---|
| 18 | INTEGER (kind = C_INT) , VALUE :: child_id_size |
---|
| 19 | END SUBROUTINE cxios_xml_tree_add_field |
---|
| 20 | |
---|
| 21 | SUBROUTINE cxios_xml_tree_add_grid(parent_, child_, child_id, child_id_size) BIND(C) |
---|
| 22 | USE ISO_C_BINDING |
---|
| 23 | INTEGER (kind = C_INTPTR_T), VALUE :: parent_ |
---|
| 24 | INTEGER (kind = C_INTPTR_T) :: child_ |
---|
| 25 | CHARACTER(kind = C_CHAR) , DIMENSION(*) :: child_id |
---|
| 26 | INTEGER (kind = C_INT) , VALUE :: child_id_size |
---|
| 27 | END SUBROUTINE cxios_xml_tree_add_grid |
---|
| 28 | |
---|
| 29 | SUBROUTINE cxios_xml_tree_add_file(parent_, child_, child_id, child_id_size) BIND(C) |
---|
| 30 | USE ISO_C_BINDING |
---|
| 31 | INTEGER (kind = C_INTPTR_T), VALUE :: parent_ |
---|
| 32 | INTEGER (kind = C_INTPTR_T) :: child_ |
---|
| 33 | CHARACTER(kind = C_CHAR) , DIMENSION(*) :: child_id |
---|
| 34 | INTEGER (kind = C_INT) , VALUE :: child_id_size |
---|
| 35 | END SUBROUTINE cxios_xml_tree_add_file |
---|
| 36 | |
---|
| 37 | SUBROUTINE cxios_xml_tree_add_axis(parent_, child_, child_id, child_id_size) BIND(C) |
---|
| 38 | USE ISO_C_BINDING |
---|
| 39 | INTEGER (kind = C_INTPTR_T), VALUE :: parent_ |
---|
| 40 | INTEGER (kind = C_INTPTR_T) :: child_ |
---|
| 41 | CHARACTER(kind = C_CHAR) , DIMENSION(*) :: child_id |
---|
| 42 | INTEGER (kind = C_INT) , VALUE :: child_id_size |
---|
| 43 | END SUBROUTINE cxios_xml_tree_add_axis |
---|
| 44 | |
---|
| 45 | SUBROUTINE cxios_xml_tree_add_domain(parent_, child_, child_id, child_id_size) BIND(C) |
---|
| 46 | USE ISO_C_BINDING |
---|
| 47 | INTEGER (kind = C_INTPTR_T), VALUE :: parent_ |
---|
| 48 | INTEGER (kind = C_INTPTR_T) :: child_ |
---|
| 49 | CHARACTER(kind = C_CHAR) , DIMENSION(*) :: child_id |
---|
| 50 | INTEGER (kind = C_INT) , VALUE :: child_id_size |
---|
| 51 | END SUBROUTINE cxios_xml_tree_add_domain |
---|
| 52 | |
---|
| 53 | SUBROUTINE cxios_xml_tree_add_fieldtofile(parent_, child_, child_id, child_id_size) BIND(C) |
---|
| 54 | USE ISO_C_BINDING |
---|
| 55 | INTEGER (kind = C_INTPTR_T), VALUE :: parent_ |
---|
| 56 | INTEGER (kind = C_INTPTR_T) :: child_ |
---|
| 57 | CHARACTER(kind = C_CHAR) , DIMENSION(*) :: child_id |
---|
| 58 | INTEGER (kind = C_INT) , VALUE :: child_id_size |
---|
| 59 | END SUBROUTINE cxios_xml_tree_add_fieldtofile |
---|
| 60 | |
---|
| 61 | SUBROUTINE cxios_xml_tree_add_fieldgroup(parent_, child_, child_id, child_id_size) BIND(C) |
---|
| 62 | USE ISO_C_BINDING |
---|
| 63 | INTEGER (kind = C_INTPTR_T), VALUE :: parent_ |
---|
| 64 | INTEGER (kind = C_INTPTR_T) :: child_ |
---|
| 65 | CHARACTER(kind = C_CHAR) , DIMENSION(*) :: child_id |
---|
| 66 | INTEGER (kind = C_INT) , VALUE :: child_id_size |
---|
| 67 | END SUBROUTINE cxios_xml_tree_add_fieldgroup |
---|
| 68 | |
---|
| 69 | SUBROUTINE cxios_xml_tree_add_gridgroup(parent_, child_, child_id, child_id_size) BIND(C) |
---|
| 70 | USE ISO_C_BINDING |
---|
| 71 | INTEGER (kind = C_INTPTR_T), VALUE :: parent_ |
---|
| 72 | INTEGER (kind = C_INTPTR_T) :: child_ |
---|
| 73 | CHARACTER(kind = C_CHAR) , DIMENSION(*) :: child_id |
---|
| 74 | INTEGER (kind = C_INT) , VALUE :: child_id_size |
---|
| 75 | END SUBROUTINE cxios_xml_tree_add_gridgroup |
---|
| 76 | |
---|
| 77 | SUBROUTINE cxios_xml_tree_add_filegroup(parent_, child_, child_id, child_id_size) BIND(C) |
---|
| 78 | USE ISO_C_BINDING |
---|
| 79 | INTEGER (kind = C_INTPTR_T), VALUE :: parent_ |
---|
| 80 | INTEGER (kind = C_INTPTR_T) :: child_ |
---|
| 81 | CHARACTER(kind = C_CHAR) , DIMENSION(*) :: child_id |
---|
| 82 | INTEGER (kind = C_INT) , VALUE :: child_id_size |
---|
| 83 | END SUBROUTINE cxios_xml_tree_add_filegroup |
---|
| 84 | |
---|
| 85 | SUBROUTINE cxios_xml_tree_add_axisgroup(parent_, child_, child_id, child_id_size) BIND(C) |
---|
| 86 | USE ISO_C_BINDING |
---|
| 87 | INTEGER (kind = C_INTPTR_T), VALUE :: parent_ |
---|
| 88 | INTEGER (kind = C_INTPTR_T) :: child_ |
---|
| 89 | CHARACTER(kind = C_CHAR) , DIMENSION(*) :: child_id |
---|
| 90 | INTEGER (kind = C_INT) , VALUE :: child_id_size |
---|
| 91 | END SUBROUTINE cxios_xml_tree_add_axisgroup |
---|
| 92 | |
---|
| 93 | SUBROUTINE cxios_xml_tree_add_domaingroup(parent_, child_, child_id, child_id_size) BIND(C) |
---|
| 94 | USE ISO_C_BINDING |
---|
| 95 | INTEGER (kind = C_INTPTR_T), VALUE :: parent_ |
---|
| 96 | INTEGER (kind = C_INTPTR_T) :: child_ |
---|
| 97 | CHARACTER(kind = C_CHAR) , DIMENSION(*) :: child_id |
---|
| 98 | INTEGER (kind = C_INT) , VALUE :: child_id_size |
---|
| 99 | END SUBROUTINE cxios_xml_tree_add_domaingroup |
---|
| 100 | |
---|
| 101 | SUBROUTINE cxios_xml_tree_add_fieldgrouptofile(parent_, child_, child_id, child_id_size) BIND(C) |
---|
| 102 | USE ISO_C_BINDING |
---|
| 103 | INTEGER (kind = C_INTPTR_T), VALUE :: parent_ |
---|
| 104 | INTEGER (kind = C_INTPTR_T) :: child_ |
---|
| 105 | CHARACTER(kind = C_CHAR) , DIMENSION(*) :: child_id |
---|
| 106 | INTEGER (kind = C_INT) , VALUE :: child_id_size |
---|
| 107 | END SUBROUTINE cxios_xml_tree_add_fieldgrouptofile |
---|
| 108 | |
---|
| 109 | SUBROUTINE cxios_xml_tree_show(filename, filename_size) BIND(C) |
---|
| 110 | USE ISO_C_BINDING |
---|
| 111 | CHARACTER(kind = C_CHAR), DIMENSION(*) :: filename |
---|
| 112 | INTEGER (kind = C_INT) , VALUE :: filename_size |
---|
| 113 | END SUBROUTINE cxios_xml_tree_show |
---|
| 114 | |
---|
| 115 | SUBROUTINE cxios_xml_parse_file(filename, filename_size) BIND(C) |
---|
| 116 | USE ISO_C_BINDING |
---|
| 117 | CHARACTER(kind = C_CHAR), DIMENSION(*) :: filename |
---|
| 118 | INTEGER (kind = C_INT) , VALUE :: filename_size |
---|
| 119 | END SUBROUTINE cxios_xml_parse_file |
---|
| 120 | |
---|
| 121 | SUBROUTINE cxios_xml_parse_string(xmlcontent, xmlcontent_size) BIND(C) |
---|
| 122 | USE ISO_C_BINDING |
---|
| 123 | CHARACTER(kind = C_CHAR), DIMENSION(*) :: xmlcontent |
---|
| 124 | INTEGER (kind = C_INT) , VALUE :: xmlcontent_size |
---|
| 125 | END SUBROUTINE cxios_xml_parse_string |
---|
| 126 | |
---|
| 127 | END INTERFACE |
---|
| 128 | |
---|
| 129 | |
---|
| 130 | CONTAINS ! Fonctions disponibles pour les utilisateurs. |
---|
| 131 | |
---|
| 132 | |
---|
| 133 | SUBROUTINE xios(add_axis)(parent_hdl, child_hdl, child_id) |
---|
| 134 | TYPE(txios(axisgroup)) , INTENT(IN) :: parent_hdl |
---|
| 135 | TYPE(txios(axis)) , INTENT(OUT):: child_hdl |
---|
| 136 | CHARACTER(len = *), OPTIONAL, INTENT(IN) :: child_id |
---|
| 137 | |
---|
| 138 | IF (PRESENT(child_id)) THEN |
---|
| 139 | CALL cxios_xml_tree_add_axis(parent_hdl%daddr, child_hdl%daddr, child_id, len(child_id)) |
---|
| 140 | ELSE |
---|
| 141 | CALL cxios_xml_tree_add_axis(parent_hdl%daddr, child_hdl%daddr, "NONE", -1) |
---|
| 142 | END IF |
---|
| 143 | |
---|
| 144 | END SUBROUTINE xios(add_axis) |
---|
| 145 | |
---|
| 146 | SUBROUTINE xios(add_file)(parent_hdl, child_hdl, child_id) |
---|
| 147 | TYPE(txios(filegroup)) , INTENT(IN) :: parent_hdl |
---|
| 148 | TYPE(txios(file)) , INTENT(OUT):: child_hdl |
---|
| 149 | CHARACTER(len = *), OPTIONAL, INTENT(IN) :: child_id |
---|
| 150 | |
---|
| 151 | IF (PRESENT(child_id)) THEN |
---|
| 152 | CALL cxios_xml_tree_add_file(parent_hdl%daddr, child_hdl%daddr, child_id, len(child_id)) |
---|
| 153 | ELSE |
---|
| 154 | CALL cxios_xml_tree_add_file(parent_hdl%daddr, child_hdl%daddr, "NONE", -1) |
---|
| 155 | END IF |
---|
| 156 | |
---|
| 157 | END SUBROUTINE xios(add_file) |
---|
| 158 | |
---|
| 159 | SUBROUTINE xios(add_grid)(parent_hdl, child_hdl, child_id) |
---|
| 160 | TYPE(txios(gridgroup)) , INTENT(IN) :: parent_hdl |
---|
| 161 | TYPE(txios(grid)) , INTENT(OUT):: child_hdl |
---|
| 162 | CHARACTER(len = *), OPTIONAL, INTENT(IN) :: child_id |
---|
| 163 | IF (PRESENT(child_id)) THEN |
---|
| 164 | CALL cxios_xml_tree_add_grid(parent_hdl%daddr, child_hdl%daddr, child_id, len(child_id)) |
---|
| 165 | ELSE |
---|
| 166 | CALL cxios_xml_tree_add_grid(parent_hdl%daddr, child_hdl%daddr, "NONE", -1) |
---|
| 167 | END IF |
---|
| 168 | |
---|
| 169 | END SUBROUTINE xios(add_grid) |
---|
| 170 | |
---|
| 171 | |
---|
| 172 | SUBROUTINE xios(add_field)(parent_hdl, child_hdl, child_id) |
---|
| 173 | TYPE(txios(fieldgroup)) , INTENT(IN) :: parent_hdl |
---|
| 174 | TYPE(txios(field)) , INTENT(OUT):: child_hdl |
---|
| 175 | CHARACTER(len = *), OPTIONAL, INTENT(IN) :: child_id |
---|
| 176 | |
---|
| 177 | IF (PRESENT(child_id)) THEN |
---|
| 178 | CALL cxios_xml_tree_add_field(parent_hdl%daddr, child_hdl%daddr, child_id, len(child_id)) |
---|
| 179 | ELSE |
---|
| 180 | CALL cxios_xml_tree_add_field(parent_hdl%daddr, child_hdl%daddr, "NONE", -1) |
---|
| 181 | END IF |
---|
| 182 | |
---|
| 183 | END SUBROUTINE xios(add_field) |
---|
| 184 | |
---|
| 185 | |
---|
| 186 | SUBROUTINE xios(add_domain)(parent_hdl, child_hdl, child_id) |
---|
| 187 | TYPE(txios(domaingroup)) , INTENT(IN) :: parent_hdl |
---|
| 188 | TYPE(txios(domain)) , INTENT(OUT):: child_hdl |
---|
| 189 | CHARACTER(len = *), OPTIONAL , INTENT(IN) :: child_id |
---|
| 190 | |
---|
| 191 | IF (PRESENT(child_id)) THEN |
---|
| 192 | CALL cxios_xml_tree_add_domain(parent_hdl%daddr, child_hdl%daddr, child_id, len(child_id)) |
---|
| 193 | ELSE |
---|
| 194 | CALL cxios_xml_tree_add_domain(parent_hdl%daddr, child_hdl%daddr, "NONE", -1) |
---|
| 195 | END IF |
---|
| 196 | |
---|
| 197 | END SUBROUTINE xios(add_domain) |
---|
| 198 | |
---|
| 199 | SUBROUTINE xios(add_fieldtofile)(parent_hdl, child_hdl, child_id) |
---|
| 200 | TYPE(txios(file)) , INTENT(IN) :: parent_hdl |
---|
| 201 | TYPE(txios(field)) , INTENT(OUT):: child_hdl |
---|
| 202 | CHARACTER(len = *), OPTIONAL , INTENT(IN) :: child_id |
---|
| 203 | |
---|
| 204 | IF (PRESENT(child_id)) THEN |
---|
| 205 | CALL cxios_xml_tree_add_fieldtofile(parent_hdl%daddr, child_hdl%daddr, child_id, len(child_id)) |
---|
| 206 | ELSE |
---|
| 207 | CALL cxios_xml_tree_add_fieldtofile(parent_hdl%daddr, child_hdl%daddr, "NONE", -1) |
---|
| 208 | END IF |
---|
| 209 | |
---|
| 210 | END SUBROUTINE xios(add_fieldtofile) |
---|
| 211 | |
---|
| 212 | |
---|
| 213 | SUBROUTINE xios(add_axisgroup)(parent_hdl, child_hdl, child_id) |
---|
| 214 | TYPE(txios(axisgroup)) , INTENT(IN) :: parent_hdl |
---|
| 215 | TYPE(txios(axisgroup)) , INTENT(OUT):: child_hdl |
---|
| 216 | CHARACTER(len = *), OPTIONAL, INTENT(IN) :: child_id |
---|
| 217 | |
---|
| 218 | IF (PRESENT(child_id)) THEN |
---|
| 219 | CALL cxios_xml_tree_add_axisgroup(parent_hdl%daddr, child_hdl%daddr, child_id, len(child_id)) |
---|
| 220 | ELSE |
---|
| 221 | CALL cxios_xml_tree_add_axisgroup(parent_hdl%daddr, child_hdl%daddr, "NONE", -1) |
---|
| 222 | END IF |
---|
| 223 | |
---|
| 224 | END SUBROUTINE xios(add_axisgroup) |
---|
| 225 | |
---|
| 226 | |
---|
| 227 | SUBROUTINE xios(add_filegroup)(parent_hdl, child_hdl, child_id) |
---|
| 228 | TYPE(txios(filegroup)) , INTENT(IN) :: parent_hdl |
---|
| 229 | TYPE(txios(filegroup)) , INTENT(OUT):: child_hdl |
---|
| 230 | CHARACTER(len = *), OPTIONAL, INTENT(IN) :: child_id |
---|
| 231 | |
---|
| 232 | IF (PRESENT(child_id)) THEN |
---|
| 233 | CALL cxios_xml_tree_add_filegroup(parent_hdl%daddr, child_hdl%daddr, child_id, len(child_id)) |
---|
| 234 | ELSE |
---|
| 235 | CALL cxios_xml_tree_add_filegroup(parent_hdl%daddr, child_hdl%daddr, "NONE", -1) |
---|
| 236 | END IF |
---|
| 237 | |
---|
| 238 | END SUBROUTINE xios(add_filegroup) |
---|
| 239 | |
---|
| 240 | SUBROUTINE xios(add_gridgroup)(parent_hdl, child_hdl, child_id) |
---|
| 241 | TYPE(txios(gridgroup)) , INTENT(IN) :: parent_hdl |
---|
| 242 | TYPE(txios(gridgroup)) , INTENT(OUT):: child_hdl |
---|
| 243 | CHARACTER(len = *), OPTIONAL, INTENT(IN) :: child_id |
---|
| 244 | |
---|
| 245 | IF (PRESENT(child_id)) THEN |
---|
| 246 | CALL cxios_xml_tree_add_gridgroup(parent_hdl%daddr, child_hdl%daddr, child_id, len(child_id)) |
---|
| 247 | ELSE |
---|
| 248 | CALL cxios_xml_tree_add_gridgroup(parent_hdl%daddr, child_hdl%daddr, "NONE", -1) |
---|
| 249 | END IF |
---|
| 250 | |
---|
| 251 | END SUBROUTINE xios(add_gridgroup) |
---|
| 252 | |
---|
| 253 | |
---|
| 254 | SUBROUTINE xios(add_fieldgroup)(parent_hdl, child_hdl, child_id) |
---|
| 255 | TYPE(txios(fieldgroup)) , INTENT(IN) :: parent_hdl |
---|
| 256 | TYPE(txios(fieldgroup)) , INTENT(OUT):: child_hdl |
---|
| 257 | CHARACTER(len = *), OPTIONAL, INTENT(IN) :: child_id |
---|
| 258 | IF (PRESENT(child_id)) THEN |
---|
| 259 | CALL cxios_xml_tree_add_fieldgroup(parent_hdl%daddr, child_hdl%daddr, child_id, len(child_id)) |
---|
| 260 | ELSE |
---|
| 261 | CALL cxios_xml_tree_add_fieldgroup(parent_hdl%daddr, child_hdl%daddr, "NONE", -1) |
---|
| 262 | END IF |
---|
| 263 | END SUBROUTINE xios(add_fieldgroup) |
---|
| 264 | |
---|
| 265 | SUBROUTINE xios(add_domaingroup)(parent_hdl, child_hdl, child_id) |
---|
| 266 | TYPE(txios(domaingroup)) , INTENT(IN) :: parent_hdl |
---|
| 267 | TYPE(txios(domaingroup)) , INTENT(OUT):: child_hdl |
---|
| 268 | CHARACTER(len = *), OPTIONAL , INTENT(IN) :: child_id |
---|
| 269 | |
---|
| 270 | IF (PRESENT(child_id)) THEN |
---|
| 271 | CALL cxios_xml_tree_add_domaingroup(parent_hdl%daddr, child_hdl%daddr, child_id, len(child_id)) |
---|
| 272 | ELSE |
---|
| 273 | CALL cxios_xml_tree_add_domaingroup(parent_hdl%daddr, child_hdl%daddr, "NONE", -1) |
---|
| 274 | END IF |
---|
| 275 | |
---|
| 276 | END SUBROUTINE xios(add_domaingroup) |
---|
| 277 | |
---|
| 278 | SUBROUTINE xios(add_fieldgrouptofile)(parent_hdl, child_hdl, child_id) |
---|
| 279 | TYPE(txios(file)) , INTENT(IN) :: parent_hdl |
---|
| 280 | TYPE(txios(fieldgroup)) , INTENT(OUT):: child_hdl |
---|
| 281 | CHARACTER(len = *), OPTIONAL , INTENT(IN) :: child_id |
---|
| 282 | |
---|
| 283 | IF (PRESENT(child_id)) THEN |
---|
| 284 | CALL cxios_xml_tree_add_fieldgrouptofile(parent_hdl%daddr, child_hdl%daddr, child_id, len(child_id)) |
---|
| 285 | ELSE |
---|
| 286 | CALL cxios_xml_tree_add_fieldgrouptofile(parent_hdl%daddr, child_hdl%daddr, "NONE", -1) |
---|
| 287 | END IF |
---|
| 288 | |
---|
| 289 | END SUBROUTINE xios(add_fieldgrouptofile) |
---|
| 290 | |
---|
| 291 | END MODULE IXML_TREE |
---|