Ignore:
Timestamp:
Oct 19, 2009, 1:09:29 PM (16 years ago)
Author:
Frederik Heber <heber@…>
Children:
3b0ba2
Parents:
99bed3
Message:

Huge Refactoring: class atom split up into several inherited classes.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • molecuilder/src/molecule_template.hpp

    r99bed3 r6b937bd  
    156156
    157157// zero arguments
    158 template <typename res> res molecule::SumPerAtom(res (atom::*f)() )
     158template <typename res, typename typ> res molecule::SumPerAtom(res (typ::*f)() )
    159159{
    160160  res result = 0;
     
    166166  return result;
    167167};
    168 template <typename res> res molecule::SumPerAtom(res (atom::*f)() const )
     168template <typename res, typename typ> res molecule::SumPerAtom(res (typ::*f)() const )
    169169{
    170170  res result = 0;
     
    176176  return result;
    177177};
    178 template <typename res> res molecule::SumPerAtom(res (atom::*f)() ) const
     178template <typename res, typename typ> res molecule::SumPerAtom(res (typ::*f)() ) const
    179179{
    180180  res result = 0;
     
    186186  return result;
    187187};
    188 template <typename res> res molecule::SumPerAtom(res (atom::*f)() const ) const
     188template <typename res, typename typ> res molecule::SumPerAtom(res (typ::*f)() const ) const
    189189{
    190190  res result = 0;
     
    197197};
    198198// one argument
    199 template <typename T, typename res> res molecule::SumPerAtom(res (atom::*f)(T), T t )
     199template <typename res, typename typ, typename T> res molecule::SumPerAtom(res (typ::*f)(T), T t )
    200200{
    201201  res result = 0;
     
    207207  return result;
    208208};
    209 template <typename T, typename res> res molecule::SumPerAtom(res (atom::*f)(T) const, T t )
     209template <typename res, typename typ, typename T> res molecule::SumPerAtom(res (typ::*f)(T) const, T t )
    210210{
    211211  res result = 0;
     
    217217  return result;
    218218};
    219 template <typename T, typename res> res molecule::SumPerAtom(res (atom::*f)(T), T t ) const
     219template <typename res, typename typ, typename T> res molecule::SumPerAtom(res (typ::*f)(T), T t ) const
    220220{
    221221  res result = 0;
     
    227227  return result;
    228228};
    229 template <typename T, typename res> res molecule::SumPerAtom(res (atom::*f)(T) const, T t ) const
     229template <typename res, typename typ, typename T> res molecule::SumPerAtom(res (typ::*f)(T) const, T t ) const
    230230{
    231231  res result = 0;
     
    357357
    358358// zero arguments
    359 template <typename res> void molecule::ActOnAllAtoms( res (atom::*f)())
     359template <typename res, typename typ> void molecule::ActOnAllAtoms( res (typ::*f)())
    360360{
    361361  atom *Walker = start;
     
    365365  }
    366366};
    367 template <typename res> void molecule::ActOnAllAtoms( res (atom::*f)() const)
     367template <typename res, typename typ> void molecule::ActOnAllAtoms( res (typ::*f)() const)
    368368{
    369369  atom *Walker = start;
     
    373373  }
    374374};
    375 template <typename res> void molecule::ActOnAllAtoms( res (atom::*f)()) const
     375template <typename res, typename typ> void molecule::ActOnAllAtoms( res (typ::*f)()) const
    376376{
    377377  atom *Walker = start;
     
    381381  }
    382382};
    383 template <typename res> void molecule::ActOnAllAtoms( res (atom::*f)() const) const
     383template <typename res, typename typ> void molecule::ActOnAllAtoms( res (typ::*f)() const) const
    384384{
    385385  atom *Walker = start;
     
    390390};
    391391// one argument
    392 template <typename res, typename T> void molecule::ActOnAllAtoms( res (atom::*f)(T), T t )
     392template <typename res, typename typ, typename T> void molecule::ActOnAllAtoms( res (typ::*f)(T), T t )
    393393{
    394394  atom *Walker = start;
     
    398398  }
    399399};
    400 template <typename res, typename T> void molecule::ActOnAllAtoms( res (atom::*f)(T) const, T t )
     400template <typename res, typename typ, typename T> void molecule::ActOnAllAtoms( res (typ::*f)(T) const, T t )
    401401{
    402402  atom *Walker = start;
     
    406406  }
    407407};
    408 template <typename res, typename T> void molecule::ActOnAllAtoms( res (atom::*f)(T), T t ) const
     408template <typename res, typename typ, typename T> void molecule::ActOnAllAtoms( res (typ::*f)(T), T t ) const
    409409{
    410410  atom *Walker = start;
     
    414414  }
    415415};
    416 template <typename res, typename T> void molecule::ActOnAllAtoms( res (atom::*f)(T) const, T t ) const
     416template <typename res, typename typ, typename T> void molecule::ActOnAllAtoms( res (typ::*f)(T) const, T t ) const
    417417{
    418418  atom *Walker = start;
     
    423423};
    424424// two argument
    425 template <typename res, typename T, typename U> void molecule::ActOnAllAtoms( res (atom::*f)(T, U), T t, U u )
     425template <typename res, typename typ, typename T, typename U> void molecule::ActOnAllAtoms( res (typ::*f)(T, U), T t, U u )
    426426{
    427427  atom *Walker = start;
     
    431431  }
    432432};
    433 template <typename res, typename T, typename U> void molecule::ActOnAllAtoms( res (atom::*f)(T, U) const, T t, U u )
     433template <typename res, typename typ, typename T, typename U> void molecule::ActOnAllAtoms( res (typ::*f)(T, U) const, T t, U u )
    434434{
    435435  atom *Walker = start;
     
    439439  }
    440440};
    441 template <typename res, typename T, typename U> void molecule::ActOnAllAtoms( res (atom::*f)(T, U), T t, U u ) const
     441template <typename res, typename typ, typename T, typename U> void molecule::ActOnAllAtoms( res (typ::*f)(T, U), T t, U u ) const
    442442{
    443443  atom *Walker = start;
     
    447447  }
    448448};
    449 template <typename res, typename T, typename U> void molecule::ActOnAllAtoms( res (atom::*f)(T, U) const, T t, U u ) const
     449template <typename res, typename typ, typename T, typename U> void molecule::ActOnAllAtoms( res (typ::*f)(T, U) const, T t, U u ) const
    450450{
    451451  atom *Walker = start;
     
    456456};
    457457// three argument
    458 template <typename res, typename T, typename U, typename V> void molecule::ActOnAllAtoms( res (atom::*f)(T, U, V), T t, U u, V v)
     458template <typename res, typename typ, typename T, typename U, typename V> void molecule::ActOnAllAtoms( res (typ::*f)(T, U, V), T t, U u, V v)
    459459{
    460460  atom *Walker = start;
     
    464464  }
    465465};
    466 template <typename res, typename T, typename U, typename V> void molecule::ActOnAllAtoms( res (atom::*f)(T, U, V) const, T t, U u, V v)
     466template <typename res, typename typ, typename T, typename U, typename V> void molecule::ActOnAllAtoms( res (typ::*f)(T, U, V) const, T t, U u, V v)
    467467{
    468468  atom *Walker = start;
     
    472472  }
    473473};
    474 template <typename res, typename T, typename U, typename V> void molecule::ActOnAllAtoms( res (atom::*f)(T, U, V), T t, U u, V v) const
     474template <typename res, typename typ, typename T, typename U, typename V> void molecule::ActOnAllAtoms( res (typ::*f)(T, U, V), T t, U u, V v) const
    475475{
    476476  atom *Walker = start;
     
    480480  }
    481481};
    482 template <typename res, typename T, typename U, typename V> void molecule::ActOnAllAtoms( res (atom::*f)(T, U, V) const, T t, U u, V v) const
     482template <typename res, typename typ, typename T, typename U, typename V> void molecule::ActOnAllAtoms( res (typ::*f)(T, U, V) const, T t, U u, V v) const
    483483{
    484484  atom *Walker = start;
     
    489489};
    490490// four arguments
    491 template <typename res, typename T, typename U, typename V, typename W> void molecule::ActOnAllAtoms( res (atom::*f)(T, U, V, W), T t, U u, V v, W w)
     491template <typename res, typename typ, typename T, typename U, typename V, typename W> void molecule::ActOnAllAtoms( res (typ::*f)(T, U, V, W), T t, U u, V v, W w)
    492492{
    493493  atom *Walker = start;
     
    497497  }
    498498};
    499 template <typename res, typename T, typename U, typename V, typename W> void molecule::ActOnAllAtoms( res (atom::*f)(T, U, V, W) const, T t, U u, V v, W w)
     499template <typename res, typename typ, typename T, typename U, typename V, typename W> void molecule::ActOnAllAtoms( res (typ::*f)(T, U, V, W) const, T t, U u, V v, W w)
    500500{
    501501  atom *Walker = start;
     
    505505  }
    506506};
    507 template <typename res, typename T, typename U, typename V, typename W> void molecule::ActOnAllAtoms( res (atom::*f)(T, U, V, W), T t, U u, V v, W w) const
     507template <typename res, typename typ, typename T, typename U, typename V, typename W> void molecule::ActOnAllAtoms( res (typ::*f)(T, U, V, W), T t, U u, V v, W w) const
    508508{
    509509  atom *Walker = start;
     
    513513  }
    514514};
    515 template <typename res, typename T, typename U, typename V, typename W> void molecule::ActOnAllAtoms( res (atom::*f)(T, U, V, W) const, T t, U u, V v, W w) const
     515template <typename res, typename typ, typename T, typename U, typename V, typename W> void molecule::ActOnAllAtoms( res (typ::*f)(T, U, V, W) const, T t, U u, V v, W w) const
    516516{
    517517  atom *Walker = start;
     
    525525
    526526// for atom ints
    527 template <typename T> void molecule::SetIndexedArrayForEachAtomTo ( T *array, int TesselPoint::*index, void (*Setor)(T *, T *) )
     527template <typename T> void molecule::SetIndexedArrayForEachAtomTo ( T *array, int ParticleInfo::*index, void (*Setor)(T *, T *) )
    528528{
    529529  atom *Walker = start;
     
    534534  }
    535535};
    536 template <typename T> void molecule::SetIndexedArrayForEachAtomTo ( T *array, int TesselPoint::*index, void (*Setor)(T *, T *), T value )
     536template <typename T> void molecule::SetIndexedArrayForEachAtomTo ( T *array, int ParticleInfo::*index, void (*Setor)(T *, T *), T value )
    537537{
    538538  atom *Walker = start;
     
    542542  }
    543543};
    544 template <typename T> void molecule::SetIndexedArrayForEachAtomTo ( T *array, int TesselPoint::*index, void (*Setor)(T *, T *), T *value )
     544template <typename T> void molecule::SetIndexedArrayForEachAtomTo ( T *array, int ParticleInfo::*index, void (*Setor)(T *, T *), T *value )
    545545{
    546546  atom *Walker = start;
     
    550550  }
    551551};
    552 // for element ints inside atom class
     552// for element ints
    553553template <typename T> void molecule::SetIndexedArrayForEachAtomTo ( T *array, int element::*index, void (*Setor)(T *, T *) )
    554554{
     
    576576  }
    577577};
    578 template <typename T> void molecule::SetIndexedArrayForEachAtomTo ( T *array, int TesselPoint::*index, T (atom::*Setor)(Vector &), Vector atom::*value )
     578
     579template <typename T> void molecule::SetIndexedArrayForEachAtomTo ( T *array, int ParticleInfo::*index, T (atom::*Setor)(Vector &), Vector atom::*value )
    579580{
    580581  atom *Walker = start;
     
    584585  }
    585586};
    586 template <typename T> void molecule::SetIndexedArrayForEachAtomTo ( T *array, int TesselPoint::*index, T (atom::*Setor)(Vector &), Vector &vect )
     587template <typename T> void molecule::SetIndexedArrayForEachAtomTo ( T *array, int ParticleInfo::*index, T (atom::*Setor)(Vector &), Vector &vect )
    587588{
    588589  atom *Walker = start;
     
    593594};
    594595
    595 template <typename T> void molecule::SetAtomValueToIndexedArray ( T *array, int TesselPoint::*index, T atom::*value )
     596template <typename T, typename typ, typename typ2> void molecule::SetAtomValueToIndexedArray ( T *array, int typ::*index, T typ2::*value )
    596597{
    597598  atom *Walker = start;
     
    603604};
    604605
    605 template <typename T> void molecule::SetAtomValueToIndexedArray ( T *array, int element::*index, T atom::*value )
    606 {
    607   atom *Walker = start;
    608   while (Walker->next != end) {
    609     Walker = Walker->next;
    610     Walker->*value = array[(Walker->type->*index)];
    611     //cout << Verbose(2) << *Walker << " gets " << (Walker->*value) << endl;
    612   }
    613 };
    614 template <typename T> void molecule::SetAtomValueToValue ( T value, T atom::*ptr )
     606template <typename T, typename typ> void molecule::SetAtomValueToValue ( T value, T typ::*ptr )
    615607{
    616608  atom *Walker = start;
Note: See TracChangeset for help on using the changeset viewer.