Changeset 9381


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

Location:
issm/trunk/src
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk/src/c/EnumDefinitions/Synchronize.sh

    r8292 r9381  
    33
    44#Get all lines of EnumDefinitions2.h which hold Enum | remove all comas | add line number in the first column > put everything in file temp
    5 cat EnumDefinitions.h | grep -e "[0-9]Enum" -e "[a-zA-Z]Enum" | grep -v include | sed -e "s/,//g" | awk '{ printf "%s %s\n", NR, $0 }' > temp
     5cat EnumDefinitions.h | grep -e "[0-9]Enum," -e "[a-zA-Z]Enum," | grep -v include | sed -e "s/,//g" | awk '{ printf "%s %s\n", NR, $0 }' > temp
    66
    77#Removed existing files
  • issm/trunk/src/c/modules/EnumToStringx/EnumToStringx.cpp

    r9380 r9381  
    494494                case HydrologyWaterVyEnum : return "HydrologyWaterVy";
    495495                case SpcDynamicEnum : return "SpcDynamic";
    496                 case MaximumNumberOfEnums : return "MaximumNumberOfE";
    497496                default : return "unknown";
    498497
  • issm/trunk/src/c/modules/ModelProcessorx/Qmu/CreateParametersQmu.cpp

    r9372 r9381  
    211211                xfree((void**)&qmuerrname);
    212212                xfree((void**)&qmuoutname);
    213                 xfree((void**)&name);
    214213                /*}}}*/
    215214        } //if(qmu_analysis)
     215
     216        /*Free data*/
     217        xfree((void**)&name);
    216218
    217219        /*Assign output pointer: */
  • issm/trunk/src/c/modules/StringToEnumx/StringToEnumx.cpp

    r9380 r9381  
    492492        else if (strcmp(name,"HydrologyWaterVy")==0) return HydrologyWaterVyEnum;
    493493        else if (strcmp(name,"SpcDynamic")==0) return SpcDynamicEnum;
    494         else if (strcmp(name,"MaximumNumberOfE")==0) return MaximumNumberOfEnums;
    495494        else _error_("Enum %s not found",name);
    496495
  • issm/trunk/src/c/objects/IoModel.cpp

    r9380 r9381  
    625625                                                /*Add string to parameters: */
    626626                                                parameters->AddObject(new StringParam(record_enum,string));
     627
     628                                                /*Free string*/
     629                                                xfree((void**)&string);
    627630
    628631                                                break;
  • issm/trunk/src/m/classes/model.m

    r9358 r9381  
    9393                 riftinfo             = {NaN,true,'DoubleMat',3};
    9494                 riftproperties       = {NaN,false};
    95                  numrifts             = {0,false};
     95                 numrifts             = {0,true,'Integer'};
    9696
    9797                 %Projections
     
    245245                 strainrate                          = {NaN,false};
    246246                 %Debugging
    247                  verbose                             = {0,false};
    248                  verbose_binary                      = {0,true,'Integer'};
     247                 verbose                             = {0,true,'Integer'};
    249248                 element_debug                       = {0,false};
    250249                 element_debugid                     = {NaN,false};
  • 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,
  • issm/trunk/src/m/model/parseresultsfromdisk.m

    r9373 r9381  
    4949fclose(fid);
    5050% }}}
    51 function results=parseresultsfromdisk(filename) % {{{
     51function results=parseresultsfromdiskiosplit(filename) % {{{
    5252%PARSERESULTSFROMDISKIOSPLIT - ...
    5353%
  • issm/trunk/src/m/model/presolve.m

    r8926 r9381  
    3535end
    3636
    37 
    38 %resolve some fields at solution time
    39 md.verbose_binary=VerboseToBinary(md.verbose);
    40 
    4137%Control methods
    4238md.num_control_type=numel(md.control_type);
Note: See TracChangeset for help on using the changeset viewer.