Ignore:
Timestamp:
Feb 3, 2011, 9:59:58 AM (15 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:
a5028f
Parents:
5347cd
git-author:
Frederik Heber <heber@…> (01/15/11 14:38:57)
git-committer:
Frederik Heber <heber@…> (02/03/11 09:59:58)
Message:

RandomNumberGeneratorFactory does not clone anymore.

  • cloning of the generator was nonsense, as (because of same seed), we always start at same random number sequence. I.e. if we often obtain new random number generator we hardly get random numbers.
  • RandomNumberGeneratorFactory::makeRandomNumberGenerator() returns now reference to avoid accidental free'ing of the instance (that is still contained in the prototype table of the factory).
  • unit test of RandomNumberGenerator now checks for non-copy received.
  • RandomNumberGenerator()::get...Name() are now const members.
  • in many cases where pointer *rng was received and ref &random obtained from it, we now receive ref directly (and then don't accidentally forget to delete the clone anymore. Which is good in any case!).
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/RandomNumbers/RandomNumberGeneratorFactory.cpp

    r5347cd r63839f  
    5555      !GeneratorPrototypeTable.empty();
    5656      iter = GeneratorPrototypeTable.begin()) {
    57     EmptyPrototypeTable< std::map<RandomNumberDistributionFactory::TypeList,Clone<RandomNumberGenerator> *> > (iter->second);
     57    EmptyPrototypeTable< std::map<RandomNumberDistributionFactory::TypeList,RandomNumberGenerator*> > (iter->second);
    5858    GeneratorPrototypeTable.erase(iter);
    5959  }
     
    100100}
    101101
    102 RandomNumberGenerator* RandomNumberGeneratorFactory::makeRandomNumberGenerator() const
     102RandomNumberGenerator& RandomNumberGeneratorFactory::makeRandomNumberGenerator() const
    103103{
    104104  // Instantiate and return (implicitly creates a copy of the stored prototype)
     
    108108      RandomNumberDistributionFactory::getInstance().getCurrentTypeEnum();
    109109
    110   return (GeneratorPrototypeTable[ eng_type ][ dis_type ]->clone());
     110  return (*GeneratorPrototypeTable[ eng_type ][ dis_type ]);
    111111}
    112112
    113 RandomNumberGenerator* RandomNumberGeneratorFactory::makeRandomNumberGenerator(
     113RandomNumberGenerator& RandomNumberGeneratorFactory::makeRandomNumberGenerator(
    114114    std::string engine_type,
    115115    std::string distribution_type
     
    128128  } else
    129129    dis_type = RandomNumberDistributionFactory::getInstance().getCurrentTypeEnum();
    130   return (GeneratorPrototypeTable[ eng_type ][ dis_type ]->clone());
     130  return (*GeneratorPrototypeTable[ eng_type ][ dis_type ]);
    131131
    132   return (GeneratorPrototypeTable[ eng_type ][ dis_type ]->clone());
     132  return (*GeneratorPrototypeTable[ eng_type ][ dis_type ]);
    133133}
    134134
Note: See TracChangeset for help on using the changeset viewer.