Ignore:
Timestamp:
09/17/09 10:02:37 (15 years ago)
Author:
ymipsl
Message:
  • Les attributs XML peuvent désormais être passer dynamiquement à travers l'interface du server IO.
  • ajout d'un attribut name_suffix pour les fichiers

YM

File:
1 edited

Legend:

Unmodified
Added
Removed
  • XMLIO_SERVER/trunk/src/IOSERVER/mod_pack.f90

    r8 r40  
    99                       pack_i,pack_i1,pack_i2,pack_i3,pack_i4,                 & 
    1010                       pack_l,pack_l1,pack_l2,pack_l3,pack_l4,                 & 
    11                        pack_c,pack_c1,pack_c2,pack_c3,pack_c4 
     11                       pack_c,pack_c1,pack_c2,pack_c3,pack_c4,                 & 
     12                       pack_attr 
    1213    END INTERFACE pack 
    1314 
     
    1617                       unpack_i,unpack_i1,unpack_i2,unpack_i3,unpack_i4,       & 
    1718                       unpack_l,unpack_l1,unpack_l2,unpack_l3,unpack_l4,       & 
    18                        unpack_c,unpack_c1,unpack_c2,unpack_c3,unpack_c4 
     19                       unpack_c,unpack_c1,unpack_c2,unpack_c3,unpack_c4,       & 
     20                       unpack_attr 
    1921    END INTERFACE unpack 
    2022 
     
    466468     END SUBROUTINE unpack_field4 
    467469       
     470     SUBROUTINE pack_attr(attrib) 
     471     USE mod_attribut 
     472     USE mod_stdtype 
     473     IMPLICIT NONE 
     474       TYPE(attribut) :: attrib 
     475 
     476       CALL pack(attrib%object) 
     477       CALL pack(attrib%name) 
     478       CALL pack(attrib%type) 
     479       CALL pack(attrib%dim) 
     480       CALL pack(attrib%ndim) 
     481       CALL pack(attrib%string_len) 
     482               
     483       SELECT CASE(attrib%type) 
     484         CASE (integer0) 
     485           CALL pack(attrib%integer0_ptr) 
     486         CASE (integer1) 
     487           CALL pack(attrib%integer1_ptr) 
     488         CASE (integer2) 
     489           CALL pack(attrib%integer2_ptr) 
     490         CASE (real0) 
     491           CALL pack(attrib%real0_ptr) 
     492         CASE (real1) 
     493           CALL pack(attrib%real1_ptr) 
     494         CASE (real2) 
     495           CALL pack(attrib%real2_ptr) 
     496         CASE (logical0) 
     497           CALL pack(attrib%logical0_ptr) 
     498         CASE (logical1) 
     499           CALL pack(attrib%logical1_ptr) 
     500         CASE (logical2) 
     501           CALL pack(attrib%logical2_ptr) 
     502         CASE (string0) 
     503           CALL pack_string0(attrib%string0_ptr) 
     504         CASE (string1) 
     505           CALL pack_string1(attrib%string1_ptr) 
     506         CASE (string2) 
     507           CALL pack(attrib%string2_ptr) 
     508       END SELECT 
     509 
     510     CONTAINS 
     511 
     512       SUBROUTINE pack_string0(str) 
     513         CHARACTER(LEN=attrib%string_len) ::str 
     514           CALL pack(str) 
     515       END SUBROUTINE 
     516 
     517       SUBROUTINE pack_string1(str) 
     518         CHARACTER(LEN=attrib%string_len) ::str(:) 
     519           CALL pack(str) 
     520       END SUBROUTINE 
     521        
     522       SUBROUTINE pack_string2(str) 
     523         CHARACTER(LEN=attrib%string_len) ::str(:,:) 
     524           CALL pack(str) 
     525       END SUBROUTINE 
     526 
     527     END SUBROUTINE pack_attr   
     528 
     529     SUBROUTINE unpack_attr(attrib) 
     530     USE mod_attribut 
     531     USE mod_stdtype 
     532     IMPLICIT NONE 
     533       TYPE(attribut) :: attrib 
     534 
     535       CALL unpack(attrib%object) 
     536       CALL unpack(attrib%name) 
     537       CALL unpack(attrib%type) 
     538       CALL unpack(attrib%dim) 
     539       CALL unpack(attrib%ndim) 
     540       CALL unpack(attrib%string_len) 
     541               
     542       SELECT CASE(attrib%type) 
     543         CASE (integer0) 
     544           ALLOCATE(attrib%integer0_ptr) 
     545           CALL unpack(attrib%integer0_ptr) 
     546         CASE (integer1) 
     547           ALLOCATE(attrib%integer1_ptr(attrib%dim(1))) 
     548           CALL unpack(attrib%integer1_ptr) 
     549         CASE (integer2) 
     550           ALLOCATE(attrib%integer2_ptr(attrib%dim(1),attrib%dim(2))) 
     551           CALL unpack(attrib%integer2_ptr) 
     552         CASE (real0) 
     553           ALLOCATE(attrib%real0_ptr) 
     554           CALL unpack(attrib%real0_ptr) 
     555         CASE (real1) 
     556           ALLOCATE(attrib%real1_ptr(attrib%dim(1))) 
     557           CALL unpack(attrib%real1_ptr) 
     558         CASE (real2) 
     559           ALLOCATE(attrib%real2_ptr(attrib%dim(1),attrib%dim(2))) 
     560         CASE (logical0) 
     561           ALLOCATE(attrib%logical0_ptr) 
     562           CALL unpack(attrib%logical0_ptr) 
     563         CASE (logical1) 
     564           ALLOCATE(attrib%logical1_ptr(attrib%dim(1))) 
     565           CALL unpack(attrib%logical1_ptr) 
     566         CASE (logical2) 
     567           ALLOCATE(attrib%logical2_ptr(attrib%dim(1),attrib%dim(2))) 
     568           CALL unpack(attrib%logical2_ptr) 
     569         CASE (string0) 
     570           ALLOCATE(attrib%string0_ptr) 
     571           CALL unpack_string0 
     572         CASE (string1) 
     573           ALLOCATE(attrib%string1_ptr(attrib%dim(1))) 
     574           CALL unpack_string1 
     575         CASE (string2) 
     576           ALLOCATE(attrib%string2_ptr(attrib%dim(1),attrib%dim(2))) 
     577           CALL unpack_string2 
     578       END SELECT 
     579 
     580     CONTAINS 
     581 
     582       SUBROUTINE unpack_string0 
     583         CHARACTER(LEN=attrib%string_len) ::str 
     584           CALL unpack(str) 
     585           attrib%string0_ptr=str 
     586       END SUBROUTINE 
     587 
     588       SUBROUTINE unpack_string1 
     589         CHARACTER(LEN=attrib%string_len) ::str(attrib%dim(1)) 
     590           CALL unpack(str) 
     591           attrib%string1_ptr=str 
     592       END SUBROUTINE 
     593        
     594       SUBROUTINE unpack_string2 
     595         CHARACTER(LEN=attrib%string_len) ::str(attrib%dim(1),attrib%dim(2)) 
     596           CALL unpack(str) 
     597           attrib%string2_ptr=str 
     598       END SUBROUTINE 
     599 
     600     END SUBROUTINE unpack_attr               
     601 
     602      
    468603  END MODULE mod_pack 
Note: See TracChangeset for help on using the changeset viewer.