Changeset 9ed706 for src/LinkedCell
- Timestamp:
- Jan 2, 2012, 1:34:58 PM (13 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:
- 99f4ee
- Parents:
- c29915
- git-author:
- Frederik Heber <heber@…> (12/21/11 18:00:53)
- git-committer:
- Frederik Heber <heber@…> (01/02/12 13:34:58)
- Location:
- src/LinkedCell
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
src/LinkedCell/LinkedCell_View.cpp
rc29915 r9ed706 22 22 #include "LinkedCell_View.hpp" 23 23 24 #include <algorithm> 25 26 #include "CodePatterns/Assert.hpp" 24 27 #include "CodePatterns/Log.hpp" 25 28 … … 32 35 using namespace LinkedCell; 33 36 37 // static multimap instance 38 LinkedCell_View::ModelInstanceMap LinkedCell_View::RAIIMap; 39 40 /** Constructor of class LinkedCell_View. 41 * 42 * We add ourselves to RAIIMap here. 43 */ 34 44 LinkedCell_View::LinkedCell_View(const LinkedCell_Model &_LC) : 35 45 LC(_LC) 36 {} 46 { 47 // add us to RAII counting map 48 #ifndef NDEBUG 49 std::pair< ModelInstanceMap::iterator, bool> inserter = 50 #endif 51 RAIIMap.insert( this ); 52 ASSERT( inserter.second, 53 "LinkedCell_View::LinkedCell_View() - we "+toString(this)+" are already present in RAIIMap."); 54 LOG(1, "INFO: Placing instance "+toString(this)+" into RAIIMap."); 55 } 37 56 57 /** Copy Constructor of class LinkedCell_View. 58 * 59 * We add ourselves to RAIIMap here. 60 */ 61 LinkedCell_View::LinkedCell_View(const LinkedCell_View &_view) : 62 LC(_view.LC) 63 { 64 if (this != &_view) { 65 // add us to RAII counting map 66 #ifndef NDEBUG 67 std::pair< ModelInstanceMap::iterator, bool> inserter = 68 #endif 69 RAIIMap.insert( this ); 70 ASSERT( inserter.second, 71 "LinkedCell_View::LinkedCell_View(&view) - we "+toString(this)+" are already present in RAIIMap."); 72 LOG(1, "INFO: Placing instance "+toString(this)+" copied from "+toString(&_view)+" into RAIIMap."); 73 } 74 } 75 76 /** Destructor of class LinkedCell_View. 77 * 78 * We remove ourselves from RAIIMap here. 79 */ 38 80 LinkedCell_View::~LinkedCell_View() 39 81 { 82 ModelInstanceMap::iterator iter = RAIIMap.find(this); 83 ASSERT( iter != RAIIMap.end(), 84 "LinkedCell_View::~LinkedCell_View() - there is no instance " 85 +toString(this)+" in RAIIMap."); 86 if (iter != RAIIMap.end()) { 87 RAIIMap.erase(iter); 88 LOG(1, "INFO: Removing instance "+toString(this)+" from RAIIMap."); 89 } else { 90 ELOG(1, "Failed to remove instance "+toString(this)+" from RAIIMap."); 91 } 40 92 } 41 42 93 43 94 /** Return at least as many points as are inside a sphere of \a radius around \a center. -
src/LinkedCell/LinkedCell_View.hpp
rc29915 r9ed706 14 14 #endif 15 15 16 #include <set> 17 16 18 #include "LinkedCell/types.hpp" 17 19 20 class LinkedCell_ViewTest; 18 21 class TesselPoint; 19 22 class Vector; … … 33 36 class LinkedCell_View 34 37 { 38 //!> grant unit test access to private parts 39 friend class ::LinkedCell_ViewTest; 35 40 public: 36 LinkedCell_View(const LinkedCell_ Model &_LC);41 LinkedCell_View(const LinkedCell_View &_view); 37 42 ~LinkedCell_View(); 38 43 … … 40 45 LinkedList getPointsInsideSphere(const double radius, const Vector ¢er) const; 41 46 private: 47 friend class LinkedCell_Controller; 48 // constructing views is allowed for the controller 49 explicit LinkedCell_View(const LinkedCell_Model &_LC); 50 51 // don't allow any view assignments or default cstors 52 LinkedCell_View & operator=(const LinkedCell_View &_view); 53 LinkedCell_View & operator=(LinkedCell_View &_view); 54 LinkedCell_View(); 55 private: 56 typedef std::set<LinkedCell_View *> ModelInstanceMap; 57 //!> static map to allow for RAII pattern 58 static ModelInstanceMap RAIIMap; 59 //!> internal reference to the underlying model 42 60 const LinkedCell_Model &LC; 43 61 }; -
src/LinkedCell/unittests/LinkedCell_ViewUnitTest.cpp
rc29915 r9ed706 178 178 } 179 179 } 180 181 182 LinkedCell::LinkedCell_View returnView(LinkedCell::LinkedCell_View &view) 183 { 184 return view; 185 } 186 187 LinkedCell::LinkedCell_View returnCopiedView(LinkedCell::LinkedCell_View &view) 188 { 189 LinkedCell::LinkedCell_View retview(view); 190 return retview; 191 } 192 193 /** UnitTest on whether counting in RAIIMap works 194 */ 195 void LinkedCell_ViewTest::RAIIMapTest() 196 { 197 CPPUNIT_ASSERT_EQUAL( (size_t)1, LinkedCell::LinkedCell_View::RAIIMap.size() ); 198 199 // check that we are present 200 LinkedCell::LinkedCell_View::ModelInstanceMap::iterator iter = 201 LinkedCell::LinkedCell_View::RAIIMap.find(LC); 202 CPPUNIT_ASSERT( iter != LinkedCell::LinkedCell_View::RAIIMap.end() ); 203 CPPUNIT_ASSERT( *iter == LC ); 204 205 // check that we are the only value present 206 ++iter; 207 CPPUNIT_ASSERT( iter == LinkedCell::LinkedCell_View::RAIIMap.end() ); 208 209 // add another view and check that there is not assertion 210 LinkedCell::LinkedCell_View *view = NULL; 211 CPPUNIT_ASSERT_NO_THROW( view = new LinkedCell::LinkedCell_View(*LCImpl) ); 212 CPPUNIT_ASSERT_EQUAL( (size_t)2, LinkedCell::LinkedCell_View::RAIIMap.size() ); 213 delete view; 214 CPPUNIT_ASSERT_EQUAL( (size_t)1, LinkedCell::LinkedCell_View::RAIIMap.size() ); 215 216 // copy current view 217 { 218 LinkedCell::LinkedCell_View view(*LC); 219 CPPUNIT_ASSERT_EQUAL( (size_t)2, LinkedCell::LinkedCell_View::RAIIMap.size() ); 220 LinkedCell::LinkedCell_View view2 = *LC; 221 CPPUNIT_ASSERT_EQUAL( (size_t)3, LinkedCell::LinkedCell_View::RAIIMap.size() ); 222 } 223 CPPUNIT_ASSERT_EQUAL( (size_t)1, LinkedCell::LinkedCell_View::RAIIMap.size() ); 224 225 // with function returning view 226 { 227 LinkedCell::LinkedCell_View view = returnView(*LC); 228 CPPUNIT_ASSERT_EQUAL( (size_t)2, LinkedCell::LinkedCell_View::RAIIMap.size() ); 229 } 230 CPPUNIT_ASSERT_EQUAL( (size_t)1, LinkedCell::LinkedCell_View::RAIIMap.size() ); 231 232 // with function returning copied view 233 { 234 LinkedCell::LinkedCell_View view = returnCopiedView(*LC); 235 CPPUNIT_ASSERT_EQUAL( (size_t)2, LinkedCell::LinkedCell_View::RAIIMap.size() ); 236 } 237 CPPUNIT_ASSERT_EQUAL( (size_t)1, LinkedCell::LinkedCell_View::RAIIMap.size() ); 238 } 239 -
src/LinkedCell/unittests/LinkedCell_ViewUnitTest.hpp
rc29915 r9ed706 29 29 CPPUNIT_TEST ( getAllNeighborsTest ); 30 30 CPPUNIT_TEST ( getPointsInsideSphereTest ); 31 CPPUNIT_TEST ( RAIIMapTest ); 31 32 CPPUNIT_TEST_SUITE_END(); 32 33 … … 37 38 void getAllNeighborsTest(); 38 39 void getPointsInsideSphereTest(); 40 void RAIIMapTest(); 39 41 40 42 private: -
src/LinkedCell/unittests/stubs/LinkedCell_ViewStub.cpp
rc29915 r9ed706 28 28 {} 29 29 30 LinkedCell_View::LinkedCell_View(const LinkedCell_View &_view) : 31 LC(_view.LC) 32 {} 33 30 34 LinkedCell_View::~LinkedCell_View() 31 35 {
Note:
See TracChangeset
for help on using the changeset viewer.