PHIODataNode.h
//-----------------------------------------------------------------------------
// $Header: /afs/rhic/phenix/cvsroot/offline/framework/phool/PHIODataNode.h,v 1.13 2001/03/14 20:13:03 momchil Exp $
//
// The PHOOL Program Library
// Copyright (C) PHENIX collaboration, 1999
//
// Declaration of class PHIODataNode
//
// Purpose: a node which can hold persistent data
//
// Author: Matthias Messer
//-----------------------------------------------------------------------------
#ifndef PHIODATANODE_H
#define PHIODATANODE_H
#include "phool.h"
#include "PHDataNode.h"
#include "PHIOManager.h"
#include "PHNodeIOManager.h"
#include "TObject.h"
#include "PHObject.h"
template <class T> class PHIODataNode : public PHDataNode<T> {
friend class PHNodeIOManager;
public:
PHIODataNode(T*, const PHString&);
PHIODataNode(T*, const PHString&, const PHString&);
virtual ~PHIODataNode();
protected:
virtual PHBoolean write(PHIOManager *, const PHString& = "");
protected:
PHIODataNode();
};
template <class T> PHIODataNode<T>::PHIODataNode()
{
}
template <class T> PHIODataNode<T>::PHIODataNode(T* d, const PHString& name)
: PHDataNode<T>(d,name)
{
type = "PHIODataNode";
}
template <class T> PHIODataNode<T>::PHIODataNode(T* d, const PHString& name, const PHString& objtype)
: PHDataNode<T>(d,name,objtype)
{
type = "PHIODataNode";
}
template <class T> PHIODataNode<T>::~PHIODataNode()
{
}
template <class T> PHBoolean PHIODataNode<T>::write(PHIOManager* IOManager, const PHString& path)
{
PHNodeIOManager *nodeIOManager;
if (nodeIOManager = dynamic_cast<PHNodeIOManager*>(IOManager)) {
PHString newPath = path + "/" + name;
return nodeIOManager->write((TObject**)&data, newPath);
}
return True;
}
#endif /* PHIODATANODE_H */