void CNReporter::loadParam(const AffxString& strName, PgOpt::PgOptType type, const AffxString& strValue, affymetrix_calvin_parameter::ParameterNameValueType& param)
{
  param.SetName(StringUtils::ConvertMBSToWCS(strName));
  switch (type) {
  case PgOpt::BOOL_OPT: param.SetValueInt8(((strValue == "true") ? (char)1 : (char)0)); break;
  case PgOpt::DOUBLE_OPT: param.SetValueFloat((float)::getDouble(strValue)); break;
  case PgOpt::INT_OPT: param.SetValueInt32(::getInt(strValue)); break;
  case PgOpt::STRING_OPT:
    if ((strName.indexOf("command-line") != -1) || (strName.indexOf("analysis") != -1) || (strName.indexOf("program-cvs-id") != -1) || (strName.indexOf("version-to-report") != -1) || (strName.endsWith("-dir"))) {
      param.SetValueText(StringUtils::ConvertMBSToWCS(strValue));
    } else {
      param.SetValueText(StringUtils::ConvertMBSToWCS(Fs::basename(strValue)));
    }
    break;
  default: throw(Except("Cannot find PgOpt type for: " + strName));
  }
}