Changeset 15911c for src


Ignore:
Timestamp:
Feb 3, 2011, 9:51:19 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, 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:
081e5d
Parents:
9b3476
git-author:
Frederik Heber <heber@…> (01/05/11 16:09:12)
git-committer:
Frederik Heber <heber@…> (02/03/11 09:51:19)
Message:

Made some cstor of RandomNumber... protected.

  • RandomNumberGenerator now contains refs to engine and distribution instead of encapsulation as it can be made friend of these classes to allow acccess to dstor.
Location:
src
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • src/Makefile.am

    r9b3476 r15911c  
    125125        RandomNumbers/RandomNumberDistributionFactory.cpp \
    126126        RandomNumbers/RandomNumberEngineFactory.cpp \
     127        RandomNumbers/RandomNumberGenerator.cpp \
    127128        RandomNumbers/RandomNumberGeneratorFactory.cpp
    128129
  • src/RandomNumbers/RandomNumberDistribution.hpp

    r9b3476 r15911c  
    1414#endif
    1515
     16class RandomNumberDistributionFactoryTest;
     17class RandomNumberGenerator;
     18
    1619/** Abstract base class for a random number distribution.
    1720 *
     
    2326class RandomNumberDistribution
    2427{
     28  /**
     29   * test has to access cstor/dstor.
     30   */
     31  friend class RandomNumberDistributionFactoryTest;
     32
     33  /**
     34   * RandomNumberGenerator(_Encapsulation) needs access to dstor.
     35   */
     36  friend class RandomNumberGenerator;
     37
    2538public:
    2639  /** Getter for the type name of the internal distribution.
     
    2942  virtual std::string name()=0;
    3043
     44  /** Destructor of class RandomNumberDistribution.
     45   *
     46   * @note must be public such that instances from factory can be destroyed.
     47   *
     48   */
     49  virtual ~RandomNumberDistribution() {};
     50protected:
     51
     52  /** Constructor of class RandomNumberDistribution.
     53   *
     54   * @note is protected such that instances can only be created by the factory.
     55   */
    3156  RandomNumberDistribution() {};
    32   virtual ~RandomNumberDistribution() {};
    33 
    3457};
    3558
  • src/RandomNumbers/RandomNumberEngine.hpp

    r9b3476 r15911c  
    1414#endif
    1515
     16class RandomNumberEngineFactoryTest;
     17class RandomNumberGenerator;
     18
    1619/** Abstract base class for a random number engine.
    1720 *
     
    2326class RandomNumberEngine
    2427{
     28  /**
     29   * test has to access cstor/dstor.
     30   */
     31  friend class RandomNumberEngineFactoryTest;
     32
     33  /**
     34   * RandomNumberGenerator(_Encapsulation) needs access to dstor.
     35   */
     36  friend class RandomNumberGenerator;
     37
    2538public:
    2639  /** Set the generator's seed.
     
    3043  virtual void seed(unsigned int _seed)=0;
    3144
    32   /** Getter for the generator's seed.
    33    *
    34    * @return _seed seed to set to
    35    */
    36   virtual unsigned int getseed() const = 0;
    37 
    3845  /** Getter for the type name of the internal engine.
    3946   *
     
    4148  virtual std::string name()=0;
    4249
     50  /** Destructor of class RandomNumberEngine.
     51   *
     52   * @note must be public such that instances from factory can be destroyed.
     53   *
     54   */
     55  virtual ~RandomNumberEngine() {};
     56protected:
     57  /** Constructor of class RandomNumberEngine.
     58   *
     59   * @note is protected such that instances can only be created by the factory.
     60   */
    4361  RandomNumberEngine() {};
    44   virtual ~RandomNumberEngine() {};
    4562
     63  /** Getter for the generator's seed.
     64   *
     65   * @note is only used internally for unit test.
     66   *
     67   * @return _seed seed to set to
     68   */
     69  virtual unsigned int getseed() const = 0;
    4670};
    4771
  • src/RandomNumbers/RandomNumberGenerator.cpp

    r9b3476 r15911c  
    1919
    2020#include "CodePatterns/MemDebug.hpp"
     21
     22#include "RandomNumberDistribution.hpp"
     23#include "RandomNumberEngine.hpp"
     24#include "RandomNumberGenerator.hpp"
     25
     26RandomNumberGenerator::RandomNumberGenerator() :
     27  engine_type(NULL),
     28  distribution_type(NULL)
     29{};
     30
     31RandomNumberGenerator::~RandomNumberGenerator() {
     32  delete engine_type;
     33  delete distribution_type;
     34};
     35
  • src/RandomNumbers/RandomNumberGenerator.hpp

    r9b3476 r15911c  
    1313#include <config.h>
    1414#endif
     15
     16class RandomNumberDistribution;
     17class RandomNumberEngine;
     18
    1519
    1620/** Abstract base class for a random number generator.
     
    4549  virtual std::string DistributionName()=0;
    4650
    47   RandomNumberGenerator() {};
    48   virtual ~RandomNumberGenerator() {};
     51  /** Destructor of class RandomNumberGenerator.
     52   *
     53   * @note must be public such that instances from factory can be destroyed.
     54   *
     55   */
     56  virtual ~RandomNumberGenerator();
     57
     58protected:
     59  /** Constructor of class RandomNumberGenerator.
     60   *
     61   * @note is protected such that instances can only be created by the factory.
     62   */
     63  RandomNumberGenerator();
     64
     65  // we place them here such that they can be made friend of these
     66  // classes and are granted access to dstor
     67  RandomNumberEngine *engine_type;
     68  RandomNumberDistribution *distribution_type;
    4969
    5070};
  • src/RandomNumbers/RandomNumberGenerator_Encapsulation.hpp

    r9b3476 r15911c  
    143143   */
    144144  RandomNumberGenerator_Encapsulation() :
    145     engine_type(NULL),
    146     distribution_type(NULL),
    147145    randomgenerator(NULL)
    148146  {
     
    165163      RandomNumberDistribution *_distribution_type
    166164      ) :
    167     engine_type(_engine_type),
    168     distribution_type(_distribution_type),
    169     randomgenerator(
    170         new boost::variate_generator<engine, distribution> (
    171             (dynamic_cast<RandomNumberEngine_Encapsulation<engine> *>(engine_type))
    172             ->getEngine(),
    173             (dynamic_cast<RandomNumberDistribution_Encapsulation<distribution> *>(distribution_type))
    174             ->getDistribution())
    175     )
    176   {}
     165        randomgenerator(NULL)
     166  {
     167    engine_type = _engine_type;
     168    distribution_type = _distribution_type;
     169    randomgenerator = new boost::variate_generator<engine, distribution> (
     170          (dynamic_cast<RandomNumberEngine_Encapsulation<engine> *>(engine_type))
     171          ->getEngine(),
     172          (dynamic_cast<RandomNumberDistribution_Encapsulation<distribution> *>(distribution_type))
     173          ->getDistribution());
     174  }
    177175
    178176  /** Destructor of the class.
     
    182180  {
    183181    // NULL pointer may be deleted
    184     delete engine_type;
    185     delete distribution_type;
    186182    delete randomgenerator;
    187183  }
    188 protected:
    189   RandomNumberEngine *engine_type;
    190   RandomNumberDistribution *distribution_type;\
    191184private:
    192185  mutable boost::variate_generator<engine, distribution> *randomgenerator;
  • src/RandomNumbers/unittests/Makefile.am

    r9b3476 r15911c  
    5555        $(srcdir)/../RandomNumberEngineFactory.cpp \
    5656        $(srcdir)/../RandomNumberEngineFactory.hpp \
     57        $(srcdir)/../RandomNumberGenerator.cpp \
    5758        $(srcdir)/../RandomNumberGeneratorFactory.cpp \
    5859        $(srcdir)/../RandomNumberGeneratorFactory.hpp
     
    6667        $(srcdir)/../RandomNumberEngineFactory.cpp \
    6768        $(srcdir)/../RandomNumberEngineFactory.hpp \
     69        $(srcdir)/../RandomNumberGenerator.cpp \
    6870        $(srcdir)/../RandomNumberGeneratorFactory.cpp \
    6971        $(srcdir)/../RandomNumberGeneratorFactory.hpp
Note: See TracChangeset for help on using the changeset viewer.