source: XMLIO_V2/dev/common/src/xmlio/fortran/ixml_tree.F90 @ 286

Last change on this file since 286 was 286, checked in by ymipsl, 13 years ago

reprise en main de la version de H. Ozdoba. Correction de différentes erreurs de conception et bug.
Version NEMO operationnel en client/server, interoperabilita avec OASIS, reconstition de fichiers via netcdf4/HDF5

YM

File size: 21.0 KB
Line 
1#include "xios_fortran_prefix.hpp"
2
3MODULE 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   INTERFACE xml_tree_add
131      MODULE PROCEDURE xml_tree_add_axis,   xml_tree_add_axisgroup,    &
132                       xml_tree_add_file,   xml_tree_add_filegroup,    &
133                       xml_tree_add_grid,   xml_tree_add_gridgroup,    &
134                       xml_tree_add_field,  xml_tree_add_fieldgroup,   &
135                       xml_tree_add_domain, xml_tree_add_domaingroup,  &
136                       xml_tree_add_fieldgrouptofile, xml_tree_add_fieldtofile
137   END INTERFACE 
138   !----------------------------------------------------------------------------
139   
140   CONTAINS ! Fonctions disponibles pour les utilisateurs.
141
142
143   SUBROUTINE xios(add_axis)(parent_hdl, child_hdl, child_id)
144      TYPE(txios(axisgroup))     , INTENT(IN) :: parent_hdl
145      TYPE(txios(axis))          , INTENT(OUT):: child_hdl
146      CHARACTER(len = *), OPTIONAL, INTENT(IN) :: child_id
147
148      IF (PRESENT(child_id)) THEN
149         CALL cxios_xml_tree_add_axis(parent_hdl%daddr, child_hdl%daddr, child_id, len(child_id))
150      ELSE
151         CALL cxios_xml_tree_add_axis(parent_hdl%daddr, child_hdl%daddr, "NONE", -1)
152      END IF
153
154   END SUBROUTINE xios(add_axis)
155   
156   SUBROUTINE xios(add_file)(parent_hdl, child_hdl, child_id)
157      TYPE(txios(filegroup))      , INTENT(IN) :: parent_hdl
158      TYPE(txios(file))           , INTENT(OUT):: child_hdl
159      CHARACTER(len = *), OPTIONAL, INTENT(IN)  :: child_id
160
161      IF (PRESENT(child_id)) THEN
162         CALL cxios_xml_tree_add_file(parent_hdl%daddr, child_hdl%daddr, child_id, len(child_id))
163      ELSE
164         CALL cxios_xml_tree_add_file(parent_hdl%daddr, child_hdl%daddr, "NONE", -1)
165      END IF
166
167   END SUBROUTINE xios(add_file)
168   
169   SUBROUTINE xios(add_grid)(parent_hdl, child_hdl, child_id)
170      TYPE(txios(gridgroup))     , INTENT(IN) :: parent_hdl
171      TYPE(txios(grid))          , INTENT(OUT):: child_hdl
172      CHARACTER(len = *), OPTIONAL, INTENT(IN) :: child_id
173      IF (PRESENT(child_id)) THEN
174         CALL cxios_xml_tree_add_grid(parent_hdl%daddr, child_hdl%daddr, child_id, len(child_id))
175      ELSE
176         CALL cxios_xml_tree_add_grid(parent_hdl%daddr, child_hdl%daddr, "NONE", -1)
177      END IF
178
179   END SUBROUTINE xios(add_grid)
180   
181   
182   SUBROUTINE xios(add_field)(parent_hdl, child_hdl, child_id)
183      TYPE(txios(fieldgroup))     , INTENT(IN) :: parent_hdl
184      TYPE(txios(field))          , INTENT(OUT):: child_hdl
185      CHARACTER(len = *), OPTIONAL, INTENT(IN) :: child_id
186
187      IF (PRESENT(child_id)) THEN
188         CALL cxios_xml_tree_add_field(parent_hdl%daddr, child_hdl%daddr, child_id, len(child_id))
189      ELSE
190         CALL cxios_xml_tree_add_field(parent_hdl%daddr, child_hdl%daddr, "NONE", -1)
191      END IF
192
193   END SUBROUTINE xios(add_field)
194   
195   
196   SUBROUTINE xios(add_domain)(parent_hdl, child_hdl, child_id)
197      TYPE(txios(domaingroup))     , INTENT(IN) :: parent_hdl
198      TYPE(txios(domain))     , INTENT(OUT):: child_hdl
199      CHARACTER(len = *), OPTIONAL , INTENT(IN) :: child_id
200
201      IF (PRESENT(child_id)) THEN
202         CALL cxios_xml_tree_add_domain(parent_hdl%daddr, child_hdl%daddr, child_id, len(child_id))
203      ELSE
204         CALL cxios_xml_tree_add_domain(parent_hdl%daddr, child_hdl%daddr, "NONE", -1)
205      END IF
206
207   END SUBROUTINE xios(add_domain)
208   
209   SUBROUTINE xios(add_fieldtofile)(parent_hdl, child_hdl, child_id)
210      TYPE(txios(file))            , INTENT(IN) :: parent_hdl
211      TYPE(txios(field))           , INTENT(OUT):: child_hdl
212      CHARACTER(len = *), OPTIONAL , INTENT(IN) :: child_id
213
214      IF (PRESENT(child_id)) THEN
215         CALL cxios_xml_tree_add_fieldtofile(parent_hdl%daddr, child_hdl%daddr, child_id, len(child_id))
216      ELSE
217         CALL cxios_xml_tree_add_fieldtofile(parent_hdl%daddr, child_hdl%daddr, "NONE", -1)
218      END IF
219
220   END SUBROUTINE xios(add_fieldtofile)
221
222
223   SUBROUTINE xios(add_axisgroup)(parent_hdl, child_hdl, child_id)
224      TYPE(txios(axisgroup))      , INTENT(IN) :: parent_hdl
225      TYPE(txios(axisgroup))      , INTENT(OUT):: child_hdl
226      CHARACTER(len = *), OPTIONAL, INTENT(IN) :: child_id
227
228      IF (PRESENT(child_id)) THEN
229         CALL cxios_xml_tree_add_axisgroup(parent_hdl%daddr, child_hdl%daddr, child_id, len(child_id))
230      ELSE
231         CALL cxios_xml_tree_add_axisgroup(parent_hdl%daddr, child_hdl%daddr, "NONE", -1)
232      END IF
233
234   END SUBROUTINE xios(add_axisgroup)
235
236
237   SUBROUTINE xios(add_filegroup)(parent_hdl, child_hdl, child_id)
238      TYPE(txios(filegroup))      , INTENT(IN) :: parent_hdl
239      TYPE(txios(filegroup))      , INTENT(OUT):: child_hdl
240      CHARACTER(len = *), OPTIONAL, INTENT(IN) :: child_id
241
242      IF (PRESENT(child_id)) THEN
243         CALL cxios_xml_tree_add_filegroup(parent_hdl%daddr, child_hdl%daddr, child_id, len(child_id))
244      ELSE
245         CALL cxios_xml_tree_add_filegroup(parent_hdl%daddr, child_hdl%daddr, "NONE", -1)
246      END IF
247
248   END SUBROUTINE xios(add_filegroup)
249
250   SUBROUTINE xios(add_gridgroup)(parent_hdl, child_hdl, child_id)
251      TYPE(txios(gridgroup))      , INTENT(IN) :: parent_hdl
252      TYPE(txios(gridgroup))      , INTENT(OUT):: child_hdl
253      CHARACTER(len = *), OPTIONAL, INTENT(IN) :: child_id
254
255      IF (PRESENT(child_id)) THEN
256         CALL cxios_xml_tree_add_gridgroup(parent_hdl%daddr, child_hdl%daddr, child_id, len(child_id))
257      ELSE
258         CALL cxios_xml_tree_add_gridgroup(parent_hdl%daddr, child_hdl%daddr, "NONE", -1)
259      END IF
260     
261   END SUBROUTINE xios(add_gridgroup)
262
263
264   SUBROUTINE xios(add_fieldgroup)(parent_hdl, child_hdl, child_id)
265      TYPE(txios(fieldgroup))     , INTENT(IN) :: parent_hdl
266      TYPE(txios(fieldgroup))     , INTENT(OUT):: child_hdl
267      CHARACTER(len = *), OPTIONAL, INTENT(IN) :: child_id
268      IF (PRESENT(child_id)) THEN
269         CALL cxios_xml_tree_add_fieldgroup(parent_hdl%daddr, child_hdl%daddr, child_id, len(child_id))
270      ELSE
271         CALL cxios_xml_tree_add_fieldgroup(parent_hdl%daddr, child_hdl%daddr, "NONE", -1)
272      END IF
273   END SUBROUTINE xios(add_fieldgroup)
274
275   SUBROUTINE xios(add_domaingroup)(parent_hdl, child_hdl, child_id)
276      TYPE(txios(domaingroup))     , INTENT(IN) :: parent_hdl
277      TYPE(txios(domaingroup))     , INTENT(OUT):: child_hdl
278      CHARACTER(len = *), OPTIONAL , INTENT(IN) :: child_id
279
280      IF (PRESENT(child_id)) THEN
281         CALL cxios_xml_tree_add_domaingroup(parent_hdl%daddr, child_hdl%daddr, child_id, len(child_id))
282      ELSE
283         CALL cxios_xml_tree_add_domaingroup(parent_hdl%daddr, child_hdl%daddr, "NONE", -1)
284      END IF
285
286   END SUBROUTINE xios(add_domaingroup)
287
288   SUBROUTINE xios(add_fieldgrouptofile)(parent_hdl, child_hdl, child_id)
289      TYPE(txios(file))            , INTENT(IN) :: parent_hdl
290      TYPE(txios(fieldgroup))     , INTENT(OUT):: child_hdl
291      CHARACTER(len = *), OPTIONAL  , INTENT(IN) :: child_id
292
293      IF (PRESENT(child_id)) THEN
294         CALL cxios_xml_tree_add_fieldgrouptofile(parent_hdl%daddr, child_hdl%daddr, child_id, len(child_id))
295      ELSE
296         CALL cxios_xml_tree_add_fieldgrouptofile(parent_hdl%daddr, child_hdl%daddr, "NONE", -1)
297      END IF
298
299   END SUBROUTINE xios(add_fieldgrouptofile)
300
301!   SUBROUTINE xml_tree_show(filename)
302!      CHARACTER(len = *), OPTIONAL, INTENT(IN) :: filename
303!      IF (PRESENT(filename)) THEN
304!         CALL cxios_xml_tree_show(filename, len(filename))
305!      ELSE
306!         CALL cxios_xml_tree_show("NONE", -1)
307!      END IF
308!   END SUBROUTINE xml_tree_show
309   
310!   SUBROUTINE xml_parse_file(filename)
311!      CHARACTER(len = *), INTENT(IN) :: filename
312!      CALL cxios_xml_parse_file(filename, len(filename))
313!   END SUBROUTINE xml_Parse_File
314   
315!   SUBROUTINE xml_parse_string(xmlcontent)
316!      CHARACTER(len = *), INTENT(IN) :: xmlcontent
317!      CALL cxios_xml_parse_string(xmlcontent, len(xmlcontent))
318!   END SUBROUTINE xml_Parse_String
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334!!!!!!!!!!!!! Anciennes interfaces !!!!!!!!!!!!!!!!!!!!!!!!!!!!
335!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
336
337   SUBROUTINE xml_tree_add_axis(parent_hdl, child_hdl, child_id)
338      TYPE(XAxisGroupHandle)      , INTENT(IN) :: parent_hdl
339      TYPE(XAxisHandle)           , INTENT(OUT):: child_hdl
340      CHARACTER(len = *), OPTIONAL, INTENT(IN) :: child_id
341      IF (PRESENT(child_id)) THEN
342         CALL cxios_xml_tree_add_axis(parent_hdl%daddr, child_hdl%daddr, child_id, len(child_id))
343      ELSE
344         CALL cxios_xml_tree_add_axis(parent_hdl%daddr, child_hdl%daddr, "NONE", -1)
345      END IF
346   END SUBROUTINE xml_tree_add_axis
347   
348   SUBROUTINE xml_tree_add_file(parent_hdl, child_hdl, child_id)
349      TYPE(XFileGroupHandle)      , INTENT(IN) :: parent_hdl
350      TYPE(XFileHandle)           , INTENT(OUT):: child_hdl
351      CHARACTER(len = *), OPTIONAL, INTENT(IN) :: child_id
352      IF (PRESENT(child_id)) THEN
353         CALL cxios_xml_tree_add_file(parent_hdl%daddr, child_hdl%daddr, child_id, len(child_id))
354      ELSE
355         CALL cxios_xml_tree_add_file(parent_hdl%daddr, child_hdl%daddr, "NONE", -1)
356      END IF
357   END SUBROUTINE xml_tree_add_file
358   
359   SUBROUTINE xml_tree_add_grid(parent_hdl, child_hdl, child_id)
360      TYPE(XGridGroupHandle)      , INTENT(IN) :: parent_hdl
361      TYPE(XGridHandle)           , INTENT(OUT):: child_hdl
362      CHARACTER(len = *), OPTIONAL, INTENT(IN) :: child_id
363      IF (PRESENT(child_id)) THEN
364         CALL cxios_xml_tree_add_grid(parent_hdl%daddr, child_hdl%daddr, child_id, len(child_id))
365      ELSE
366         CALL cxios_xml_tree_add_grid(parent_hdl%daddr, child_hdl%daddr, "NONE", -1)
367      END IF
368   END SUBROUTINE xml_tree_add_grid
369   
370   SUBROUTINE xml_tree_add_field(parent_hdl, child_hdl, child_id)
371      TYPE(XFieldGroupHandle)     , INTENT(IN) :: parent_hdl
372      TYPE(XFieldHandle)          , INTENT(OUT):: child_hdl
373      CHARACTER(len = *), OPTIONAL, INTENT(IN) :: child_id
374      IF (PRESENT(child_id)) THEN
375         CALL cxios_xml_tree_add_field(parent_hdl%daddr, child_hdl%daddr, child_id, len(child_id))
376      ELSE
377         CALL cxios_xml_tree_add_field(parent_hdl%daddr, child_hdl%daddr, "NONE", -1)
378      END IF
379   END SUBROUTINE xml_tree_add_field
380   
381   SUBROUTINE xml_tree_add_domain(parent_hdl, child_hdl, child_id)
382      TYPE(XDomainGroupHandle)     , INTENT(IN) :: parent_hdl
383      TYPE(XDomainHandle)          , INTENT(OUT):: child_hdl
384      CHARACTER(len = *), OPTIONAL , INTENT(IN) :: child_id
385      IF (PRESENT(child_id)) THEN
386         CALL cxios_xml_tree_add_domain(parent_hdl%daddr, child_hdl%daddr, child_id, len(child_id))
387      ELSE
388         CALL cxios_xml_tree_add_domain(parent_hdl%daddr, child_hdl%daddr, "NONE", -1)
389      END IF
390   END SUBROUTINE xml_tree_add_domain
391   
392   SUBROUTINE xml_tree_add_fieldtofile(parent_hdl, child_hdl, child_id)
393      TYPE(XFileHandle)            , INTENT(IN) :: parent_hdl
394      TYPE(XFieldHandle)           , INTENT(OUT):: child_hdl
395      CHARACTER(len = *), OPTIONAL , INTENT(IN) :: child_id
396      IF (PRESENT(child_id)) THEN
397         CALL cxios_xml_tree_add_fieldtofile(parent_hdl%daddr, child_hdl%daddr, child_id, len(child_id))
398      ELSE
399         CALL cxios_xml_tree_add_fieldtofile(parent_hdl%daddr, child_hdl%daddr, "NONE", -1)
400      END IF
401   END SUBROUTINE xml_tree_add_fieldtofile
402
403   SUBROUTINE xml_tree_add_axisgroup(parent_hdl, child_hdl, child_id)
404      TYPE(XAxisGroupHandle)      , INTENT(IN) :: parent_hdl
405      TYPE(XAxisGroupHandle)      , INTENT(OUT):: child_hdl
406      CHARACTER(len = *), OPTIONAL, INTENT(IN) :: child_id
407      IF (PRESENT(child_id)) THEN
408         CALL cxios_xml_tree_add_axisgroup(parent_hdl%daddr, child_hdl%daddr, child_id, len(child_id))
409      ELSE
410         CALL cxios_xml_tree_add_axisgroup(parent_hdl%daddr, child_hdl%daddr, "NONE", -1)
411      END IF
412   END SUBROUTINE xml_tree_add_axisgroup
413
414   SUBROUTINE xml_tree_add_filegroup(parent_hdl, child_hdl, child_id)
415      TYPE(XFileGroupHandle)      , INTENT(IN) :: parent_hdl
416      TYPE(XFileGroupHandle)      , INTENT(OUT):: child_hdl
417      CHARACTER(len = *), OPTIONAL, INTENT(IN) :: child_id
418      IF (PRESENT(child_id)) THEN
419         CALL cxios_xml_tree_add_filegroup(parent_hdl%daddr, child_hdl%daddr, child_id, len(child_id))
420      ELSE
421         CALL cxios_xml_tree_add_filegroup(parent_hdl%daddr, child_hdl%daddr, "NONE", -1)
422      END IF
423   END SUBROUTINE xml_tree_add_filegroup
424
425   SUBROUTINE xml_tree_add_gridgroup(parent_hdl, child_hdl, child_id)
426      TYPE(XGridGroupHandle)      , INTENT(IN) :: parent_hdl
427      TYPE(XGridGroupHandle)      , INTENT(OUT):: child_hdl
428      CHARACTER(len = *), OPTIONAL, INTENT(IN) :: child_id
429      IF (PRESENT(child_id)) THEN
430         CALL cxios_xml_tree_add_gridgroup(parent_hdl%daddr, child_hdl%daddr, child_id, len(child_id))
431      ELSE
432         CALL cxios_xml_tree_add_gridgroup(parent_hdl%daddr, child_hdl%daddr, "NONE", -1)
433      END IF
434   END SUBROUTINE xml_tree_add_gridgroup
435
436   SUBROUTINE xml_tree_add_fieldgroup(parent_hdl, child_hdl, child_id)
437      TYPE(XFieldGroupHandle)     , INTENT(IN) :: parent_hdl
438      TYPE(XFieldGroupHandle)     , INTENT(OUT):: child_hdl
439      CHARACTER(len = *), OPTIONAL, INTENT(IN) :: child_id
440      IF (PRESENT(child_id)) THEN
441         CALL cxios_xml_tree_add_fieldgroup(parent_hdl%daddr, child_hdl%daddr, child_id, len(child_id))
442      ELSE
443         CALL cxios_xml_tree_add_fieldgroup(parent_hdl%daddr, child_hdl%daddr, "NONE", -1)
444      END IF
445   END SUBROUTINE xml_tree_add_fieldgroup
446
447   SUBROUTINE xml_tree_add_domaingroup(parent_hdl, child_hdl, child_id)
448      TYPE(XDomainGroupHandle)     , INTENT(IN) :: parent_hdl
449      TYPE(XDomainGroupHandle)     , INTENT(OUT):: child_hdl
450      CHARACTER(len = *), OPTIONAL , INTENT(IN) :: child_id
451      IF (PRESENT(child_id)) THEN
452         CALL cxios_xml_tree_add_domaingroup(parent_hdl%daddr, child_hdl%daddr, child_id, len(child_id))
453      ELSE
454         CALL cxios_xml_tree_add_domaingroup(parent_hdl%daddr, child_hdl%daddr, "NONE", -1)
455      END IF
456   END SUBROUTINE xml_tree_add_domaingroup
457
458   SUBROUTINE xml_tree_add_fieldgrouptofile(parent_hdl, child_hdl, child_id)
459      TYPE(XFileHandle)            , INTENT(IN) :: parent_hdl
460      TYPE(XFieldGroupHandle)      , INTENT(OUT):: child_hdl
461      CHARACTER(len = *), OPTIONAL , INTENT(IN) :: child_id
462      IF (PRESENT(child_id)) THEN
463         CALL cxios_xml_tree_add_fieldgrouptofile(parent_hdl%daddr, child_hdl%daddr, child_id, len(child_id))
464      ELSE
465         CALL cxios_xml_tree_add_fieldgrouptofile(parent_hdl%daddr, child_hdl%daddr, "NONE", -1)
466      END IF
467   END SUBROUTINE xml_tree_add_fieldgrouptofile
468
469   SUBROUTINE xml_tree_show(filename)
470      CHARACTER(len = *), OPTIONAL, INTENT(IN) :: filename
471      IF (PRESENT(filename)) THEN
472         CALL cxios_xml_tree_show(filename, len(filename))
473      ELSE
474         CALL cxios_xml_tree_show("NONE", -1)
475      END IF
476   END SUBROUTINE xml_tree_show
477   
478   SUBROUTINE xml_parse_file(filename)
479      CHARACTER(len = *), INTENT(IN) :: filename
480      CALL cxios_xml_parse_file(filename, len(filename))
481   END SUBROUTINE xml_Parse_File
482   
483   SUBROUTINE xml_parse_string(xmlcontent)
484      CHARACTER(len = *), INTENT(IN) :: xmlcontent
485      CALL cxios_xml_parse_string(xmlcontent, len(xmlcontent))
486   END SUBROUTINE xml_Parse_String
487     
488END MODULE IXML_TREE
Note: See TracBrowser for help on using the repository browser.