Geant4 Cross Reference |
>> 1 // This code implementation is the intellectual property of >> 2 // the GEANT4 collaboration. 1 // 3 // 2 // ******************************************* << 4 // By copying, distributing or modifying the Program (or any work 3 // * License and Disclaimer << 5 // based on the Program) you indicate your acceptance of this statement, 4 // * << 6 // and all its terms. 5 // * The Geant4 software is copyright of th << 6 // * the Geant4 Collaboration. It is provided << 7 // * conditions of the Geant4 Software License << 8 // * LICENSE and available at http://cern.ch/ << 9 // * include a list of copyright holders. << 10 // * << 11 // * Neither the authors of this software syst << 12 // * institutes,nor the agencies providing fin << 13 // * work make any representation or warran << 14 // * regarding this software system or assum << 15 // * use. Please see the license in the file << 16 // * for the full disclaimer and the limitatio << 17 // * << 18 // * This code implementation is the result << 19 // * technical work of the GEANT4 collaboratio << 20 // * By using, copying, modifying or distri << 21 // * any work based on the software) you ag << 22 // * use in resulting scientific publicati << 23 // * acceptance of all terms of the Geant4 Sof << 24 // ******************************************* << 25 // 7 // 26 // G4ParticleTableIterator << 8 // $Id: G4ParticleTableIterator.hh,v 1.2.4.1.2.1 1999/12/09 10:28:49 gunter Exp $ 27 << 9 // GEANT4 tag $Name: geant4-01-01 $ 28 // Authors: G.Cosmo, 2 December 1995 - Design, << 10 // 29 // H.Kurashige, 28 October 1999 - Fir << 11 // 30 // ------------------------------------------- << 12 // ------------------------------------------------------------ 31 #ifndef G4ParticleTableIterator_hh << 13 // GEANT 4 class header file 32 #define G4ParticleTableIterator_hh 1 << 14 // >> 15 // For information related to this code contact: >> 16 // CERN, IT Division, ASD group >> 17 // History: first implementation, based on object model of >> 18 // 28 Oct 1999, H.Kurashige >> 19 // ------------------------------------------------------------ 33 20 34 #include "G4ParticleDefinition.hh" << 21 #ifndef G4ParticleTableIterator_h >> 22 #define G4ParticleTableIterator_h 1 35 23 36 #include <map> << 24 #include "g4std/map" 37 25 38 template<class K, class V> << 26 template < class K, class V > class G4ParticleTableIterator 39 class G4ParticleTableIterator << 40 { 27 { 41 public: << 28 public: 42 using Map = std::map<K, V, std::less<K>>; << 29 typedef G4std::map<K, V, G4std::less<K> > Map; >> 30 G4ParticleTableIterator( Map &adict): >> 31 mydict(&adict),it(adict.begin()),defined(false){} 43 32 44 G4ParticleTableIterator(Map& adict) : it(a << 33 G4bool operator++ () 45 << 46 G4bool operator++() << 47 { 34 { 48 if (!defined) return false; << 35 if(!defined) return false; 49 ++it; << 36 it++; 50 return static_cast<bool>(it != mydict->e << 37 return it!=mydict->end() ? true : false; 51 } 38 } 52 << 39 53 G4bool operator()() << 40 G4bool operator()() 54 { 41 { 55 if (!defined) { << 42 if(defined) { 56 defined = true; << 43 return operator++(); 57 it = mydict->begin(); << 44 } else { 58 } << 45 defined=true; 59 else { << 46 it=mydict->begin(); 60 ++it; << 47 return it!=mydict->end() ? true : false; 61 } 48 } 62 if (it == mydict->end()) return false; << 63 if (skipIons) { << 64 while ((static_cast<G4ParticleDefiniti << 65 { // Loop checking, 09.08.2015, K.Kur << 66 ++it; << 67 if (it == mydict->end()) return fals << 68 } << 69 } << 70 return true; << 71 } << 72 << 73 void reset(G4bool ifSkipIon = true) << 74 { << 75 defined = false; << 76 skipIons = ifSkipIon; << 77 } 49 } 78 50 79 K* key() const { return &((*it).first); } << 51 void reset (){defined=false;} 80 << 52 K* key() const { return &((*it).first); } 81 V value() const { return (*it).second; } << 53 V value() const { return (*it).second; } 82 << 54 83 private: << 55 private: 84 typename Map::iterator it; << 56 typename Map::iterator it; 85 Map* mydict = nullptr; << 57 Map * mydict; 86 G4bool defined = false; << 58 G4bool defined; 87 G4bool skipIons = true; << 88 }; 59 }; 89 60 90 #endif 61 #endif 91 62