Ignore:
Timestamp:
06/19/13 10:09:36 (11 years ago)
Author:
ymipsl
Message:

Add possibility to make inheritance of attributes and reference before closing the context definition.
New fortran fonction : xios_solve inheritance()
After this call, the value of attribute have the inherited value of their parent.

YM

File:
1 edited

Legend:

Unmodified
Added
Removed
  • XIOS/trunk/src/interface/c_attr/icfield_attr.cpp

    r432 r445  
    3030  { 
    3131     CTimer::get("XIOS").resume(); 
    32     if(!string_copy(field_hdl->axis_ref.getValue(),axis_ref , axis_ref_size)) 
     32    if(!string_copy(field_hdl->axis_ref.getInheritedValue(),axis_ref , axis_ref_size)) 
    3333      ERROR("void cxios_get_field_axis_ref(field_Ptr field_hdl, char * axis_ref, int axis_ref_size)", <<"Input string is to short"); 
    3434     CTimer::get("XIOS").suspend(); 
     
    3838  { 
    3939     CTimer::get("XIOS").resume(); 
    40     return !field_hdl->axis_ref.isEmpty(); 
     40    return field_hdl->axis_ref.hasInheritedValue(); 
    4141     CTimer::get("XIOS").suspend(); 
    4242  } 
     
    5454  void cxios_get_field_default_value(field_Ptr field_hdl, double* default_value) 
    5555  { 
    56     *default_value = field_hdl->default_value.getValue(); 
     56    *default_value = field_hdl->default_value.getInheritedValue(); 
    5757  } 
    5858   
     
    6060  { 
    6161     CTimer::get("XIOS").resume(); 
    62     return !field_hdl->default_value.isEmpty(); 
     62    return field_hdl->default_value.hasInheritedValue(); 
    6363     CTimer::get("XIOS").suspend(); 
    6464  } 
     
    7979  { 
    8080     CTimer::get("XIOS").resume(); 
    81     if(!string_copy(field_hdl->domain_ref.getValue(),domain_ref , domain_ref_size)) 
     81    if(!string_copy(field_hdl->domain_ref.getInheritedValue(),domain_ref , domain_ref_size)) 
    8282      ERROR("void cxios_get_field_domain_ref(field_Ptr field_hdl, char * domain_ref, int domain_ref_size)", <<"Input string is to short"); 
    8383     CTimer::get("XIOS").suspend(); 
     
    8787  { 
    8888     CTimer::get("XIOS").resume(); 
    89     return !field_hdl->domain_ref.isEmpty(); 
     89    return field_hdl->domain_ref.hasInheritedValue(); 
    9090     CTimer::get("XIOS").suspend(); 
    9191  } 
     
    103103  void cxios_get_field_enabled(field_Ptr field_hdl, bool* enabled) 
    104104  { 
    105     *enabled = field_hdl->enabled.getValue(); 
     105    *enabled = field_hdl->enabled.getInheritedValue(); 
    106106  } 
    107107   
     
    109109  { 
    110110     CTimer::get("XIOS").resume(); 
    111     return !field_hdl->enabled.isEmpty(); 
     111    return field_hdl->enabled.hasInheritedValue(); 
    112112     CTimer::get("XIOS").suspend(); 
    113113  } 
     
    128128  { 
    129129     CTimer::get("XIOS").resume(); 
    130     if(!string_copy(field_hdl->field_ref.getValue(),field_ref , field_ref_size)) 
     130    if(!string_copy(field_hdl->field_ref.getInheritedValue(),field_ref , field_ref_size)) 
    131131      ERROR("void cxios_get_field_field_ref(field_Ptr field_hdl, char * field_ref, int field_ref_size)", <<"Input string is to short"); 
    132132     CTimer::get("XIOS").suspend(); 
     
    136136  { 
    137137     CTimer::get("XIOS").resume(); 
    138     return !field_hdl->field_ref.isEmpty(); 
     138    return field_hdl->field_ref.hasInheritedValue(); 
    139139     CTimer::get("XIOS").suspend(); 
    140140  } 
     
    155155  { 
    156156     CTimer::get("XIOS").resume(); 
    157     if(!string_copy(field_hdl->freq_offset.getValue(),freq_offset , freq_offset_size)) 
     157    if(!string_copy(field_hdl->freq_offset.getInheritedValue(),freq_offset , freq_offset_size)) 
    158158      ERROR("void cxios_get_field_freq_offset(field_Ptr field_hdl, char * freq_offset, int freq_offset_size)", <<"Input string is to short"); 
    159159     CTimer::get("XIOS").suspend(); 
     
    163163  { 
    164164     CTimer::get("XIOS").resume(); 
    165     return !field_hdl->freq_offset.isEmpty(); 
     165    return field_hdl->freq_offset.hasInheritedValue(); 
    166166     CTimer::get("XIOS").suspend(); 
    167167  } 
     
    182182  { 
    183183     CTimer::get("XIOS").resume(); 
    184     if(!string_copy(field_hdl->freq_op.getValue(),freq_op , freq_op_size)) 
     184    if(!string_copy(field_hdl->freq_op.getInheritedValue(),freq_op , freq_op_size)) 
    185185      ERROR("void cxios_get_field_freq_op(field_Ptr field_hdl, char * freq_op, int freq_op_size)", <<"Input string is to short"); 
    186186     CTimer::get("XIOS").suspend(); 
     
    190190  { 
    191191     CTimer::get("XIOS").resume(); 
    192     return !field_hdl->freq_op.isEmpty(); 
     192    return field_hdl->freq_op.hasInheritedValue(); 
    193193     CTimer::get("XIOS").suspend(); 
    194194  } 
     
    209209  { 
    210210     CTimer::get("XIOS").resume(); 
    211     if(!string_copy(field_hdl->grid_ref.getValue(),grid_ref , grid_ref_size)) 
     211    if(!string_copy(field_hdl->grid_ref.getInheritedValue(),grid_ref , grid_ref_size)) 
    212212      ERROR("void cxios_get_field_grid_ref(field_Ptr field_hdl, char * grid_ref, int grid_ref_size)", <<"Input string is to short"); 
    213213     CTimer::get("XIOS").suspend(); 
     
    217217  { 
    218218     CTimer::get("XIOS").resume(); 
    219     return !field_hdl->grid_ref.isEmpty(); 
     219    return field_hdl->grid_ref.hasInheritedValue(); 
    220220     CTimer::get("XIOS").suspend(); 
    221221  } 
     
    233233  void cxios_get_field_level(field_Ptr field_hdl, int* level) 
    234234  { 
    235     *level = field_hdl->level.getValue(); 
     235    *level = field_hdl->level.getInheritedValue(); 
    236236  } 
    237237   
     
    239239  { 
    240240     CTimer::get("XIOS").resume(); 
    241     return !field_hdl->level.isEmpty(); 
     241    return field_hdl->level.hasInheritedValue(); 
    242242     CTimer::get("XIOS").suspend(); 
    243243  } 
     
    258258  { 
    259259     CTimer::get("XIOS").resume(); 
    260     if(!string_copy(field_hdl->long_name.getValue(),long_name , long_name_size)) 
     260    if(!string_copy(field_hdl->long_name.getInheritedValue(),long_name , long_name_size)) 
    261261      ERROR("void cxios_get_field_long_name(field_Ptr field_hdl, char * long_name, int long_name_size)", <<"Input string is to short"); 
    262262     CTimer::get("XIOS").suspend(); 
     
    266266  { 
    267267     CTimer::get("XIOS").resume(); 
    268     return !field_hdl->long_name.isEmpty(); 
     268    return field_hdl->long_name.hasInheritedValue(); 
    269269     CTimer::get("XIOS").suspend(); 
    270270  } 
     
    285285  { 
    286286     CTimer::get("XIOS").resume(); 
    287     if(!string_copy(field_hdl->name.getValue(),name , name_size)) 
     287    if(!string_copy(field_hdl->name.getInheritedValue(),name , name_size)) 
    288288      ERROR("void cxios_get_field_name(field_Ptr field_hdl, char * name, int name_size)", <<"Input string is to short"); 
    289289     CTimer::get("XIOS").suspend(); 
     
    293293  { 
    294294     CTimer::get("XIOS").resume(); 
    295     return !field_hdl->name.isEmpty(); 
     295    return field_hdl->name.hasInheritedValue(); 
    296296     CTimer::get("XIOS").suspend(); 
    297297  } 
     
    312312  { 
    313313     CTimer::get("XIOS").resume(); 
    314     if(!string_copy(field_hdl->operation.getValue(),operation , operation_size)) 
     314    if(!string_copy(field_hdl->operation.getInheritedValue(),operation , operation_size)) 
    315315      ERROR("void cxios_get_field_operation(field_Ptr field_hdl, char * operation, int operation_size)", <<"Input string is to short"); 
    316316     CTimer::get("XIOS").suspend(); 
     
    320320  { 
    321321     CTimer::get("XIOS").resume(); 
    322     return !field_hdl->operation.isEmpty(); 
     322    return field_hdl->operation.hasInheritedValue(); 
    323323     CTimer::get("XIOS").suspend(); 
    324324  } 
     
    336336  void cxios_get_field_prec(field_Ptr field_hdl, int* prec) 
    337337  { 
    338     *prec = field_hdl->prec.getValue(); 
     338    *prec = field_hdl->prec.getInheritedValue(); 
    339339  } 
    340340   
     
    342342  { 
    343343     CTimer::get("XIOS").resume(); 
    344     return !field_hdl->prec.isEmpty(); 
     344    return field_hdl->prec.hasInheritedValue(); 
    345345     CTimer::get("XIOS").suspend(); 
    346346  } 
     
    361361  { 
    362362     CTimer::get("XIOS").resume(); 
    363     if(!string_copy(field_hdl->standard_name.getValue(),standard_name , standard_name_size)) 
     363    if(!string_copy(field_hdl->standard_name.getInheritedValue(),standard_name , standard_name_size)) 
    364364      ERROR("void cxios_get_field_standard_name(field_Ptr field_hdl, char * standard_name, int standard_name_size)", <<"Input string is to short"); 
    365365     CTimer::get("XIOS").suspend(); 
     
    369369  { 
    370370     CTimer::get("XIOS").resume(); 
    371     return !field_hdl->standard_name.isEmpty(); 
     371    return field_hdl->standard_name.hasInheritedValue(); 
    372372     CTimer::get("XIOS").suspend(); 
    373373  } 
     
    388388  { 
    389389     CTimer::get("XIOS").resume(); 
    390     if(!string_copy(field_hdl->unit.getValue(),unit , unit_size)) 
     390    if(!string_copy(field_hdl->unit.getInheritedValue(),unit , unit_size)) 
    391391      ERROR("void cxios_get_field_unit(field_Ptr field_hdl, char * unit, int unit_size)", <<"Input string is to short"); 
    392392     CTimer::get("XIOS").suspend(); 
     
    396396  { 
    397397     CTimer::get("XIOS").resume(); 
    398     return !field_hdl->unit.isEmpty(); 
     398    return field_hdl->unit.hasInheritedValue(); 
    399399     CTimer::get("XIOS").suspend(); 
    400400  } 
Note: See TracChangeset for help on using the changeset viewer.