Changeset 14630


Ignore:
Timestamp:
04/17/13 11:17:36 (12 years ago)
Author:
Mathieu Morlighem
Message:

CHG: added support for cells

File:
1 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/m/io/structtonc.m

    r14625 r14630  
    99counter   = counter+1;
    1010
    11 %Datatype dependent switch
     11%Check that field is not empty
     12if isempty(field),
     13        if(step==1), disp(['skipping ' fieldname ' (empty)...']); end
     14        return;
     15end
     16
     17%Double scalar
    1218if isa(field,'double') & numel(field)==1,
    1319        if step==1,
     
    1622                netcdf.putVar(ncid,var_id(counter),field);
    1723        end
     24
     25%Double vector
    1826elseif isa(field,'double') & size(field,2)==1,
    1927        if step==1,
     
    2331                netcdf.putVar(ncid,var_id(counter),field);
    2432        end
     33
     34%double matrix
    2535elseif isa(field,'double') & size(field,2)>1,
    2636        if step==1,
     
    3141                netcdf.putVar(ncid,var_id(counter),transpose(field));
    3242        end
    33 elseif isa(field,'char') & ~isempty(field),
    34         if step==1,
    35                 dim_id          = netcdf.defDim(ncid,[fieldname '_size1'],numel(field));
    36                 var_id(counter) = netcdf.defVar(ncid,fieldname,'NC_CHAR',dim_id);
    37         else
    38                 netcdf.putVar(ncid,var_id(counter),transpose(field));
    39         end
     43
     44%string
     45elseif isa(field,'char')
     46                if step==1,
     47                        dim_id          = netcdf.defDim(ncid,[fieldname '_size1'],numel(field));
     48                        var_id(counter) = netcdf.defVar(ncid,fieldname,'NC_CHAR',dim_id);
     49                else
     50                        netcdf.putVar(ncid,var_id(counter),transpose(field));
     51                end
     52
     53%Boolean of size 1
    4054elseif isa(field,'logical') & numel(field)==1,
    4155        if step==1,
     
    4458                netcdf.putVar(ncid,var_id(counter),int8(field));
    4559        end
     60
     61%Structures
    4662elseif isa(field,'struct'),
    4763        subfields = fields(field);
     
    5874                end
    5975        end
     76
     77%Cell
     78elseif isa(field,'cell'),
     79        for i=1:length(field),
     80                [var_id,counter] = structtonc(ncid,[fieldname '{' num2str(i) '}'],field{i},depth+1,var_id,counter,step);
     81        end
     82
     83%Objects
    6084elseif isobject(field),
    6185        %First we need to keep track of the object class name
    62         [var_id,counter] = structtonc(ncid,[fieldname '.' subfields{i} '_class'],class(field(n).(subfields{i})),depth,var_id,counter,step);
     86        [var_id,counter] = structtonc(ncid,[fieldname '_class'],class(field),depth,var_id,counter,step);
    6387        subfields = fields(field);
    6488        for i=1:length(subfields),
     
    6690        end
    6791else
    68         disp(['skipping ' fieldname '...']);
     92        disp(['skipping ' fieldname ' (format not supported)...']);
    6993end
Note: See TracChangeset for help on using the changeset viewer.