|
SNAP Library 2.0, Developer Reference
2013-05-13 16:33:57
SNAP, a general purpose, high performance system for analysis and manipulation of large networks
|
#include <ds.h>

Public Member Functions | |
| TTree () | |
| TTree (const TTree &Tree) | |
| TTree (TSIn &SIn) | |
| void | Save (TSOut &SOut) const |
| void | LoadXml (const PXmlTok &XmlTok, const TStr &Nm="") |
| void | SaveXml (TSOut &SOut, const TStr &Nm) const |
| TTree & | operator= (const TTree &Tree) |
| bool | operator== (const TTree &Tree) const |
| bool | operator< (const TTree &Tree) const |
| int | GetPrimHashCd () const |
| int | GetSecHashCd () const |
| int | GetMemUsed () const |
| void | Clr () |
| int | AddNode (const int &ParentNodeId, const TVal &NodeVal=TVal()) |
| int | AddRoot (const TVal &NodeVal=TVal()) |
| int | GetNodes () const |
| void | GetNodeIdV (TIntV &NodeIdV, const int &NodeId=0) |
| int | GetParentNodeId (const int &NodeId) const |
| int | GetChildren (const int &NodeId) const |
| int | GetChildNodeId (const int &NodeId, const int &ChildN) const |
| TVal & | GetNodeVal (const int &NodeId) |
| void | GenRandomTree (const int &Nodes, TRnd &Rnd) |
| void | DelNode (const int &NodeId) |
| void | CopyTree (const int &SrcNodeId, TTree &DstTree, const int &DstParentNodeId=-1) |
| void | WrTree (const int &NodeId=0, const int &Lev=0) |
Private Attributes | |
| TVec< TTriple< TInt, TIntV, TVal > > | NodeV |
| int TTree< TVal >::AddNode | ( | const int & | ParentNodeId, |
| const TVal & | NodeVal = TVal() |
||
| ) | [inline] |
Definition at line 3346 of file ds.h.
References TVec< TVal, TSizeTy >::Add(), IAssert, TVec< TVal, TSizeTy >::Len(), and TTree< TVal >::NodeV.
Referenced by TTree< TVal >::AddRoot(), and TTree< TVal >::CopyTree().
{
IAssert(((ParentNodeId==-1)&&(NodeV.Len()==0))||(NodeV.Len()>0));
if (ParentNodeId!=-1){NodeV[ParentNodeId].Val2.Add(NodeV.Len());}
return NodeV.Add(TTriple<TInt, TIntV, TVal>(ParentNodeId, TIntV(), NodeVal));}


Definition at line 3350 of file ds.h.
References TTree< TVal >::AddNode().
{
return AddNode(-1, NodeVal);}

Definition at line 3344 of file ds.h.
References TVec< TVal, TSizeTy >::Clr(), and TTree< TVal >::NodeV.

| void TTree< TVal >::CopyTree | ( | const int & | SrcNodeId, |
| TTree< TVal > & | DstTree, | ||
| const int & | DstParentNodeId = -1 |
||
| ) |
Definition at line 3405 of file ds.h.
References TTree< TVal >::AddNode().
{
int DstNodeId=DstTree.AddNode(DstParentNodeId, GetNodeVal(SrcNodeId));
for (int ChildN=0; ChildN<GetChildren(SrcNodeId); ChildN++){
int ChildNodeId=GetChildNodeId(SrcNodeId, ChildN);
if (ChildNodeId!=-1){
CopyTree(ChildNodeId, DstTree, DstNodeId);
}
}
}

Definition at line 3394 of file ds.h.
References TVec< TVal, TSizeTy >::SearchForw().
{
if (NodeId==0){
Clr();
} else {
TIntV& ChildNodeIdV=NodeV[GetParentNodeId(NodeId)].Val2;
int ChildNodeIdN=ChildNodeIdV.SearchForw(NodeId);
ChildNodeIdV[ChildNodeIdN]=-1;
}
}

