2// ********************************************************************
 
    3// * License and Disclaimer                                           *
 
    5// * The  Geant4 software  is  copyright of the Copyright Holders  of *
 
    6// * the Geant4 Collaboration.  It is provided  under  the terms  and *
 
    7// * conditions of the Geant4 Software License,  included in the file *
 
    8// * LICENSE and available at  http://cern.ch/geant4/license .  These *
 
    9// * include a list of copyright holders.                             *
 
   11// * Neither the authors of this software system, nor their employing *
 
   12// * institutes,nor the agencies providing financial support for this *
 
   13// * work  make  any representation or  warranty, express or implied, *
 
   14// * regarding  this  software system or assume any liability for its *
 
   15// * use.  Please see the license in the file  LICENSE  and URL above *
 
   16// * for the full disclaimer and the limitation of liability.         *
 
   18// * This  code  implementation is the result of  the  scientific and *
 
   19// * technical work of the GEANT4 collaboration.                      *
 
   20// * By using,  copying,  modifying or  distributing the software (or *
 
   21// * any work based  on the software)  you  agree  to acknowledge its *
 
   22// * use  in  resulting  scientific  publications,  and indicate your *
 
   23// * acceptance of all terms of the Geant4 Software license.          *
 
   24// ********************************************************************
 
   29 *  Created on: 17 nov. 2014
 
   33#ifndef G4MANYFASTLISTS_ICC_
 
   34#define G4MANYFASTLISTS_ICC_
 
   36//____________________________________________________________
 
   39//____________________________________________________________
 
   41  void G4ManyFastLists<OBJECT>::pop(OBJECT* __track)
 
   44    G4FastList<OBJECT>::Pop(__track);
 
   45//  G4FastListNode* __trackListNode = G4FastList<OBJECT>::GetNode(__track);
 
   46//  G4FastList<OBJECT>* __trackList = G4FastList<OBJECT>::GetTrackList(__trackListNode);
 
   47//  if(__trackList) __trackList->pop(__trackListNode);
 
   50//  G4FastList<OBJECT>* __list = G4FastList<OBJECT>::GetTrackList(track);
 
   51//  if(__list) __list->pop(track);
 
   54//  G4FastListNode* __node = GetIT(track)->GetTrackListNode();
 
   55//  __node->fListRef->fpTrackList->pop(track);
 
   59  G4ManyFastLists_iterator<OBJECT> G4ManyFastLists_iterator<OBJECT>::UpdateToNextValidList()
 
   62//    G4cout << "G4TrackManyList_iterator::UpdateToNextValidList" << G4endl;
 
   64    if (fCurrentListIt == fLists->end()) // check validity
 
   70    fIterator = (*fCurrentListIt)->end();
 
   73    if (fCurrentListIt == fLists->end()) // check validity
 
   79    fIterator = (*fCurrentListIt)->begin();
 
   81    while (fCurrentListIt != fLists->end()
 
   84            fIterator == (*fCurrentListIt)->end()
 
   85//            || (*fCurrentListIt)->empty()
 
   86//            || fIterator.GetNode() == 0 || fIterator.GetNode()->GetObject() == 0)
 
   90//      G4cout << "while" << G4endl;
 
   91      fIterator = (*fCurrentListIt)->end();
 
   93      if (fCurrentListIt == fLists->end())
 
   95//        G4cout << "return here" << G4endl;
 
   99      fIterator = (*fCurrentListIt)->begin();
 
  102    if (fCurrentListIt == fLists->end())
 
  107//    assert(fIterator.GetNode());
 
  108//    assert(fIterator.GetNode()->GetObject());
 
  113template<class OBJECT>
 
  114  G4ManyFastLists_iterator<OBJECT>&
 
  115  G4ManyFastLists_iterator<OBJECT>::operator++()
 
  117    if (fCurrentListIt == fLists->end())
 
  125    if (fIterator == (*fCurrentListIt)->end())
 
  127      UpdateToNextValidList();
 
  133#endif /* G4MANYFASTLISTS_ICC_ */