Ignore:
Timestamp:
06/03/15 17:57:46 (9 years ago)
Author:
sz
Message:

f0 parsing corrections and enhancements:

  • f0 genotype becomes invalid if any of its numeric fields can't be parsed
  • ParamInterface::set and ParamInterface::load2 return the error flag if a numeric parsing error occured
  • fixed a bug in load2 (was failing on quoted fields containing a comma)
File:
1 edited

Legend:

Unmodified
Added
Removed
  • cpp/frams/param/param.cpp

    r375 r393  
    529529                paInt mn, mx, def;
    530530                if (getMinMax(i, mn, mx, def) >= 3)
    531                         return setInt(i, def);
     531                        return setInt(i, def) | PSET_PARSEFAILED;
    532532                else
    533                         return setInt(i, (paInt)0);
     533                        return setInt(i, (paInt)0) | PSET_PARSEFAILED;
    534534        }
    535535        else
     
    544544                double mn, mx, def;
    545545                if (getMinMax(i, mn, mx, def) >= 3)
    546                         return setDouble(i, def);
     546                        return setDouble(i, def) | PSET_PARSEFAILED;
    547547                else
    548                         return setDouble(i, (double)0);
     548                        return setDouble(i, (double)0) | PSET_PARSEFAILED;
    549549        }
    550550        else
     
    10131013        const char *value, *valstop;
    10141014        SString tmpvalue;
     1015        bool parse_failed=false;
    10151016        if (poz >= s.len()) return fields_loaded;
    10161017        t = s.c_str() + poz;
     
    10381039                        {
    10391040                                field_end = strchrlimit(quote2 + 1, ',', end);
    1040                                 if (!field_end) next_field = field_end = end;
     1041                                if (!field_end) field_end = end;
     1042                                next_field = field_end;
    10411043                        }
    10421044                        equals_sign = strchrlimit(t, '=', quote);
     
    10941096                                logPrintf("Param", "load2", LOG_WARN, "Adjusted '%s' in '%s' (was too %s)",
    10951097                                id(i), getName(), (ret&PSET_HITMAX) ? "big" : "small");
     1098                        if (ret&PSET_PARSEFAILED)
     1099                                parse_failed=true;
    10961100                        *(char*)valstop = remember;
    10971101                }
     
    11041108#endif
    11051109        }
    1106         return fields_loaded;
     1110        return fields_loaded | (parse_failed ? LOAD2_PARSE_FAILED : 0);
    11071111}
    11081112
Note: See TracChangeset for help on using the changeset viewer.