ROOT logo
// $Id: Operator.cxx 2088 2008-11-23 20:26:46Z matevz $

// Copyright (C) 1999-2008, Matevz Tadel. All rights reserved.
// This file is part of GLED, released under GNU General Public License version 2.
// For the licensing terms see $GLEDSYS/LICENSE or http://www.gnu.org/.

//________________________________________________________________________
// Operator
//
// Base class for glasses that wish to participate in basic thread traversals.
// For now the implementation is simplified.
//
// In principle would have to be an `external' base (non-glass interface).
// Will be reimplemented in this spirit with the new reincarnation of p7.
//________________________________________________________________________

#include "Operator.h"
#include "Operator.c7"

ClassImp(Operator);

void Operator::_init()
{
  bOpActive = bOpRecurse = true;
}

/**************************************************************************/

void Operator::ResetRecursively()
{
  if(bOpRecurse) {
    lpZGlass_t l; CopyList(l);
    for(lpZGlass_i i=l.begin(); i!=l.end(); ++i) {
      if(Operator* o = dynamic_cast<Operator*>(*i)) {
	if(o->bOpActive) o->ResetRecursively();
      }
    }
  }
}

/**************************************************************************/

void Operator::PreOperate(Operator::Arg* op_arg)
{
}

void Operator::Operate(Operator::Arg* op_arg)
{
  PreOperate(op_arg);
  // { ... do your stuff ... }
  PostOperate(op_arg);
}

void Operator::PostOperate(Operator::Arg* op_arg)
{
  if(bOpRecurse) {
    lpZGlass_t l; CopyList(l);
    if(op_arg->fUseDynCast) {
      for(lpZGlass_i i=l.begin(); i!=l.end(); ++i) {
	if(Operator* o = dynamic_cast<Operator*>(*i)) {
	  if(o->bOpActive) o->Operate(op_arg);
	}
      }
    } else {
      for(lpZGlass_i i=l.begin(); i!=l.end(); ++i) {
	Operator* o = (Operator*)(*i);
	if(o->bOpActive) o->Operate(op_arg);
      }
    }
  }
}
 Operator.cxx:1
 Operator.cxx:2
 Operator.cxx:3
 Operator.cxx:4
 Operator.cxx:5
 Operator.cxx:6
 Operator.cxx:7
 Operator.cxx:8
 Operator.cxx:9
 Operator.cxx:10
 Operator.cxx:11
 Operator.cxx:12
 Operator.cxx:13
 Operator.cxx:14
 Operator.cxx:15
 Operator.cxx:16
 Operator.cxx:17
 Operator.cxx:18
 Operator.cxx:19
 Operator.cxx:20
 Operator.cxx:21
 Operator.cxx:22
 Operator.cxx:23
 Operator.cxx:24
 Operator.cxx:25
 Operator.cxx:26
 Operator.cxx:27
 Operator.cxx:28
 Operator.cxx:29
 Operator.cxx:30
 Operator.cxx:31
 Operator.cxx:32
 Operator.cxx:33
 Operator.cxx:34
 Operator.cxx:35
 Operator.cxx:36
 Operator.cxx:37
 Operator.cxx:38
 Operator.cxx:39
 Operator.cxx:40
 Operator.cxx:41
 Operator.cxx:42
 Operator.cxx:43
 Operator.cxx:44
 Operator.cxx:45
 Operator.cxx:46
 Operator.cxx:47
 Operator.cxx:48
 Operator.cxx:49
 Operator.cxx:50
 Operator.cxx:51
 Operator.cxx:52
 Operator.cxx:53
 Operator.cxx:54
 Operator.cxx:55
 Operator.cxx:56
 Operator.cxx:57
 Operator.cxx:58
 Operator.cxx:59
 Operator.cxx:60
 Operator.cxx:61
 Operator.cxx:62
 Operator.cxx:63
 Operator.cxx:64
 Operator.cxx:65
 Operator.cxx:66
 Operator.cxx:67
 Operator.cxx:68
 Operator.cxx:69
 Operator.cxx:70
 Operator.cxx:71