Ignore:
Timestamp:
Oct 18, 2011, 8:07:37 AM (14 years ago)
Author:
Frederik Heber <heber@…>
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, 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:
1b145f
Parents:
a9b86d
git-author:
Frederik Heber <heber@…> (09/16/11 16:24:18)
git-committer:
Frederik Heber <heber@…> (10/18/11 08:07:37)
Message:

Removed C arrays in KeySetsContainer and MatrixContainer.

  • replaced by std::vector<>s.
  • transition is so far very minimal, external (range) counters are still present.
  • extracted allocation of memory into own block in MatrixContainer::parseMatrix().
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/Fragmentation/KeySetsContainer.cpp

    ra9b86d r9758f7  
    2121
    2222#include <fstream>
     23#include <sstream>
    2324
    2425#include "CodePatterns/Log.hpp"
     
    3233 */
    3334KeySetsContainer::KeySetsContainer() :
    34   KeySets(NULL),
    35   AtomCounter(NULL),
    3635  FragmentCounter(0),
    3736  Order(0),
    38   FragmentsPerOrder(0),
    39   OrderSet(NULL)
     37  FragmentsPerOrder(0)
    4038{};
    4139
     
    4341 */
    4442KeySetsContainer::~KeySetsContainer() {
    45   for(int i=FragmentCounter;i--;)
    46     delete[](KeySets[i]);
    47   for(int i=Order;i--;)
    48     delete[](OrderSet[i]);
    49   delete[](KeySets);
    50   delete[](OrderSet);
    51   delete[](AtomCounter);
    52   delete[](FragmentsPerOrder);
     43//  for(int i=FragmentCounter;i--;)
     44//    delete[](KeySets[i]);
     45//  for(int i=Order;i--;)
     46//    delete[](OrderSet[i]);
     47//  delete[](KeySets);
     48//  delete[](OrderSet);
     49//  delete[](AtomCounter);
     50//  delete[](FragmentsPerOrder);
    5351};
    5452
     
    5957 * \return parsing succesful
    6058 */
    61 bool KeySetsContainer::ParseKeySets(const char *name, const int *ACounter, const int FCounter) {
     59bool KeySetsContainer::ParseKeySets(const std::string name, const IntVector ACounter, const int FCounter) {
    6260  ifstream input;
    6361  char *FragmentNumber = NULL;
     
    6765  FragmentCounter = FCounter;
    6866  DoLog(0) && (Log() << Verbose(0) << "Parsing key sets." << endl);
    69   KeySets = new int*[FragmentCounter];
    70   for(int i=FragmentCounter;i--;)
    71     KeySets[i] = NULL;
     67  KeySets.resize(FragmentCounter);
    7268  file << name << FRAGMENTPREFIX << KEYSETFILE;
    7369  input.open(file.str().c_str(), ios::in);
     
    7773  }
    7874
    79   AtomCounter = new int[FragmentCounter];
     75  AtomCounter.resize(FragmentCounter);
    8076  for(int i=0;(i<FragmentCounter) && (!input.eof());i++) {
    8177    stringstream line;
    8278    AtomCounter[i] = ACounter[i];
    8379    // parse the values
    84     KeySets[i] = new int[AtomCounter[i]];
     80    KeySets[i].resize(AtomCounter[i]);
    8581    for(int j=AtomCounter[i];j--;)
    8682      KeySets[i][j] = -1;
     
    121117
    122118  // scan through all to determine fragments per order
    123   FragmentsPerOrder = new int[Order];
    124   for(int i=Order;i--;)
    125     FragmentsPerOrder[i] = 0;
     119  FragmentsPerOrder.resize(Order);
     120//  for(int i=Order;i--;)
     121//    FragmentsPerOrder[i] = 0;
    126122  for(int i=FragmentCounter;i--;) {
    127123    Counter=0;
     
    135131
    136132  // scan through all to gather indices to each order set
    137   OrderSet = new int*[Order];
     133  OrderSet.resize(Order);
    138134  for(int i=Order;i--;)
    139     OrderSet[i] = new int[FragmentsPerOrder[i]];
     135    OrderSet[i].resize(FragmentsPerOrder[i]);
    140136  for(int i=Order;i--;)
    141137    FragmentsPerOrder[i] = 0;
Note: See TracChangeset for help on using the changeset viewer.