Changes in / [a77c96:cd032d]


Ignore:
Location:
src
Files:
4 added
45 edited

Legend:

Unmodified
Added
Removed
  • src/Actions/Action.cpp

    ra77c96 rcd032d  
    1717{
    1818  if(_doRegister){
    19     ActionRegistry::getRegistry()->registerAction(this);
     19    ActionRegistry::getInstance().registerAction(this);
    2020  }
    2121}
  • src/Actions/ActionRegistry.cpp

    ra77c96 rcd032d  
    99#include "Actions/Action.hpp"
    1010
     11#include "Patterns/Singleton_impl.hpp"
     12
    1113#include <string>
    1214#include <cassert>
     
    1416
    1517using namespace std;
    16 
    17 ActionRegistry *ActionRegistry::theInstance=0;
    1818
    1919ActionRegistry::ActionRegistry()
     
    4343}
    4444
    45 // singleton stuff
    46 ActionRegistry* ActionRegistry::getRegistry(){
    47   if(!theInstance){
    48     theInstance = new ActionRegistry();
    49   }
    50   return theInstance;
    51 }
    52 
    53 void ActionRegistry::purgeRegistry(){
    54   if(theInstance){
    55     delete theInstance;
    56     theInstance = 0;
    57   }
    58 }
     45CONSTRUCT_SINGLETON(ActionRegistry)
  • src/Actions/ActionRegistry.hpp

    ra77c96 rcd032d  
    1212#include <map>
    1313
     14#include "Patterns/Singleton.hpp"
     15
    1416class Action;
    1517
    16 class ActionRegistry
     18class ActionRegistry : public Singleton<ActionRegistry>
    1719{
     20  friend class Singleton<ActionRegistry>;
    1821public:
    1922  Action* getActionByName(const std::string);
     
    2326  std::map<const std::string,Action*> actionMap;
    2427
    25 // singleton stuff
    26 public:
    27   static ActionRegistry* getRegistry();
    28   static void purgeRegistry();
    2928private:
    3029  ActionRegistry();
    3130  virtual ~ActionRegistry();
    32   static ActionRegistry *theInstance;
    3331};
    3432
  • src/Actions/AtomsCalculation_impl.hpp

    ra77c96 rcd032d  
    2929template<typename T>
    3030std::vector<T>* AtomsCalculation<T>::doCalc(){
    31   World* world = World::get();
     31  World* world = World::getPointer();
    3232  int steps = world->numAtoms();
    33   int count = 0;
    3433  std::vector<T> *res = new std::vector<T>();
    3534  res->reserve(steps);
  • src/Actions/ManipulateAtomsProcess.cpp

    ra77c96 rcd032d  
    2323
    2424void ManipulateAtomsProcess::call(){
    25   World::get()->doManipulate(this);
     25  World::getInstance().doManipulate(this);
    2626}
    2727
  • src/Actions/small_actions.cpp

    ra77c96 rcd032d  
    2727  string filename;
    2828  molecule *mol = NULL;
    29   Dialog *dialog = UIFactory::get()->makeDialog();
     29  Dialog *dialog = UIFactory::getInstance().makeDialog();
    3030
    3131  dialog->queryMolecule("Enter index of molecule: ",&mol,molecules);
  • src/Descriptors/AtomDescriptor.cpp

    ra77c96 rcd032d  
    6868
    6969World::AtomSet& AtomDescriptor_impl::getAtoms(){
    70   return World::get()->atoms;
     70  return World::getInstance().atoms;
    7171}
    7272
  • src/Descriptors/AtomTypeDescriptor.cpp

    ra77c96 rcd032d  
    2929
    3030AtomDescriptor AtomByType(int Z){
    31   element * elem = World::get()->getPeriode()->FindElement(Z);
     31  element * elem = World::getInstance().getPeriode()->FindElement(Z);
    3232  return AtomByType(elem);
    3333}
  • src/Descriptors/MoleculeDescriptor.cpp

    ra77c96 rcd032d  
    6868
    6969World::MoleculeSet& MoleculeDescriptor_impl::getMolecules(){
    70   return World::get()->molecules;
     70  return World::getInstance().molecules;
    7171}
    7272
  • src/Legacy/oldmenu.cpp

    ra77c96 rcd032d  
    7878      case 'a': // absolute coordinates of atom
    7979        Log() << Verbose(0) << "Enter absolute coordinates." << endl;
    80         first = World::get()->createAtom();
     80        first = World::getInstance().createAtom();
    8181        first->x.AskPosition(mol->cell_size, false);
    8282        first->type = periode->AskElement();  // give type
     
    8585
    8686      case 'b': // relative coordinates of atom wrt to reference point
    87         first = World::get()->createAtom();
     87        first = World::getInstance().createAtom();
    8888        valid = true;
    8989        do {
     
    101101
    102102      case 'c': // relative coordinates of atom wrt to already placed atom
    103         first = World::get()->createAtom();
     103        first = World::getInstance().createAtom();
    104104        valid = true;
    105105        do {
     
    117117
    118118    case 'd': // two atoms, two angles and a distance
    119         first = World::get()->createAtom();
     119        first = World::getInstance().createAtom();
    120120        valid = true;
    121121        do {
     
    217217
    218218      case 'e': // least square distance position to a set of atoms
    219         first = World::get()->createAtom();
     219        first = World::getInstance().createAtom();
    220220        atoms = new (Vector*[128]);
    221221        valid = true;
     
    239239          mol->AddAtom(first);  // add to molecule
    240240        } else {
    241           World::get()->destroyAtom(first);
     241          World::getInstance().destroyAtom(first);
    242242          Log() << Verbose(0) << "Please enter at least two vectors!\n";
    243243        }
     
    782782        x.AddVector(&y); // per factor one cell width further
    783783        for (int k=count;k--;) { // go through every atom of the original cell
    784           first = World::get()->createAtom(); // create a new body
     784          first = World::getInstance().createAtom(); // create a new body
    785785          first->x.CopyVector(vectors[k]);  // use coordinate of original atom
    786786          first->x.AddVector(&x);     // translate the coordinates
     
    912912void oldmenu::SimpleAddMolecules(MoleculeListClass *molecules) {
    913913  molecule *srcmol = NULL, *destmol = NULL;
    914   Dialog *dialog = UIFactory::get()->makeDialog();
     914  Dialog *dialog = UIFactory::getInstance().makeDialog();
    915915  dialog->queryMolecule("Enter index of destination molecule: ",&destmol, molecules);
    916916  dialog->queryMolecule("Enter index of source molecule to add from: ",&srcmol, molecules);
     
    926926void oldmenu::embeddMolecules(MoleculeListClass *molecules) {
    927927  molecule *srcmol = NULL, *destmol = NULL;
    928   Dialog *dialog = UIFactory::get()->makeDialog();
     928  Dialog *dialog = UIFactory::getInstance().makeDialog();
    929929  dialog->queryMolecule("Enter index of matrix molecule (the variable one): ",&srcmol,molecules);
    930930  dialog->queryMolecule("Enter index of molecule to merge into (the fixed one): ",&destmol,molecules);
     
    10891089    A++;
    10901090  }
    1091   World::get()->destroyMolecule(mol);
     1091  World::getInstance().destroyMolecule(mol);
    10921092};
    10931093
  • src/Makefile.am

    ra77c96 rcd032d  
    1818
    1919PATTERNSOURCE = Patterns/Observer.cpp
    20 PATTERNHEADER = Patterns/Observer.hpp Patterns/Cacheable.hpp
     20PATTERNHEADER = Patterns/Cacheable.hpp \
     21                                Patterns/Observer.hpp \
     22                Patterns/Singleton.hpp
    2123
    2224VIEWSOURCE = Views/View.cpp Views/StringView.cpp Views/MethodStringView.cpp Views/StreamStringView.cpp
  • src/UIElements/QT4/QTDialog.cpp

    ra77c96 rcd032d  
    266266    parent(_parent)
    267267{
    268   periodentafel *periode = World::get()->getPeriode();
     268  periodentafel *periode = World::getInstance().getPeriode();
    269269  thisLayout = new QHBoxLayout();
    270270  titleLabel = new QLabel(QString(getTitle().c_str()));
     
    367367  QVariant data = theBox->itemData(newIndex);
    368368  int idx = data.toInt();
    369   (*content) = World::get()->getPeriode()->FindElement(idx);
    370   dialog->update();
    371 }
    372 
     369  (*content) = World::getInstance().getPeriode()->FindElement(idx);
     370  dialog->update();
     371}
     372
  • src/UIElements/TextDialog.cpp

    ra77c96 rcd032d  
    136136  Log() << Verbose(0) << getTitle();
    137137  cin >> Z;
    138   tmp = World::get()->getPeriode()->FindElement(Z);
     138  tmp = World::getInstance().getPeriode()->FindElement(Z);
    139139  return tmp;
    140140}
  • src/UIElements/UIFactory.cpp

    ra77c96 rcd032d  
    88
    99#include <cassert>
     10#include "Patterns/Singleton_impl.hpp"
    1011#include "UIElements/UIFactory.hpp"
    1112
     
    1516#include "UIElements/QT4/QTUIFactory.hpp"
    1617#endif
    17 
    18 UIFactory *UIFactory::theFactory = 0;
    1918
    2019UIFactory::UIFactory()
     
    3029
    3130void UIFactory::makeUserInterface(InterfaceTypes type) {
    32   assert(theFactory == 0 && "makeUserInterface should only be called once");
    3331  switch(type) {
    3432    case Text :
    35       theFactory = new TextUIFactory();
     33      setInstance(new TextUIFactory());
    3634      break;
    3735#ifdef USE_GUI_QT
    3836    case QT4 :
    39       theFactory = new QTUIFactory();
     37      setInstance(new QTUIFactory());
    4038      break;
    4139#endif
     
    4644}
    4745
    48 UIFactory* UIFactory::get(){
    49   assert(theFactory != 0 && "No UserInterface created prior to factory access");
    50   return theFactory;
    51 }
    52 
    53 
    54 void UIFactory::purgeInstance(){
    55   if(theFactory) {
    56     delete theFactory;
    57     theFactory = 0;
    58   }
    59 }
     46CONSTRUCT_SINGLETON(UIFactory)
  • src/UIElements/UIFactory.hpp

    ra77c96 rcd032d  
    1717
    1818struct menuPopulaters;
     19
     20#include "Patterns/Singleton.hpp"
     21
    1922/**
    2023 * Abstract Factory to create any kind of User interface object needed by the programm.
     
    2427 * UIs can be handled in a concise abstract way.
    2528 */
    26 class UIFactory
     29class UIFactory : public Singleton<UIFactory,false>
    2730{
    2831
     
    5053  UIFactory();
    5154
    52 // singleton stuff
    53 private:
    54   static UIFactory *theFactory;
    55 
    5655public:
    5756  /**
     
    6059  static void makeUserInterface(InterfaceTypes type);
    6160
    62   /**
    63    * get the previously created factory
    64    */
    65   static UIFactory* get();
    66 
    67   /**
    68    * Destroy the created factory.
    69    *
    70    * Make sure that all UIElements that were created by the factory are destroyed before calling this method.
    71    */
    72   static void purgeInstance();
    7361};
    7462
  • src/Views/QT4/QTStatusBar.cpp

    ra77c96 rcd032d  
    2121  QStatusBar(_parent),
    2222  parent(_parent),
    23   atomCount(World::get()->numAtoms()),
    24   moleculeCount(World::get()->numMolecules())
     23  atomCount(World::getInstance().numAtoms()),
     24  moleculeCount(World::getInstance().numMolecules())
    2525{
    26   World::get()->signOn(this);
     26  World::getInstance().signOn(this);
    2727  Process::AddObserver(this);
    2828  statusLabel = new QLabel(this);
     
    3535{
    3636  Process::RemoveObserver(this);
    37   World::get()->signOff(this);
     37  World::getInstance().signOff(this);
    3838}
    3939
    4040void QTStatusBar::update(Observable *subject){
    41   if (subject==World::get()){
    42     atomCount = World::get()->numAtoms();
    43     moleculeCount = World::get()->numMolecules();
     41  if (subject==World::getPointer()){
     42    atomCount = World::getInstance().numAtoms();
     43    moleculeCount = World::getInstance().numMolecules();
    4444    redrawStatus();
    4545  }
     
    4747    // we probably have some process
    4848    Process *proc;
    49     if(proc=dynamic_cast<Process*>(subject)){
     49    if((proc=dynamic_cast<Process*>(subject))){
    5050      redrawProcess(proc);
    5151    }
     
    5555void QTStatusBar::subjectKilled(Observable *subject){
    5656  // Processes don't notify when they are killed
    57   atomCount = World::get()->numAtoms();
    58   moleculeCount = World::get()->numMolecules();
    59   World::get()->signOn(this);
     57  atomCount = World::getInstance().numAtoms();
     58  moleculeCount = World::getInstance().numMolecules();
     59  World::getInstance().signOn(this);
    6060  redrawStatus();
    6161}
  • src/World.cpp

    ra77c96 rcd032d  
    1616#include "Descriptors/MoleculeDescriptor_impl.hpp"
    1717#include "Actions/ManipulateAtomsProcess.hpp"
     18
     19#include "Patterns/Singleton_impl.hpp"
    1820
    1921using namespace std;
     
    229231/******************************* Singleton Stuff **************************/
    230232
    231 // TODO: Hide boost-thread using Autotools stuff when no threads are used
    232 World* World::theWorld = 0;
    233 boost::mutex World::worldLock;
    234 
    235233World::World() :
    236234    periode(new periodentafel),
     
    261259}
    262260
    263 World* World::get(){
    264   // boost supports RAII-Style locking, so we don't need to unlock
    265   boost::mutex::scoped_lock guard(worldLock);
    266   if(!theWorld) {
    267     theWorld = new World();
    268   }
    269   return theWorld;
    270 }
    271 
    272 void World::destroy(){
    273   // boost supports RAII-Style locking, so we don't need to unlock
    274   boost::mutex::scoped_lock guard(worldLock);
    275   delete theWorld;
    276   theWorld = 0;
    277 }
    278 
    279 World* World::reset(){
    280   World* oldWorld = 0;
    281   {
    282     // boost supports RAII-Style locking, so we don't need to unlock
    283     boost::mutex::scoped_lock guard(worldLock);
    284 
    285     oldWorld = theWorld;
    286     theWorld = new World();
    287     // oldworld does not need protection any more,
    288     // since we should have the only reference
    289 
    290     // worldLock handles access to the pointer,
    291     // not to the object
    292   } // scope-end releases the lock
    293 
    294   // we have to let all the observers know that the
    295   // oldWorld was destroyed. oldWorld calls subjectKilled
    296   // upon destruction. Every Observer getting that signal
    297   // should see that it gets the updated new world
    298   delete oldWorld;
    299   return theWorld;
    300 }
     261// Explicit instantiation of the singleton mechanism at this point
     262
     263CONSTRUCT_SINGLETON(World)
    301264
    302265/******************************* deprecated Legacy Stuff ***********************/
  • src/World.hpp

    ra77c96 rcd032d  
    1919#include "Patterns/Observer.hpp"
    2020#include "Patterns/Cacheable.hpp"
     21#include "Patterns/Singleton.hpp"
     22
    2123
    2224// forward declarations
     
    3335class AtomsCalculation;
    3436
    35 class World : public Observable
     37
     38
     39class World : public Singleton<World>, public Observable
    3640{
     41
     42// Make access to constructor and destructor possible from inside the singleton
     43friend class Singleton<World>;
     44
    3745// necessary for coupling with descriptors
    3846friend class AtomDescriptor_impl;
     
    4553template<typename> friend class AtomsCalculation;
    4654public:
     55
     56  // Types for Atom and Molecule structures
    4757  typedef std::map<atomId_t,atom*> AtomSet;
    4858  typedef std::map<moleculeId_t,molecule*> MoleculeSet;
     
    151161  // Atoms
    152162
    153   class AtomIterator {
     163  class AtomIterator :
     164    public std::iterator<std::iterator_traits<AtomSet::iterator>::difference_type,
     165                         std::iterator_traits<AtomSet::iterator>::value_type,
     166                         std::iterator_traits<AtomSet::iterator>::pointer,
     167                         std::iterator_traits<AtomSet::iterator>::reference>
     168  {
    154169  public:
     170
     171    typedef AtomSet::iterator _Iter;
     172    typedef _Iter::value_type value_type;
     173    typedef _Iter::difference_type difference_type;
     174    typedef _Iter::pointer pointer;
     175    typedef _Iter::reference reference;
     176    typedef _Iter::iterator_category iterator_category;
     177
     178
    155179    AtomIterator();
    156180    AtomIterator(AtomDescriptor, World*);
     
    191215  // Molecules
    192216
    193   class MoleculeIterator {
     217  class MoleculeIterator :
     218    public std::iterator<std::iterator_traits<MoleculeSet::iterator>::difference_type,
     219                         std::iterator_traits<MoleculeSet::iterator>::value_type,
     220                         std::iterator_traits<MoleculeSet::iterator>::pointer,
     221                         std::iterator_traits<MoleculeSet::iterator>::reference>
     222  {
    194223  public:
     224
     225    typedef MoleculeSet::iterator _Iter;
     226    typedef _Iter::value_type value_type;
     227    typedef _Iter::difference_type difference_type;
     228    typedef _Iter::pointer pointer;
     229    typedef _Iter::reference reference;
     230    typedef _Iter::iterator_category iterator_category;
     231
    195232    MoleculeIterator();
    196233    MoleculeIterator(MoleculeDescriptor, World*);
     
    245282  MoleculeSet molecules;
    246283  moleculeId_t currMoleculeId;
    247 
    248 
    249   /***** singleton Stuff *****/
    250 public:
    251 
    252   /**
    253    * get the currently active instance of the World.
    254    */
    255   static World* get();
    256 
    257   /**
    258    * destroy the currently active instance of the World.
    259    */
    260   static void destroy();
    261 
    262   /**
    263    * destroy the currently active instance of the World and immidiately
    264    * create a new one. Use this to reset while somebody is still Observing
    265    * the world and should reset the observed instance. All observers will be
    266    * sent the subjectKille() message from the old world.
    267    */
    268   static World* reset();
    269 
    270284private:
    271285  /**
     
    280294   */
    281295  virtual ~World();
    282 
    283   static World *theWorld;
    284   // this mutex only saves the singleton pattern...
    285   // use other mutexes to protect internal data as well
    286   // this mutex handles access to the pointer, not to the object!!!
    287   static boost::mutex worldLock;
    288296
    289297  /*****
  • src/WorldIterators.cpp

    ra77c96 rcd032d  
    1717
    1818World::AtomIterator::AtomIterator(){
    19   state = World::get()->atomEnd();
     19  state = World::getInstance().atomEnd();
    2020}
    2121
     
    9595
    9696World::MoleculeIterator::MoleculeIterator(){
    97   state = World::get()->moleculeEnd();
     97  state = World::getInstance().moleculeEnd();
    9898}
    9999
  • src/atom.cpp

    ra77c96 rcd032d  
    5050  res->FixedIon = FixedIon;
    5151  res->node = &x;
    52   World::get()->registerAtom(res);
     52  World::getInstance().registerAtom(res);
    5353  return res;
    5454}
  • src/atom_atominfo.cpp

    ra77c96 rcd032d  
    2929
    3030void AtomInfo::setType(int Z) {
    31   element *elem = World::get()->getPeriode()->FindElement(Z);
     31  element *elem = World::getInstance().getPeriode()->FindElement(Z);
    3232  setType(elem);
    3333}
  • src/boundary.cpp

    ra77c96 rcd032d  
    801801{
    802802        Info FunctionInfo(__func__);
    803   molecule *Filling = World::get()->createMolecule();
     803  molecule *Filling = World::getInstance().createMolecule();
    804804  Vector CurrentPosition;
    805805  int N[NDIM];
  • src/builder.cpp

    ra77c96 rcd032d  
    14331433     }
    14341434     if (mol == NULL) {
    1435        mol = World::get()->createMolecule();
     1435       mol = World::getInstance().createMolecule();
    14361436       mol->ActiveFlag = true;
    14371437       if (ConfigFileName != NULL)
     
    14821482                SaveFlag = true;
    14831483                Log() << Verbose(1) << "Adding new atom with element " << argv[argptr] << " at (" << argv[argptr+1] << "," << argv[argptr+2] << "," << argv[argptr+3] << "), ";
    1484                 first = World::get()->createAtom();
     1484                first = World::getInstance().createAtom();
    14851485                first->type = periode->FindElement(atoi(argv[argptr]));
    14861486                if (first->type != NULL)
     
    16351635                Log() << Verbose(1) << "Filling Box with water molecules." << endl;
    16361636                // construct water molecule
    1637                 molecule *filler = World::get()->createMolecule();
     1637                molecule *filler = World::getInstance().createMolecule();
    16381638                molecule *Filling = NULL;
    16391639                atom *second = NULL, *third = NULL;
     
    16421642//                first->x.Zero();
    16431643//                filler->AddAtom(first);
    1644                 first = World::get()->createAtom();
     1644                first = World::getInstance().createAtom();
    16451645                first->type = periode->FindElement(1);
    16461646                first->x.Init(0.441, -0.143, 0.);
    16471647                filler->AddAtom(first);
    1648                 second = World::get()->createAtom();
     1648                second = World::getInstance().createAtom();
    16491649                second->type = periode->FindElement(1);
    16501650                second->x.Init(-0.464, 1.137, 0.0);
    16511651                filler->AddAtom(second);
    1652                 third = World::get()->createAtom();
     1652                third = World::getInstance().createAtom();
    16531653                third->type = periode->FindElement(8);
    16541654                third->x.Init(-0.464, 0.177, 0.);
     
    16651665                  molecules->insert(Filling);
    16661666                }
    1667                 World::get()->destroyMolecule(filler);
     1667                World::getInstance().destroyMolecule(filler);
    16681668                argptr+=6;
    16691669              }
     
    20982098                      x.AddVector(&y); // per factor one cell width further
    20992099                      for (int k=count;k--;) { // go through every atom of the original cell
    2100                         first = World::get()->createAtom(); // create a new body
     2100                        first = World::getInstance().createAtom(); // create a new body
    21012101                        first->x.CopyVector(vectors[k]);  // use coordinate of original atom
    21022102                        first->x.AddVector(&x);      // translate the coordinates
     
    21692169void cleanUp(config *configuration){
    21702170  UIFactory::purgeInstance();
    2171   World::destroy();
     2171  World::purgeInstance();
    21722172  delete(configuration);
    21732173  Log() << Verbose(0) <<  "Maximum of allocated memory: "
     
    21782178  logger::purgeInstance();
    21792179  errorLogger::purgeInstance();
    2180   ActionRegistry::purgeRegistry();
     2180  ActionRegistry::purgeInstance();
    21812181}
    21822182
     
    21932193    setVerbosity(0);
    21942194    /* structure of ParseCommandLineOptions will be refactored later */
    2195     j = ParseCommandLineOptions(argc, argv,  World::get()->getMolecules(), World::get()->getPeriode(), *configuration, ConfigFileName);
     2195    j = ParseCommandLineOptions(argc, argv,  World::getInstance().getMolecules(), World::getInstance().getPeriode(), *configuration, ConfigFileName);
    21962196    switch (j){
    21972197        case 255:
     
    22032203            break;
    22042204    }
    2205     if(World::get()->numMolecules() == 0){
    2206         mol = World::get()->createMolecule();
    2207         World::get()->getMolecules()->insert(mol);
     2205    if(World::getInstance().numMolecules() == 0){
     2206        mol = World::getInstance().createMolecule();
     2207        World::getInstance().getMolecules()->insert(mol);
    22082208        if(mol->cell_size[0] == 0.){
    22092209            Log() << Verbose(0) << "enter lower tridiagonal form of basis matrix" << endl << endl;
     
    22282228      UIFactory::makeUserInterface(UIFactory::Text);
    22292229#endif
    2230       MainWindow *mainWindow = UIFactory::get()->makeMainWindow(populaters,World::get()->getMolecules(), configuration, World::get()->getPeriode(), ConfigFileName);
     2230      MainWindow *mainWindow = UIFactory::getInstance().makeMainWindow(populaters,World::getInstance().getMolecules(), configuration, World::getInstance().getPeriode(), ConfigFileName);
    22312231      mainWindow->display();
    22322232
     
    22342234    }
    22352235
    2236     if(World::get()->getPeriode()->StorePeriodentafel(configuration->databasepath))
     2236    if(World::getInstance().getPeriode()->StorePeriodentafel(configuration->databasepath))
    22372237        Log() << Verbose(0) << "Saving of elements.db successful." << endl;
    22382238
  • src/config.cpp

    ra77c96 rcd032d  
    733733            sprintf(keyword,"%s_%i",name, j+1);
    734734            if (repetition == 0) {
    735               neues = World::get()->createAtom();
     735              neues = World::getInstance().createAtom();
    736736              AtomList[i][j] = neues;
    737737              LinearList[ FileBuffer->LineMapping[FileBuffer->CurrentLine] ] = neues;
     
    812812          sprintf(keyword,"%s_%i",name, j+1);
    813813          if (repetition == 0) {
    814             neues = World::get()->createAtom();
     814            neues = World::getInstance().createAtom();
    815815            AtomList[i][j] = neues;
    816816            LinearList[ FileBuffer->LineMapping[FileBuffer->CurrentLine] ] = neues;
     
    851851void config::Load(const char * const filename, const string &BondGraphFileName, const periodentafel * const periode, MoleculeListClass * const &MolList)
    852852{
    853   molecule *mol = World::get()->createMolecule();
     853  molecule *mol = World::getInstance().createMolecule();
    854854  ifstream *file = new ifstream(filename);
    855855  if (file == NULL) {
     
    10891089void config::LoadOld(const char * const filename, const string &BondGraphFileName, const periodentafel * const periode, MoleculeListClass * const &MolList)
    10901090{
    1091   molecule *mol = World::get()->createMolecule();
     1091  molecule *mol = World::getInstance().createMolecule();
    10921092  ifstream *file = new ifstream(filename);
    10931093  if (file == NULL) {
     
    12881288        }
    12891289        istringstream input2(zeile);
    1290         atom *neues = World::get()->createAtom();
     1290        atom *neues = World::getInstance().createAtom();
    12911291        input2 >> neues->x.x[0]; // x
    12921292        input2 >> neues->x.x[1]; // y
     
    17881788  char filename[MAXSTRINGSIZE];
    17891789  ofstream output;
    1790   molecule *mol = World::get()->createMolecule();
     1790  molecule *mol = World::getInstance().createMolecule();
    17911791  mol->SetNameFromFilename(ConfigFileName);
    17921792
     
    18991899  }
    19001900
    1901   World::get()->destroyMolecule(mol);
     1901  World::getInstance().destroyMolecule(mol);
    19021902};
    19031903
  • src/errorlogger.cpp

    ra77c96 rcd032d  
    99#include "errorlogger.hpp"
    1010#include "verbose.hpp"
     11#include "Patterns/Singleton_impl.hpp"
    1112
    1213ofstream null("/dev/null");
    13 
    14 errorLogger* errorLogger::instance = NULL;
    1514int errorLogger::verbosity = 2;
    1615ostream* errorLogger::nix = &null;
     
    2322errorLogger::errorLogger()
    2423{
    25   instance = NULL;
    2624  verbosity = 2;
    2725};
     
    3432}
    3533
    36 /**
    37  * Returns the singleton errorLogger instance.
    38  *
    39  * \return errorLogger instance
    40  */
    41 errorLogger* errorLogger::getInstance() {
    42   if (instance == NULL) {
    43     instance = new errorLogger();
    44   }
    45 
    46   return instance;
    47 }
    48 
    49 
    50 /**
    51  * Purges the current errorLogger instance.
    52  */
    53 void errorLogger::purgeInstance() {
    54   if (instance != NULL) {
    55     delete instance;
    56   }
    57 
    58   instance = NULL;
    59 }
     34CONSTRUCT_SINGLETON(errorLogger)
    6035
    6136/**
  • src/errorlogger.hpp

    ra77c96 rcd032d  
    1111#include <iostream>
    1212
     13#include "Patterns/Singleton.hpp"
     14
    1315using namespace std;
    1416
    1517class Verbose;
    1618
    17 class errorLogger {
     19class errorLogger : public Singleton<errorLogger>{
     20  friend class Singleton<errorLogger>;
    1821public :
    1922  static ostream *nix;
    2023  static int verbosity;
    2124
    22   static errorLogger* getInstance();
    23   static void purgeInstance();
    2425  static bool DoOutput();
    2526  static void setVerbosity(int verbosityLevel);
     
    3132  ~errorLogger();
    3233
    33 private:
    34   static errorLogger* instance;
    3534};
    3635
  • src/log.cpp

    ra77c96 rcd032d  
    1515 */
    1616void setVerbosity(int verbosityLevel) {
    17   logger::getInstance()->setVerbosity(verbosityLevel);
    18   errorLogger::getInstance()->setVerbosity(verbosityLevel);
     17  logger::getInstance().setVerbosity(verbosityLevel);
     18  errorLogger::getInstance().setVerbosity(verbosityLevel);
    1919}
    2020
     
    2424 * \param indentation level of the message to log
    2525 */
    26 class logger * Log() {
     26class logger& Log() {
    2727  return logger::getInstance();
    2828}
     
    3333 * \param indentation level of the message to log
    3434 */
    35 class errorLogger * eLog() {
     35class errorLogger & eLog() {
    3636  return errorLogger::getInstance();
    3737}
  • src/logger.cpp

    ra77c96 rcd032d  
    99#include "logger.hpp"
    1010#include "verbose.hpp"
     11#include "Patterns/Singleton_impl.hpp"
    1112
    1213ofstream nullStream("/dev/null");
    1314
    14 logger* logger::instance = NULL;
    1515int logger::verbosity = 2;
    1616ostream* logger::nix = &nullStream;
     
    2323logger::logger()
    2424{
    25   instance = NULL;
    2625  verbosity = 2;
    2726};
     
    3433}
    3534
    36 /**
    37  * Returns the singleton logger instance.
    38  *
    39  * \return logger instance
    40  */
    41 logger* logger::getInstance() {
    42   if (instance == NULL) {
    43     instance = new logger();
    44   }
    45 
    46   return instance;
    47 }
    48 
    49 
    50 /**
    51  * Purges the current logger instance.
    52  */
    53 void logger::purgeInstance() {
    54   if (instance != NULL) {
    55     delete instance;
    56   }
    57 
    58   instance = NULL;
    59 }
     35CONSTRUCT_SINGLETON(logger)
    6036
    6137/**
  • src/logger.hpp

    ra77c96 rcd032d  
    1111#include <iostream>
    1212
     13#include "Patterns/Singleton.hpp"
     14
    1315using namespace std;
    1416
    1517class Verbose;
    1618
    17 class logger {
     19class logger : public Singleton<logger> {
     20  friend class Singleton<logger>;
    1821public :
    1922  static ostream *nix;
    2023  static int verbosity;
    2124
    22   static logger* getInstance();
    23   static void purgeInstance();
    2425  static bool DoOutput();
    2526  static void setVerbosity(int verbosityLevel);
     
    3031  /** Do not call this destructor directly, use purgeInstance() instead. */
    3132  ~logger();
    32 
    33 private:
    34   static logger* instance;
    3533};
    3634
  • src/molecule.cpp

    ra77c96 rcd032d  
    3131 * Initialises molecule list with correctly referenced start and end, and sets molecule::last_atom to zero.
    3232 */
    33 molecule::molecule(const periodentafel * const teil) : elemente(teil), start(World::get()->createAtom()), end(World::get()->createAtom()),
     33molecule::molecule(const periodentafel * const teil) : elemente(teil), start(World::getInstance().createAtom()), end(World::getInstance().createAtom()),
    3434  first(new bond(start, end, 1, -1)), last(new bond(start, end, 1, -1)), MDSteps(0), AtomCount(0),
    3535  BondCount(0), ElementCount(0), NoNonHydrogen(0), NoNonBonds(0), NoCyclicBonds(0), BondDistance(0.),
     
    5656
    5757molecule *NewMolecule(){
    58   return new molecule(World::get()->getPeriode());
     58  return new molecule(World::getInstance().getPeriode());
    5959}
    6060
     
    261261  switch(TopBond->BondDegree) {
    262262    case 1:
    263       FirstOtherAtom = World::get()->createAtom();    // new atom
     263      FirstOtherAtom = World::getInstance().createAtom();    // new atom
    264264      FirstOtherAtom->type = elemente->FindElement(1);  // element is Hydrogen
    265265      FirstOtherAtom->v.CopyVector(&TopReplacement->v); // copy velocity
     
    318318
    319319      // create the two Hydrogens ...
    320       FirstOtherAtom = World::get()->createAtom();
    321       SecondOtherAtom = World::get()->createAtom();
     320      FirstOtherAtom = World::getInstance().createAtom();
     321      SecondOtherAtom = World::getInstance().createAtom();
    322322      FirstOtherAtom->type = elemente->FindElement(1);
    323323      SecondOtherAtom->type = elemente->FindElement(1);
     
    373373    case 3:
    374374      // take the "usual" tetraoidal angle and add the three Hydrogen in direction of the bond (height of the tetraoid)
    375       FirstOtherAtom = World::get()->createAtom();
    376       SecondOtherAtom = World::get()->createAtom();
    377       ThirdOtherAtom = World::get()->createAtom();
     375      FirstOtherAtom = World::getInstance().createAtom();
     376      SecondOtherAtom = World::getInstance().createAtom();
     377      ThirdOtherAtom = World::getInstance().createAtom();
    378378      FirstOtherAtom->type = elemente->FindElement(1);
    379379      SecondOtherAtom->type = elemente->FindElement(1);
     
    494494    MDSteps++;
    495495  for(i=0;i<NumberOfAtoms;i++){
    496     Walker = World::get()->createAtom();
     496    Walker = World::getInstance().createAtom();
    497497    getline(xyzfile,line,'\n');
    498498    istringstream *item = new istringstream(line);
  • src/molecule_dynamics.cpp

    ra77c96 rcd032d  
    486486  bool status = true;
    487487  int MaxSteps = configuration.MaxOuterStep;
    488   MoleculeListClass *MoleculePerStep = new MoleculeListClass(World::get());
     488  MoleculeListClass *MoleculePerStep = new MoleculeListClass(World::getPointer());
    489489  // Get the Permutation Map by MinimiseConstrainedPotential
    490490  atom **PermutationMap = NULL;
     
    506506  Log() << Verbose(1) << "Filling intermediate " << MaxSteps << " steps with MDSteps of " << MDSteps << "." << endl;
    507507  for (int step = 0; step <= MaxSteps; step++) {
    508     mol = World::get()->createMolecule();
     508    mol = World::getInstance().createMolecule();
    509509    MoleculePerStep->insert(mol);
    510510    Walker = start;
  • src/molecule_fragmentation.cpp

    ra77c96 rcd032d  
    676676  //if (FragmentationToDo) {    // we should always store the fragments again as coordination might have changed slightly without changing bond structure
    677677  // allocate memory for the pointer array and transmorph graphs into full molecular fragments
    678   BondFragments = new MoleculeListClass(World::get());
     678  BondFragments = new MoleculeListClass(World::getPointer());
    679679  int k=0;
    680680  for(Graph::iterator runner = TotalGraph.begin(); runner != TotalGraph.end(); runner++) {
     
    927927{
    928928  atom **SonList = Calloc<atom*>(AtomCount, "molecule::StoreFragmentFromStack: **SonList");
    929   molecule *Leaf = World::get()->createMolecule();
     929  molecule *Leaf = World::getInstance().createMolecule();
    930930
    931931//  Log() << Verbose(1) << "Begin of StoreFragmentFromKeyset." << endl;
  • src/moleculelist.cpp

    ra77c96 rcd032d  
    215215  // remove src
    216216  ListOfMolecules.remove(srcmol);
    217   World::get()->destroyMolecule(srcmol);
     217  World::getInstance().destroyMolecule(srcmol);
    218218  return true;
    219219};
     
    750750void MoleculeListClass::DissectMoleculeIntoConnectedSubgraphs(const periodentafel * const periode, config * const configuration)
    751751{
    752   molecule *mol = World::get()->createMolecule();
     752  molecule *mol = World::getInstance().createMolecule();
    753753  atom *Walker = NULL;
    754754  atom *Advancer = NULL;
     
    775775    }
    776776    // remove the molecule
    777     World::get()->destroyMolecule(*MolRunner);
     777    World::getInstance().destroyMolecule(*MolRunner);
    778778    ListOfMolecules.erase(MolRunner);
    779779  }
     
    797797  molecule **molecules = Malloc<molecule *>(MolCount, "config::Load() - **molecules");
    798798  for (int i=0;i<MolCount;i++) {
    799     molecules[i] = World::get()->createMolecule();
     799    molecules[i] = World::getInstance().createMolecule();
    800800    molecules[i]->ActiveFlag = true;
    801801    strncpy(molecules[i]->name, mol->name, MAXSTRINGSIZE);
     
    895895  OBSERVE;
    896896  molecule *mol = NULL;
    897   mol = World::get()->createMolecule();
     897  mol = World::getInstance().createMolecule();
    898898  insert(mol);
    899899};
     
    904904  char filename[MAXSTRINGSIZE];
    905905  Log() << Verbose(0) << "Format should be XYZ with: ShorthandOfElement\tX\tY\tZ" << endl;
    906   mol = World::get()->createMolecule();
     906  mol = World::getInstance().createMolecule();
    907907  do {
    908908    Log() << Verbose(0) << "Enter file name: ";
     
    962962      mol = *ListRunner;
    963963      ListOfMolecules.erase(ListRunner);
    964       World::get()->destroyMolecule(mol);
     964      World::getInstance().destroyMolecule(mol);
    965965      break;
    966966    }
     
    10091009  // remove the leaf itself
    10101010  if (Leaf != NULL) {
    1011     World::get()->destroyMolecule(Leaf);
     1011    World::getInstance().destroyMolecule(Leaf);
    10121012    Leaf = NULL;
    10131013  }
  • src/unittests/AnalysisCorrelationToPointUnitTest.cpp

    ra77c96 rcd032d  
    5757
    5858  // construct periodentafel
    59   tafel = World::get()->getPeriode();
     59  tafel = World::getInstance().getPeriode();
    6060  tafel->AddElement(hydrogen);
    6161
    6262  // construct molecule (tetraeder of hydrogens)
    63   TestMolecule = World::get()->createMolecule();
    64   Walker = World::get()->createAtom();
     63  TestMolecule = World::getInstance().createMolecule();
     64  Walker = World::getInstance().createAtom();
    6565  Walker->type = hydrogen;
    6666  Walker->node->Init(1., 0., 1. );
    6767  TestMolecule->AddAtom(Walker);
    68   Walker = World::get()->createAtom();
     68  Walker = World::getInstance().createAtom();
    6969  Walker->type = hydrogen;
    7070  Walker->node->Init(0., 1., 1. );
    7171  TestMolecule->AddAtom(Walker);
    72   Walker = World::get()->createAtom();
     72  Walker = World::getInstance().createAtom();
    7373  Walker->type = hydrogen;
    7474  Walker->node->Init(1., 1., 0. );
    7575  TestMolecule->AddAtom(Walker);
    76   Walker = World::get()->createAtom();
     76  Walker = World::getInstance().createAtom();
    7777  Walker->type = hydrogen;
    7878  Walker->node->Init(0., 0., 0. );
     
    8282  CPPUNIT_ASSERT_EQUAL( TestMolecule->AtomCount, 4 );
    8383
    84   TestList = World::get()->getMolecules();
     84  TestList = World::getInstance().getMolecules();
    8585  TestMolecule->ActiveFlag = true;
    8686  TestList->insert(TestMolecule);
     
    104104
    105105  delete(point);
    106   World::destroy();
     106  World::purgeInstance();
    107107  MemoryUsageObserver::purgeInstance();
    108108  logger::purgeInstance();
  • src/unittests/AnalysisCorrelationToSurfaceUnitTest.cpp

    ra77c96 rcd032d  
    6161
    6262  // construct periodentafel
    63   tafel = World::get()->getPeriode();
     63  tafel = World::getInstance().getPeriode();
    6464  tafel->AddElement(hydrogen);
    6565  tafel->AddElement(carbon);
    6666
    6767  // construct molecule (tetraeder of hydrogens) base
    68   TestMolecule = World::get()->createMolecule();
    69   Walker = World::get()->createAtom();
     68  TestMolecule = World::getInstance().createMolecule();
     69  Walker = World::getInstance().createAtom();
    7070  Walker->type = hydrogen;
    7171  Walker->node->Init(1., 0., 1. );
    7272  TestMolecule->AddAtom(Walker);
    73   Walker = World::get()->createAtom();
     73  Walker = World::getInstance().createAtom();
    7474  Walker->type = hydrogen;
    7575  Walker->node->Init(0., 1., 1. );
    7676  TestMolecule->AddAtom(Walker);
    77   Walker = World::get()->createAtom();
     77  Walker = World::getInstance().createAtom();
    7878  Walker->type = hydrogen;
    7979  Walker->node->Init(1., 1., 0. );
    8080  TestMolecule->AddAtom(Walker);
    81   Walker = World::get()->createAtom();
     81  Walker = World::getInstance().createAtom();
    8282  Walker->type = hydrogen;
    8383  Walker->node->Init(0., 0., 0. );
     
    8787  CPPUNIT_ASSERT_EQUAL( TestMolecule->AtomCount, 4 );
    8888
    89   TestList = World::get()->getMolecules();
     89  TestList = World::getInstance().getMolecules();
    9090  TestMolecule->ActiveFlag = true;
    9191  TestList->insert(TestMolecule);
     
    100100
    101101  // add outer atoms
    102   Walker = World::get()->createAtom();
     102  Walker = World::getInstance().createAtom();
    103103  Walker->type = carbon;
    104104  Walker->node->Init(4., 0., 4. );
    105105  TestMolecule->AddAtom(Walker);
    106   Walker = World::get()->createAtom();
     106  Walker = World::getInstance().createAtom();
    107107  Walker->type = carbon;
    108108  Walker->node->Init(0., 4., 4. );
    109109  TestMolecule->AddAtom(Walker);
    110   Walker = World::get()->createAtom();
     110  Walker = World::getInstance().createAtom();
    111111  Walker->type = carbon;
    112112  Walker->node->Init(4., 4., 0. );
    113113  TestMolecule->AddAtom(Walker);
    114114  // add inner atoms
    115   Walker = World::get()->createAtom();
     115  Walker = World::getInstance().createAtom();
    116116  Walker->type = carbon;
    117117  Walker->node->Init(0.5, 0.5, 0.5 );
     
    135135  // note that all the atoms are cleaned by TestMolecule
    136136  delete(LC);
    137   World::destroy();
     137  World::purgeInstance();
    138138  MemoryUsageObserver::purgeInstance();
    139139  logger::purgeInstance();
  • src/unittests/AnalysisPairCorrelationUnitTest.cpp

    ra77c96 rcd032d  
    5656
    5757  // construct periodentafel
    58   tafel = World::get()->getPeriode();
     58  tafel = World::getInstance().getPeriode();
    5959  tafel->AddElement(hydrogen);
    6060
    6161  // construct molecule (tetraeder of hydrogens)
    62   TestMolecule = World::get()->createMolecule();
    63   Walker = World::get()->createAtom();
     62  TestMolecule = World::getInstance().createMolecule();
     63  Walker = World::getInstance().createAtom();
    6464  Walker->type = hydrogen;
    6565  Walker->node->Init(1., 0., 1. );
    6666  TestMolecule->AddAtom(Walker);
    67   Walker = World::get()->createAtom();
     67  Walker = World::getInstance().createAtom();
    6868  Walker->type = hydrogen;
    6969  Walker->node->Init(0., 1., 1. );
    7070  TestMolecule->AddAtom(Walker);
    71   Walker = World::get()->createAtom();
     71  Walker = World::getInstance().createAtom();
    7272  Walker->type = hydrogen;
    7373  Walker->node->Init(1., 1., 0. );
    7474  TestMolecule->AddAtom(Walker);
    75   Walker = World::get()->createAtom();
     75  Walker = World::getInstance().createAtom();
    7676  Walker->type = hydrogen;
    7777  Walker->node->Init(0., 0., 0. );
     
    8181  CPPUNIT_ASSERT_EQUAL( TestMolecule->AtomCount, 4 );
    8282
    83   TestList = World::get()->getMolecules();
     83  TestList = World::getInstance().getMolecules();
    8484  TestMolecule->ActiveFlag = true;
    8585  TestList->insert(TestMolecule);
     
    100100
    101101  // note that all the atoms are cleaned by TestMolecule
    102   World::destroy();
     102  World::purgeInstance();
    103103  MemoryUsageObserver::purgeInstance();
    104104  logger::purgeInstance();
  • src/unittests/AtomDescriptorTest.cpp

    ra77c96 rcd032d  
    2929// set up and tear down
    3030void AtomDescriptorTest::setUp(){
    31   World::get();
     31  World::getInstance();
    3232  for(int i=0;i<ATOM_COUNT;++i){
    33     atoms[i]= World::get()->createAtom();
     33    atoms[i]= World::getInstance().createAtom();
    3434    atomIds[i]= atoms[i]->getId();
    3535  }
     
    3737
    3838void AtomDescriptorTest::tearDown(){
    39   World::destroy();
     39  World::purgeInstance();
    4040}
    4141
     
    7373
    7474void AtomDescriptorTest::AtomBaseSetsTest(){
    75   std::vector<atom*> allAtoms = World::get()->getAllAtoms(AllAtoms());
     75  std::vector<atom*> allAtoms = World::getInstance().getAllAtoms(AllAtoms());
    7676  CPPUNIT_ASSERT_EQUAL( true , hasAllAtoms(allAtoms,atomIds));
    7777  CPPUNIT_ASSERT_EQUAL( true , hasNoDuplicateAtoms(allAtoms));
    7878
    79   std::vector<atom*> noAtoms = World::get()->getAllAtoms(NoAtoms());
     79  std::vector<atom*> noAtoms = World::getInstance().getAllAtoms(NoAtoms());
    8080  CPPUNIT_ASSERT_EQUAL( true , noAtoms.empty());
    8181}
     
    8383  // test Atoms from boundaries and middle of the set
    8484  atom* testAtom;
    85   testAtom = World::get()->getAtom(AtomById(atomIds[0]));
     85  testAtom = World::getInstance().getAtom(AtomById(atomIds[0]));
    8686  CPPUNIT_ASSERT(testAtom);
    8787  CPPUNIT_ASSERT_EQUAL( atomIds[0], testAtom->getId());
    88   testAtom = World::get()->getAtom(AtomById(atomIds[ATOM_COUNT/2]));
     88  testAtom = World::getInstance().getAtom(AtomById(atomIds[ATOM_COUNT/2]));
    8989  CPPUNIT_ASSERT(testAtom);
    9090  CPPUNIT_ASSERT_EQUAL( atomIds[ATOM_COUNT/2], testAtom->getId());
    91   testAtom = World::get()->getAtom(AtomById(atomIds[ATOM_COUNT-1]));
     91  testAtom = World::getInstance().getAtom(AtomById(atomIds[ATOM_COUNT-1]));
    9292  CPPUNIT_ASSERT(testAtom);
    9393  CPPUNIT_ASSERT_EQUAL( atomIds[ATOM_COUNT-1], testAtom->getId());
     
    103103  }
    104104  // test from outside of set
    105   testAtom = World::get()->getAtom(AtomById(outsideId));
     105  testAtom = World::getInstance().getAtom(AtomById(outsideId));
    106106  CPPUNIT_ASSERT(!testAtom);
    107107}
     
    109109  // test some elementary set operations
    110110  {
    111     std::vector<atom*> testAtoms = World::get()->getAllAtoms(AllAtoms()||NoAtoms());
     111    std::vector<atom*> testAtoms = World::getInstance().getAllAtoms(AllAtoms()||NoAtoms());
    112112    CPPUNIT_ASSERT_EQUAL( true , hasAllAtoms(testAtoms,atomIds));
    113113    CPPUNIT_ASSERT_EQUAL( true , hasNoDuplicateAtoms(testAtoms));
     
    115115
    116116  {
    117     std::vector<atom*> testAtoms = World::get()->getAllAtoms(NoAtoms()||AllAtoms());
     117    std::vector<atom*> testAtoms = World::getInstance().getAllAtoms(NoAtoms()||AllAtoms());
    118118    CPPUNIT_ASSERT_EQUAL( true , hasAllAtoms(testAtoms,atomIds));
    119119    CPPUNIT_ASSERT_EQUAL( true , hasNoDuplicateAtoms(testAtoms));
     
    121121
    122122  {
    123     std::vector<atom*> testAtoms = World::get()->getAllAtoms(NoAtoms()&&AllAtoms());
     123    std::vector<atom*> testAtoms = World::getInstance().getAllAtoms(NoAtoms()&&AllAtoms());
    124124    CPPUNIT_ASSERT_EQUAL( true , testAtoms.empty());
    125125  }
    126126
    127127  {
    128     std::vector<atom*> testAtoms = World::get()->getAllAtoms(AllAtoms()&&NoAtoms());
     128    std::vector<atom*> testAtoms = World::getInstance().getAllAtoms(AllAtoms()&&NoAtoms());
    129129    CPPUNIT_ASSERT_EQUAL( true , testAtoms.empty());
    130130  }
    131131
    132132  {
    133     std::vector<atom*> testAtoms = World::get()->getAllAtoms(!AllAtoms());
     133    std::vector<atom*> testAtoms = World::getInstance().getAllAtoms(!AllAtoms());
    134134    CPPUNIT_ASSERT_EQUAL( true , testAtoms.empty());
    135135  }
    136136
    137137  {
    138     std::vector<atom*> testAtoms = World::get()->getAllAtoms(!NoAtoms());
     138    std::vector<atom*> testAtoms = World::getInstance().getAllAtoms(!NoAtoms());
    139139    CPPUNIT_ASSERT_EQUAL( true , hasAllAtoms(testAtoms,atomIds));
    140140    CPPUNIT_ASSERT_EQUAL( true , hasNoDuplicateAtoms(testAtoms));
     
    143143  // exclude and include some atoms
    144144  {
    145     std::vector<atom*> testAtoms = World::get()->getAllAtoms(AllAtoms()&&(!AtomById(atomIds[ATOM_COUNT/2])));
     145    std::vector<atom*> testAtoms = World::getInstance().getAllAtoms(AllAtoms()&&(!AtomById(atomIds[ATOM_COUNT/2])));
    146146    std::set<atomId_t> excluded;
    147147    excluded.insert(atomIds[ATOM_COUNT/2]);
     
    152152
    153153  {
    154     std::vector<atom*> testAtoms = World::get()->getAllAtoms(NoAtoms()||(AtomById(atomIds[ATOM_COUNT/2])));
     154    std::vector<atom*> testAtoms = World::getInstance().getAllAtoms(NoAtoms()||(AtomById(atomIds[ATOM_COUNT/2])));
    155155    CPPUNIT_ASSERT_EQUAL( (size_t)1, testAtoms.size());
    156156    CPPUNIT_ASSERT_EQUAL( atomIds[ATOM_COUNT/2], testAtoms[0]->getId());
  • src/unittests/Makefile.am

    ra77c96 rcd032d  
    2929  MoleculeDescriptorTest \
    3030  ObserverTest \
     31  SingletonTest \
    3132  StackClassUnitTest \
    3233  TesselationUnitTest \
     
    6667  MoleculeDescriptorTest.cpp \
    6768  ObserverTest.cpp \
     69  SingletonTest.cpp \
    6870  stackclassunittest.cpp \
    6971  tesselationunittest.cpp \
     
    123125MoleculeDescriptorTest_LDADD = ${ALLLIBS}
    124126
     127SingletonTest_SOURCES = UnitTestMain.cpp SingletonTest.cpp SingletonTest.hpp
     128SingletonTest_LDADD = $(BOOST_LIB) ${BOOST_THREAD_LIB}
     129
    125130StackClassUnitTest_SOURCES = UnitTestMain.cpp stackclassunittest.cpp stackclassunittest.hpp
    126131StackClassUnitTest_LDADD = ${ALLLIBS}
  • src/unittests/MoleculeDescriptorTest.cpp

    ra77c96 rcd032d  
    2929// set up and tear down
    3030void MoleculeDescriptorTest::setUp(){
    31   World::get();
     31  World::getInstance();
    3232  for(int i=0;i<MOLECULE_COUNT;++i){
    33     molecules[i]= World::get()->createMolecule();
     33    molecules[i]= World::getInstance().createMolecule();
    3434    moleculeIds[i]= molecules[i]->getId();
    3535  }
     
    3737
    3838void MoleculeDescriptorTest::tearDown(){
    39   World::destroy();
     39  World::purgeInstance();
    4040}
    4141
     
    7373
    7474void MoleculeDescriptorTest::MoleculeBaseSetsTest(){
    75   std::vector<molecule*> allMolecules = World::get()->getAllMolecules(AllMolecules());
     75  std::vector<molecule*> allMolecules = World::getInstance().getAllMolecules(AllMolecules());
    7676  CPPUNIT_ASSERT_EQUAL( true , hasAllMolecules(allMolecules,moleculeIds));
    7777  CPPUNIT_ASSERT_EQUAL( true , hasNoDuplicateMolecules(allMolecules));
    7878
    79   std::vector<molecule*> noMolecules = World::get()->getAllMolecules(NoMolecules());
     79  std::vector<molecule*> noMolecules = World::getInstance().getAllMolecules(NoMolecules());
    8080  CPPUNIT_ASSERT_EQUAL( true , noMolecules.empty());
    8181}
     
    8383  // test Molecules from boundaries and middle of the set
    8484  molecule* testMolecule;
    85   testMolecule = World::get()->getMolecule(MoleculeById(moleculeIds[0]));
     85  testMolecule = World::getInstance().getMolecule(MoleculeById(moleculeIds[0]));
    8686  CPPUNIT_ASSERT(testMolecule);
    8787  CPPUNIT_ASSERT_EQUAL( moleculeIds[0], testMolecule->getId());
    88   testMolecule = World::get()->getMolecule(MoleculeById(moleculeIds[MOLECULE_COUNT/2]));
     88  testMolecule = World::getInstance().getMolecule(MoleculeById(moleculeIds[MOLECULE_COUNT/2]));
    8989  CPPUNIT_ASSERT(testMolecule);
    9090  CPPUNIT_ASSERT_EQUAL( moleculeIds[MOLECULE_COUNT/2], testMolecule->getId());
    91   testMolecule = World::get()->getMolecule(MoleculeById(moleculeIds[MOLECULE_COUNT-1]));
     91  testMolecule = World::getInstance().getMolecule(MoleculeById(moleculeIds[MOLECULE_COUNT-1]));
    9292  CPPUNIT_ASSERT(testMolecule);
    9393  CPPUNIT_ASSERT_EQUAL( moleculeIds[MOLECULE_COUNT-1], testMolecule->getId());
     
    103103  }
    104104  // test from outside of set
    105   testMolecule = World::get()->getMolecule(MoleculeById(outsideId));
     105  testMolecule = World::getInstance().getMolecule(MoleculeById(outsideId));
    106106  CPPUNIT_ASSERT(!testMolecule);
    107107}
     
    109109  // test some elementary set operations
    110110  {
    111     std::vector<molecule*> testMolecules = World::get()->getAllMolecules(AllMolecules()||NoMolecules());
     111    std::vector<molecule*> testMolecules = World::getInstance().getAllMolecules(AllMolecules()||NoMolecules());
    112112    CPPUNIT_ASSERT_EQUAL( true , hasAllMolecules(testMolecules,moleculeIds));
    113113    CPPUNIT_ASSERT_EQUAL( true , hasNoDuplicateMolecules(testMolecules));
     
    115115
    116116  {
    117     std::vector<molecule*> testMolecules = World::get()->getAllMolecules(NoMolecules()||AllMolecules());
     117    std::vector<molecule*> testMolecules = World::getInstance().getAllMolecules(NoMolecules()||AllMolecules());
    118118    CPPUNIT_ASSERT_EQUAL( true , hasAllMolecules(testMolecules,moleculeIds));
    119119    CPPUNIT_ASSERT_EQUAL( true , hasNoDuplicateMolecules(testMolecules));
     
    121121
    122122  {
    123     std::vector<molecule*> testMolecules = World::get()->getAllMolecules(NoMolecules()&&AllMolecules());
     123    std::vector<molecule*> testMolecules = World::getInstance().getAllMolecules(NoMolecules()&&AllMolecules());
    124124    CPPUNIT_ASSERT_EQUAL( true , testMolecules.empty());
    125125  }
    126126
    127127  {
    128     std::vector<molecule*> testMolecules = World::get()->getAllMolecules(AllMolecules()&&NoMolecules());
     128    std::vector<molecule*> testMolecules = World::getInstance().getAllMolecules(AllMolecules()&&NoMolecules());
    129129    CPPUNIT_ASSERT_EQUAL( true , testMolecules.empty());
    130130  }
    131131
    132132  {
    133     std::vector<molecule*> testMolecules = World::get()->getAllMolecules(!AllMolecules());
     133    std::vector<molecule*> testMolecules = World::getInstance().getAllMolecules(!AllMolecules());
    134134    CPPUNIT_ASSERT_EQUAL( true , testMolecules.empty());
    135135  }
    136136
    137137  {
    138     std::vector<molecule*> testMolecules = World::get()->getAllMolecules(!NoMolecules());
     138    std::vector<molecule*> testMolecules = World::getInstance().getAllMolecules(!NoMolecules());
    139139    CPPUNIT_ASSERT_EQUAL( true , hasAllMolecules(testMolecules,moleculeIds));
    140140    CPPUNIT_ASSERT_EQUAL( true , hasNoDuplicateMolecules(testMolecules));
     
    143143  // exclude and include some molecules
    144144  {
    145     std::vector<molecule*> testMolecules = World::get()->getAllMolecules(AllMolecules()&&(!MoleculeById(moleculeIds[MOLECULE_COUNT/2])));
     145    std::vector<molecule*> testMolecules = World::getInstance().getAllMolecules(AllMolecules()&&(!MoleculeById(moleculeIds[MOLECULE_COUNT/2])));
    146146    std::set<moleculeId_t> excluded;
    147147    excluded.insert(moleculeIds[MOLECULE_COUNT/2]);
     
    152152
    153153  {
    154     std::vector<molecule*> testMolecules = World::get()->getAllMolecules(NoMolecules()||(MoleculeById(moleculeIds[MOLECULE_COUNT/2])));
     154    std::vector<molecule*> testMolecules = World::getInstance().getAllMolecules(NoMolecules()||(MoleculeById(moleculeIds[MOLECULE_COUNT/2])));
    155155    CPPUNIT_ASSERT_EQUAL( (size_t)1, testMolecules.size());
    156156    CPPUNIT_ASSERT_EQUAL( moleculeIds[MOLECULE_COUNT/2], testMolecules[0]->getId());
  • src/unittests/analysisbondsunittest.cpp

    ra77c96 rcd032d  
    6161
    6262  // construct periodentafel
    63   tafel = World::get()->getPeriode();
     63  tafel = World::getInstance().getPeriode();
    6464  tafel->AddElement(hydrogen);
    6565  tafel->AddElement(carbon);
    6666
    6767  // construct molecule (tetraeder of hydrogens)
    68   TestMolecule = World::get()->createMolecule();
    69   Walker = World::get()->createAtom();
     68  TestMolecule = World::getInstance().createMolecule();
     69  Walker = World::getInstance().createAtom();
    7070  Walker->type = hydrogen;
    7171  Walker->node->Init(1.5, 0., 1.5 );
    7272  TestMolecule->AddAtom(Walker);
    73   Walker = World::get()->createAtom();
     73  Walker = World::getInstance().createAtom();
    7474  Walker->type = hydrogen;
    7575  Walker->node->Init(0., 1.5, 1.5 );
    7676  TestMolecule->AddAtom(Walker);
    77   Walker = World::get()->createAtom();
     77  Walker = World::getInstance().createAtom();
    7878  Walker->type = hydrogen;
    7979  Walker->node->Init(1.5, 1.5, 0. );
    8080  TestMolecule->AddAtom(Walker);
    81   Walker = World::get()->createAtom();
     81  Walker = World::getInstance().createAtom();
    8282  Walker->type = hydrogen;
    8383  Walker->node->Init(0., 0., 0. );
    8484  TestMolecule->AddAtom(Walker);
    85   Walker = World::get()->createAtom();
     85  Walker = World::getInstance().createAtom();
    8686  Walker->type = carbon;
    8787  Walker->node->Init(0.5, 0.5, 0.5 );
     
    117117
    118118  // remove molecule
    119   World::get()->destroyMolecule(TestMolecule);
     119  World::getInstance().destroyMolecule(TestMolecule);
    120120  // note that all the atoms are cleaned by TestMolecule
    121   World::destroy();
     121  World::purgeInstance();
    122122};
    123123
  • src/unittests/atomsCalculationTest.cpp

    ra77c96 rcd032d  
    2323#include "World_calculations.hpp"
    2424#include "atom.hpp"
     25
     26#ifdef HAVE_TESTRUNNER
     27#include "UnitTestMain.hpp"
     28#endif /*HAVE_TESTRUNNER*/
    2529
    2630// Registers the fixture into the 'registry'
     
    5155// set up and tear down
    5256void atomsCalculationTest::setUp(){
    53   World::get();
     57  World::getInstance();
    5458  for(int i=0;i<ATOM_COUNT;++i){
    5559    atoms[i]= new AtomStub(i);
    56     World::get()->registerAtom(atoms[i]);
     60    World::getInstance().registerAtom(atoms[i]);
    5761  }
    5862}
    5963void atomsCalculationTest::tearDown(){
    60   World::destroy();
    61   ActionRegistry::purgeRegistry();
     64  World::purgeInstance();
     65  ActionRegistry::purgeInstance();
    6266}
    6367
     
    9296}
    9397
    94 static void operation(atom* _atom){
    95   AtomStub *atom = dynamic_cast<AtomStub*>(_atom);
    96   assert(atom);
    97   atom->doSomething();
    98 }
    99 
    100 
    10198void atomsCalculationTest::testCalculateSimple(){
    102   AtomsCalculation<int> *calc = World::get()->calcOnAtoms<int>(boost::bind(&atom::getId,_1),"FOO",AllAtoms());
     99  AtomsCalculation<int> *calc = World::getInstance().calcOnAtoms<int>(boost::bind(&atom::getId,_1),"FOO",AllAtoms());
    103100  std::vector<int> allIds = (*calc)();
    104101  CPPUNIT_ASSERT(hasAll(allIds,0,ATOM_COUNT));
     
    108105void atomsCalculationTest::testCalculateExcluded(){
    109106  int excluded = ATOM_COUNT/2;
    110   AtomsCalculation<int> *calc = World::get()->calcOnAtoms<int>(boost::bind(&atom::getId,_1),"FOO",AllAtoms() && !AtomById(excluded));
     107  AtomsCalculation<int> *calc = World::getInstance().calcOnAtoms<int>(boost::bind(&atom::getId,_1),"FOO",AllAtoms() && !AtomById(excluded));
    111108  std::vector<int> allIds = (*calc)();
    112109  std::set<int> excluded_set;
  • src/unittests/bondgraphunittest.cpp

    ra77c96 rcd032d  
    5757
    5858  // construct periodentafel
    59   tafel = World::get()->getPeriode();
     59  tafel = World::getInstance().getPeriode();
    6060  tafel->AddElement(hydrogen);
    6161  tafel->AddElement(carbon);
    6262
    6363  // construct molecule (tetraeder of hydrogens)
    64   TestMolecule = World::get()->createMolecule();
    65   Walker = World::get()->createAtom();
     64  TestMolecule = World::getInstance().createMolecule();
     65  Walker = World::getInstance().createAtom();
    6666  Walker->type = hydrogen;
    6767  Walker->node->Init(1., 0., 1. );
    6868  TestMolecule->AddAtom(Walker);
    69   Walker = World::get()->createAtom();
     69  Walker = World::getInstance().createAtom();
    7070  Walker->type = hydrogen;
    7171  Walker->node->Init(0., 1., 1. );
    7272  TestMolecule->AddAtom(Walker);
    73   Walker = World::get()->createAtom();
     73  Walker = World::getInstance().createAtom();
    7474  Walker->type = hydrogen;
    7575  Walker->node->Init(1., 1., 0. );
    7676  TestMolecule->AddAtom(Walker);
    77   Walker = World::get()->createAtom();
     77  Walker = World::getInstance().createAtom();
    7878  Walker->type = hydrogen;
    7979  Walker->node->Init(0., 0., 0. );
     
    102102
    103103  // remove molecule
    104   World::get()->destroyMolecule(TestMolecule);
     104  World::getInstance().destroyMolecule(TestMolecule);
    105105  // note that all the atoms, molecules, the tafel and the elements
    106106  // are all cleaned when the world is destroyed
    107   World::destroy();
     107  World::purgeInstance();
    108108  MemoryUsageObserver::purgeInstance();
    109109  logger::purgeInstance();
  • src/unittests/listofbondsunittest.cpp

    ra77c96 rcd032d  
    5151
    5252  // construct periodentafel
    53   tafel = World::get()->getPeriode();
     53  tafel = World::getInstance().getPeriode();
    5454  tafel->AddElement(hydrogen);
    5555
    5656  // construct molecule (tetraeder of hydrogens)
    57   TestMolecule = World::get()->createMolecule();
    58   Walker = World::get()->createAtom();
     57  TestMolecule = World::getInstance().createMolecule();
     58  Walker = World::getInstance().createAtom();
    5959  Walker->type = hydrogen;
    6060  Walker->node->Init(1., 0., 1. );
    6161  TestMolecule->AddAtom(Walker);
    62   Walker = World::get()->createAtom();
     62  Walker = World::getInstance().createAtom();
    6363  Walker->type = hydrogen;
    6464  Walker->node->Init(0., 1., 1. );
    6565  TestMolecule->AddAtom(Walker);
    66   Walker = World::get()->createAtom();
     66  Walker = World::getInstance().createAtom();
    6767  Walker->type = hydrogen;
    6868  Walker->node->Init(1., 1., 0. );
    6969  TestMolecule->AddAtom(Walker);
    70   Walker = World::get()->createAtom();
     70  Walker = World::getInstance().createAtom();
    7171  Walker->type = hydrogen;
    7272  Walker->node->Init(0., 0., 0. );
     
    8282{
    8383  // remove
    84   World::get()->destroyMolecule(TestMolecule);
     84  World::getInstance().destroyMolecule(TestMolecule);
    8585  // note that all the atoms, molecules, the tafel and the elements
    8686  // are all cleaned when the world is destroyed
    87   World::destroy();
     87  World::purgeInstance();
    8888  MemoryUsageObserver::purgeInstance();
    8989  logger::purgeInstance();
     
    250250
    251251  // remove atom2
    252   World::get()->destroyAtom(atom2);
     252  World::getInstance().destroyAtom(atom2);
    253253
    254254  // check bond if removed from other atom
  • src/unittests/logunittest.cpp

    ra77c96 rcd032d  
    4040void LogTest::logTest()
    4141{
    42   logger::getInstance()->setVerbosity(2);
     42  logger::getInstance().setVerbosity(2);
    4343  Log() << Verbose(0) << "Verbosity level is set to 2." << endl;
    4444  Log() << Verbose(0) << "Test level 0" << endl;
  • src/unittests/manipulateAtomsTest.cpp

    ra77c96 rcd032d  
    2222#include "atom.hpp"
    2323
     24#ifdef HAVE_TESTRUNNER
     25#include "UnitTestMain.hpp"
     26#endif /*HAVE_TESTRUNNER*/
     27
    2428// Registers the fixture into the 'registry'
    2529CPPUNIT_TEST_SUITE_REGISTRATION( manipulateAtomsTest );
     
    3034  AtomStub(int _id) :
    3135  atom(),
    32   id(_id),
    33   manipulated(false)
     36  manipulated(false),
     37  id(_id)
    3438  {}
    3539
     
    6670// set up and tear down
    6771void manipulateAtomsTest::setUp(){
    68   World::get();
     72  World::getInstance();
    6973  for(int i=0;i<ATOM_COUNT;++i){
    7074    atoms[i]= new AtomStub(i);
    71     World::get()->registerAtom(atoms[i]);
     75    World::getInstance().registerAtom(atoms[i]);
    7276  }
    7377}
    7478void manipulateAtomsTest::tearDown(){
    75   World::destroy();
    76   ActionRegistry::purgeRegistry();
    77 }
    78 
    79 // some helper functions
    80 static bool hasAll(std::vector<atom*> atoms,int min, int max, std::set<int> excluded = std::set<int>()){
    81   for(int i=min;i<max;++i){
    82     if(!excluded.count(i)){
    83       std::vector<atom*>::iterator iter;
    84       bool res=false;
    85       for(iter=atoms.begin();iter!=atoms.end();++iter){
    86         res |= (*iter)->getId() == i;
    87       }
    88       if(!res) {
    89         cout << "Atom " << i << " missing in returned list" << endl;
    90         return false;
    91       }
    92     }
    93   }
    94   return true;
    95 }
    96 
    97 static bool hasNoDuplicates(std::vector<atom*> atoms){
    98   std::set<int> found;
    99   std::vector<atom*>::iterator iter;
    100   for(iter=atoms.begin();iter!=atoms.end();++iter){
    101     int id = (*iter)->getId();
    102     if(found.count(id))
    103       return false;
    104     found.insert(id);
    105   }
    106   return true;
     79  World::purgeInstance();
     80  ActionRegistry::purgeInstance();
    10781}
    10882
     
    11589
    11690void manipulateAtomsTest::testManipulateSimple(){
    117   ManipulateAtomsProcess *proc = World::get()->manipulateAtoms(boost::bind(operation,_1),"FOO",AllAtoms());
     91  ManipulateAtomsProcess *proc = World::getInstance().manipulateAtoms(boost::bind(operation,_1),"FOO",AllAtoms());
    11892  proc->call();
    119   std::vector<atom*> allAtoms = World::get()->getAllAtoms(AllAtoms());
     93  std::vector<atom*> allAtoms = World::getInstance().getAllAtoms(AllAtoms());
    12094  std::vector<atom*>::iterator iter;
    12195  for(iter=allAtoms.begin();iter!=allAtoms.end();++iter){
     
    128102
    129103void manipulateAtomsTest::testManipulateExcluded(){
    130   ManipulateAtomsProcess *proc = World::get()->manipulateAtoms(boost::bind(operation,_1),"FOO",AllAtoms() && !AtomById(ATOM_COUNT/2));
     104  ManipulateAtomsProcess *proc = World::getInstance().manipulateAtoms(boost::bind(operation,_1),"FOO",AllAtoms() && !AtomById(ATOM_COUNT/2));
    131105  proc->call();
    132   std::vector<atom*> allAtoms = World::get()->getAllAtoms(AllAtoms());
     106  std::vector<atom*> allAtoms = World::getInstance().getAllAtoms(AllAtoms());
    133107  std::vector<atom*>::iterator iter;
    134108  for(iter=allAtoms.begin();iter!=allAtoms.end();++iter){
     
    145119void manipulateAtomsTest::testObserver(){
    146120  countObserver *obs = new countObserver();
    147   World::get()->signOn(obs);
    148   ManipulateAtomsProcess *proc = World::get()->manipulateAtoms(boost::bind(operation,_1),"FOO",AllAtoms() && !AtomById(ATOM_COUNT/2));
     121  World::getInstance().signOn(obs);
     122  ManipulateAtomsProcess *proc = World::getInstance().manipulateAtoms(boost::bind(operation,_1),"FOO",AllAtoms() && !AtomById(ATOM_COUNT/2));
    149123  proc->call();
    150124
    151125  CPPUNIT_ASSERT_EQUAL(1,obs->count);
    152   World::get()->signOff(obs);
     126  World::getInstance().signOff(obs);
    153127  delete obs;
    154128}
Note: See TracChangeset for help on using the changeset viewer.