void ParseIteractiveArguments (int argc, char** argv, char optchar) { int SortOrder = ASCENDING, SortCriterium = UNSORTED; int Method = FULL_OPTIMIZATION; int index = 1; if (argc > 1) /* If there where any arguments. */ { /* See wether argv[1] is a drive specification. */ if ((strlen(argv[1]) == 2) && (argv[1][1] == ':')) { ParsedDrive = argv[1][0]; SetOptimizationDrive(ParsedDrive); index++; } for (; index < argc; index++) { if ((argv[index][0] != optchar) && (argv[index][0] != '/')) ShowError("Invalid input"); switch(toupper(argv[index][1])) { case '\0': BadOption(); break; case 'F': if (argv[index][2] == '\0') { Method = FULL_OPTIMIZATION; MethodEntered = TRUE; } else BadOption(); break; case 'U': if (argv[index][2] == '\0') { Method = UNFRAGMENT_FILES; MethodEntered = TRUE; } else BadOption(); break; case 'S': switch(toupper(argv[index][2])) { case '\0': ShowError("Invalid sort criterium"); break; case 'N': SortCriterium = NAMESORTED; break; case 'D': SortCriterium = DATETIMESORTED; break; case 'E': SortCriterium = EXTENSIONSORTED; break; case 'S': SortCriterium = SIZESORTED; break; default: ShowError("Invalid sort criterium"); } switch(argv[index][3]) { case '\0': SortOrder = ASCENDING; break; case '-': if (argv[index][4] == '\0') SortOrder = DESCENDING; else BadOption(); break; default: ShowError("Invalid sort criterium"); } break; case 'B': if (argv[index][2] == 0) RebootRequested = TRUE; else BadOption(); break; case 'X': if (argv[index][2] == 0) AutoExit = TRUE; else BadOption(); break; default: if ((stricmp(&argv[index][1], "SKIPHIGH") == 0) || (stricmp(&argv[index][1], "LCD") == 0) || (stricmp(&argv[index][1], "BW") == 0) || (stricmp(&argv[index][1], "G0") == 0)) WarnOnNoOp(argv[index]); else BadOption(); } } } SetOptimizationMethod(Method); SetSortOptions(SortCriterium, SortOrder); }
void ExtremeValueAnalysisAttributes::SetFromNode(DataNode *parentNode) { if(parentNode == 0) return; DataNode *searchNode = parentNode->GetNode("ExtremeValueAnalysisAttributes"); if(searchNode == 0) return; DataNode *node; if((node = searchNode->GetNode("dataYearBegin")) != 0) SetDataYearBegin(node->AsInt()); if((node = searchNode->GetNode("dataAnalysisYearRangeEnabled")) != 0) SetDataAnalysisYearRangeEnabled(node->AsBool()); if((node = searchNode->GetNode("dataAnalysisYear1")) != 0) SetDataAnalysisYear1(node->AsInt()); if((node = searchNode->GetNode("dataAnalysisYear2")) != 0) SetDataAnalysisYear2(node->AsInt()); if((node = searchNode->GetNode("ensemble")) != 0) SetEnsemble(node->AsBool()); if((node = searchNode->GetNode("numEnsembles")) != 0) SetNumEnsembles(node->AsInt()); if((node = searchNode->GetNode("dataScaling")) != 0) SetDataScaling(node->AsDouble()); if((node = searchNode->GetNode("extremeMethod")) != 0) { // Allow enums to be int or string in the config file if(node->GetNodeType() == INT_NODE) { int ival = node->AsInt(); if(ival >= 0 && ival < 2) SetExtremeMethod(ExtremeType(ival)); } else if(node->GetNodeType() == STRING_NODE) { ExtremeType value; if(ExtremeType_FromString(node->AsString(), value)) SetExtremeMethod(value); } } if((node = searchNode->GetNode("optimizationMethod")) != 0) { // Allow enums to be int or string in the config file if(node->GetNodeType() == INT_NODE) { int ival = node->AsInt(); if(ival >= 0 && ival < 2) SetOptimizationMethod(OptimizationType(ival)); } else if(node->GetNodeType() == STRING_NODE) { OptimizationType value; if(OptimizationType_FromString(node->AsString(), value)) SetOptimizationMethod(value); } } if((node = searchNode->GetNode("aggregation")) != 0) { // Allow enums to be int or string in the config file if(node->GetNodeType() == INT_NODE) { int ival = node->AsInt(); if(ival >= 0 && ival < 3) SetAggregation(AggregationType(ival)); } else if(node->GetNodeType() == STRING_NODE) { AggregationType value; if(AggregationType_FromString(node->AsString(), value)) SetAggregation(value); } } if((node = searchNode->GetNode("covariateModelScale")) != 0) SetCovariateModelScale(node->AsBool()); if((node = searchNode->GetNode("covariateModelLocation")) != 0) SetCovariateModelLocation(node->AsBool()); if((node = searchNode->GetNode("covariateModelShape")) != 0) SetCovariateModelShape(node->AsBool()); if((node = searchNode->GetNode("computeReturnValues")) != 0) SetComputeReturnValues(node->AsBool()); if((node = searchNode->GetNode("returnValues")) != 0) SetReturnValues(node->AsIntVector()); if((node = searchNode->GetNode("computeRVDifferences")) != 0) SetComputeRVDifferences(node->AsBool()); if((node = searchNode->GetNode("rvDifference1")) != 0) SetRvDifference1(node->AsInt()); if((node = searchNode->GetNode("rvDifference2")) != 0) SetRvDifference2(node->AsInt()); if((node = searchNode->GetNode("displayMonth")) != 0) { // Allow enums to be int or string in the config file if(node->GetNodeType() == INT_NODE) { int ival = node->AsInt(); if(ival >= 0 && ival < 12) SetDisplayMonth(MonthType(ival)); } else if(node->GetNodeType() == STRING_NODE) { MonthType value; if(MonthType_FromString(node->AsString(), value)) SetDisplayMonth(value); } } if((node = searchNode->GetNode("displaySeason")) != 0) { // Allow enums to be int or string in the config file if(node->GetNodeType() == INT_NODE) { int ival = node->AsInt(); if(ival >= 0 && ival < 4) SetDisplaySeason(SeasonType(ival)); } else if(node->GetNodeType() == STRING_NODE) { SeasonType value; if(SeasonType_FromString(node->AsString(), value)) SetDisplaySeason(value); } } if((node = searchNode->GetNode("computeParamValues")) != 0) SetComputeParamValues(node->AsBool()); if((node = searchNode->GetNode("dumpData")) != 0) SetDumpData(node->AsBool()); if((node = searchNode->GetNode("dumpDebug")) != 0) SetDumpDebug(node->AsBool()); }
void ParseCmdLineArguments (int argc, char** argv, char optchar) { int SortOrder = ASCENDING, SortCriterium = UNSORTED; int Method = FULL_OPTIMIZATION; int index; if (argc > 1) /* If there where any arguments. */ { /* See wether argv[1] is a drive specification. */ if ((strlen(argv[1]) == 2) && (argv[1][1] == ':')) { SetParsedDrive(argv[1][0]); SetOptimizationDrive(argv[1][0]); } else ShowError("No disk entered on command line"); for (index = 2; index < argc; index++) { if ((argv[index][0] != optchar) && (argv[index][0] != '/')) ShowError("Invalid input"); switch(toupper(argv[index][1])) { case '\0': BadOption(); break; case 'F': if (argv[index][2] == '\0') { Method = FULL_OPTIMIZATION; MethodIsEntered(); } else if ((toupper(argv[index][2]) == 'O') && (argv[index][3] == '\0')) SetFullOutput(); else BadOption(); break; case 'U': if (argv[index][2] == '\0') { Method = UNFRAGMENT_FILES; MethodIsEntered(); } else BadOption(); break; case 'S': switch(toupper(argv[index][2])) { case '\0': ShowError("Invalid sort criterium"); break; case 'N': SortCriterium = NAMESORTED; break; case 'D': SortCriterium = DATETIMESORTED; break; case 'E': SortCriterium = EXTENSIONSORTED; break; case 'S': SortCriterium = SIZESORTED; break; default: ShowError("Invalid sort criterium"); } switch(argv[index][3]) { case '\0': SortOrder = ASCENDING; break; case '-': if (argv[index][4] == '\0') SortOrder = DESCENDING; else BadOption(); break; default: ShowError("Invalid sort criterium"); } break; case 'B': if (argv[index][2] == 0) RequestReboot(); else BadOption(); break; case 'X': if (argv[index][2] == 0) AutomaticallyExit(); else BadOption(); break; case 'A': if (argv[index][2] == 0) SetAudibleWarning(); else BadOption(); break; default: if ((stricmp(&argv[index][1], "SKIPHIGH") == 0) || (stricmp(&argv[index][1], "LCD") == 0) || (stricmp(&argv[index][1], "BW") == 0) || (stricmp(&argv[index][1], "G0") == 0)) WarnOnNoOp(argv[index]); else BadOption(); } } } else ShowError("No disk entered on command line"); SetOptimizationMethod(Method); SetSortOptions(SortCriterium, SortOrder); }