TDataSet
class description - source file - inheritance tree
private:
void operator=(const TDataSet&)
protected:
TDataSet TDataSet(const char* name, const char* title)
void AddMain(TDataSet* set)
TDataSet* GetRealParent()
void MakeCollection()
virtual void SetMother(TObject* mother)
static EDataSetPass SortIt(TDataSet* ds)
static EDataSetPass SortIt(TDataSet* ds, void* user)
public:
TDataSet TDataSet(const char* name, TDataSet* parent = 0, Bool_t arrayFlag = kFALSE)
TDataSet TDataSet(const TDataSet& src, EDataSetPass iopt = kAll)
TDataSet TDataSet(TNode& src)
virtual void ~TDataSet()
virtual void Add(TDataSet* dataset)
virtual void AddAt(TDataSet* dataset, Int_t idx = 0)
virtual void AddAtAndExpand(TDataSet* dataset, Int_t idx = 0)
virtual void AddFirst(TDataSet* dataset)
virtual void AddLast(TDataSet* dataset)
TDataSet* At(Int_t idx) const
virtual void Browse(TBrowser* b)
static TClass* Class()
virtual TObject* Clone(const char* newname) const
virtual void Delete(Option_t* opt)
virtual TDataSet* Find(const char* path) const
virtual TDataSet* FindByName(const char* name, const char* path, Option_t* opt) const
virtual TDataSet* FindByPath(const char* path) const
virtual TObject* FindObject(const char* name) const
virtual TObject* FindObject(const TObject* o) const
virtual TDataSet* First() const
virtual TSeqCollection* GetCollection() const
TList* GetList() const
virtual Int_t GetListSize() const
static TDataSet* GetMainSet()
TObject* GetMother() const
TObjArray* GetObjArray() const
virtual TObject* GetObject() const
virtual TDataSet* GetParent() const
virtual Long_t HasData() const
virtual TDataSet* Instance() const
static TDataSet* instance()
void InvertAllMarks()
virtual TClass* IsA() const
virtual Bool_t IsEmpty() const
virtual Bool_t IsFolder() const
virtual Bool_t IsMarked() const
virtual Bool_t IsThisDir(const char* dirname, int len = -1, int ignorecase = 0) const
virtual TDataSet* Last() const
virtual void ls(Option_t* option) const
virtual void ls(Int_t depth) const
void Mark()
void Mark(UInt_t flag, EBitOpt reset = kSet)
void MarkAll()
virtual EDataSetPass Pass(EDataSetPass (*)(TDataSet*) callback, Int_t depth = 0)
virtual EDataSetPass Pass(EDataSetPass (*)(TDataSet*,void*) callback, void* user, Int_t depth = 0)
virtual TString Path() const
virtual void PrintContents(Option_t* opt) const
virtual Int_t Purge(Option_t* opt)
virtual void Remove(TDataSet* set)
virtual TDataSet* RemoveAt(Int_t idx)
virtual void SetMother(TDataSet* parent = 0)
virtual void SetObject(TObject* obj)
virtual void SetParent(TDataSet* parent = 0)
virtual void SetWrite()
virtual void ShowMembers(TMemberInspector& insp, char* parent)
virtual void Shunt(TDataSet* newParent = 0)
virtual void Sort()
virtual void Streamer(TBuffer& b)
void StreamerNVirtual(TBuffer& b)
void UnMark()
void UnMarkAll()
virtual void Update()
virtual void Update(TDataSet* set, UInt_t opt = 0)
virtual Int_t Write(const Text_t* name = "0", Int_t option = 0, Int_t bufsize = 0)
protected:
static TDataSet* fgMainSet pointer the main dataset;
TDataSet* fParent pointer to mother of the directory
TSeqCollection* fList List of the the the objects included into this dataset
See also
-
TChair, TFileSet, TObjectSet, TTable
TDataSet
TDataSet class is to create a special compound object-container:
====================================================================
TDataSet object ::= the "named" list of TDataSet objects
====================================================================
where the "list" (the pointer to TList object) may contain no object
TDataSet object has a back pointer to its "parent" TDataSet
object, the "character" *name* and "character" *title*
The service this class does provide is to help the user to build
and manage the hierarchy of his/her data but the data itself.
So it is not "Container" itself rather the basement (base class)
to built the containers.
One may derive the custom container classes from TDataSet.
See for example TObjectSet, TTable, TVolume, TFileSet
These classes derived from TDataSet:
Class Name
----------
TObjectSet::public TDataSet - is a container for TObject
TTable::public TDataSet - is a container for the array
of any "plain" C-structure
TNode::public TDataSet - is a container for 3D objects
TMaker:: public TDataSet - is a container for STAR "control"
objects
etc etc
TDataSet class is a base class to implement the directory-like
data structures and maintain it via TDataSetIter class iterator
TDataSet can be iterated using an iterator object (see TDataSetIter)
or by TDataSet::Pass method (see below)
Terms: Dataset - any object from the list above
===== Member is called "DataSet Member"
Structural - the "Dataset Member" is its
member "Structural member" if its "back pointer"
points to this object
Dataset - we will say this TDataSet object "OWNs"
Owner (or is an OWNER / PARENT of ) another
(parent) TDataSet object if the last one is its
"Structural Member"
Associated - If some object is not "Structural member"
member of this object we will say it is an
"Associated Member" of this dataset
Orphan - If some dataset is a member of NO other
dataset TDataSet object it is called an "orphan"
dataset object
- Any TDataSet object may be "Owned" by one and only one another
TDataSet object if any.
- Any TDataSet object can be the "Structural Member" of one and
only one another TDataSet
- Any TDataSet object may be an "Associated Member" for any number
of other TDataSet objects if any
- NAME issue:
Each "dataset member" is in possession of some "alpha-numerical"
NAME as defined by TNamed class.
The NAME may contain any "printable" symbols but "SLASH" - "/"
The symbol "RIGHT SLASH" - "/" can not be used as any part of the
"DataSet Member" NAME
Any DataSet can be found by its NAME with TDataSetIter object
- TITLE issue:
Each "dataset member" is in possession of the "alpha-numerical"
TITLE as defined by TNamed class. The meaning of the TITLE is
reserved for the derived classes to hold there some indetification
that is special for that derived class.
This means the user must be careful about the "TDataSet
NAME and TITLE since this may cause some "side effects" of the
particular class functions
- It is NOT required those all "DataSet Members" are in possession
of the unique names, i.e. any number of "DataSet Members"
may bear one and the same name
Actions:
========
Create DataSet is born either as "Orphan" or
as "Structural Member"
of another TDataSet object
Add One dataset can be included into another dataset.
Upon adding:
- the "Orphan dataset" becomes "Structural Member"
- "Structural Members" of another dataset becomes the
"Associated Member" of this datatset
Delete - Upon deleting the "Structural Member":
- "REMOVES" itself from the "Parent DataSet".
- Its "Associated memberships" is not changed though
The last means the DataSet with the "Associated Members"
may contain a DIED pointers to unexisting "Associated"
objects !!!
Further information is provided my the particular method
descriptions.
The TDataSet class has several methods to control object('s)
memberships
TDataSet(const Char_t *name, TDataSet *parent, Bool_t arrayFlag)
: TNamed(name,"TDataSet")
cout << "ctor for " << GetName() << " - " << GetTitle() << endl;
TDataSet* GetRealParent()
TDataSet(const TDataSet &pattern,EDataSetPass iopt)
Creates TDataSet (clone) with a topology similar with TDataSet *pattern
Parameters:
-----------
pattern - the pattern dataset
iopt = kStruct - clone only my structural links
kAll - clone all links
kRefs - clone only refs
kMarked - clone marked (not implemented yet) only
All new-created sets become the structural ones anyway.
cout << "ctor for " << GetName() << " - " << GetTitle() << endl;
TDataSet(TNode &)
~TDataSet()
cout << "Default destructor for " << GetName() << " - " << GetTitle() << endl;
void MakeCollection()
void AddAt(TDataSet *dataset,Int_t idx)
Add TDataSet object at the "idx" position in ds
or at the end of the dataset
The final result is defined by either TList::AddAt or TObjArray::AddAt
methods
void AddAtAndExpand(TDataSet *dataset, Int_t idx)
!!!! Under construction !!!!!
Add TDataSet object at the "idx" position in ds
or at the end of the dataset
The final result is defined by either TList::AddAt or TObjArray::AddAt
methods
void AddLast(TDataSet *dataset)
Add TDataSet object at the end of the dataset list of this dataset
void AddFirst(TDataSet *dataset)
Add TDataSet object at the beginning of the dataset list of this dataset
void Browse(TBrowser *b)
Browse this dataset (called by TBrowser).
TObject* Clone(const char*) const
void Delete(Option_t *opt)
Delete - deletes the list of the TDataSet objects and all "Structural Members"
as well
This method doesn't affect the "Associated Members"
TDataSet* FindByPath(const Char_t *path) const
Aliase for TDataSet::Find(const Char_t *path) method
TDataSet* Find(const Char_t *path) const
Full description see: TDataSetIter::Find
Note. This method is quite expansive.
----- It is done to simplify the user's code when one wants to find ONLY object.
If you need to find more then 1 object in this dataset,
regard using TDataSetIter class yourself.
TDataSet* FindByName(const Char_t *name,const Char_t *path,Option_t *opt) const
Full description see: TDataSetIter::Find
Note. This is method is quite expansive.
----- It is done to simplify the user's code when one wants to find ONLY object.
If you need to find more then 1 object in this dataset,
regard using TDataSetIter class yourself.
TDataSet* First() const
Return the first object in the list. Returns 0 when list is empty.
TDataSet* Last() const
Return the last object in the list. Returns 0 when list is empty.
void ls(Option_t *option) const
ls(Option_t *option)
option - defines the path to be listed
= "*" - means print all levels
void ls(Int_t depth) const
ls(Int_t depth)
Prints the list of the this TDataSet.
Parameter:
=========
Int_t depth >0 the number of levels to be printed
=0 all levels will be printed
No par - ls() prints only level out
TDataSet* Instance() const
apply the class default ctor to instantiate a new object of the same kind.
This is a base method to be overriden by the classes
derived from TDataSet (to support TDataSetIter::Mkdir for example)
Bool_t IsThisDir(const Char_t *dirname,int len,int ignorecase) const
void MarkAll()
Mark all members of this dataset
void UnMarkAll()
UnMark all members of this dataset
void InvertAllMarks()
Invert mark bit for all members of this dataset
Bool_t IsEmpty() const
return kTRUE if the "internal" collection has no member
void PrintContents(Option_t *opt) const
Callback method to complete ls() method recursive loop
This is to allow to sepoarate navigation and the custom invormation
in the derived classes (see; TTable::PrintContents for example
TString Path() const
return the full path of this data set
void Remove(TDataSet *set)
TDataSet* RemoveAt(Int_t idx)
Remove object from the "idx" cell of this set and return
the pointer to the removed object if any
EDataSetPass Pass(EDataSetPass ( *callback)(TDataSet *),Int_t depth)
Pass (callback,depth)
Calls callback(this) for all datasets those recursively
Parameter:
=========
Int_t depth >0 the number of levels to be passed
=0 all levels will be passed
Return (this value mast be returned by the user's callback):
======
kContinue - continue passing
kPrune - stop passing the current branch, go to the next one
kUp - stop passing, leave the current branch,
return to previous level and continue
kStop - stop passing, leave all braches
EDataSetPass Pass(EDataSetPass ( *callback)(TDataSet *,void*),void *user,Int_t depth)
Pass (callback,user,depth)
Calls callback(this,user) for all datasets those recursively
Parameter:
=========
Int_t depth >0 the number of levels to be passed
=0 all levels will be passed
Return (this value mast be returned by the user's callback):
======
kContinue - continue passing
kPrune - stop passing the current branch, go to the next one
kUp - stop passing, leave the current branch,
return to previous level and continue
kStop - stop passing, leave all braches
Int_t Purge(Option_t *)
Purge - deletes all "dummy" "Structural Members" those are not ended
up with some dataset with data inside (those return HasData() = 0)
Purge does affect only the "Structural Members" and doesn't "Associated" ones
void SetParent(TDataSet *parent)
Break the "parent" relationship with the current object parent if present
parent != 0 Makes this object the "Structural Member"
of the "parent" dataset
= 0 Makes this object the "pure Associator", i.e it makes this
object the "Structural Member" of NO other TDataSet
void SetWrite()
One should not use this method but TDataSet::Write instead
This method os left here for the sake of the backward compatibility
To Write object first we should temporary break the
the backward fParent pointer (otherwise ROOT follows this links
and will pull fParent out too.
void Shunt(TDataSet *newParent)
Remove the object from the original and add it to dataset
TDataSet dataset != 0 - Make this object the "Structural Member"
of "dataset"
= 0 - Make this object "Orphan"
void Update(TDataSet* set,UInt_t opt)
Update this TDataSet with "set"
ATTENTION !!!
---------
This method changes the parent relationships of the input "set"
void Update()
Update()
Recursively updates all tables for all nested datasets
in inverse order
void Sort()
Int_t Write(const Text_t *name, Int_t option, Int_t bufsize)
To Write object first we should temporary break the
the backward fParent pointer (otherwise ROOT follows this links
and will pull fParent out too.
Inline Functions
void operator=(const TDataSet&)
void SetMother(TObject* mother)
void AddMain(TDataSet* set)
EDataSetPass SortIt(TDataSet* ds)
EDataSetPass SortIt(TDataSet* ds, void* user)
TDataSet TDataSet(TNode& src)
void Add(TDataSet* dataset)
TDataSet* At(Int_t idx) const
TObject* FindObject(const char* name) const
TObject* FindObject(const TObject* o) const
TObjArray* GetObjArray() const
TSeqCollection* GetCollection() const
TList* GetList() const
Int_t GetListSize() const
TDataSet* GetMainSet()
TObject* GetMother() const
TObject* GetObject() const
TDataSet* GetParent() const
Long_t HasData() const
TDataSet* instance()
void SetMother(TDataSet* parent = 0)
void SetObject(TObject* obj)
Bool_t IsFolder() const
Bool_t IsMarked() const
void Mark()
void UnMark()
void Mark(UInt_t flag, EBitOpt reset = kSet)
TClass* Class()
TClass* IsA() const
void ShowMembers(TMemberInspector& insp, char* parent)
void Streamer(TBuffer& b)
void StreamerNVirtual(TBuffer& b)
Author: Valery Fine(fine@mail.cern.ch) 03/07/98
Last update: root/star:$Name: $:$Id: TDataSet.cxx,v 1.1 2002/05/27 16:26:59 rdm Exp $
ROOT page - Class index - Top of the page
This page has been automatically generated. If you have any comments or suggestions about the page layout send a mail to ROOT support, or contact the developers with any questions or problems regarding ROOT.