Changeset e359a8
- Timestamp:
- Nov 23, 2009, 6:51:50 PM (15 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, 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:
- 482373, c5f836
- Parents:
- 717e0c
- Location:
- src
- Files:
-
- 13 edited
Legend:
- Unmodified
- Added
- Removed
-
src/analysis_correlation.hpp
r717e0c re359a8 72 72 if (map == NULL) { 73 73 eLog() << Verbose(0) << "Nothing to min/max, map is NULL!" << endl; 74 performCriticalExit(); 74 75 return; 75 76 } … … 107 108 if (map == NULL) { 108 109 eLog() << Verbose(0) << "Nothing to bin, is NULL!" << endl; 110 performCriticalExit(); 109 111 return outmap; 110 112 } -
src/boundary.cpp
r717e0c re359a8 1006 1006 } else { 1007 1007 //Log() << Verbose(1) << "Line " << *baseline->second << " has " << baseline->second->triangles.size() << " triangles adjacent" << endl; 1008 if (baseline->second->triangles.size() != 2) 1008 if (baseline->second->triangles.size() != 2) { 1009 1009 eLog() << Verbose(0) << "TESSELATION FINISHED WITH INVALID TRIANGLE COUNT!" << endl; 1010 performCriticalExit(); 1011 } 1010 1012 } 1011 1013 -
src/builder.cpp
r717e0c re359a8 1170 1170 else { 1171 1171 eLog() << Verbose(0) << "I don't have anything to test on ... "; 1172 performCriticalExit(); 1172 1173 return; 1173 1174 } … … 1451 1452 if ((argptr >= argc) || (argv[argptr][0] == '-')) { 1452 1453 eLog() << Verbose(0) << "Not enough or invalid arguments for specifying element db: -e <db file>" << endl; 1454 performCriticalExit(); 1453 1455 } else { 1454 1456 Log() << Verbose(0) << "Using " << argv[argptr] << " as elements database." << endl; … … 1460 1462 if ((argptr >= argc) || (argv[argptr][0] == '-')) { 1461 1463 eLog() << Verbose(0) << "Not enough or invalid arguments for specifying bond length table: -g <table file>" << endl; 1464 performCriticalExit(); 1462 1465 } else { 1463 1466 BondGraphFileName = argv[argptr]; … … 1552 1555 ExitFlag = 255; 1553 1556 eLog() << Verbose(0) << "Not enough arguments for parsing: -p <xyz file>" << endl; 1557 performCriticalExit(); 1554 1558 } else { 1555 1559 SaveFlag = true; … … 1568 1572 ExitFlag = 255; 1569 1573 eLog() << Verbose(0) << "Not enough or invalid arguments for adding atom: -a <element> <x> <y> <z>" << endl; 1574 performCriticalExit(); 1570 1575 } else { 1571 1576 SaveFlag = true; … … 1596 1601 ExitFlag = 255; 1597 1602 eLog() << Verbose(0) << "Not enough or invalid arguments given for setting MPQC basis: -B <basis name>" << endl; 1603 performCriticalExit(); 1598 1604 } else { 1599 1605 configuration.basis = argv[argptr]; … … 1640 1646 ExitFlag = 255; 1641 1647 eLog() << Verbose(0) << "Not enough or invalid arguments given for pair correlation analysis: -C <Z> <output> <bin output>" << endl; 1648 performCriticalExit(); 1642 1649 } else { 1643 1650 SaveFlag = false; … … 1686 1693 ExitFlag = 255; 1687 1694 eLog() << Verbose(0) << "Not enough or invalid arguments given for changing element: -E <atom nr.> <element>" << endl; 1695 performCriticalExit(); 1688 1696 } else { 1689 1697 SaveFlag = true; … … 1699 1707 ExitFlag = 255; 1700 1708 eLog() << Verbose(0) << "Not enough or invalid arguments given for filling box with water: -F <dist_x> <dist_y> <dist_z> <randatom> <randmol> <DoRotate>" << endl; 1709 performCriticalExit(); 1701 1710 } else { 1702 1711 SaveFlag = true; … … 1737 1746 ExitFlag =255; 1738 1747 eLog() << Verbose(0) << "Missing source file for bonds in molecule: -A <bond sourcefile>" << endl; 1748 performCriticalExit(); 1739 1749 } else { 1740 1750 Log() << Verbose(0) << "Parsing bonds from " << argv[argptr] << "." << endl; … … 1750 1760 ExitFlag = 255; 1751 1761 eLog() << Verbose(0) << "Not enough or invalid arguments given for non-convex envelope: -o <radius> <tecplot output file>" << endl; 1762 performCriticalExit(); 1752 1763 } else { 1753 1764 class Tesselation *T = NULL; … … 1783 1794 ExitFlag = 255; 1784 1795 eLog() << Verbose(0) << "Not enough or invalid arguments given for storing tempature: -S <temperature file>" << endl; 1796 performCriticalExit(); 1785 1797 } else { 1786 1798 Log() << Verbose(1) << "Storing temperatures in " << argv[argptr] << "." << endl; … … 1800 1812 ExitFlag = 255; 1801 1813 eLog() << Verbose(0) << "Not enough or invalid arguments given for storing tempature: -L <step0> <step1> <prefix> <identity mapping?>" << endl; 1814 performCriticalExit(); 1802 1815 } else { 1803 1816 SaveFlag = true; … … 1817 1830 ExitFlag = 255; 1818 1831 eLog() << Verbose(0) << "Not enough or invalid arguments given for parsing and integrating forces: -P <forces file>" << endl; 1832 performCriticalExit(); 1819 1833 } else { 1820 1834 SaveFlag = true; … … 1832 1846 ExitFlag = 255; 1833 1847 eLog() << Verbose(0) << "Not enough or invalid arguments given for removing atoms: -R <id> <distance>" << endl; 1848 performCriticalExit(); 1834 1849 } else { 1835 1850 SaveFlag = true; … … 1857 1872 ExitFlag = 255; 1858 1873 eLog() << Verbose(0) << "Not enough or invalid arguments given for translation: -t <x> <y> <z>" << endl; 1874 performCriticalExit(); 1859 1875 } else { 1860 1876 if (ExitFlag == 0) ExitFlag = 1; … … 1872 1888 ExitFlag = 255; 1873 1889 eLog() << Verbose(0) << "Not enough or invalid arguments given for periodic translation: -T <x> <y> <z>" << endl; 1890 performCriticalExit(); 1874 1891 } else { 1875 1892 if (ExitFlag == 0) ExitFlag = 1; … … 1887 1904 ExitFlag = 255; 1888 1905 eLog() << Verbose(0) << "Not enough or invalid arguments given for scaling: -s <factor_x> [factor_y] [factor_z]" << endl; 1906 performCriticalExit(); 1889 1907 } else { 1890 1908 SaveFlag = true; … … 1910 1928 ExitFlag = 255; 1911 1929 eLog() << Verbose(0) << "Not enough or invalid arguments given for centering in box: -b <xx> <xy> <xz> <yy> <yz> <zz>" << endl; 1930 performCriticalExit(); 1912 1931 } else { 1913 1932 SaveFlag = true; … … 1927 1946 ExitFlag = 255; 1928 1947 eLog() << Verbose(0) << "Not enough or invalid arguments given for bounding in box: -B <xx> <xy> <xz> <yy> <yz> <zz>" << endl; 1948 performCriticalExit(); 1929 1949 } else { 1930 1950 SaveFlag = true; … … 1944 1964 ExitFlag = 255; 1945 1965 eLog() << Verbose(0) << "Not enough or invalid arguments given for centering with boundary: -c <boundary_x> <boundary_y> <boundary_z>" << endl; 1966 performCriticalExit(); 1946 1967 } else { 1947 1968 SaveFlag = true; … … 1977 1998 ExitFlag = 255; 1978 1999 eLog() << Verbose(0) << "Not enough or invalid arguments given for removing atoms: -r <id>" << endl; 2000 performCriticalExit(); 1979 2001 } else { 1980 2002 SaveFlag = true; … … 1990 2012 ExitFlag = 255; 1991 2013 eLog() << Verbose(0) << "Not enough or invalid arguments for fragmentation: -f <max. bond distance> <bond order>" << endl; 2014 performCriticalExit(); 1992 2015 } else { 1993 2016 Log() << Verbose(0) << "Fragmenting molecule with bond distance " << argv[argptr] << " angstroem, order of " << argv[argptr+1] << "." << endl; … … 2023 2046 ExitFlag = 255; 2024 2047 eLog() << Verbose(0) << "Not enough or invalid arguments given for convex envelope: -o <convex output file> <non-convex output file>" << endl; 2048 performCriticalExit(); 2025 2049 } else { 2026 2050 class Tesselation *TesselStruct = NULL; … … 2047 2071 ExitFlag = 255; 2048 2072 eLog() << Verbose(0) << "Not enough or invalid arguments given for suspension with specified volume: -U <volume> <density>" << endl; 2049 volume = -1; // for case 'u': don't print error again2073 performCriticalExit(); 2050 2074 } else { 2051 2075 volume = atof(argv[argptr++]); … … 2058 2082 ExitFlag = 255; 2059 2083 eLog() << Verbose(0) << "Not enough arguments given for suspension: -u <density>" << endl; 2084 performCriticalExit(); 2060 2085 } else { 2061 2086 double density; … … 2064 2089 density = atof(argv[argptr++]); 2065 2090 if (density < 1.0) { 2066 eLog() << Verbose( 0) << "Density must be greater than 1.0g/cm^3 !" << endl;2091 eLog() << Verbose(1) << "Density must be greater than 1.0g/cm^3 !" << endl; 2067 2092 density = 1.3; 2068 2093 } … … 2081 2106 ExitFlag = 255; 2082 2107 eLog() << Verbose(0) << "Not enough or invalid arguments given for repeating cells: -d <repeat_x> <repeat_y> <repeat_z>" << endl; 2108 performCriticalExit(); 2083 2109 } else { 2084 2110 SaveFlag = true; -
src/config.cpp
r717e0c re359a8 143 143 if (LineMapping == NULL) { 144 144 eLog() << Verbose(0) << "map pointer is NULL: " << LineMapping << endl; 145 performCriticalExit(); 145 146 return; 146 147 } … … 156 157 if (CurrentLine+nr < NoLines) 157 158 LineMapping[CurrentLine+(nr++)] = runner->second; 158 else 159 else { 159 160 eLog() << Verbose(0) << "config::MapIonTypesInBuffer - NoAtoms is wrong: We are past the end of the file!" << endl; 161 performCriticalExit(); 162 } 160 163 } 161 164 } … … 686 689 if (MaxTypes == 0) { 687 690 eLog() << Verbose(0) << "There are no atoms according to MaxTypes in this config file." << endl; 691 performCriticalExit(); 688 692 } else { 689 693 // prescan number of ions per type … … 704 708 if (!ParseForParameter(verbose,FileBuffer, (const char*)name, 1, 1, 1, int_type, &value[0], 1, critical)) { 705 709 eLog() << Verbose(0) << "There are no atoms in the config file!" << endl; 710 performCriticalExit(); 706 711 return; 707 712 } -
src/helpers.hpp
r717e0c re359a8 111 111 if (LookupTable == NULL) { 112 112 eLog() << Verbose(0) << "LookupTable memory allocation failed!" << endl; 113 performCriticalExit(); 113 114 status = false; 114 115 } else { -
src/molecule.cpp
r717e0c re359a8 445 445 Walker->type = elemente->FindElement(shorthand); 446 446 if (Walker->type == NULL) { 447 eLog() << Verbose( 0) << "Could not parse the element at line: '" << line << "', setting to H.";447 eLog() << Verbose(1) << "Could not parse the element at line: '" << line << "', setting to H."; 448 448 Walker->type = elemente->FindElement(1); 449 449 } -
src/molecule_dynamics.cpp
r717e0c re359a8 307 307 if (Params.DoubleList[i] > 1) { 308 308 eLog() << Verbose(0) << "Failed to create an injective PermutationMap!" << endl; 309 exit(1);309 performCriticalExit(); 310 310 } 311 311 Log() << Verbose(1) << "done." << endl; … … 569 569 if (!Force.ParseMatrix(file, 0,0,0)) { 570 570 eLog() << Verbose(0) << "Could not parse Force Matrix file " << file << "." << endl; 571 performCriticalExit(); 571 572 return false; 572 573 } 573 574 if (Force.RowCounter[0] != AtomCount) { 574 575 eLog() << Verbose(0) << "Mismatch between number of atoms in file " << Force.RowCounter[0] << " and in molecule " << AtomCount << "." << endl; 576 performCriticalExit(); 575 577 return false; 576 578 } -
src/molecule_fragmentation.cpp
r717e0c re359a8 111 111 if (!testGraphInsert.second) { 112 112 eLog() << Verbose(0) << "KeySet file must be corrupt as there are two equal key sets therein!" << endl; 113 performCriticalExit(); 113 114 } 114 115 } … … 211 212 } else { 212 213 eLog() << Verbose(0) << "Unable to open " << line << " for writing keysets!" << endl; 214 performCriticalExit(); 213 215 status = false; 214 216 } … … 368 370 } else { 369 371 eLog() << Verbose(0) << "Atom No. " << (*runner).second.first << " was not found in this molecule." << endl; 372 performCriticalExit(); 370 373 } 371 374 } … … 449 452 map<int, pair<double,int> > *AdaptiveCriteriaList = ScanAdaptiveFileIntoMap(path, *IndexKeySetList); // (Root No., (Value, Order)) ! 450 453 if (AdaptiveCriteriaList->empty()) { 451 eLog() << Verbose( 0) << "Unable to parse file, incrementing all." << endl;454 eLog() << Verbose(2) << "Unable to parse file, incrementing all." << endl; 452 455 while (Walker->next != end) { 453 456 Walker = Walker->next; … … 638 641 MolecularWalker->Leaf->FragmentBOSSANOVA(FragmentList[FragmentCounter], RootStack[FragmentCounter], MinimumRingSize); 639 642 } else { 640 eLog() << Verbose( 0) << "Subgraph " << MolecularWalker << " has no atoms!" << endl;643 eLog() << Verbose(1) << "Subgraph " << MolecularWalker << " has no atoms!" << endl; 641 644 } 642 645 FragmentCounter++; // next fragment list -
src/molecule_graph.cpp
r717e0c re359a8 926 926 break; // breaking here will not cause error! 927 927 } 928 if (i == vertex->ListOfBonds.size()) 928 if (i == vertex->ListOfBonds.size()) { 929 929 eLog() << Verbose(0) << "Error: All Component entries are already occupied!" << endl; 930 } else 930 performCriticalExit(); 931 } 932 } else { 931 933 eLog() << Verbose(0) << "Error: Given vertex is NULL!" << endl; 934 performCriticalExit(); 935 } 932 936 } 933 937 ; … … 1114 1118 if (ReferenceStack->IsEmpty()) { 1115 1119 eLog() << Verbose(0) << "ReferenceStack is empty!" << endl; 1120 performCriticalExit(); 1116 1121 return false; 1117 1122 } -
src/moleculelist.cpp
r717e0c re359a8 402 402 input.open(line.c_str()); 403 403 if (input == NULL) { 404 eLog() << Verbose(0) << endl << "Unable to open " << line << ", is the directory correct?" 405 << endl;404 eLog() << Verbose(0) << endl << "Unable to open " << line << ", is the directory correct?" << endl; 405 performCriticalExit(); 406 406 return false; 407 407 } … … 442 442 if (input == NULL) { 443 443 eLog() << Verbose(0) << endl << "Unable to open " << line << ", is the directory correct?" << endl; 444 performCriticalExit(); 444 445 return false; 445 446 } … … 643 644 if (path != NULL) 644 645 strcpy(PathBackup, path); 645 else 646 else { 646 647 eLog() << Verbose(0) << "OutputConfigForListOfFragments: NULL default path obtained from config!" << endl; 648 performCriticalExit(); 649 } 647 650 648 651 // correct periodic -
src/parser.cpp
r717e0c re359a8 159 159 if (input == NULL) { 160 160 eLog() << Verbose(0) << endl << "Unable to open " << name << ", is the directory correct?" << endl; 161 performCriticalExit(); 161 162 return false; 162 163 } … … 179 180 //Log() << Verbose(0) << line.str() << endl; 180 181 //Log() << Verbose(0) << "ColumnCounter[" << MatrixNr << "]: " << ColumnCounter[MatrixNr] << "." << endl; 181 if (ColumnCounter[MatrixNr] == 0) 182 if (ColumnCounter[MatrixNr] == 0) { 182 183 eLog() << Verbose(0) << "ColumnCounter[" << MatrixNr << "]: " << ColumnCounter[MatrixNr] << " from file " << name << ", this is probably an error!" << endl; 184 performCriticalExit(); 185 } 183 186 184 187 // scan rest for number of rows/lines … … 193 196 } 194 197 //Log() << Verbose(0) << "RowCounter[" << MatrixNr << "]: " << RowCounter[MatrixNr] << " from file " << name << "." << endl; 195 if (RowCounter[MatrixNr] == 0) 198 if (RowCounter[MatrixNr] == 0) { 196 199 eLog() << Verbose(0) << "RowCounter[" << MatrixNr << "]: " << RowCounter[MatrixNr] << " from file " << name << ", this is probably an error!" << endl; 200 performCriticalExit(); 201 } 197 202 198 203 // allocate matrix if it's not zero dimension in one direction … … 428 433 if (m > RowCounter[ KeySets.OrderSet[Order][CurrentFragment] ]) { 429 434 eLog() << Verbose(0) << "In fragment No. " << KeySets.OrderSet[Order][CurrentFragment] << " current force index " << m << " is greater than " << RowCounter[ KeySets.OrderSet[Order][CurrentFragment] ] << "!" << endl; 435 performCriticalExit(); 430 436 return false; 431 437 } … … 471 477 if (output == NULL) { 472 478 eLog() << Verbose(0) << "Unable to open output energy file " << line.str() << "!" << endl; 479 performCriticalExit(); 473 480 return false; 474 481 } … … 500 507 if (output == NULL) { 501 508 eLog() << Verbose(0) << "Unable to open output matrix file " << line.str() << "!" << endl; 509 performCriticalExit(); 502 510 return false; 503 511 } … … 656 664 if (j > RowCounter[MatrixCounter]) { 657 665 eLog() << Verbose(0) << "Current force index " << j << " is greater than " << RowCounter[MatrixCounter] << "!" << endl; 666 performCriticalExit(); 658 667 return false; 659 668 } … … 793 802 if (j > RowCounter[MatrixCounter]) { 794 803 eLog() << Verbose(0) << "Current hessian index " << j << " is greater than " << RowCounter[MatrixCounter] << ", where i=" << i << ", Order=" << Order << ", l=" << l << " and FragmentNr=" << FragmentNr << "!" << endl; 804 performCriticalExit(); 795 805 return false; 796 806 } … … 800 810 if (k > ColumnCounter[MatrixCounter]) { 801 811 eLog() << Verbose(0) << "Current hessian index " << k << " is greater than " << ColumnCounter[MatrixCounter] << ", where m=" << m << ", j=" << j << ", i=" << i << ", Order=" << Order << ", l=" << l << " and FragmentNr=" << FragmentNr << "!" << endl; 812 performCriticalExit(); 802 813 return false; 803 814 } … … 852 863 if (m > RowCounter[ KeySets.OrderSet[Order][CurrentFragment] ]) { 853 864 eLog() << Verbose(0) << "In fragment No. " << KeySets.OrderSet[Order][CurrentFragment] << " current row index " << m << " is greater than " << RowCounter[ KeySets.OrderSet[Order][CurrentFragment] ] << "!" << endl; 865 performCriticalExit(); 854 866 return false; 855 867 } … … 869 881 if (n > ColumnCounter[ KeySets.OrderSet[Order][CurrentFragment] ]) { 870 882 eLog() << Verbose(0) << "In fragment No. " << KeySets.OrderSet[Order][CurrentFragment] << " current column index " << n << " is greater than " << ColumnCounter[ KeySets.OrderSet[Order][CurrentFragment] ] << "!" << endl; 883 performCriticalExit(); 871 884 return false; 872 885 } -
src/tesselation.cpp
r717e0c re359a8 333 333 if (Counter < 3) 334 334 { 335 eLog() << Verbose(0) << "ERROR! We have a triangle with only two distinct endpoints!" 336 << endl; 337 //exit(1); 335 eLog() << Verbose(0) << "ERROR! We have a triangle with only two distinct endpoints!" << endl; 336 performCriticalExit(); 338 337 } 339 338 Log() << Verbose(0) << "." << endl; -
src/tesselationhelpers.cpp
r717e0c re359a8 187 187 gamma = M_PI - SideA.Angle(&SideB); 188 188 //Log() << Verbose(3) << "INFO: alpha = " << alpha/M_PI*180. << ", beta = " << beta/M_PI*180. << ", gamma = " << gamma/M_PI*180. << "." << endl; 189 if (fabs(M_PI - alpha - beta - gamma) > HULLEPSILON) 189 if (fabs(M_PI - alpha - beta - gamma) > HULLEPSILON) { 190 190 eLog() << Verbose(0) << "GetCenterofCircumcircle: Sum of angles " << (alpha+beta+gamma)/M_PI*180. << " > 180 degrees by " << fabs(M_PI - alpha - beta - gamma)/M_PI*180. << "!" << endl; 191 performCriticalExit(); 192 } 191 193 192 194 Center->Zero();
Note:
See TracChangeset
for help on using the changeset viewer.