libsim  Versione6.3.0
vol7d_serialize_dballe_class.F03
1 ! Copyright (C) 2010 ARPA-SIM <urpsim@smr.arpa.emr.it>
2 ! authors:
3 ! Davide Cesari <dcesari@arpa.emr.it>
4 ! Paolo Patruno <ppatruno@arpa.emr.it>
5 
6 ! This program is free software; you can redistribute it and/or
7 ! modify it under the terms of the GNU General Public License as
8 ! published by the Free Software Foundation; either version 2 of
9 ! the License, or (at your option) any later version.
10 
11 ! This program is distributed in the hope that it will be useful,
12 ! but WITHOUT ANY WARRANTY; without even the implied warranty of
13 ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 ! GNU General Public License for more details.
15 
16 ! You should have received a copy of the GNU General Public License
17 ! along with this program. If not, see <http://www.gnu.org/licenses/>.
18 MODULE vol7d_serialize_dballe_class
19 use,INTRINSIC :: iso_c_binding
22 USE vol7d_class
23 USE dballe_class
24 IMPLICIT NONE
25 
26 TYPE,EXTENDS(vol7d_serialize) :: vol7d_serialize_dballe
27  !!TYPE(vol7d_ana) :: ana !< identificativo della stazione da exportare
28  CONTAINS
29 ! PROCEDURE :: vol7d_serialize_optionparser
30  PROCEDURE :: vol7d_serialize_export
31 END TYPE vol7d_serialize_dballe
32 
33 type counter
34  integer :: nvar,nattr
35  integer :: nanavar,nanaattr
36 end type counter
37 
38 PRIVATE
39 PUBLIC vol7d_serialize_dballe, vol7d_serialize_dballe_new
40 
41 CONTAINS
42 
43 FUNCTION vol7d_serialize_dballe_new() RESULT(this)
44 TYPE(vol7d_serialize_dballe) :: this
45 !!$TYPE(vol7d_ana),INTENT(in),optional :: ana !< identificativo della stazione da exportare
46 !!$
47 !!$if (present(ana))then
48 !!$ this%ana=ana
49 !!$else
50 !!$ call init(this%ana)
51 !!$end if
52 
53 this%vol7d_serialize = vol7d_serialize_new()
54 
55 ! reset unconditionally some parameters
56 this%column = 'ana,time,timerange,level,network'
57 this%loop = 'ana,time,timerange,level,network'
58 this%keep_miss = .false.
59 this%cachedesc = .true.
60 ! call original parse method to fix tuning parameters without forcing
61 ! to call option methods explicitely
62 CALL this%vol7d_serialize_parse()
63 
64 END FUNCTION vol7d_serialize_dballe_new
65 
66 
67 !SUBROUTINE vol7d_serialize_parse(this, category)
68 !CLASS(vol7d_serialize_geojson),INTENT(inout) :: this !< object having undorgone the vol7d_serialize_optionparser method
69 !INTEGER,INTENT(in),OPTIONAL :: category !< log4fortran category for logging error messages
70 !
71 !!! do nothing
72 !
73 !END SUBROUTINE vol7d_serialize_parse
74 
75 
76 
77 SUBROUTINE vol7d_ana_callback_dba(ana, genericptr)
78 TYPE(vol7d_ana), INTENT(in) :: ana
79 TYPE(c_ptr),VALUE :: genericptr
80 
81 type(dbametaanddata),POINTER :: metaanddata
82 
83 CALL c_f_pointer(genericptr, metaanddata)
84 
85 metaanddata%metadata%ana%vol7d_ana=ana
86 
87 END SUBROUTINE vol7d_ana_callback_dba
88 
89 
90 SUBROUTINE vol7d_time_callback_dba(time, genericptr)
91 TYPE(datetime), INTENT(in) :: time
92 TYPE(c_ptr),VALUE :: genericptr
93 
94 type(dbametaanddata),POINTER :: metaanddata
95 
96 CALL c_f_pointer(genericptr, metaanddata)
97 
98 metaanddata%metadata%datetime%datetime=time
99 
100 END SUBROUTINE vol7d_time_callback_dba
101 
102 SUBROUTINE vol7d_timerange_callback_dba(timerange, genericptr)
103 TYPE(vol7d_timerange), INTENT(in) :: timerange
104 TYPE(c_ptr),VALUE :: genericptr
105 
106 type(dbametaanddata),POINTER :: metaanddata
107 
108 CALL c_f_pointer(genericptr, metaanddata)
109 
110 metaanddata%metadata%timerange%vol7d_timerange=timerange
111 
112 END SUBROUTINE vol7d_timerange_callback_dba
113 
114 
115 SUBROUTINE vol7d_level_callback_dba(level, genericptr)
116 TYPE(vol7d_level), INTENT(in) :: level
117 TYPE(c_ptr),VALUE :: genericptr
118 
119 type(dbametaanddata),POINTER :: metaanddata
120 
121 CALL c_f_pointer(genericptr, metaanddata)
122 
123 metaanddata%metadata%level%vol7d_level=level
124 
125 END SUBROUTINE vol7d_level_callback_dba
126 
127 
128 SUBROUTINE vol7d_network_callback_dba(network, genericptr)
129 TYPE(vol7d_network), INTENT(in) :: network
130 TYPE(c_ptr),VALUE :: genericptr
131 
132 type(dbametaanddata),POINTER :: metaanddata
133 
134 CALL c_f_pointer(genericptr, metaanddata)
135 
136 metaanddata%metadata%network%vol7d_network=network
137 
138 END SUBROUTINE vol7d_network_callback_dba
139 
140 
141 SUBROUTINE vol7d_valuer_callback_dba(valu, var, genericptr)
142 REAL,INTENT(in) :: valu
143 TYPE(vol7d_var),INTENT(in) :: var
144 TYPE(c_ptr),VALUE :: genericptr
145 type(dbametaanddata),POINTER :: metaanddata
146 integer :: i
147 
148 CALL c_f_pointer(genericptr, metaanddata)
149 
150 do i =1, size(metaanddata%dataattrv%dataattr)
151  if (.not. allocated(metaanddata%dataattrv%dataattr(i)%dat)) then
152  allocate(metaanddata%dataattrv%dataattr(i)%dat,source=dbadatar(var%btable,valu))
153  exit
154  end if
155 end do
156 
157 END SUBROUTINE vol7d_valuer_callback_dba
158 
159 
160 SUBROUTINE vol7d_valued_callback_dba(valu, var, genericptr)
161 double precision,INTENT(in) :: valu
162 TYPE(vol7d_var),INTENT(in) :: var
163 TYPE(c_ptr),VALUE :: genericptr
164 type(dbametaanddata),POINTER :: metaanddata
165 integer :: i
166 
167 CALL c_f_pointer(genericptr, metaanddata)
168 
169 do i =1, size(metaanddata%dataattrv%dataattr)
170  if (.not. allocated(metaanddata%dataattrv%dataattr(i)%dat)) then
171  allocate(metaanddata%dataattrv%dataattr(i)%dat,source=dbadatad(var%btable,valu))
172  exit
173  end if
174 end do
175 
176 END SUBROUTINE vol7d_valued_callback_dba
177 
178 
179 SUBROUTINE vol7d_valuei_callback_dba(valu, var, genericptr)
180 integer,INTENT(in) :: valu
181 TYPE(vol7d_var),INTENT(in) :: var
182 TYPE(c_ptr),VALUE :: genericptr
183 type(dbametaanddata),POINTER :: metaanddata
184 integer :: i
185 
186 CALL c_f_pointer(genericptr, metaanddata)
187 
188 do i =1, size(metaanddata%dataattrv%dataattr)
189  if (.not. allocated(metaanddata%dataattrv%dataattr(i)%dat)) then
190  allocate(metaanddata%dataattrv%dataattr(i)%dat,source=dbadatai(var%btable,valu))
191  exit
192  end if
193 end do
194 
195 END SUBROUTINE vol7d_valuei_callback_dba
196 
197 
198 SUBROUTINE vol7d_valueb_callback_dba(valu, var, genericptr)
199 INTEGER(kind=int_b),INTENT(in) :: valu
200 TYPE(vol7d_var),INTENT(in) :: var
201 TYPE(c_ptr),VALUE :: genericptr
202 type(dbametaanddata),POINTER :: metaanddata
203 integer :: i
204 
205 CALL c_f_pointer(genericptr, metaanddata)
206 
207 do i =1, size(metaanddata%dataattrv%dataattr)
208  if (.not. allocated(metaanddata%dataattrv%dataattr(i)%dat)) then
209  allocate(metaanddata%dataattrv%dataattr(i)%dat,source=dbadatab(var%btable,valu))
210  exit
211  end if
212 end do
213 
214 END SUBROUTINE vol7d_valueb_callback_dba
215 
216 
217 SUBROUTINE vol7d_valuec_callback_dba(valu, var, genericptr)
218 character(len=*),INTENT(in) :: valu
219 TYPE(vol7d_var),INTENT(in) :: var
220 TYPE(c_ptr),VALUE :: genericptr
221 type(dbametaanddata),POINTER :: metaanddata
222 integer :: i
223 
224 CALL c_f_pointer(genericptr, metaanddata)
225 
226 do i =1, size(metaanddata%dataattrv%dataattr)
227  if (.not. allocated(metaanddata%dataattrv%dataattr(i)%dat)) then
228  allocate(metaanddata%dataattrv%dataattr(i)%dat,source=dbadatac(var%btable,valu))
229  exit
230  end if
231 end do
232 
233 END SUBROUTINE vol7d_valuec_callback_dba
234 
235 
236 
237 SUBROUTINE vol7d_valuer_attr_callback_dba(valu, var, attr, genericptr)
238 REAL,INTENT(in) :: valu
239 TYPE(vol7d_var),INTENT(in) :: var
240 TYPE(vol7d_var),INTENT(in) :: attr
241 TYPE(c_ptr),VALUE :: genericptr
242 type(dbametaanddata),POINTER :: metaanddata
243 integer :: i,j
244 
245 CALL c_f_pointer(genericptr, metaanddata)
246 
247 !print*, "vol7d_valuei_attr_callback_dba: ",var%btable,attr%btable
248 ivar:do i =1, size(metaanddata%dataattrv%dataattr)
249  if (allocated(metaanddata%dataattrv%dataattr(i)%dat)) then
250  if (metaanddata%dataattrv%dataattr(i)%dat%btable == var%btable) then
251  do j =1, size(metaanddata%dataattrv%dataattr(i)%attrv%dcv)
252  if (.not. allocated(metaanddata%dataattrv%dataattr(i)%attrv%dcv(j)%dat)) then
253  !print *,"allocate attributei: ",var%btable
254  allocate(metaanddata%dataattrv%dataattr(i)%attrv%dcv(j)%dat,source=dbadatar(attr%btable,valu))
255  exit ivar
256  end if
257  end do
258  end if
259  end if
260 end do ivar
261 
262 END SUBROUTINE vol7d_valuer_attr_callback_dba
263 
264 
265 
266 SUBROUTINE vol7d_valued_attr_callback_dba(valu, var, attr, genericptr)
267 double precision,INTENT(in) :: valu
268 TYPE(vol7d_var),INTENT(in) :: var
269 TYPE(vol7d_var),INTENT(in) :: attr
270 TYPE(c_ptr),VALUE :: genericptr
271 type(dbametaanddata),POINTER :: metaanddata
272 integer :: i,j
273 
274 CALL c_f_pointer(genericptr, metaanddata)
275 
276 !print*, "vol7d_valuei_attr_callback_dba: ",var%btable,attr%btable
277 ivar:do i =1, size(metaanddata%dataattrv%dataattr)
278  if (allocated(metaanddata%dataattrv%dataattr(i)%dat)) then
279  if (metaanddata%dataattrv%dataattr(i)%dat%btable == var%btable) then
280  do j =1, size(metaanddata%dataattrv%dataattr(i)%attrv%dcv)
281  if (.not. allocated(metaanddata%dataattrv%dataattr(i)%attrv%dcv(j)%dat)) then
282  !print *,"allocate attributei: ",var%btable
283  allocate(metaanddata%dataattrv%dataattr(i)%attrv%dcv(j)%dat,source=dbadatad(attr%btable,valu))
284  exit ivar
285  end if
286  end do
287  end if
288  end if
289 end do ivar
290 
291 END SUBROUTINE vol7d_valued_attr_callback_dba
292 
293 
294 
295 SUBROUTINE vol7d_valuei_attr_callback_dba(valu, var, attr, genericptr)
296 integer,INTENT(in) :: valu
297 TYPE(vol7d_var),INTENT(in) :: var
298 TYPE(vol7d_var),INTENT(in) :: attr
299 TYPE(c_ptr),VALUE :: genericptr
300 type(dbametaanddata),POINTER :: metaanddata
301 integer :: i,j
302 
303 CALL c_f_pointer(genericptr, metaanddata)
304 
305 !print*, "vol7d_valuei_attr_callback_dba: ",var%btable,attr%btable
306 ivar:do i =1, size(metaanddata%dataattrv%dataattr)
307  if (allocated(metaanddata%dataattrv%dataattr(i)%dat)) then
308  if (metaanddata%dataattrv%dataattr(i)%dat%btable == var%btable) then
309  do j =1, size(metaanddata%dataattrv%dataattr(i)%attrv%dcv)
310  if (.not. allocated(metaanddata%dataattrv%dataattr(i)%attrv%dcv(j)%dat)) then
311  !print *,"allocate attributei: ",var%btable
312  allocate(metaanddata%dataattrv%dataattr(i)%attrv%dcv(j)%dat,source=dbadatai(attr%btable,valu))
313  exit ivar
314  end if
315  end do
316  end if
317  end if
318 end do ivar
319 
320 END SUBROUTINE vol7d_valuei_attr_callback_dba
321 
322 
323 SUBROUTINE vol7d_valueb_attr_callback_dba(valu, var, attr, genericptr)
324 INTEGER(kind=int_b),INTENT(in) :: valu
325 TYPE(vol7d_var),INTENT(in) :: var
326 TYPE(vol7d_var),INTENT(in) :: attr
327 TYPE(c_ptr),VALUE :: genericptr
328 type(dbametaanddata),POINTER :: metaanddata
329 integer :: i,j
330 
331 CALL c_f_pointer(genericptr, metaanddata)
332 
333 !print*, "vol7d_valuei_attr_callback_dba: ",var%btable,attr%btable
334 ivar:do i =1, size(metaanddata%dataattrv%dataattr)
335  if (allocated(metaanddata%dataattrv%dataattr(i)%dat)) then
336  if (metaanddata%dataattrv%dataattr(i)%dat%btable == var%btable) then
337  do j =1, size(metaanddata%dataattrv%dataattr(i)%attrv%dcv)
338  if (.not. allocated(metaanddata%dataattrv%dataattr(i)%attrv%dcv(j)%dat)) then
339  !print *,"allocate attributei: ",var%btable
340  allocate(metaanddata%dataattrv%dataattr(i)%attrv%dcv(j)%dat,source=dbadatab(attr%btable,valu))
341  exit ivar
342  end if
343  end do
344  end if
345  end if
346 end do ivar
347 
348 END SUBROUTINE vol7d_valueb_attr_callback_dba
349 
350 SUBROUTINE vol7d_valuec_attr_callback_dba(valu, var, attr, genericptr)
351 character(len=*),INTENT(in) :: valu
352 TYPE(vol7d_var),INTENT(in) :: var
353 TYPE(vol7d_var),INTENT(in) :: attr
354 TYPE(c_ptr),VALUE :: genericptr
355 type(dbametaanddata),POINTER :: metaanddata
356 integer :: i,j
357 
358 CALL c_f_pointer(genericptr, metaanddata)
359 
360 !print*, "vol7d_valuei_attr_callback_dba: ",var%btable,attr%btable
361 ivar:do i =1, size(metaanddata%dataattrv%dataattr)
362  if (allocated(metaanddata%dataattrv%dataattr(i)%dat)) then
363  if (metaanddata%dataattrv%dataattr(i)%dat%btable == var%btable) then
364  do j =1, size(metaanddata%dataattrv%dataattr(i)%attrv%dcv)
365  if (.not. allocated(metaanddata%dataattrv%dataattr(i)%attrv%dcv(j)%dat)) then
366  !print *,"allocate attributei: ",var%btable
367  allocate(metaanddata%dataattrv%dataattr(i)%attrv%dcv(j)%dat,source=dbadatac(attr%btable,valu))
368  exit ivar
369  end if
370  end do
371  end if
372  end if
373 end do ivar
374 
375 END SUBROUTINE vol7d_valuec_attr_callback_dba
376 
377 
378 SUBROUTINE vol7d_void_callback_dba(genericptr)
379 TYPE(c_ptr),VALUE :: genericptr
380 end SUBROUTINE vol7d_void_callback_dba
381 
382 
383 SUBROUTINE vol7d_value_var_header_callback_dba(var, typ, genericptr)
384 TYPE(vol7d_var),INTENT(in) :: var
385 CHARACTER(len=*),INTENT(in) :: typ
386 TYPE(c_ptr),VALUE :: genericptr
387 
388 type(counter),POINTER :: conta
389 
390 CALL c_f_pointer(genericptr, conta)
391 
392 if (typ(2:2) == "d") then
393  conta%nvar=conta%nvar+1
394 else if (typ(2:2) == "a") then
395  conta%nanavar=conta%nanavar+1
396 end if
397 
398 END SUBROUTINE vol7d_value_var_header_callback_dba
399 
400 
401 SUBROUTINE vol7d_value_attr_header_callback_dba(var, attr, typ, genericptr)
402 TYPE(vol7d_var),INTENT(in) :: var
403 TYPE(vol7d_var),INTENT(in) :: attr
404 CHARACTER(len=*),INTENT(in) :: typ
405 TYPE(c_ptr),VALUE :: genericptr
406 
407 type(counter),POINTER :: conta
408 
409 CALL c_f_pointer(genericptr, conta)
410 
411 if (typ(2:2) == "d") then
412  conta%nattr=conta%nattr+1
413 else if (typ(2:2) == "a") then
414  conta%nanaattr=conta%nanaattr+1
415 end if
416 
417 END SUBROUTINE vol7d_value_attr_header_callback_dba
418 
419 SUBROUTINE vol7d_var_callback_dba(var, genericptr)
420 TYPE(vol7d_var), INTENT(in) :: var
421 TYPE(c_ptr),VALUE :: genericptr
422 
423 END SUBROUTINE vol7d_var_callback_dba
424 
425 
426 SUBROUTINE vol7d_attr_callback_dba(var, attr, genericptr)
427 TYPE(vol7d_var), INTENT(in) :: var
428 TYPE(vol7d_var), INTENT(in) :: attr
429 TYPE(c_ptr),VALUE :: genericptr
430 
431 END SUBROUTINE vol7d_attr_callback_dba
432 
433 
434 
435 SUBROUTINE vol7d_serialize_export(this, metaanddatal)
436 CLASS(vol7d_serialize_dballe),INTENT(inout) :: this
437 type(dbametaanddatalist),INTENT(inout) :: metaanddatal
438 TYPE(vol7d_serialize_iterline) :: linei
439 TYPE(vol7d_serialize_itercol) :: coli
440 
441 type(counter),target :: conta
442 type(dbametaanddata),target :: metaanddata
443 integer :: i,j, nvar , nattr
444 
445 conta=counter(0,0,0,0)
446 
447 ! set "header" callbacks
448 CALL this%vol7d_serialize_set_callback(&
449  vol7d_void_callback_dba,&
450  vol7d_void_callback_dba,&
451  vol7d_void_callback_dba,&
452  vol7d_void_callback_dba,&
453  vol7d_void_callback_dba,&
454  vol7d_void_callback_dba,&
455  vol7d_void_callback_dba,&
456  vol7d_value_var_callback=vol7d_value_var_header_callback_dba, &
457  vol7d_value_attr_callback=vol7d_value_attr_header_callback_dba)
458 
459 ! loop over headers and count columns
460 coli = this%vol7d_serialize_itercol_new() ! column iterator from this (header line)
461 DO WHILE(coli%next())
462 ! call callbacks
463  CALL coli%export(c_loc(conta))
464 END DO
465 
466 !print *,"Conta: ",conta
467 nattr = 0
468 if (conta%nvar > 0) nattr= nattr + conta%nattr/conta%nvar
469 if (conta%nanavar > 0) nattr= nattr + conta%nanaattr/conta%nanavar
470 nvar = conta%nvar + conta%nanavar
471 !print *,"nvar: ",nvar,"nattr: ",nattr
472 
473 metaanddata%metadata=dbametadata() ! initialize must be done for station constant data
474 
475 allocate(metaanddata%dataattrv%dataattr(nvar))
476 do i =1,nvar
477  allocate(metaanddata%dataattrv%dataattr(i)%attrv%dcv(nattr))
478 enddo
479 
480 ! loop over lines
481 linei = this%vol7d_serialize_iterline_new()
482 
483 ! set "data lines" callbacks
484 CALL linei%vol7d_serialize_iterline_set_callback(vol7d_ana_callback_dba &
485  ,vol7d_time_callback_dba, vol7d_level_callback_dba &
486  ,vol7d_timerange_callback_dba, vol7d_network_callback_dba &
487  ,vol7d_var_callback_dba, vol7d_attr_callback_dba&
488  ,vol7d_valuer_callback_dba &
489  ,vol7d_valued_callback_dba &
490  ,vol7d_valuei_callback_dba &
491  ,vol7d_valueb_callback_dba &
492  ,vol7d_valuec_callback_dba &
493  ,vol7d_valuer_attr_callback_dba &
494  ,vol7d_valued_attr_callback_dba &
495  ,vol7d_valuei_attr_callback_dba &
496  ,vol7d_valueb_attr_callback_dba &
497  ,vol7d_valuec_attr_callback_dba &
498  )
499 
500 DO WHILE(linei%next())
501 
502  coli = linei%vol7d_serialize_itercol_new() ! column iterator from linei (data line)
503  DO WHILE(coli%next())
504 ! call callbacks
505  CALL coli%export(c_loc(metaanddata))
506  END DO
507 
508 ! manage time definition
509  if (this%v7d%time_definition == 0) then
510  metaanddata%metadata%datetime%datetime = &
511  metaanddata%metadata%datetime%datetime + &
512  timedelta_new(sec=metaanddata%metadata%timerange%vol7d_timerange%p1)
513  end if
514 
515 !! set to missing
516  do i =1,nvar
517  if (.not. allocated(metaanddata%dataattrv%dataattr(i)%dat)) &
518  allocate(metaanddata%dataattrv%dataattr(i)%dat,source=dbadatai())
519  do j=1,nattr
520  if (.not. allocated(metaanddata%dataattrv%dataattr(i)%attrv%dcv(j)%dat)) &
521  allocate(metaanddata%dataattrv%dataattr(i)%attrv%dcv(j)%dat,source=dbadatac())
522  end do
523  enddo
524 
525  call metaanddatal%append(metaanddata)
526 
527 !! deallocate
528  do i =1,nvar
529  deallocate(metaanddata%dataattrv%dataattr(i)%dat)
530  do j=1,nattr
531  deallocate(metaanddata%dataattrv%dataattr(i)%attrv%dcv(j)%dat)
532  end do
533  enddo
534 
535 ! restore reference time if changed because of time definition
536 ! otherwise strange things happen
537  if (this%v7d%time_definition == 0) then
538  metaanddata%metadata%datetime%datetime = &
539  metaanddata%metadata%datetime%datetime - &
540  timedelta_new(sec=metaanddata%metadata%timerange%vol7d_timerange%p1)
541  end if
542 
543 END DO
544 
545 END SUBROUTINE vol7d_serialize_export
546 
547 !!$SUBROUTINE default_vol7d_valuec_callback(valu, var, genericptr)
548 !!$CHARACTER(len=*),INTENT(in) :: valu
549 !!$TYPE(vol7d_var),INTENT(in) :: var
550 !!$TYPE(c_ptr),VALUE :: genericptr
551 !!$
552 !!$CHARACTER(len=64),POINTER :: col
553 !!$
554 !!$CALL C_F_POINTER(genericptr, col)
555 !!$IF (c_e(valu)) THEN
556 !!$ IF (c_e(var%scalefactor) .AND. var%unit /= 'CCITTIA5' .AND. &
557 !!$ .NOT.(var%scalefactor == 0 .AND. var%unit == 'NUMERIC')) THEN
558 !!$ col = t2c(realdat(valu, var))
559 !!$ ELSE
560 !!$ col = TRIM(valu)
561 !!$ ENDIF
562 !!$ELSE
563 !!$ col = ''
564 !!$ENDIF
565 !!$
566 !!$END SUBROUTINE default_vol7d_valuec_callback
567 
568 
569 END MODULE vol7d_serialize_dballe_class
Extension of vol7d_class for serializing the contents of a volume.
Module for parsing command-line optons.
byte version for dbadata
character version for dbadata
summ of all metadata pieces
doubleprecision version for dbadata
Classe per la gestione di un volume completo di dati osservati.
integer version for dbadata
Class for serializing a vol7d object.
class for import and export data from e to DB-All.e.
real version for dbadata

Generated with Doxygen.