Changeset 1c9588 for src


Ignore:
Timestamp:
Nov 15, 2012, 5:31:08 PM (12 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:
6131d8
Parents:
8f6a27
git-author:
Michael Ankele <ankele@…> (09/14/12 12:31:31)
git-committer:
Frederik Heber <heber@…> (11/15/12 17:31:08)
Message:

Refactoring: ShapeFactory now uses global ShapeType

Location:
src/Shapes
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • src/Shapes/Shape.hpp

    r8f6a27 r1c9588  
    2727class LineSegmentSet;
    2828class Line;
    29 class ShapeFactoryTest;
    3029
    3130class Shape
     
    3433  typedef boost::shared_ptr<Shape_impl> impl_ptr;
    3534  friend impl_ptr getShapeImpl(const Shape&);
    36   friend class ShapeFactoryTest;
    3735
    3836  Shape(impl_ptr);
  • src/Shapes/ShapeFactory.cpp

    r8f6a27 r1c9588  
    4444#include "LinearAlgebra/RealSpaceMatrix.hpp"
    4545
    46 const char *ShapeFactory::shapeNames[ShapeFactory::SHAPETYPES_MAX] = {"nowhere", "everywhere", "sphere", "cube", "cylinder"};
     46const char *ShapeFactory::shapeNames[MAX_ShapeType] = {"nowhere", "everywhere", "sphere", "cube", "polygon", "combined", "cylinder"};
    4747
    4848ShapeFactory::ShapeFactory()
    4949{
    5050  // Create map (type -> name).
    51   for (int i=0; i<SHAPETYPES_MAX; i++)
     51  for (int i=0; i<MAX_ShapeType; i++)
    5252    shapeNameMap.insert(std::pair<ShapeType, std::string>((ShapeType)i, shapeNames[i]));
    5353
    5454  // Create inverse map.
    55   for (int i=0; i<SHAPETYPES_MAX; i++)
     55  for (int i=0; i<MAX_ShapeType; i++)
    5656    nameShapeMap.insert(std::pair<std::string, ShapeType>(shapeNames[i], (ShapeType)i));
    5757
    5858  // Init state.
    59   type = SPHERE;
     59  type = SphereType;
    6060  translation.Zero();
    6161  stretch = Vector(1.,1.,1.);
     
    6464}
    6565
    66 ShapeFactory::ShapeType ShapeFactory::getShapeByName(const std::string& name)
     66ShapeType ShapeFactory::getShapeByName(const std::string& name)
    6767{
    6868  NameShapeMap::iterator iter = nameShapeMap.find(name);
     
    112112  // Create the basic shape.
    113113  Shape s = Nowhere();
    114   if (type == NOWHERE){
     114  if (type == NowhereType){
    115115    s = Nowhere();
    116   }else if (type == EVERYWHERE){
     116  }else if (type == EverywhereType){
    117117    s = Everywhere();
    118   }else if (type == CUBE){
     118  }else if (type == CuboidType){
    119119    s = Cuboid();
    120   }else if (type == SPHERE){
     120  }else if (type == SphereType){
    121121    s = Sphere();
    122   }else if (type == CYLINDER){
     122  }else if (type == CylinderType){
    123123    s = Cylinder();
    124124  }else{
  • src/Shapes/ShapeFactory.hpp

    r8f6a27 r1c9588  
    2525
    2626public:
    27   enum ShapeType{
    28     NOWHERE, EVERYWHERE, SPHERE, CUBE, CYLINDER, SHAPETYPES_MAX
    29   };
    3027
    3128  ShapeType getShapeByName(const std::string &name);
  • src/Shapes/ShapeRegistry.cpp

    r8f6a27 r1c9588  
    4141#include "CodePatterns/Observer/Channels.hpp"
    4242
     43#include "ShapeFactory.hpp"
     44
    4345ShapeRegistry::ShapeRegistry() :
    4446  Observable::Observable("ShapeRegistry")
     
    5658}
    5759
     60std::string ShapeRegistry::getDefaultNameForShape(Shape s) const
     61{
     62  std::string baseName = ShapeFactory::getInstance().getShapeName(s.getType());
     63  int n = 1;
     64  while(true){
     65    std::string name = baseName + toString(n);
     66    if (!isPresentByName(name))
     67      return name;
     68    n ++;
     69  }
     70  return "";
     71}
     72
    5873void ShapeRegistry::addShape(Shape s)
    5974{
     
    6479}
    6580
     81void ShapeRegistry::removeShape(const std::string &name)
     82{
     83  OBSERVE;
     84  Shape *instance = getByName(name);
     85  unregisterInstance(instance);
     86  delete(instance);
     87  NOTIFY(ShapeRemoved);
     88}
     89
    6690CONSTRUCT_SINGLETON(ShapeRegistry)
    6791CONSTRUCT_REGISTRY(Shape)
  • src/Shapes/ShapeRegistry.hpp

    r8f6a27 r1c9588  
    2727public:
    2828  void addShape(Shape s);
     29  void removeShape(const std::string &name);
    2930  Shape* getShapeByName(const std::string name);
    3031  bool isShapePresentByName(const std::string name) const;
     32  std::string getDefaultNameForShape(Shape s) const;
    3133
    3234  enum NotificationType {
  • src/Shapes/ShapeType.hpp

    r8f6a27 r1c9588  
    2222        PolygonType,
    2323        CombinedType,
    24         MAX_ShapeType,
    25     CylinderType
     24  CylinderType,
     25        MAX_ShapeType
    2626};
    2727
  • src/Shapes/unittests/ShapeFactoryUnitTest.cpp

    r8f6a27 r1c9588  
    7575  ShapeFactory::getInstance().setTranslation(Vector(0., 0., 0.));
    7676
    77   ShapeFactory::getInstance().setType(ShapeFactory::NOWHERE);
    78   CPPUNIT_ASSERT( dynamic_cast<Nowhere_impl*>(ShapeFactory::getInstance().produce().getImpl().get()) );
     77  ShapeFactory::getInstance().setType(NowhereType);
     78  CPPUNIT_ASSERT_EQUAL( ShapeFactory::getInstance().produce().getType(), NowhereType );
    7979
    80   ShapeFactory::getInstance().setType(ShapeFactory::EVERYWHERE);
    81   CPPUNIT_ASSERT( dynamic_cast<Everywhere_impl*>(ShapeFactory::getInstance().produce().getImpl().get()) );
     80  ShapeFactory::getInstance().setType(EverywhereType);
     81  CPPUNIT_ASSERT_EQUAL( ShapeFactory::getInstance().produce().getType(), EverywhereType );
    8282
    83   ShapeFactory::getInstance().setType(ShapeFactory::SPHERE);
    84   CPPUNIT_ASSERT( dynamic_cast<Sphere_impl*>(ShapeFactory::getInstance().produce().getImpl().get()) );
     83  ShapeFactory::getInstance().setType(SphereType);
     84  CPPUNIT_ASSERT_EQUAL( ShapeFactory::getInstance().produce().getType(), SphereType );
    8585
    86   ShapeFactory::getInstance().setType(ShapeFactory::CUBE);
    87   CPPUNIT_ASSERT( dynamic_cast<Cuboid_impl*>(ShapeFactory::getInstance().produce().getImpl().get()) );
     86  ShapeFactory::getInstance().setType(CuboidType);
     87  CPPUNIT_ASSERT_EQUAL( ShapeFactory::getInstance().produce().getType(), CuboidType );
    8888
    89   ShapeFactory::getInstance().setType(ShapeFactory::CYLINDER);
    90   CPPUNIT_ASSERT( dynamic_cast<Cylinder_impl*>(ShapeFactory::getInstance().produce().getImpl().get()) );
     89  ShapeFactory::getInstance().setType(CylinderType);
     90  CPPUNIT_ASSERT_EQUAL( ShapeFactory::getInstance().produce().getType(), CylinderType );
    9191}
    9292
    9393void ShapeFactoryTest::resizeTest()
    9494{
    95   ShapeFactory::getInstance().setType(ShapeFactory::SPHERE);
     95  ShapeFactory::getInstance().setType(SphereType);
    9696  ShapeFactory::getInstance().setAngle(0., 0., 0.);
    9797  ShapeFactory::getInstance().setStretch(Vector(2., 2., 2.));
     
    109109void ShapeFactoryTest::translateTest()
    110110{
    111   ShapeFactory::getInstance().setType(ShapeFactory::SPHERE);
     111  ShapeFactory::getInstance().setType(SphereType);
    112112  ShapeFactory::getInstance().setAngle(0., 0., 0.);
    113113  ShapeFactory::getInstance().setStretch(Vector(1., 1., 1.));
     
    128128void ShapeFactoryTest::stretchTest()
    129129{
    130   ShapeFactory::getInstance().setType(ShapeFactory::SPHERE);
     130  ShapeFactory::getInstance().setType(SphereType);
    131131  ShapeFactory::getInstance().setAngle(0., 0., 0.);
    132132  ShapeFactory::getInstance().setStretch(Vector(2., 1., 1.));
     
    144144void ShapeFactoryTest::transformTest()
    145145{
    146   ShapeFactory::getInstance().setType(ShapeFactory::SPHERE);
     146  ShapeFactory::getInstance().setType(SphereType);
    147147  ShapeFactory::getInstance().setAngle(45., 0., 0.);
    148148  ShapeFactory::getInstance().setStretch(Vector(1., 1., 1.));
     
    160160void ShapeFactoryTest::getterSetterTest()
    161161{
    162   ShapeFactory::getInstance().setType(ShapeFactory::SPHERE);
    163   CPPUNIT_ASSERT_EQUAL( ShapeFactory::getInstance().getType(), ShapeFactory::SPHERE );
    164   ShapeFactory::getInstance().setType(ShapeFactory::CUBE);
    165   CPPUNIT_ASSERT_EQUAL( ShapeFactory::getInstance().getType(), ShapeFactory::CUBE );
     162  ShapeFactory::getInstance().setType(SphereType);
     163  CPPUNIT_ASSERT_EQUAL( ShapeFactory::getInstance().getType(), SphereType );
     164  ShapeFactory::getInstance().setType(CuboidType);
     165  CPPUNIT_ASSERT_EQUAL( ShapeFactory::getInstance().getType(), CuboidType );
    166166#ifndef NDEBUG
    167   CPPUNIT_ASSERT_THROW( ShapeFactory::getInstance().setType((ShapeFactory::ShapeType)-1), Assert::AssertionFailure );
     167  CPPUNIT_ASSERT_THROW( ShapeFactory::getInstance().setType((ShapeType)-1), Assert::AssertionFailure );
    168168#endif
    169169
Note: See TracChangeset for help on using the changeset viewer.