ROOT logo
// $Id: ZCometBag.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/.

#include "ZCometBag.h"
#include "ZCometBag.c7"
#include <Glasses/ZSubTree.h>
#include <Glasses/ZQueen.h>
#include <Stones/ZComet.h>

#include <TFile.h>

ClassImp(ZCometBag);

void ZCometBag::_init()
{
  bSmartZNodes = true;
  mDepth = 1; bFollowLinks = true; bFollowLists = true;

  mKeyName = "ZComet";
}

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

void ZCometBag::on_insert(ZList::iterator it)
{
  PARENT_GLASS::on_insert(it);
  ZSubTree* st = dynamic_cast<ZSubTree*>(it.lens());
  if(!st) st = make_sub_tree_rep(it.lens());
}

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

ZSubTree* ZCometBag::make_sub_tree_rep(ZGlass* lens)
{
  ZSubTree* st = new ZSubTree(mDepth, bFollowLinks, bFollowLists,
			      GForm("ST of %s", lens->GetName()));
  mQueen->CheckIn(st);
  st->SetRoot(lens);
  return st;
}

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

void ZCometBag::ImportSubTree(ZGlass* lens)
{
  // !!! NOT cluster safe.
  // Should run on a detached thread on the Sun.

  ZSubTree* st = make_sub_tree_rep(lens);
  Add(st);
}

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

ZComet* ZCometBag::MakeComet()
{
  ZComet* comet = new ZComet(GetName(), GForm("Comet[CometBag] of %s", GetName()));
  WriteLock();

  // !!!! See ZComet, about correct streaming struct
  if(bSmartZNodes) comet->mIgnoredLinks.insert("ZNode::Parent");

  Stepper<ZSubTree> s(this);
  while(s.step()) {
    comet->AddTopLevel(s->GetRoot(), s->GetFollowLinks(), s->GetFollowLists(),
		       s->GetDepth());
  }
  WriteUnlock();
  return comet;
}

/**************************************************************************/
void ZCometBag::WriteComet()
{
  ZComet* c =  MakeComet();
  TFile f(mFile, "UPDATE");
  // assert/create directory path
  c->Write(mKeyName);
  f.Close();
}
 ZCometBag.cxx:1
 ZCometBag.cxx:2
 ZCometBag.cxx:3
 ZCometBag.cxx:4
 ZCometBag.cxx:5
 ZCometBag.cxx:6
 ZCometBag.cxx:7
 ZCometBag.cxx:8
 ZCometBag.cxx:9
 ZCometBag.cxx:10
 ZCometBag.cxx:11
 ZCometBag.cxx:12
 ZCometBag.cxx:13
 ZCometBag.cxx:14
 ZCometBag.cxx:15
 ZCometBag.cxx:16
 ZCometBag.cxx:17
 ZCometBag.cxx:18
 ZCometBag.cxx:19
 ZCometBag.cxx:20
 ZCometBag.cxx:21
 ZCometBag.cxx:22
 ZCometBag.cxx:23
 ZCometBag.cxx:24
 ZCometBag.cxx:25
 ZCometBag.cxx:26
 ZCometBag.cxx:27
 ZCometBag.cxx:28
 ZCometBag.cxx:29
 ZCometBag.cxx:30
 ZCometBag.cxx:31
 ZCometBag.cxx:32
 ZCometBag.cxx:33
 ZCometBag.cxx:34
 ZCometBag.cxx:35
 ZCometBag.cxx:36
 ZCometBag.cxx:37
 ZCometBag.cxx:38
 ZCometBag.cxx:39
 ZCometBag.cxx:40
 ZCometBag.cxx:41
 ZCometBag.cxx:42
 ZCometBag.cxx:43
 ZCometBag.cxx:44
 ZCometBag.cxx:45
 ZCometBag.cxx:46
 ZCometBag.cxx:47
 ZCometBag.cxx:48
 ZCometBag.cxx:49
 ZCometBag.cxx:50
 ZCometBag.cxx:51
 ZCometBag.cxx:52
 ZCometBag.cxx:53
 ZCometBag.cxx:54
 ZCometBag.cxx:55
 ZCometBag.cxx:56
 ZCometBag.cxx:57
 ZCometBag.cxx:58
 ZCometBag.cxx:59
 ZCometBag.cxx:60
 ZCometBag.cxx:61
 ZCometBag.cxx:62
 ZCometBag.cxx:63
 ZCometBag.cxx:64
 ZCometBag.cxx:65
 ZCometBag.cxx:66
 ZCometBag.cxx:67
 ZCometBag.cxx:68
 ZCometBag.cxx:69
 ZCometBag.cxx:70
 ZCometBag.cxx:71
 ZCometBag.cxx:72
 ZCometBag.cxx:73
 ZCometBag.cxx:74
 ZCometBag.cxx:75
 ZCometBag.cxx:76
 ZCometBag.cxx:77
 ZCometBag.cxx:78
 ZCometBag.cxx:79
 ZCometBag.cxx:80
 ZCometBag.cxx:81
 ZCometBag.cxx:82
 ZCometBag.cxx:83