| void TTree< TVal >::GenRandomTree | ( | const int & | Nodes, |
| TRnd & | Rnd | ||
| ) |
Definition at line 3382 of file ds.h.
References TRnd::GetUniDevInt().
{
Clr();
if (Nodes>0){
AddRoot(TVal());
for (int NodeN=1; NodeN<Nodes; NodeN++){
int ParentNodeId=Rnd.GetUniDevInt(0, GetNodes()-1);
AddNode(ParentNodeId, TVal());
}
}
}

| int TTree< TVal >::GetChildNodeId | ( | const int & | NodeId, |
| const int & | ChildN | ||
| ) | const [inline] |
Definition at line 3357 of file ds.h.
References TTree< TVal >::NodeV.
{return NodeV[NodeId].Val2[ChildN];}
| int TTree< TVal >::GetChildren | ( | const int & | NodeId | ) | const [inline] |
Definition at line 3356 of file ds.h.
References TVec< TVal, TSizeTy >::Len(), and TTree< TVal >::NodeV.

| int TTree< TVal >::GetMemUsed | ( | ) | const [inline] |
Definition at line 3342 of file ds.h.
References TVec< TVal, TSizeTy >::GetMemUsed(), and TTree< TVal >::NodeV.
{return NodeV.GetMemUsed();}

| void TTree< TVal >::GetNodeIdV | ( | TIntV & | NodeIdV, |
| const int & | NodeId = 0 |
||
| ) |
Definition at line 3369 of file ds.h.
References TVec< TVal, TSizeTy >::Add(), and TVec< TVal, TSizeTy >::Clr().
{
if (NodeId==0){NodeIdV.Clr(); if (GetNodes()==0){return;}}
else if (GetParentNodeId(NodeId)==-1){return;}
NodeIdV.Add(NodeId);
for (int ChildN=0; ChildN<GetChildren(NodeId); ChildN++){
int ChildNodeId=GetChildNodeId(NodeId, ChildN);
if (ChildNodeId!=-1){
GetNodeIdV(NodeIdV, ChildNodeId);
}
}
}

Definition at line 3353 of file ds.h.
References TVec< TVal, TSizeTy >::Len(), and TTree< TVal >::NodeV.

| TVal& TTree< TVal >::GetNodeVal | ( | const int & | NodeId | ) | [inline] |
| int TTree< TVal >::GetParentNodeId | ( | const int & | NodeId | ) | const [inline] |
| int TTree< TVal >::GetPrimHashCd | ( | ) | const [inline] |
Definition at line 3339 of file ds.h.
References TVec< TVal, TSizeTy >::GetPrimHashCd(), and TTree< TVal >::NodeV.
{return NodeV.GetPrimHashCd();}

| int TTree< TVal >::GetSecHashCd | ( | ) | const [inline] |
Definition at line 3340 of file ds.h.
References TVec< TVal, TSizeTy >::GetSecHashCd(), and TTree< TVal >::NodeV.
{return NodeV.GetSecHashCd();}

Definition at line 3335 of file ds.h.
References TTree< TVal >::NodeV.
Definition at line 3331 of file ds.h.
References TTree< TVal >::NodeV, and TVec< TVal, TSizeTy >::Save().

Definition at line 3416 of file ds.h.
{
for (int LevN=0; LevN<Lev; LevN++){printf("| ");}
printf("%d (%d)\n", NodeId, GetChildren(NodeId));
for (int ChildN=0; ChildN<GetChildren(NodeId); ChildN++){
int ChildNodeId=GetChildNodeId(NodeId, ChildN);
if (ChildNodeId!=-1){
WrTree(ChildNodeId, Lev+1);
}
}
}
Definition at line 3326 of file ds.h.
Referenced by TTree< TVal >::AddNode(), TTree< TVal >::Clr(), TTree< TVal >::GetChildNodeId(), TTree< TVal >::GetChildren(), TTree< TVal >::GetMemUsed(), TTree< TVal >::GetNodes(), TTree< TVal >::GetNodeVal(), TTree< TVal >::GetParentNodeId(), TTree< TVal >::GetPrimHashCd(), TTree< TVal >::GetSecHashCd(), TTree< TVal >::operator=(), TTree< TVal >::operator==(), and TTree< TVal >::Save().