Ignore:
Timestamp:
08/23/11 10:26:17 (14 years ago)
Author:
Mathieu Morlighem
Message:

removed some leaks in C and fixed marshall and parseresult for new IoModel interface

File:
1 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk/src/m/model/marshall.m

    r9373 r9381  
    2323        marshall=template.(field){2};
    2424        if marshall,
    25                 WriteData(md,fid,template,field);
    26         end
    27 end
     25                if strcmpi(field,'verbose'),
     26                        WriteData(fid,field,VerboseToBinary(md.verbose),{'Integer'});
     27                else
     28                        WriteData(fid,field,md.(field),template.(field)(3:end));
     29                end
     30        end
     31end
     32
     33%Quick fix: add some fields needed by parameters
     34WriteData(fid,'numberofvertices',md.numberofnodes,{'Integer'});
    2835
    2936%close file
     
    3340end
    3441
    35 function WriteData(md,fid,template,field) % {{{
     42function WriteData(fid,fieldname,fieldvalue,fieldtype) % {{{
    3643%WRITEDATA - write model field in binary file
    3744%
    3845%   Usage:
    39 %      WriteData(md,fid,template,field)
     46%      WriteData(fid,fieldname,fieldvalue,fieldtype)
    4047%
    4148%   Example:
    42 %     WriteData(md,fid,template,'thickness')
     49%     WriteData(fid,'thickness',md.thickness,{'DoubleMat',1})
    4350
    4451%first recover data, enum of the data and type of data
    45 data=md.(field);
    46 enum=BuildEnum(field);
    47 data_type=template.(field){3};
     52data=fieldvalue;
     53enum=BuildEnum(fieldname);
     54data_type=fieldtype{1};
    4855
    4956if issparse(data),
     
    105112
    106113        %matrix type:
    107         mattype=template.(field){4};
     114        mattype=fieldtype{2};
    108115
    109116        %Get size
     
    113120                s(1)=0; s(2)=0;
    114121        end
    115        
     122
    116123        %first write length of record
    117124        fwrite(fid,4+4+8*s(1)*s(2)+4+4,'int');  %2 integers (32 bits) + the double matrix + code + matrix type
     
    131138
    132139        %matrix type:
    133         mattype=template.(field){4};
     140        mattype=fieldtype{2};
    134141
    135142        %Get size
     
    139146                s(1)=0; s(2)=0;
    140147        end
    141        
     148
    142149        %first write length of record
    143150        fwrite(fid,4+4+8*s(1)*s(2)+4+4,'int');  %2 integers (32 bits) + the double matrix + code + matrix type
     
    157164
    158165        %matrix type:
    159         mattype=template.(field){4};
     166        mattype=fieldtype{2};
    160167
    161168        %Get size
     
    165172                s(1)=0; s(2)=0;
    166173        end
    167        
     174
    168175        %first write length of record
    169176        fwrite(fid,4+4+8*s(1)*s(2)+4+4,'int');  %2 integers (32 bits) + the double matrix + code + matrix type
     
    183190
    184191        numrecords=numel(data);
    185        
     192
    186193        %first get length of record
    187194        recordlength=4+4; %number of records + code
     
    190197                s=size(matrix);
    191198                recordlength=recordlength+4*2+... %row and col of matrix
    192                                          s(1)*s(2)*8; %matrix of doubles
     199                        s(1)*s(2)*8; %matrix of doubles
    193200        end
    194201
     
    201208        %write data, first number of records
    202209        fwrite(fid,numrecords,'int');
    203        
     210
    204211        %write each matrix:
    205212        for i=1:numrecords,
     
    230237        %now write length of string array
    231238        fwrite(fid,num,'int');
    232        
     239
    233240        %now write the strings
    234241        for i=1:num,
Note: See TracChangeset for help on using the changeset viewer.