Changeset d067d45 for src/config.cpp
- Timestamp:
- Jul 23, 2009, 1:45:24 PM (16 years ago)
- Branches:
- Action_Thermostats, Add_AtomRandomPerturbation, Add_FitFragmentPartialChargesAction, Add_RotateAroundBondAction, Add_SelectAtomByNameAction, Added_ParseSaveFragmentResults, AddingActions_SaveParseParticleParameters, Adding_Graph_to_ChangeBondActions, Adding_MD_integration_tests, Adding_ParticleName_to_Atom, Adding_StructOpt_integration_tests, AtomFragments, Automaking_mpqc_open, AutomationFragmentation_failures, Candidate_v1.5.4, Candidate_v1.6.0, Candidate_v1.6.1, Candidate_v1.7.0, Candidate_v1.7.1, ChangeBugEmailaddress, ChangingTestPorts, ChemicalSpaceEvaluator, CombiningParticlePotentialParsing, Combining_Subpackages, Debian_Package_split, Debian_package_split_molecuildergui_only, Disabling_MemDebug, Docu_Python_wait, EmpiricalPotential_contain_HomologyGraph, EmpiricalPotential_contain_HomologyGraph_documentation, Enable_parallel_make_install, Enhance_userguide, Enhanced_StructuralOptimization, Enhanced_StructuralOptimization_continued, Example_ManyWaysToTranslateAtom, Exclude_Hydrogens_annealWithBondGraph, FitPartialCharges_GlobalError, Fix_BoundInBox_CenterInBox_MoleculeActions, Fix_ChargeSampling_PBC, Fix_ChronosMutex, Fix_FitPartialCharges, Fix_FitPotential_needs_atomicnumbers, Fix_ForceAnnealing, Fix_IndependentFragmentGrids, Fix_ParseParticles, Fix_ParseParticles_split_forward_backward_Actions, Fix_PopActions, Fix_QtFragmentList_sorted_selection, Fix_Restrictedkeyset_FragmentMolecule, Fix_StatusMsg, Fix_StepWorldTime_single_argument, Fix_Verbose_Codepatterns, Fix_fitting_potentials, Fixes, ForceAnnealing_goodresults, ForceAnnealing_oldresults, ForceAnnealing_tocheck, ForceAnnealing_with_BondGraph, ForceAnnealing_with_BondGraph_continued, ForceAnnealing_with_BondGraph_continued_betteresults, ForceAnnealing_with_BondGraph_contraction-expansion, FragmentAction_writes_AtomFragments, FragmentMolecule_checks_bonddegrees, GeometryObjects, Gui_Fixes, Gui_displays_atomic_force_velocity, ImplicitCharges, IndependentFragmentGrids, IndependentFragmentGrids_IndividualZeroInstances, IndependentFragmentGrids_IntegrationTest, IndependentFragmentGrids_Sole_NN_Calculation, JobMarket_RobustOnKillsSegFaults, JobMarket_StableWorkerPool, JobMarket_unresolvable_hostname_fix, MoreRobust_FragmentAutomation, ODR_violation_mpqc_open, PartialCharges_OrthogonalSummation, PdbParser_setsAtomName, PythonUI_with_named_parameters, QtGui_reactivate_TimeChanged_changes, Recreated_GuiChecks, Rewrite_FitPartialCharges, RotateToPrincipalAxisSystem_UndoRedo, SaturateAtoms_findBestMatching, SaturateAtoms_singleDegree, StoppableMakroAction, Subpackage_CodePatterns, Subpackage_JobMarket, Subpackage_LinearAlgebra, Subpackage_levmar, Subpackage_mpqc_open, Subpackage_vmg, Switchable_LogView, ThirdParty_MPQC_rebuilt_buildsystem, TrajectoryDependenant_MaxOrder, TremoloParser_IncreasedPrecision, TremoloParser_MultipleTimesteps, TremoloParser_setsAtomName, Ubuntu_1604_changes, stable
- Children:
- 51c910
- Parents:
- ce5ac3 (diff), 437922 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)links above to see all the changes relative to each parent. - git-author:
- Frederik Heber <heber@…> (07/23/09 12:34:47)
- git-committer:
- Frederik Heber <heber@…> (07/23/09 13:45:24)
- File:
-
- 1 edited
-
src/config.cpp (modified) (59 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/config.cpp
rce5ac3 rd067d45 1 1 /** \file config.cpp 2 * 2 * 3 3 * Function implementations for the class config. 4 * 4 * 5 5 */ 6 6 … … 65 65 UseAddGramSch=1; 66 66 Seed=1; 67 67 68 MaxOuterStep=0; 68 69 Deltat=0.01; … … 73 74 MaxPsiStep=0; 74 75 EpsWannier=1e-7; 75 76 76 77 MaxMinStep=100; 77 78 RelEpsTotalEnergy=1e-7; … … 84 85 InitMaxMinStopStep=1; 85 86 InitMaxMinGapStopStep=0; 86 87 87 88 //BoxLength[NDIM*NDIM]; 88 89 89 90 ECut=128.; 90 91 MaxLevel=5; … … 99 100 PsiMaxNoDown=0; 100 101 AddPsis=0; 101 102 102 103 RCut=20.; 103 104 StructOpt=0; … … 199 200 * for each entry of the config file structure. 200 201 */ 201 void config::Edit( molecule *mol)202 void config::Edit() 202 203 { 203 204 char choice; 204 205 205 206 do { 206 207 cout << Verbose(0) << "===========EDIT CONFIGURATION============================" << endl; … … 235 236 cout << Verbose(0) << " g - Relative change in kinetic energy to stop min. iteration during initial level" << endl; 236 237 cout << Verbose(0) << " h - Check stop conditions every ..th step during min. iteration during initial level" << endl; 237 cout << Verbose(0) << " j - six lower diagonal entries of matrix, defining the unit cell" << endl;238 // cout << Verbose(0) << " j - six lower diagonal entries of matrix, defining the unit cell" << endl; 238 239 cout << Verbose(0) << " k - Energy cutoff of plane wave basis in Hartree" << endl; 239 240 cout << Verbose(0) << " l - Maximum number of levels in multi-level-ansatz" << endl; … … 255 256 cout << Verbose(0) << "INPUT: "; 256 257 cin >> choice; 257 258 258 259 switch (choice) { 259 260 case 'A': // mainname … … 380 381 cin >> config::InitMaxMinStopStep; 381 382 break; 382 383 case 'j': // BoxLength384 cout << Verbose(0) << "enter lower triadiagonalo form of basis matrix" << endl << endl;385 for (int i=0;i<6;i++) {386 cout << Verbose(0) << "Cell size" << i << ": ";387 cin >> mol->cell_size[i];388 }389 break;390 383 384 // case 'j': // BoxLength 385 // cout << Verbose(0) << "enter lower triadiagonalo form of basis matrix" << endl << endl; 386 // for (int i=0;i<6;i++) { 387 // cout << Verbose(0) << "Cell size" << i << ": "; 388 // cin >> mol->cell_size[i]; 389 // } 390 // break; 391 391 392 case 'k': // ECut 392 393 cout << Verbose(0) << "Old: " << config::ECut << "\t new: "; … … 462 463 * \param *periode pointer to a periodentafel class with all elements 463 464 * \param *mol pointer to molecule containing all atoms of the molecule 464 * \return 0 - old syntax, 1 - new syntax, -1 - unknown syntax 465 * \return 0 - old syntax, 1 - new syntax, -1 - unknown syntax 465 466 */ 466 467 int config::TestSyntax(char *filename, periodentafel *periode, molecule *mol) … … 468 469 int test; 469 470 ifstream file(filename); 470 471 471 472 // search file for keyword: ProcPEGamma (new syntax) 472 473 if (ParseForParameter(1,&file,"ProcPEGamma", 0, 1, 1, int_type, &test, 1, optional)) { … … 539 540 * \param *file input file stream being the opened config file 540 541 * \param *periode pointer to a periodentafel class with all elements 541 * \param *mol pointer to molecule containing all atoms of the molecule 542 * \param *mol pointer to molecule containing all atoms of the molecule 542 543 */ 543 544 void config::Load(char *filename, periodentafel *periode, molecule *mol) … … 550 551 RetrieveConfigPathAndName(filename); 551 552 // ParseParameters 552 553 553 554 /* Oeffne Hauptparameterdatei */ 554 555 int di; … … 595 596 config::DoOutCurrent = 0; 596 597 if (config::DoOutCurrent < 0) config::DoOutCurrent = 0; 597 if (config::DoOutCurrent > 1) config::DoOutCurrent = 1; 598 if (config::DoOutCurrent > 1) config::DoOutCurrent = 1; 598 599 ParseForParameter(verbose,file,"AddGramSch", 0, 1, 1, int_type, &(config::UseAddGramSch), 1, critical); 599 600 if (config::UseAddGramSch < 0) config::UseAddGramSch = 0; … … 630 631 if (!ParseForParameter(verbose,file,"EpsWannier", 0, 1, 1, double_type, &(config::EpsWannier), 1, optional)) 631 632 config::EpsWannier = 1e-8; 632 633 633 634 // stop conditions 634 635 //if (config::MaxOuterStep <= 0) config::MaxOuterStep = 1; 635 636 ParseForParameter(verbose,file,"MaxPsiStep", 0, 1, 1, int_type, &(config::MaxPsiStep), 1, critical); 636 637 if (config::MaxPsiStep <= 0) config::MaxPsiStep = 3; 637 638 638 639 ParseForParameter(verbose,file,"MaxMinStep", 0, 1, 1, int_type, &(config::MaxMinStep), 1, critical); 639 640 ParseForParameter(verbose,file,"RelEpsTotalE", 0, 1, 1, double_type, &(config::RelEpsTotalEnergy), 1, critical); … … 644 645 if (config::MaxMinStopStep < 1) config::MaxMinStopStep = 1; 645 646 if (config::MaxMinGapStopStep < 1) config::MaxMinGapStopStep = 1; 646 647 647 648 ParseForParameter(verbose,file,"MaxInitMinStep", 0, 1, 1, int_type, &(config::MaxInitMinStep), 1, critical); 648 649 ParseForParameter(verbose,file,"InitRelEpsTotalE", 0, 1, 1, double_type, &(config::InitRelEpsTotalEnergy), 1, critical); … … 653 654 if (config::InitMaxMinStopStep < 1) config::InitMaxMinStopStep = 1; 654 655 if (config::InitMaxMinGapStopStep < 1) config::InitMaxMinGapStopStep = 1; 655 656 656 657 // Unit cell and magnetic field 657 658 ParseForParameter(verbose,file, "BoxLength", 0, 3, 3, lower_trigrid, BoxLength, 1, critical); /* Lattice->RealBasis */ … … 669 670 config::DoFullCurrent = 0; 670 671 if (config::DoFullCurrent < 0) config::DoFullCurrent = 0; 671 if (config::DoFullCurrent > 2) config::DoFullCurrent = 2; 672 if (config::DoFullCurrent > 2) config::DoFullCurrent = 2; 672 673 if (config::DoOutNICS < 0) config::DoOutNICS = 0; 673 if (config::DoOutNICS > 2) config::DoOutNICS = 2; 674 if (config::DoOutNICS > 2) config::DoOutNICS = 2; 674 675 if (config::DoPerturbation == 0) { 675 676 config::DoFullCurrent = 0; … … 688 689 } else { 689 690 fprintf(stderr, "0 <= RiemanTensor < 2: 0 UseNotRT, 1 UseRT"); 690 exit(1); 691 exit(1); 691 692 } 692 693 switch (config::RiemannTensor) { … … 705 706 if (config::RiemannLevel < 2) { 706 707 config::RiemannLevel = 2; 707 } 708 } 708 709 if (config::RiemannLevel > config::MaxLevel-1) { 709 710 config::RiemannLevel = config::MaxLevel-1; … … 712 713 if (config::LevRFactor < 2) { 713 714 config::LevRFactor = 2; 714 } 715 } 715 716 config::Lev0Factor = 2; 716 717 config::RTActualUse = 2; … … 722 723 } else { 723 724 fprintf(stderr, "0 <= PsiType < 2: 0 UseSpinDouble, 1 UseSpinUpDown"); 724 exit(1); 725 exit(1); 725 726 } 726 727 switch (config::PsiType) { … … 736 737 break; 737 738 } 738 739 739 740 // IonsInitRead 740 741 741 742 ParseForParameter(verbose,file,"RCut", 0, 1, 1, double_type, &(config::RCut), 1, critical); 742 743 ParseForParameter(verbose,file,"IsAngstroem", 0, 1, 1, int_type, &(config::IsAngstroem), 1, critical); … … 756 757 ParseForParameter(verbose,file, name, 0, 2, 1, int_type, &Z, 1, critical); 757 758 elementhash[i] = periode->FindElement(Z); 758 cout << Verbose(1) << i << ". Z = " << elementhash[i]->Z << " with " << No[i] << " ions." << endl; 759 cout << Verbose(1) << i << ". Z = " << elementhash[i]->Z << " with " << No[i] << " ions." << endl; 759 760 } 760 761 int repetition = 0; // which repeated keyword shall be read 761 762 762 763 map<int, atom *> AtomList[config::MaxTypes]; 763 764 if (!FastParsing) { … … 778 779 } else 779 780 neues = AtomList[i][j]; 780 status = (status && 781 status = (status && 781 782 ParseForParameter(verbose,file, keyword, 0, 1, 1, double_type, &neues->x.x[0], 1, (repetition == 0) ? critical : optional) && 782 783 ParseForParameter(verbose,file, keyword, 0, 2, 1, double_type, &neues->x.x[1], 1, (repetition == 0) ? critical : optional) && … … 784 785 ParseForParameter(verbose,file, keyword, 0, 4, 1, int_type, &neues->FixedIon, 1, (repetition == 0) ? critical : optional)); 785 786 if (!status) break; 786 787 787 788 // check size of vectors 788 789 if (mol->Trajectories[neues].R.size() <= (unsigned int)(repetition)) { … … 792 793 mol->Trajectories[neues].F.resize(repetition+10); 793 794 } 794 795 795 796 // put into trajectories list 796 797 for (int d=0;d<NDIM;d++) 797 798 mol->Trajectories[neues].R.at(repetition).x[d] = neues->x.x[d]; 798 799 799 800 // parse velocities if present 800 801 if(!ParseForParameter(verbose,file, keyword, 0, 5, 1, double_type, &neues->v.x[0], 1,optional)) … … 806 807 for (int d=0;d<NDIM;d++) 807 808 mol->Trajectories[neues].U.at(repetition).x[d] = neues->v.x[d]; 808 809 809 810 // parse forces if present 810 811 if(!ParseForParameter(verbose,file, keyword, 0, 8, 1, double_type, &value[0], 1,optional)) … … 816 817 for (int d=0;d<NDIM;d++) 817 818 mol->Trajectories[neues].F.at(repetition).x[d] = value[d]; 818 819 // cout << "Parsed position of step " << (repetition) << ": ("; 819 820 // cout << "Parsed position of step " << (repetition) << ": ("; 820 821 // for (int d=0;d<NDIM;d++) 821 822 // cout << mol->Trajectories[neues].R.at(repetition).x[d] << " "; // next step … … 873 874 * \param *file input file stream being the opened config file with old pcp syntax 874 875 * \param *periode pointer to a periodentafel class with all elements 875 * \param *mol pointer to molecule containing all atoms of the molecule 876 * \param *mol pointer to molecule containing all atoms of the molecule 876 877 */ 877 878 void config::LoadOld(char *filename, periodentafel *periode, molecule *mol) … … 884 885 RetrieveConfigPathAndName(filename); 885 886 // ParseParameters 886 887 887 888 /* Oeffne Hauptparameterdatei */ 888 889 int l, i, di; … … 894 895 int Z, No, AtomNo, found; 895 896 int verbose = 0; 896 897 897 898 /* Namen einlesen */ 898 899 … … 926 927 ParseForParameter(verbose,file,"ScaleTempStep", 0, 1, 1, int_type, &(config::ScaleTempStep), 1, optional); 927 928 config::EpsWannier = 1e-8; 928 929 929 930 // stop conditions 930 931 //if (config::MaxOuterStep <= 0) config::MaxOuterStep = 1; 931 932 ParseForParameter(verbose,file,"MaxPsiStep", 0, 1, 1, int_type, &(config::MaxPsiStep), 1, critical); 932 933 if (config::MaxPsiStep <= 0) config::MaxPsiStep = 3; 933 934 934 935 ParseForParameter(verbose,file,"MaxMinStep", 0, 1, 1, int_type, &(config::MaxMinStep), 1, critical); 935 936 ParseForParameter(verbose,file,"MaxMinStep", 0, 2, 1, double_type, &(config::RelEpsTotalEnergy), 1, critical); … … 939 940 if (config::MaxMinStopStep < 1) config::MaxMinStopStep = 1; 940 941 config::MaxMinGapStopStep = 1; 941 942 942 943 ParseForParameter(verbose,file,"MaxInitMinStep", 0, 1, 1, int_type, &(config::MaxInitMinStep), 1, critical); 943 944 ParseForParameter(verbose,file,"MaxInitMinStep", 0, 2, 1, double_type, &(config::InitRelEpsTotalEnergy), 1, critical); … … 970 971 } else { 971 972 fprintf(stderr, "0 <= RiemanTensor < 2: 0 UseNotRT, 1 UseRT"); 972 exit(1); 973 exit(1); 973 974 } 974 975 switch (config::RiemannTensor) { … … 987 988 if (config::RiemannLevel < 2) { 988 989 config::RiemannLevel = 2; 989 } 990 } 990 991 if (config::RiemannLevel > config::MaxLevel-1) { 991 992 config::RiemannLevel = config::MaxLevel-1; … … 994 995 if (config::LevRFactor < 2) { 995 996 config::LevRFactor = 2; 996 } 997 } 997 998 config::Lev0Factor = 2; 998 999 config::RTActualUse = 2; … … 1004 1005 } else { 1005 1006 fprintf(stderr, "0 <= PsiType < 2: 0 UseSpinDouble, 1 UseSpinUpDown"); 1006 exit(1); 1007 exit(1); 1007 1008 } 1008 1009 switch (config::PsiType) { … … 1018 1019 break; 1019 1020 } 1020 1021 1021 1022 // IonsInitRead 1022 1023 1023 1024 ParseForParameter(verbose,file,"RCut", 0, 1, 1, double_type, &(config::RCut), 1, critical); 1024 1025 ParseForParameter(verbose,file,"IsAngstroem", 0, 1, 1, int_type, &(config::IsAngstroem), 1, critical); … … 1027 1028 1028 1029 // Routine from builder.cpp 1029 1030 1031 for (i=MAX_ELEMENTS;i--;) 1030 1031 1032 for (i=MAX_ELEMENTS;i--;) 1032 1033 elementhash[i] = NULL; 1033 1034 cout << Verbose(0) << "Parsing Ions ..." << endl; … … 1040 1041 } 1041 1042 if (found > 0) { 1042 if (zeile.find("Ions_Data") == 0) 1043 if (zeile.find("Ions_Data") == 0) 1043 1044 getline(*file,zeile,'\n'); // read next line and parse this one 1044 1045 istringstream input(zeile); … … 1069 1070 No++; 1070 1071 } 1071 } 1072 } 1072 1073 file->close(); 1073 1074 delete(file); … … 1077 1078 * \param *filename name of file 1078 1079 * \param *periode pointer to a periodentafel class with all elements 1079 * \param *mol pointer to molecule containing all atoms of the molecule 1080 * \param *mol pointer to molecule containing all atoms of the molecule 1080 1081 */ 1081 1082 bool config::Save(const char *filename, periodentafel *periode, molecule *mol) const … … 1207 1208 * Note that this format cannot be parsed again. 1208 1209 * \param *filename name of file (without ".in" suffix!) 1209 * \param *mol pointer to molecule containing all atoms of the molecule 1210 * \param *mol pointer to molecule containing all atoms of the molecule 1210 1211 */ 1211 1212 bool config::SaveMPQC(const char *filename, molecule *mol) const … … 1218 1219 ofstream *output = NULL; 1219 1220 stringstream *fname = NULL; 1220 1221 1221 1222 // first without hessian 1222 1223 fname = new stringstream; … … 1227 1228 *output << "\tsavestate = no" << endl; 1228 1229 *output << "\tdo_gradient = yes" << endl; 1229 *output << "\tmole< CLHF>: (" << endl;1230 *output << "\tmole<MBPT2>: (" << endl; 1230 1231 *output << "\t\tmaxiter = 200" << endl; 1231 1232 *output << "\t\tbasis = $:basis" << endl; 1232 1233 *output << "\t\tmolecule = $:molecule" << endl; 1234 *output << "\t\treference<CLHF>: (" << endl; 1235 *output << "\t\t\tbasis = $:basis" << endl; 1236 *output << "\t\t\tmolecule = $:molecule" << endl; 1237 *output << "\t\t)" << endl; 1233 1238 *output << "\t)" << endl; 1234 1239 *output << ")" << endl; … … 1313 1318 delete(output); 1314 1319 delete(fname); 1315 1320 1316 1321 return true; 1317 1322 }; … … 1325 1330 * \param file file to be parsed 1326 1331 * \param name Name of value in file (at least 3 chars!) 1327 * \param sequential 1 - do not reset file pointer to begin of file, 0 - set to beginning 1332 * \param sequential 1 - do not reset file pointer to begin of file, 0 - set to beginning 1328 1333 * (if file is sequentially parsed this can be way faster! However, beware of multiple values per line, as whole line is read - 1329 1334 * best approach: 0 0 0 1 (not resetted only on last value of line) - and of yth, which is now … … 1345 1350 dummy1 = free_dummy = (char *) Malloc(256 * sizeof(char), "config::ParseForParameter: *free_dummy"); 1346 1351 1347 //fprintf(stderr,"Parsing for %s\n",name); 1352 //fprintf(stderr,"Parsing for %s\n",name); 1348 1353 if (repetition == 0) 1349 1354 //Error(SomeError, "ParseForParameter(): argument repetition must not be 0!"); … … 1366 1371 file->clear(); 1367 1372 file->seekg(file_position, ios::beg); // rewind to start position 1368 Free((void **)&free_dummy, "config::ParseForParameter: *free_dummy"); 1373 Free((void **)&free_dummy, "config::ParseForParameter: *free_dummy"); 1369 1374 return 0; 1370 1375 } … … 1372 1377 line++; 1373 1378 } while (dummy != NULL && dummy1 != NULL && ((dummy1[0] == '#') || (dummy1[0] == '\0'))); // skip commentary and empty lines 1374 1379 1375 1380 // C++ getline removes newline at end, thus re-add 1376 1381 if ((dummy1 != NULL) && (strchr(dummy1,'\n') == NULL)) { … … 1398 1403 //fprintf(stderr,"Error: Cannot find tabs or spaces on line %i in search for %s\n", line, name); 1399 1404 //Free((void **)&free_dummy); 1400 //Error(FileOpenParams, NULL); 1405 //Error(FileOpenParams, NULL); 1401 1406 } else { 1402 1407 //fprintf(stderr,"found tab at %i\n",(char *)dummy-(char *)dummy1); … … 1407 1412 if ((name == NULL) || (((dummy-dummy1 >= 3) && (strncmp(dummy1, name, strlen(name)) == 0)) && ((unsigned int)(dummy-dummy1) == strlen(name)))) { 1408 1413 found++; // found the parameter! 1409 //fprintf(stderr,"found %s at line %i between %i and %i\n", name, line, dummy1, dummy); 1410 1414 //fprintf(stderr,"found %s at line %i between %i and %i\n", name, line, dummy1, dummy); 1415 1411 1416 if (found == repetition) { 1412 1417 for (i=0;i<xth;i++) { // i = rows … … 1447 1452 dummy1[j+1] = '\0'; 1448 1453 } 1449 1454 1450 1455 int start = (type >= grid) ? 0 : yth-1 ; 1451 1456 for (j=start;j<yth;j++) { // j = columns … … 1470 1475 //return 0; 1471 1476 exit(255); 1472 //Error(FileOpenParams, NULL); 1477 //Error(FileOpenParams, NULL); 1473 1478 } else { 1474 1479 //if (!sequential) … … 1485 1490 // found comment, skipping rest of line 1486 1491 //if (verbose) fprintf(stderr,"Error: '#' at %i and still missing %i value(s) for parameter %s\n", line, yth-j, name); 1487 if (!sequential) { // here we need it! 1492 if (!sequential) { // here we need it! 1488 1493 file->seekg(file_position, ios::beg); // rewind to start position 1489 1494 } … … 1500 1505 //value += sizeof(int); 1501 1506 break; 1502 case(row_double): 1507 case(row_double): 1503 1508 case(grid): 1504 1509 case(lower_trigrid): … … 1541 1546 } 1542 1547 } 1543 } 1548 } 1544 1549 if ((type >= row_int) && (verbose)) fprintf(stderr,"\n"); 1545 1550 Free((void **)&free_dummy, "config::ParseForParameter: *free_dummy"); … … 1549 1554 } 1550 1555 //fprintf(stderr, "End of Parsing\n\n"); 1551 1556 1552 1557 return (found); // true if found, false if not 1553 1558 }
Note:
See TracChangeset
for help on using the changeset viewer.
