Candidate_v1.7.0
        stable
      
      
      
| Rev | Line |  | 
|---|
| [da098d2] | 1 | /* | 
|---|
|  | 2 | * ZeroInstanceInitializer.hpp | 
|---|
|  | 3 | * | 
|---|
|  | 4 | *  Created on: Jun 12, 2016 | 
|---|
|  | 5 | *      Author: heber | 
|---|
|  | 6 | */ | 
|---|
|  | 7 |  | 
|---|
|  | 8 |  | 
|---|
|  | 9 | #ifndef ZEROINSTANCEINITIALIZER_HPP_ | 
|---|
|  | 10 | #define ZEROINSTANCEINITIALIZER_HPP_ | 
|---|
|  | 11 |  | 
|---|
|  | 12 | // include config.h | 
|---|
|  | 13 | #ifdef HAVE_CONFIG_H | 
|---|
|  | 14 | #include <config.h> | 
|---|
|  | 15 | #endif | 
|---|
|  | 16 |  | 
|---|
|  | 17 | #include <map> | 
|---|
|  | 18 | #include <vector> | 
|---|
|  | 19 |  | 
|---|
|  | 20 | #include "Fragmentation/Summation/ZeroInstance.hpp" | 
|---|
|  | 21 |  | 
|---|
|  | 22 | /** This struct initializes zero instances for Summation and OrthogonalSummation | 
|---|
|  | 23 | * to use as default set of base values. | 
|---|
|  | 24 | * | 
|---|
|  | 25 | * Template MapType gives us a boost::fusion::map of types that we iterate over to | 
|---|
|  | 26 | * fill. | 
|---|
|  | 27 | */ | 
|---|
|  | 28 | template <typename MapType> | 
|---|
|  | 29 | struct ZeroInstanceInitializer | 
|---|
|  | 30 | { | 
|---|
|  | 31 | /** Constructor of class ZeroInstanceInitializer. | 
|---|
|  | 32 | * | 
|---|
|  | 33 | */ | 
|---|
|  | 34 | ZeroInstanceInitializer( | 
|---|
|  | 35 | MapType &_ZeroInstances) : | 
|---|
|  | 36 | ZeroInstances(_ZeroInstances) | 
|---|
|  | 37 | {} | 
|---|
|  | 38 |  | 
|---|
|  | 39 | /** Operator that fills the specific type \a MapValue to \a MapKey in its given | 
|---|
|  | 40 | * maps and vectors with false and the default ZeroInstance<T>. | 
|---|
|  | 41 | * | 
|---|
|  | 42 | */ | 
|---|
|  | 43 | template <typename MapKey> | 
|---|
|  | 44 | void operator()(MapKey &) { | 
|---|
|  | 45 | // We retrieve the type of the member variable from the boost::fusion::map. | 
|---|
|  | 46 | typedef typename boost::fusion::result_of::value_at_key<MapType, MapKey>::type MapValue; | 
|---|
|  | 47 |  | 
|---|
|  | 48 | // fill vector with default value | 
|---|
|  | 49 | const MapValue value = ZeroInstance<MapValue>(); | 
|---|
|  | 50 | boost::fusion::at_key<MapKey>(ZeroInstances) = value; | 
|---|
|  | 51 | } | 
|---|
|  | 52 |  | 
|---|
|  | 53 | //!> vector of all zero instance, to be filled by operator() | 
|---|
|  | 54 | MapType &ZeroInstances; | 
|---|
|  | 55 | }; | 
|---|
|  | 56 |  | 
|---|
|  | 57 |  | 
|---|
|  | 58 | #endif /* ZEROINSTANCEINITIALIZER_HPP_ */ | 
|---|
       
      
  Note:
 See   
TracBrowser
 for help on using the repository browser.