|
SNAP Library, Developer Reference
2012-10-15 15:06:59
SNAP, a general purpose network analysis and graph mining library
|
#include <hash.h>

Classes | |
| class | THashKeyDatCmp |
Public Types | |
| enum | { HashPrimes = 32 } |
| typedef THashKeyDatI< TKey, TDat > | TIter |
Public Member Functions | |
| THash () | |
| THash (const THash &Hash) | |
| THash (const int &ExpectVals, const bool &_AutoSizeP=false) | |
| THash (TSIn &SIn) | |
| void | Load (TSIn &SIn) |
| void | Save (TSOut &SOut) const |
| void | LoadXml (const PXmlTok &XmlTok, const TStr &Nm="") |
| void | SaveXml (TSOut &SOut, const TStr &Nm) |
| THash & | operator= (const THash &Hash) |
| bool | operator== (const THash &Hash) const |
| bool | operator< (const THash &Hash) const |
| const TDat & | operator[] (const int &KeyId) const |
| TDat & | operator[] (const int &KeyId) |
| TDat & | operator() (const TKey &Key) |
| ::TSize | GetMemUsed () const |
| TIter | BegI () const |
| TIter | EndI () const |
| TIter | GetI (const TKey &Key) const |
| void | Gen (const int &ExpectVals) |
| void | Clr (const bool &DoDel=true, const int &NoDelLim=-1, const bool &ResetDat=true) |
| bool | Empty () const |
| int | Len () const |
| int | GetPorts () const |
| bool | IsAutoSize () const |
| int | GetMxKeyIds () const |
| int | GetReservedKeyIds () const |
| bool | IsKeyIdEqKeyN () const |
| int | AddKey (const TKey &Key) |
| TDat & | AddDatId (const TKey &Key) |
| TDat & | AddDat (const TKey &Key) |
| TDat & | AddDat (const TKey &Key, const TDat &Dat) |
| void | DelKey (const TKey &Key) |
| void | DelIfKey (const TKey &Key) |
| void | DelKeyId (const int &KeyId) |
| void | DelKeyIdV (const TIntV &KeyIdV) |
| void | MarkDelKey (const TKey &Key) |
| void | MarkDelKeyId (const int &KeyId) |
| const TKey & | GetKey (const int &KeyId) const |
| int | GetKeyId (const TKey &Key) const |
| int | GetRndKeyId (TRnd &Rnd) const |
| Get an index of a random element. If the hash table has many deleted keys, this may take a long time. | |
| int | GetRndKeyId (TRnd &Rnd, const double &EmptyFrac) |
| Get an index of a random element. If the hash table has many deleted keys, defrag the hash table first (that's why the function is non-const). | |
| bool | IsKey (const TKey &Key) const |
| bool | IsKey (const TKey &Key, int &KeyId) const |
| bool | IsKeyId (const int &KeyId) const |
| const TDat & | GetDat (const TKey &Key) const |
| TDat & | GetDat (const TKey &Key) |
| void | GetKeyDat (const int &KeyId, TKey &Key, TDat &Dat) const |
| bool | IsKeyGetDat (const TKey &Key, TDat &Dat) const |
| int | FFirstKeyId () const |
| bool | FNextKeyId (int &KeyId) const |
| void | GetKeyV (TVec< TKey > &KeyV) const |
| void | GetDatV (TVec< TDat > &DatV) const |
| void | GetKeyDatPrV (TVec< TPair< TKey, TDat > > &KeyDatPrV) const |
| void | GetDatKeyPrV (TVec< TPair< TDat, TKey > > &DatKeyPrV) const |
| void | GetKeyDatKdV (TVec< TKeyDat< TKey, TDat > > &KeyDatKdV) const |
| void | GetDatKeyKdV (TVec< TKeyDat< TDat, TKey > > &DatKeyKdV) const |
| void | Swap (THash &Hash) |
| void | Defrag () |
| void | Pack () |
| void | Sort (const bool &CmpKey, const bool &Asc) |
| void | SortByKey (const bool &Asc=true) |
| void | SortByDat (const bool &Asc=true) |
Static Public Attributes | |
| static const unsigned int | HashPrimeT [HashPrimes] |
Private Types | |
| typedef THashKeyDat< TKey, TDat > | THKeyDat |
| typedef TPair< TKey, TDat > | TKeyDatP |
Private Member Functions | |
| THKeyDat & | GetHashKeyDat (const int &KeyId) |
| const THKeyDat & | GetHashKeyDat (const int &KeyId) const |
| uint | GetNextPrime (const uint &Val) const |
| void | Resize () |
Private Attributes | |
| TIntV | PortV |
| TVec< THKeyDat > | KeyDatV |
| TBool | AutoSizeP |
| TInt | FFreeKeyId |
| TInt | FreeKeys |
typedef THashKeyDat<TKey, TDat> THash< TKey, TDat, THashFunc >::THKeyDat [private] |
| typedef THashKeyDatI<TKey, TDat> THash< TKey, TDat, THashFunc >::TIter |
| anonymous enum |
| THash< TKey, TDat, THashFunc >::THash | ( | const int & | ExpectVals, |
| const bool & | _AutoSizeP = false |
||
| ) | [explicit] |
Definition at line 293 of file hash.h.
References THash< TKey, TDat, THashFunc >::PortV, and TVec< TVal >::PutAll().
: PortV(GetNextPrime(ExpectVals/2)), KeyDatV(ExpectVals, 0), AutoSizeP(_AutoSizeP), FFreeKeyId(-1), FreeKeys(0){ PortV.PutAll(TInt(-1)); }

| TDat& THash< TKey, TDat, THashFunc >::AddDat | ( | const TKey & | Key | ) | [inline] |
Definition at line 192 of file hash.h.
Referenced by TUnionFind::Add(), TUniTrie< TInt >::Add(), TExpBi::AddBi(), TLocClustStat::AddCut(), TNEGraph::AddEdge(), TNodeEdgeNet< TNodeData, TEdgeData >::AddEdge(), AddFldVal(), AddHdFld(), TUNGraph::AddNode(), TNGraph::AddNode(), TNEGraph::AddNode(), TNodeEdgeNet< TNodeData, TEdgeData >::AddNode(), TSnap::TSnapDetail::TCNMQMatrix::TCmtyDat::AddQ(), TILx::AddRw(), TOLx::AddRw(), TLocClustStat::AddToBestCutH(), TLocClust::ApproxPageRank(), TGStat::AvgGStat(), TLocClustStat::BagOfWhiskers(), TLocClustStat::BagOfWhiskers2(), TForestFire::BurnExpFire(), TForestFire::BurnGeoFire(), TSnap::TSnapDetail::TCNMQMatrix::CmtyCMN(), TSnap::CommunityGirvanNewman(), TArtPointVisitor::DiscoverNode(), TBiConVisitor::DiscoverNode(), TSccVisitor< PGraph, OnlyCount >::DiscoverNode(), TLocClust::DrawWhiskers(), TSpecFunc::EntropyBias(), TZipIn::FillFExtToCmdH(), TZipOut::FillFExtToCmdH(), TSccVisitor< PGraph, OnlyCount >::FinishNode(), TSnap::GetBetweennessCentr(), TSnap::GetBfsEffDiam(), TSnap::GetBiConSzCnt(), TSnap::GetClustCf(), TSnap::GetDegCnt(), TCnCom::GetDfsVisitor(), TSnap::GetEigenVectorCentr(), TSnap::GetHits(), TSnap::GetInDegCnt(), TSnap::GetNodeClustCf(), TAGM::GetNodeMembership(), TSnap::GetNodesAtHops(), TGraphEnumUtils::GetNormalizedMap(), TSnap::GetOutDegCnt(), TSnap::GetPageRank(), TLxSymStr::GetSSym(), TBigNet< TNodeData, IsDir >::GetSubGraph(), TXmlObjSer::GetTagNm(), TSnap::GetTriadParticip(), TGStat::GetValStr(), TSnap::TSnapDetail::TCNMQMatrix::Init(), TUniChDb::InitScripts(), TUniChDb::InitSpecialCasing(), TUniChDb::InitWordAndSentenceBoundaryFlags(), TBigNet< TNodeData, IsDir >::InvertFromSources(), TTimeNet::LoadArxiv(), TKeyDatFl< TKey, TDat, THashFunc >::LoadHash(), TUniCaseFolding::LoadTxt(), TUniChDb::LoadTxt(), TDGraphCounter::operator()(), THash< TInt, TEdge >::operator()(), ParseHttpResp(), ParseHttpRq(), TNcpGraphsBase::PlotAvgNcp(), TLocClustStat::PlotBoltzmanCurve(), TSnap::PlotEigValDistr(), TLocClustStat::PlotPhiDistr(), TSnap::PlotShortPathDistr(), TSnap::PlotSngValDistr(), TXmlLx::PutEntityVal(), TXmlLx::PutPEntityVal(), PutVarVal(), TUnicode::RegisterCodec(), TBigNet< TNodeData, IsDir >::Rewire(), TLocClustStat::Run(), TBigNet< TNodeData, IsDir >::SaveToDisk(), TGStat::SetDistr(), SetEntityVal(), SetEscStr(), TGStat::SetVal(), TGStat::TakeClustCf(), TGStat::TakeConnComp(), TGStat::TakeDegDistr(), TGStat::TakeDiam(), TGStat::TakeSpectral(), TGStat::TakeTriadPart(), TD34GraphCounter::TD34GraphCounter(), THttpRq(), TMacro(), TPreproc::TPreproc(), TArtPointVisitor::TreeEdge(), and TBiConVisitor::TreeEdge().

| int THash< TKey, TDat, THashFunc >::AddKey | ( | const TKey & | Key | ) |
Definition at line 323 of file hash.h.
References GetPrimHashCd(), GetSecHashCd(), PortN, and Resize().
Referenced by TUniTrie< TInt >::Add(), THash< TInt, TEdge >::AddDat(), THash< TInt, TEdge >::AddDatId(), AddKeyVal(), AddToKeyVal(), TLocClustStat::BagOfWhiskers(), TTimeNENet::GetEdgeTmBuckets(), TSnap::GetSngVals(), TSnap::GetSngVec(), TStrCache::GetStr(), TTimeNet::GetTmBuckets(), TTimeNENet::GetTmBuckets(), TUniChDb::InitDerivedCoreProperties(), TUniChDb::InitLineBreaks(), TUniChDb::InitPropList(), TUniChDb::InitScripts(), IsBreakTag(), TUniChDb::LoadTxt(), TSnap::PrintInfo(), TUniChDb::TSubcatHelper::ProcessComment(), TSubGraphsEnum::RecurBfs1(), TGraphKey::TakeGraph(), TGraphKey::TakeSig(), and TUniChDb::TestComposition().
{
if ((KeyDatV.Len()>2*PortV.Len())||PortV.Empty()){Resize();}
const int PortN=abs(THashFunc::GetPrimHashCd(Key)%PortV.Len());
const int HashCd=abs(THashFunc::GetSecHashCd(Key));
int PrevKeyId=-1;
int KeyId=PortV[PortN];
while ((KeyId!=-1) &&
!((KeyDatV[KeyId].HashCd==HashCd) && (KeyDatV[KeyId].Key==Key))){
PrevKeyId=KeyId; KeyId=KeyDatV[KeyId].Next;}
if (KeyId==-1){
if (FFreeKeyId==-1){
KeyId=KeyDatV.Add(THKeyDat(-1, HashCd, Key));
} else {
KeyId=FFreeKeyId; FFreeKeyId=KeyDatV[FFreeKeyId].Next; FreeKeys--;
//KeyDatV[KeyId]=TKeyDat(-1, HashCd, Key); // slow version
KeyDatV[KeyId].Next=-1;
KeyDatV[KeyId].HashCd=HashCd;
KeyDatV[KeyId].Key=Key;
//KeyDatV[KeyId].Dat=TDat(); // already empty
}
if (PrevKeyId==-1){
PortV[PortN]=KeyId;
} else {
KeyDatV[PrevKeyId].Next=KeyId;
}
}
return KeyId;
}


| TIter THash< TKey, TDat, THashFunc >::BegI | ( | ) | const [inline] |
Definition at line 167 of file hash.h.
Referenced by TNEGraph::BegEI(), TNodeEdgeNet< TSecTm, TSecTm >::BegEI(), TGHash< TUInt64 >::BegI(), TBPGraph::BegLNI(), TBigNet< TNodeData, IsDir >::BegNI(), TNodeNet< TSecTm >::BegNI(), TUNGraph::BegNI(), TNGraph::BegNI(), TNodeEDatNet< TNodeData, TEdgeData >::BegNI(), TNEGraph::BegNI(), TBPGraph::BegNI(), TNodeEdgeNet< TSecTm, TSecTm >::BegNI(), TBPGraph::BegRNI(), and TBigNet< TNodeData, IsDir >::SaveToDisk().
{
if (Len() == 0){return TIter(KeyDatV.EndI(), KeyDatV.EndI());}
if (IsKeyIdEqKeyN()) { return TIter(KeyDatV.BegI(), KeyDatV.EndI());}
int FKeyId=-1; FNextKeyId(FKeyId);
return TIter(KeyDatV.BegI()+FKeyId, KeyDatV.EndI()); }

| void THash< TKey, TDat, THashFunc >::Clr | ( | const bool & | DoDel = true, |
| const int & | NoDelLim = -1, |
||
| const bool & | ResetDat = true |
||
| ) |
Definition at line 311 of file hash.h.
Referenced by TLocClust::ApproxPageRank(), TStrCache::Clr(), TGHash< TUInt64 >::Clr(), TBigNet< TNodeData, IsDir >::Clr(), TLocClustStat::Clr(), TNodeNet< TSecTm >::Clr(), TUNGraph::Clr(), TUniCaseFolding::Clr(), TNGraph::Clr(), TNodeEDatNet< TNodeData, TEdgeData >::Clr(), TNEGraph::Clr(), TBPGraph::Clr(), TUniTrie< TInt >::Clr(), TUniChDb::Clr(), TNodeEdgeNet< TSecTm, TSecTm >::Clr(), TUnicode::ClrCodecs(), TSnap::GetBetweennessCentr(), TSnap::GetNodeClustCf(), and TSnap::GetShortPath().
{
if (DoDel){
PortV.Clr(); KeyDatV.Clr();
} else {
PortV.PutAll(TInt(-1));
KeyDatV.Clr(DoDel, NoDelLim);
if (ResetDat){KeyDatV.PutAll(THKeyDat());}
}
FFreeKeyId=TInt(-1); FreeKeys=TInt(0);
}

| void THash< TKey, TDat, THashFunc >::Defrag | ( | ) |
Definition at line 505 of file hash.h.
References IAssert, and operator=().
Referenced by TUNGraph::Defrag(), TGHash< TUInt64 >::Defrag(), TNGraph::Defrag(), TNEGraph::Defrag(), TNodeEdgeNet< TNodeData, TEdgeData >::Defrag(), and TBigNet< TNodeData, IsDir >::Rewire().
{
if (!IsKeyIdEqKeyN()){
THash<TKey, TDat, THashFunc> Hash(PortV.Len());
int KeyId=FFirstKeyId(); TKey Key; TDat Dat;
while (FNextKeyId(KeyId)){
GetKeyDat(KeyId, Key, Dat);
Hash.AddDat(Key, Dat);
}
Pack();
operator=(Hash);
IAssert(IsKeyIdEqKeyN());
}
}


| void THash< TKey, TDat, THashFunc >::DelKey | ( | const TKey & | Key | ) |
Definition at line 354 of file hash.h.
References GetPrimHashCd(), GetSecHashCd(), IAssert, and PortN.
Referenced by TNEGraph::DelEdge(), TNodeEdgeNet< TNodeData, TEdgeData >::DelEdge(), THash< TInt, TEdge >::DelKeyId(), TSnap::TSnapDetail::TCNMQMatrix::TCmtyDat::DelLink(), TUNGraph::DelNode(), TNGraph::DelNode(), TNEGraph::DelNode(), TBPGraph::DelNode(), TNodeEdgeNet< TNodeData, TEdgeData >::DelNode(), TSnap::TSnapDetail::TCNMQMatrix::MergeBestQ(), TSubGraphsEnum::RecurBfs1(), TBigNet< TNodeData, IsDir >::Rewire(), TUnicode::UnregisterCodec(), and TUniChDb::TSubcatHelper::~TSubcatHelper().
{
IAssert(!PortV.Empty());
const int PortN=abs(THashFunc::GetPrimHashCd(Key)%PortV.Len());
const int HashCd=abs(THashFunc::GetSecHashCd(Key));
int PrevKeyId=-1;
int KeyId=PortV[PortN];
while ((KeyId!=-1) &&
!((KeyDatV[KeyId].HashCd==HashCd) && (KeyDatV[KeyId].Key==Key))){
PrevKeyId=KeyId; KeyId=KeyDatV[KeyId].Next;}
//IAssertR(KeyId!=-1, Key.GetStr()); //J: vsi razredi nimajo nujno funkcije GetStr()?
IAssert(KeyId!=-1); //J: vsi razredi nimajo nujno funkcije GetStr()?
if (PrevKeyId==-1){PortV[PortN]=KeyDatV[KeyId].Next;}
else {KeyDatV[PrevKeyId].Next=KeyDatV[KeyId].Next;}
KeyDatV[KeyId].Next=FFreeKeyId; FFreeKeyId=KeyId; FreeKeys++;
KeyDatV[KeyId].HashCd=TInt(-1);
KeyDatV[KeyId].Key=TKey();
KeyDatV[KeyId].Dat=TDat();
}


| void THash< TKey, TDat, THashFunc >::DelKeyId | ( | const int & | KeyId | ) | [inline] |
Definition at line 199 of file hash.h.
Referenced by THash< TInt, TEdge >::DelIfKey(), and THash< TInt, TEdge >::DelKeyIdV().

| bool THash< TKey, TDat, THashFunc >::Empty | ( | ) | const [inline] |
Definition at line 181 of file hash.h.
Referenced by TSnap::TSnapDetail::CmtyGirvanNewmanStep(), TGHash< TUInt64 >::Empty(), TUniTrie< TInt >::Empty(), TSpecFunc::EntropyBias(), TZipIn::FillFExtToCmdH(), TZipOut::FillFExtToCmdH(), TLocClustStat::FindBestCut(), TLocClustStat::GetBoltzmanCurveStat(), TZipIn::GetCmd(), TZipOut::GetCmd(), TLocClustStat::GetCurveStat(), TILx::GetSym(), TGStat::GetValStr(), TZipIn::IsZipExt(), TZipOut::IsZipExt(), TSnap::TSnapDetail::TCNMQMatrix::MergeBestQ(), TGStat::operator<(), TLocClustStat::PlotNCPScatter(), TLocClustStat::PlotPhiDistr(), TLocClustStat::PlotPhiInOut(), TLocClust::SupportSweep(), and TUniChDb::TSubcatHelper::~TSubcatHelper().
{return Len()==0;}

| TIter THash< TKey, TDat, THashFunc >::EndI | ( | ) | const [inline] |
Definition at line 172 of file hash.h.
Referenced by TBPGraph::BegLNI(), TBPGraph::BegRNI(), TNEGraph::EndEI(), TNodeEdgeNet< TSecTm, TSecTm >::EndEI(), TGHash< TUInt64 >::EndI(), TBigNet< TNodeData, IsDir >::EndNI(), TNodeNet< TSecTm >::EndNI(), TUNGraph::EndNI(), TNGraph::EndNI(), TNodeEDatNet< TNodeData, TEdgeData >::EndNI(), TNEGraph::EndNI(), TBPGraph::EndNI(), TNodeEdgeNet< TSecTm, TSecTm >::EndNI(), TBPGraph::GetNI(), and TBigNet< TNodeData, IsDir >::SaveToDisk().

| int THash< TKey, TDat, THashFunc >::FFirstKeyId | ( | ) | const [inline] |
Definition at line 228 of file hash.h.
Referenced by TGnuPlot::AddPlot(), TUNGraph::Defrag(), TNGraph::Defrag(), TNEGraph::Defrag(), TNodeEdgeNet< TNodeData, TEdgeData >::Defrag(), TUNGraph::Dump(), TNGraph::Dump(), TUnicode::GetAllCodecs(), TNGraph::GetEdges(), TNEGraph::GetEIdV(), TNodeEdgeNet< TNodeData, TEdgeData >::GetEIdV(), TUNGraph::GetNIdV(), TNGraph::GetNIdV(), TNEGraph::GetNIdV(), TNodeEdgeNet< TNodeData, TEdgeData >::GetNIdV(), TUniChDb::InitLineBreaks(), TUniChDb::InitScripts(), TUniChDb::InitWordAndSentenceBoundaryFlags(), TUNGraph::IsOk(), TNGraph::IsOk(), TNEGraph::IsOk(), TNodeEdgeNet< TNodeData, TEdgeData >::IsOk(), TUniChDb::LoadTxt(), TGnuPlot::PlotValCntH(), TGnuPlot::PlotValMomH(), TKeyDatFl< TKey, TDat, THashFunc >::Save(), TUniChDb::TestComposition(), TUniChDb::TestWbFindNonIgnored(), and TUniChDb::TSubcatHelper::~TSubcatHelper().
{return 0-1;}

| bool THash< TKey, TDat, THashFunc >::FNextKeyId | ( | int & | KeyId | ) | const |
Definition at line 428 of file hash.h.
Referenced by TGnuPlot::AddPlot(), THash< TInt, TEdge >::BegI(), TUNGraph::Defrag(), TNGraph::Defrag(), TNEGraph::Defrag(), TNodeEdgeNet< TNodeData, TEdgeData >::Defrag(), TUNGraph::Dump(), TNGraph::Dump(), TGHash< TUInt64 >::FNextKeyId(), TUnicode::GetAllCodecs(), TNGraph::GetEdges(), TNEGraph::GetEIdV(), TNodeEdgeNet< TNodeData, TEdgeData >::GetEIdV(), TUNGraph::GetNIdV(), TNGraph::GetNIdV(), TNEGraph::GetNIdV(), TNodeEdgeNet< TNodeData, TEdgeData >::GetNIdV(), TUniChDb::InitLineBreaks(), TUniChDb::InitScripts(), TUniChDb::InitWordAndSentenceBoundaryFlags(), TUNGraph::IsOk(), TNGraph::IsOk(), TNEGraph::IsOk(), TNodeEdgeNet< TNodeData, TEdgeData >::IsOk(), TUniChDb::LoadTxt(), TSnap::TSnapDetail::TCNMQMatrix::MergeBestQ(), TGnuPlot::PlotValCntH(), TGnuPlot::PlotValMomH(), TKeyDatFl< TKey, TDat, THashFunc >::Save(), TUniChDb::TestComposition(), TUniChDb::TestWbFindNonIgnored(), TSnap::TSnapDetail::TCNMQMatrix::TCmtyDat::UpdateMaxQ(), and TUniChDb::TSubcatHelper::~TSubcatHelper().
{
do {KeyId++;} while ((KeyId<KeyDatV.Len())&&(KeyDatV[KeyId].HashCd==-1));
return KeyId<KeyDatV.Len();
}

| void THash< TKey, TDat, THashFunc >::Gen | ( | const int & | ExpectVals | ) | [inline] |
Definition at line 176 of file hash.h.
Referenced by TGHash< TUInt64 >::Gen(), TSnap::GetEigenVectorCentr(), TSnap::GetHits(), TSnap::GetPageRank(), TKeyDatFl< TKey, TDat, THashFunc >::LoadHash(), TNodeNet< TSecTm >::Reserve(), TUNGraph::Reserve(), TNGraph::Reserve(), TNodeEDatNet< TNodeData, TEdgeData >::Reserve(), TNEGraph::Reserve(), and TNodeEdgeNet< TSecTm, TSecTm >::Reserve().
{
PortV.Gen(GetNextPrime(ExpectVals/2)); KeyDatV.Gen(ExpectVals, 0);
FFreeKeyId=-1; FreeKeys=0; PortV.PutAll(TInt(-1));}

| const TDat& THash< TKey, TDat, THashFunc >::GetDat | ( | const TKey & | Key | ) | const [inline] |
Definition at line 216 of file hash.h.
Referenced by TSnap::TSnapDetail::_GirvanNewmanGetModularity(), AddKeyVal(), TLocClustStat::AddToBestCutH(), AddToKeyVal(), TLocClust::ApproxPageRank(), TArtPointVisitor::BackEdge(), TBiConVisitor::BackEdge(), TLocClustStat::BagOfWhiskers(), TLocClustStat::BagOfWhiskers2(), TBPGraph::DelNode(), TSpecFunc::EntropyBias(), TLocClustStat::FindBestCut(), TSnap::TSnapDetail::TCNMQMatrix::FindMxQEdge(), TArtPointVisitor::FinishNode(), TBiConVisitor::FinishNode(), TSccVisitor< PGraph, OnlyCount >::FinishNode(), TArtPointVisitor::FwdEdge(), TSnap::GetBetweennessCentr(), TSnap::GetBfsTree(), TZipIn::GetCmd(), TZipOut::GetCmd(), TD34GraphCounter::GetCnt(), TGHash< TUInt64 >::GetDat(), TCnCom::GetDfsVisitor(), TGStat::GetDistr(), TNodeEdgeNet< TSecTm, TSecTm >::GetEDat(), TNEGraph::GetEdge(), TNodeEdgeNet< TSecTm, TSecTm >::GetEdge(), TTimeNENet::GetEdgeTmBuckets(), TSnap::GetEigenVectorCentr(), TExpBi::GetExpBiArgType(), GetFldValV(), GetFullUrlStr(), TSnap::GetHits(), TLocClustStat::GetKNodeCut(), TSccVisitor< PGraph, OnlyCount >::GetMinDiscTm(), TBigNet< TNodeData, IsDir >::GetNDat(), TNodeNet< TSecTm >::GetNDat(), TNodeEDatNet< TNodeData, TEdgeData >::GetNDat(), TNodeEdgeNet< TSecTm, TSecTm >::GetNDat(), TGraphAnf< PGraph >::GetNIdOffset(), TBigNet< TNodeData, IsDir >::GetNode(), TNodeNet< TSecTm >::GetNode(), TUNGraph::GetNode(), TNGraph::GetNode(), TNodeEDatNet< TNodeData, TEdgeData >::GetNode(), TNEGraph::GetNode(), TNodeEdgeNet< TSecTm, TSecTm >::GetNode(), TGraphEnumUtils::GetNormalizedGraph(), TSnap::GetPageRank(), TILx::GetRw(), TTimeNet::GetTmBuckets(), TTimeNENet::GetTmBuckets(), TGStat::GetVal(), GetVal(), GetVals(), TGStat::GetValStr(), GetVarVal(), TAGM::GVizComGraph(), TUniChDb::InitWordAndSentenceBoundaryFlags(), TBigNet< TNodeData, IsDir >::InvertFromSources(), TPreproc::IsSubstId(), TTimeNet::LoadArxiv(), TUniChDb::LoadTxt(), TSnap::TSnapDetail::TCNMQMatrix::MergeBestQ(), TD34GraphCounter::operator()(), TDGraphCounter::operator()(), TGHash< TUInt64 >::operator()(), TGStat::operator<(), THash< TKey, TDat, THashFunc >::operator==(), TUnionFind::Parent(), TLocClustStat::PlotPhiDistr(), TUnionFind::Rank(), TBigNet< TNodeData, IsDir >::Rewire(), TLocClustStat::Run(), TSnap::SaveGViz(), TSnap::SavePajek(), and TNodeEdgeNet< TNodeData, TEdgeData >::SetNDat().

| void THash< TKey, TDat, THashFunc >::GetDatKeyKdV | ( | TVec< TKeyDat< TDat, TKey > > & | DatKeyKdV | ) | const |
Definition at line 483 of file hash.h.
References Len().
{
DatKeyKdV.Gen(Len(), 0);
TKey Key; TDat Dat;
int KeyId=FFirstKeyId();
while (FNextKeyId(KeyId)){
GetKeyDat(KeyId, Key, Dat);
DatKeyKdV.Add(TKeyDat<TDat, TKey>(Dat, Key));
}
}

| void THash< TKey, TDat, THashFunc >::GetDatKeyPrV | ( | TVec< TPair< TDat, TKey > > & | DatKeyPrV | ) | const |
Definition at line 461 of file hash.h.
References Len().
Referenced by TGHash< TUInt64 >::GetDatKeyPrV().
{
DatKeyPrV.Gen(Len(), 0);
TKey Key; TDat Dat;
int KeyId=FFirstKeyId();
while (FNextKeyId(KeyId)){
GetKeyDat(KeyId, Key, Dat);
DatKeyPrV.Add(TPair<TDat, TKey>(Dat, Key));
}
}


| void THash< TKey, TDat, THashFunc >::GetDatV | ( | TVec< TDat > & | DatV | ) | const |
Definition at line 442 of file hash.h.
References TVec< TVal >::Add(), TVec< TVal >::Gen(), and Len().
Referenced by TGHash< TUInt64 >::GetDatV().
{
DatV.Gen(Len(), 0);
int KeyId=FFirstKeyId();
while (FNextKeyId(KeyId)){
DatV.Add(GetHashKeyDat(KeyId).Dat);}
}


| THKeyDat& THash< TKey, TDat, THashFunc >::GetHashKeyDat | ( | const int & | KeyId | ) | [inline, private] |
Definition at line 114 of file hash.h.
Referenced by THash< TInt, TEdge >::GetKey(), THash< TInt, TEdge >::GetKeyDat(), THash< TInt, TEdge >::IsKeyGetDat(), and THash< TInt, TEdge >::operator[]().

| const THKeyDat& THash< TKey, TDat, THashFunc >::GetHashKeyDat | ( | const int & | KeyId | ) | const [inline, private] |
| TIter THash< TKey, TDat, THashFunc >::GetI | ( | const TKey & | Key | ) | const [inline] |
Definition at line 174 of file hash.h.
Referenced by TNEGraph::GetEI(), TNodeEdgeNet< TSecTm, TSecTm >::GetEI(), TGHash< TUInt64 >::GetI(), TBigNet< TNodeData, IsDir >::GetNI(), TNodeNet< TSecTm >::GetNI(), TUNGraph::GetNI(), TNGraph::GetNI(), TNodeEDatNet< TNodeData, TEdgeData >::GetNI(), TNEGraph::GetNI(), TBPGraph::GetNI(), and TNodeEdgeNet< TSecTm, TSecTm >::GetNI().

| const TKey& THash< TKey, TDat, THashFunc >::GetKey | ( | const int & | KeyId | ) | const [inline] |
Definition at line 206 of file hash.h.
Referenced by TGnuPlot::AddPlot(), TLocClustStat::BagOfWhiskers(), TLocClustStat::BagOfWhiskers2(), TForestFire::BurnExpFire(), TForestFire::BurnGeoFire(), TSnap::TSnapDetail::CmtyGirvanNewmanStep(), THash< TInt, TEdge >::DelKeyId(), TUnionFind::Dump(), TLocClust::FindBestCut(), TSnap::GetBfsEffDiam(), TSnap::GetBfsTree(), TLocClustStat::GetBoltzmanCurveStat(), TSnap::GetClustCf(), TLocClustStat::GetCurveStat(), TSnap::GetDegCnt(), GetDstSubstStr(), TNEGraph::GetEIdV(), TNodeEdgeNet< TNodeData, TEdgeData >::GetEIdV(), TSnap::GetEigenVectorCentr(), GetFldNmVal(), TD34GraphCounter::GetId(), TSnap::GetInDegCnt(), TGHash< TUInt64 >::GetKey(), TUnionFind::GetKeyI(), TSnap::TSnapDetail::TCNMQMatrix::TCmtyDat::GetMxQNId(), TUNGraph::GetNIdV(), TNGraph::GetNIdV(), TNEGraph::GetNIdV(), TNodeEdgeNet< TNodeData, TEdgeData >::GetNIdV(), TAGM::GetNodeMembership(), TNetConstraint< PGraph >::GetNodePr(), TSnap::GetNodesAtHop(), TSnap::GetOutDegCnt(), TNEGraph::GetRndEId(), TNodeEdgeNet< TSecTm, TSecTm >::GetRndEId(), TBigNet< TNodeData, IsDir >::GetRndNId(), TNodeNet< TSecTm >::GetRndNId(), TUNGraph::GetRndNId(), TNGraph::GetRndNId(), TNodeEDatNet< TNodeData, TEdgeData >::GetRndNId(), TNEGraph::GetRndNId(), TNodeEdgeNet< TSecTm, TSecTm >::GetRndNId(), TUniChDb::GetScriptName(), GetSrcSubstStr(), TStrCache::GetStr(), GetVarNm(), TUniChDb::InitScripts(), TUniChDb::InitWordAndSentenceBoundaryFlags(), TTimeNet::LoadArxiv(), TUniChDb::LoadTxt(), THash< TInt, TEdge >::MarkDelKeyId(), TSnap::TSnapDetail::TCNMQMatrix::MergeBestQ(), TLocClustStat::PlotBestClustDens(), TLocClustStat::PlotBoltzmanCurve(), TLocClustStat::PlotNCPModul(), TLocClustStat::PlotNCPScatter(), TSnap::PlotShortPathDistr(), TGnuPlot::PlotValCntH(), TGnuPlot::PlotValMomH(), TBigNet< TNodeData, IsDir >::Rewire(), TKeyDatFl< TKey, TDat, THashFunc >::Save(), TLocClust::SupportSweep(), TUniChDb::TestComposition(), TUniChDb::TestWbFindNonIgnored(), and TUniChDb::TSubcatHelper::~TSubcatHelper().
{ return GetHashKeyDat(KeyId).Key;}

| void THash< TKey, TDat, THashFunc >::GetKeyDat | ( | const int & | KeyId, |
| TKey & | Key, | ||
| TDat & | Dat | ||
| ) | const [inline] |
Definition at line 221 of file hash.h.
Referenced by TGHash< TUInt64 >::GetKeyDat().
{
const THKeyDat& KeyDat=GetHashKeyDat(KeyId);
Key=KeyDat.Key; Dat=KeyDat.Dat;}

| void THash< TKey, TDat, THashFunc >::GetKeyDatKdV | ( | TVec< TKeyDat< TKey, TDat > > & | KeyDatKdV | ) | const |
Definition at line 472 of file hash.h.
References Len().
{
KeyDatKdV.Gen(Len(), 0);
TKey Key; TDat Dat;
int KeyId=FFirstKeyId();
while (FNextKeyId(KeyId)){
GetKeyDat(KeyId, Key, Dat);
KeyDatKdV.Add(TKeyDat<TKey, TDat>(Key, Dat));
}
}

| void THash< TKey, TDat, THashFunc >::GetKeyDatPrV | ( | TVec< TPair< TKey, TDat > > & | KeyDatPrV | ) | const |
Definition at line 450 of file hash.h.
References Len().
Referenced by TGStat::AvgGStat(), TSnap::GetBiConSzCnt(), TTimeNENet::GetEdgeTmBuckets(), TGHash< TUInt64 >::GetKeyDatPrV(), TSnap::GetNodesAtHops(), TSnap::GetSccSzCnt(), TTimeNet::GetTmBuckets(), TTimeNENet::GetTmBuckets(), TSnap::GetTriadParticip(), TSnap::PlotEigValDistr(), and TSnap::PlotSngValDistr().
{
KeyDatPrV.Gen(Len(), 0);
TKey Key; TDat Dat;
int KeyId=FFirstKeyId();
while (FNextKeyId(KeyId)){
GetKeyDat(KeyId, Key, Dat);
KeyDatPrV.Add(TPair<TKey, TDat>(Key, Dat));
}
}


| int THash< TKey, TDat, THashFunc >::GetKeyId | ( | const TKey & | Key | ) | const |
Definition at line 416 of file hash.h.
References GetPrimHashCd(), GetSecHashCd(), and PortN.
Referenced by TUniTrie< TInt >::Add(), TUniChDb::AddDecomposition(), TSnap::TSnapDetail::TCNMQMatrix::TCmtyDat::AddQ(), TUniChDb::Compose(), TUniCaseFolding::Fold(), TUniCaseFolding::FoldInPlace(), TUniTrie< TInt >::Get3GramRoot(), TUniChDb::GetCaseConverted(), TUniChDb::GetCat(), TUniChDb::GetCharName(), TUniChDb::GetCombiningClass(), THash< TInt, TEdge >::GetDat(), GetEscStr(), THash< TInt, TEdge >::GetI(), TGHash< TUInt64 >::GetKeyId(), TUniChDb::GetSbFlags(), TUniChDb::GetScript(), TUniChDb::GetScriptByName(), TUniChDb::GetSimpleCaseConverted(), TSnap::GetSngVals(), TSnap::GetSngVec(), GetSrcSubstStrN(), TLxSymStr::GetSSym(), TUniChDb::GetSubCat(), TILx::GetSym(), TUniChDb::GetWbFlags(), TUniChDb::InitDerivedCoreProperties(), TUniChDb::InitLineBreaks(), TUniChDb::InitPropList(), TUniChDb::InitScripts(), TUniChDb::InitWordAndSentenceBoundaryFlags(), TUniChDb::IsGetChInfo(), THash< TInt, TEdge >::IsKey(), TUniChDb::IsPrivateUse(), TUniChDb::IsSbFlag(), TUniChDb::IsSurrogate(), TUniChDb::IsWbFlag(), TUniChDb::IsWbIgnored(), TUniChDb::LoadTxt(), TUniChDb::TSubcatHelper::SetCat(), TLocClust::SupportSweep(), TGraphKey::TakeGraph(), TGraphKey::TakeSig(), TUniChDb::TSubcatHelper::TestCat(), and TUniChDb::ToSimpleCaseConverted().
{
if (PortV.Empty()){return -1;}
const int PortN=abs(THashFunc::GetPrimHashCd(Key)%PortV.Len());
const int HashCd=abs(THashFunc::GetSecHashCd(Key));
int KeyId=PortV[PortN];
while ((KeyId!=-1) &&
!((KeyDatV[KeyId].HashCd==HashCd) && (KeyDatV[KeyId].Key==Key))){
KeyId=KeyDatV[KeyId].Next;}
return KeyId;
}


| void THash< TKey, TDat, THashFunc >::GetKeyV | ( | TVec< TKey > & | KeyV | ) | const |
Definition at line 434 of file hash.h.
References TVec< TVal >::Add(), TVec< TVal >::Gen(), and Len().
Referenced by TGHash< TUInt64 >::GetKeyV(), TBreathFS< PGraph >::GetVisitedNIdV(), TSubGraphsEnum::RecurBfs1(), and TBigNet< TNodeData, IsDir >::Rewire().
{
KeyV.Gen(Len(), 0);
int KeyId=FFirstKeyId();
while (FNextKeyId(KeyId)){
KeyV.Add(GetKey(KeyId));}
}


| ::TSize THash< TKey, TDat, THashFunc >::GetMemUsed | ( | ) | const [inline] |
Definition at line 155 of file hash.h.
{
// return PortV.GetMemUsed()+KeyDatV.GetMemUsed()+sizeof(bool)+2*sizeof(int);}
int64 MemUsed = sizeof(bool)+2*sizeof(int);
MemUsed += int64(PortV.Reserved()) * int64(sizeof(TInt));
for (int KeyDatN = 0; KeyDatN < KeyDatV.Len(); KeyDatN++) {
MemUsed += int64(2 * sizeof(TInt));
MemUsed += int64(KeyDatV[KeyDatN].Key.GetMemUsed());
MemUsed += int64(KeyDatV[KeyDatN].Dat.GetMemUsed());
}
return ::TSize(MemUsed);
}
| int THash< TKey, TDat, THashFunc >::GetMxKeyIds | ( | ) | const [inline] |
Definition at line 185 of file hash.h.
Referenced by TGHash< TUInt64 >::GetMxKeyIds(), and TBigNet< TNodeData, IsDir >::Rewire().

| uint THash< TKey, TDat, THashFunc >::GetNextPrime | ( | const uint & | Val | ) | const [private] |
Definition at line 257 of file hash.h.
Referenced by THash< TInt, TEdge >::Gen().
{
const uint* f=(const uint*)HashPrimeT, *m, *l=(const uint*)HashPrimeT + (int)HashPrimes;
int h, len = (int)HashPrimes;
while (len > 0) {
h = len >> 1; m = f + h;
if (*m < Val) { f = m; f++; len = len - h - 1; }
else len = h;
}
return f == l ? *(l - 1) : *f;
}

| int THash< TKey, TDat, THashFunc >::GetPorts | ( | ) | const [inline] |
Definition at line 183 of file hash.h.
Referenced by TGHash< TUInt64 >::GetPorts().

| int THash< TKey, TDat, THashFunc >::GetReservedKeyIds | ( | ) | const [inline] |
| int THash< TKey, TDat, THashFunc >::GetRndKeyId | ( | TRnd & | Rnd | ) | const |
Get an index of a random element. If the hash table has many deleted keys, this may take a long time.
Definition at line 394 of file hash.h.
References Empty(), TRnd::GetUniDevInt(), and IAssert.
Referenced by TNEGraph::GetRndEId(), TNodeEdgeNet< TSecTm, TSecTm >::GetRndEId(), TBigNet< TNodeData, IsDir >::GetRndNId(), TNodeNet< TSecTm >::GetRndNId(), TUNGraph::GetRndNId(), TNGraph::GetRndNId(), TNodeEDatNet< TNodeData, TEdgeData >::GetRndNId(), TNEGraph::GetRndNId(), TNodeEdgeNet< TSecTm, TSecTm >::GetRndNId(), and TBigNet< TNodeData, IsDir >::Rewire().
{
IAssert(! Empty());
int KeyId = abs(Rnd.GetUniDevInt(KeyDatV.Len()));
while (KeyDatV[KeyId].HashCd == -1) { // if the index is empty, just try again
KeyId = abs(Rnd.GetUniDevInt(KeyDatV.Len())); }
return KeyId;
}


| int THash< TKey, TDat, THashFunc >::GetRndKeyId | ( | TRnd & | Rnd, |
| const double & | EmptyFrac | ||
| ) |
Get an index of a random element. If the hash table has many deleted keys, defrag the hash table first (that's why the function is non-const).
Definition at line 405 of file hash.h.
References Empty(), TRnd::GetUniDevInt(), IAssert, and Len().
{
IAssert(! Empty());
if (FreeKeys/double(Len()+FreeKeys) > EmptyFrac) { Defrag(); }
int KeyId = Rnd.GetUniDevInt(KeyDatV.Len());
while (KeyDatV[KeyId].HashCd == -1) { // if the index is empty, just try again
KeyId = Rnd.GetUniDevInt(KeyDatV.Len());
}
return KeyId;
}

| bool THash< TKey, TDat, THashFunc >::IsAutoSize | ( | ) | const [inline] |
Definition at line 184 of file hash.h.
Referenced by TGHash< TUInt64 >::IsAutoSize().
{return AutoSizeP;}

| bool THash< TKey, TDat, THashFunc >::IsKey | ( | const TKey & | Key | ) | const [inline] |
Definition at line 212 of file hash.h.
Referenced by TILx::AddRw(), TOLx::AddRw(), TLocClustStat::AddToBestCutH(), TArtPointVisitor::BackEdge(), TBiConVisitor::BackEdge(), TLocClustStat::BagOfWhiskers(), TLocClustStat::BagOfWhiskers2(), TForestFire::BurnExpFire(), TForestFire::BurnGeoFire(), THash< TInt, TEdge >::DelIfKey(), TSpecFunc::EntropyBias(), TLocClustStat::FindBestCut(), TSnap::TSnapDetail::TCNMQMatrix::FindMxQEdge(), TArtPointVisitor::FinishNode(), TBiConVisitor::FinishNode(), TZipIn::GetCmd(), TZipOut::GetCmd(), TCnCom::GetDfsVisitor(), TGStat::GetDistr(), GetDstTxtStr(), TTimeNENet::GetEdgeTmBuckets(), GetFldValV(), TStrCache::GetStr(), TTimeNet::GetTmBuckets(), TTimeNENet::GetTmBuckets(), TGStat::GetVal(), GetVal(), TGStat::GetValStr(), TUniTrie< TInt >::Has1Gram(), TUniTrie< TInt >::Has2Gram(), TGStat::HasDistr(), TGStat::HasVal(), TUniChDb::InitWordAndSentenceBoundaryFlags(), IsBreakTag(), TNEGraph::IsEdge(), TNodeEdgeNet< TSecTm, TSecTm >::IsEdge(), TExpBi::IsExpBiId(), IsFldNm(), TUnionFind::IsKey(), TGHash< TUInt64 >::IsKey(), THash< TInt, TEdge >::IsKeyGetDat(), TBPGraph::IsLNode(), TBigNet< TNodeData, IsDir >::IsNode(), TNodeNet< TSecTm >::IsNode(), TUNGraph::IsNode(), TNGraph::IsNode(), TNodeEDatNet< TNodeData, TEdgeData >::IsNode(), TNEGraph::IsNode(), TNodeEdgeNet< TSecTm, TSecTm >::IsNode(), TBPGraph::IsRNode(), IsSrcSubstStr(), TPreproc::IsSubstId(), TZipIn::IsZipExt(), TZipOut::IsZipExt(), TTimeNet::LoadArxiv(), TUniCaseFolding::LoadTxt(), TUniChDb::LoadTxt(), TSnap::TSnapDetail::TCNMQMatrix::MergeBestQ(), TD34GraphCounter::operator()(), TDGraphCounter::operator()(), TGStat::operator<(), THash< TKey, TDat, THashFunc >::operator==(), TSubGraphsEnum::RecurBfs1(), TBigNet< TNodeData, IsDir >::Rewire(), TLocClustStat::Run(), TSnap::SaveGViz(), TSnap::SavePajek(), TLocClustStat::SaveTxtInfo(), TUniChDb::TestComposition(), and TUniChDb::TSubcatHelper::~TSubcatHelper().
{return GetKeyId(Key)!=-1;}

| bool THash< TKey, TDat, THashFunc >::IsKeyGetDat | ( | const TKey & | Key, |
| TDat & | Dat | ||
| ) | const [inline] |
Definition at line 224 of file hash.h.
Referenced by TSnap::GetBfsEffDiam(), TUnicode::GetCodec(), IsEntityNm(), TXmlLx::IsEntityNm(), TGHash< TUInt64 >::IsKeyGetDat(), TBigNet< TNodeData, IsDir >::IsNode(), and TXmlLx::IsPEntityNm().
{int KeyId;
if (IsKey(Key, KeyId)){Dat=GetHashKeyDat(KeyId).Dat; return true;}
else {return false;}}

| bool THash< TKey, TDat, THashFunc >::IsKeyIdEqKeyN | ( | ) | const [inline] |
Definition at line 187 of file hash.h.
Referenced by THash< TInt, TEdge >::BegI(), TUNGraph::Defrag(), TNGraph::Defrag(), TNEGraph::Defrag(), TNodeEdgeNet< TNodeData, TEdgeData >::Defrag(), and TGHash< TUInt64 >::IsKeyIdEqKeyN().
{return FreeKeys==0;}

| int THash< TKey, TDat, THashFunc >::Len | ( | ) | const [inline] |
Definition at line 182 of file hash.h.
Referenced by TGnuPlot::AddPlot(), TILx::AddRw(), TOLx::AddRw(), TLocClust::ApproxPageRank(), TLocClustStat::BagOfWhiskers(), TLocClustStat::BagOfWhiskers2(), THash< TInt, TEdge >::BegI(), TForestFire::BurnExpFire(), TForestFire::BurnGeoFire(), TSnap::TSnapDetail::TCNMQMatrix::CmtyCMN(), TUnionFind::Dump(), THash< TInt, TEdge >::Empty(), TLocClust::FindBestCut(), TLocClustStat::FindBestCut(), TSnap::GetBfsEffDiam(), TSnap::GetBfsTree(), TLocClustStat::GetBoltzmanCurveStat(), TSnap::GetClustCf(), TLocClustStat::GetCurveStat(), TLocClustStat::GetCuts(), TSnap::GetDegCnt(), TGStat::GetDistrs(), TNEGraph::GetEdges(), TNodeEdgeNet< TSecTm, TSecTm >::GetEdges(), TSnap::GetEigenVectorCentr(), GetFlds(), GetFldVals(), TSnap::GetHits(), TSnap::GetInDegCnt(), TBPGraph::GetLNodes(), TSnap::GetNodeEcc(), TAGM::GetNodeMembership(), TBigNet< TNodeData, IsDir >::GetNodes(), TNodeNet< TSecTm >::GetNodes(), TUNGraph::GetNodes(), TNGraph::GetNodes(), TNodeEDatNet< TNodeData, TEdgeData >::GetNodes(), TNEGraph::GetNodes(), TNodeEdgeNet< TSecTm, TSecTm >::GetNodes(), TSnap::GetNodesAtHop(), TSnap::GetNodesAtHops(), TBreathFS< PGraph >::GetNVisited(), TSnap::GetOutDegCnt(), TSnap::GetPageRank(), TBPGraph::GetRNodes(), TSnap::GetShortPath(), TLxSymStr::GetSSym(), GetSubstStrs(), TSnap::GetSubTreeSz(), TGStat::GetVals(), GetVars(), TUniChDb::InitScripts(), IsBreakTag(), TD34GraphCounter::Len(), TGHash< TUInt64 >::Len(), TUnionFind::Len(), TNetConstraint< PGraph >::Len(), TTimeNet::LoadArxiv(), TUniCaseFolding::LoadTxt(), TUniChDb::LoadTxt(), THash< TKey, TDat, THashFunc >::operator==(), TLocClustStat::PlotBestClustDens(), TLocClustStat::PlotBoltzmanCurve(), TLocClustStat::PlotNCPModul(), TLocClustStat::PlotNCPScatter(), TLocClustStat::PlotPhiInOut(), TSnap::PlotShortPathDistr(), TGnuPlot::PlotValCntH(), TSnap::PrintInfo(), TBigNet< TNodeData, IsDir >::Rewire(), TLocClustStat::Run(), TKeyDatFl< TKey, TDat, THashFunc >::Save(), TBigNet< TNodeData, IsDir >::SaveToDisk(), and TLocClust::SupportSweep().

| void THash< TKey, TDat, THashFunc >::Load | ( | TSIn & | SIn | ) | [inline] |
Definition at line 134 of file hash.h.
Referenced by TUniCaseFolding::Load(), TUniChDb::Load(), and TBigNet< TNodeData, IsDir >::LoadNodeDatH().
{
PortV.Load(SIn); KeyDatV.Load(SIn);
AutoSizeP=TBool(SIn); FFreeKeyId=TInt(SIn); FreeKeys=TInt(SIn);
SIn.LoadCs();}

| void THash< TKey, TDat, THashFunc >::LoadXml | ( | const PXmlTok & | XmlTok, |
| const TStr & | Nm = "" |
||
| ) |
Definition at line 127 of file xmlser.h.
References TVec< TVal >::Len(), XLoad, and XLoadHd.
{
XLoadHd(Nm); TVec<THashKeyDat<TKey, TDat> > KeyDatV; XLoad(KeyDatV); XLoad(AutoSizeP);
for (int KeyDatN=0; KeyDatN<KeyDatV.Len(); KeyDatN++){
AddDat(KeyDatV[KeyDatN].Key, KeyDatV[KeyDatN].Dat);}}

| void THash< TKey, TDat, THashFunc >::MarkDelKey | ( | const TKey & | Key | ) |
Definition at line 376 of file hash.h.
References GetPrimHashCd(), GetSecHashCd(), IAssert, IAssertR, and PortN.
Referenced by THash< TInt, TEdge >::MarkDelKeyId().
{
// MarkDelKey is same as Delkey expect last two lines
IAssert(!PortV.Empty());
const int PortN=abs(THashFunc::GetPrimHashCd(Key)%PortV.Len());
const int HashCd=abs(THashFunc::GetSecHashCd(Key));
int PrevKeyId=-1;
int KeyId=PortV[PortN];
while ((KeyId!=-1) &&
!((KeyDatV[KeyId].HashCd==HashCd) && (KeyDatV[KeyId].Key==Key))){
PrevKeyId=KeyId; KeyId=KeyDatV[KeyId].Next;}
IAssertR(KeyId!=-1, Key.GetStr());
if (PrevKeyId==-1){PortV[PortN]=KeyDatV[KeyId].Next;}
else {KeyDatV[PrevKeyId].Next=KeyDatV[KeyId].Next;}
KeyDatV[KeyId].Next=FFreeKeyId; FFreeKeyId=KeyId; FreeKeys++;
KeyDatV[KeyId].HashCd=TInt(-1);
}


| void THash< TKey, TDat, THashFunc >::MarkDelKeyId | ( | const int & | KeyId | ) | [inline] |
Definition at line 204 of file hash.h.
{MarkDelKey(GetKey(KeyId));}
| TDat& THash< TKey, TDat, THashFunc >::operator() | ( | const TKey & | Key | ) | [inline] |
| bool THash< TKey, TDat, THashFunc >::operator== | ( | const THash< TKey, TDat, THashFunc > & | Hash | ) | const |
Definition at line 300 of file hash.h.
References THash< TKey, TDat, THashFunc >::GetDat(), THash< TKey, TDat, THashFunc >::IsKey(), Len(), and THash< TKey, TDat, THashFunc >::Len().
{
if (Len() != Hash.Len()) { return false; }
for (int i = FFirstKeyId(); FNextKeyId(i); ) {
const TKey& Key = GetKey(i);
if (! Hash.IsKey(Key)) { return false; }
if (GetDat(Key) != Hash.GetDat(Key)) { return false; }
}
return true;
}

| const TDat& THash< TKey, TDat, THashFunc >::operator[] | ( | const int & | KeyId | ) | const [inline] |
Definition at line 152 of file hash.h.
{return GetHashKeyDat(KeyId).Dat;}
| TDat& THash< TKey, TDat, THashFunc >::operator[] | ( | const int & | KeyId | ) | [inline] |
Definition at line 153 of file hash.h.
{return GetHashKeyDat(KeyId).Dat;}
| void THash< TKey, TDat, THashFunc >::Pack | ( | ) | [inline] |
Definition at line 239 of file hash.h.
Referenced by TUNGraph::Defrag(), and TGHash< TUInt64 >::Pack().

| void THash< TKey, TDat, THashFunc >::Resize | ( | ) | [private] |
Definition at line 269 of file hash.h.
References GetPrimHashCd(), THashKeyDat< TKey, TDat >::HashCd, THashKeyDat< TKey, TDat >::Key, THashKeyDat< TKey, TDat >::Next, and PortN.
{
// resize & initialize port vector
//if (PortV.Len()==0){PortV.Gen(17);}
//else {PortV.Gen(2*PortV.Len()+1);}
if (PortV.Len()==0){
PortV.Gen(17);
} else if (AutoSizeP&&(KeyDatV.Len()>2*PortV.Len())){
PortV.Gen(GetNextPrime(PortV.Len()+1));
} else {
return;
}
PortV.PutAll(TInt(-1));
// rehash keys
for (int KeyId=0; KeyId<KeyDatV.Len(); KeyId++){
THKeyDat& KeyDat=KeyDatV[KeyId];
if (KeyDat.HashCd!=-1){
const int PortN = abs(THashFunc::GetPrimHashCd(KeyDat.Key) % PortV.Len());
KeyDat.Next=PortV[PortN];
PortV[PortN]=KeyId;
}
}
}

| void THash< TKey, TDat, THashFunc >::Save | ( | TSOut & | SOut | ) | const [inline] |
Definition at line 138 of file hash.h.
Referenced by TStrCache::Save(), Save(), TKeyDatFl< TKey, TDat, THashFunc >::Save(), TGStat::Save(), TNodeNet< TSecTm >::Save(), TUNGraph::Save(), TUniCaseFolding::Save(), TNGraph::Save(), TNodeEDatNet< TNodeData, TEdgeData >::Save(), PHash< TKey, TDat >::Save(), TNEGraph::Save(), TBPGraph::Save(), TNodeEdgeNet< TSecTm, TSecTm >::Save(), and TUniChDb::Save().
{
PortV.Save(SOut); KeyDatV.Save(SOut);
AutoSizeP.Save(SOut); FFreeKeyId.Save(SOut); FreeKeys.Save(SOut);
SOut.SaveCs();}

| void THash< TKey, TDat, THashFunc >::Sort | ( | const bool & | CmpKey, |
| const bool & | Asc | ||
| ) |
Definition at line 520 of file hash.h.
References IAssertR, Len(), THashKeyDat< TKey, TDat >::Next, and Next().
Referenced by TLocClustStat::Run(), THash< TInt, TEdge >::SortByDat(), and THash< TInt, TEdge >::SortByKey().
{
IAssertR(IsKeyIdEqKeyN(), "THash::Sort only works when table has no deleted keys.");
TIntV TargV(Len()), MapV(Len()), StateV(Len());
for (int i = 0; i < TargV.Len(); i++) {
TargV[i] = i; MapV[i] = i; StateV[i] = i;
}
// sort KeyIds
THashKeyDatCmp HashCmp(*this, CmpKey, Asc);
TargV.SortCmp(HashCmp);
// now sort the update vector
THashKeyDat<TKey, TDat> Tmp;
for (int i = 0; i < TargV.Len()-1; i++) {
const int SrcPos = MapV[TargV[i]];
const int Loc = i;
// swap data
Tmp = KeyDatV[SrcPos];
KeyDatV[SrcPos] = KeyDatV[Loc];
KeyDatV[Loc] = Tmp;
// swap keys
MapV[StateV[i]] = SrcPos;
StateV.Swap(Loc, SrcPos);
}
for (int i = 0; i < TargV.Len(); i++) {
MapV[TargV[i]] = i; }
for (int p = 0; p < PortV.Len(); p++) {
if (PortV[p] != -1) {
PortV[p] = MapV[PortV[p]]; } }
for (int i = 0; i < KeyDatV.Len(); i++) {
if (KeyDatV[i].Next != -1) {
KeyDatV[i].Next = MapV[KeyDatV[i].Next]; }
}
}


| void THash< TKey, TDat, THashFunc >::SortByDat | ( | const bool & | Asc = true | ) | [inline] |
Definition at line 242 of file hash.h.
Referenced by TSnap::TSnapDetail::CmtyGirvanNewmanStep(), TLocClust::FindBestCut(), TSnap::GetBfsTree(), TNodeEdgeNet< TSecTm, TSecTm >::SortEIdByDat(), TNodeNet< TSecTm >::SortNIdByDat(), TNodeEDatNet< TNodeData, TEdgeData >::SortNIdByDat(), TNodeEdgeNet< TSecTm, TSecTm >::SortNIdByDat(), and TTimeNENet::SortNodeEdgeTimes().
{ Sort(false, Asc); }

| void THash< TKey, TDat, THashFunc >::SortByKey | ( | const bool & | Asc = true | ) | [inline] |
Definition at line 241 of file hash.h.
Referenced by TLocClustStat::BagOfWhiskers(), TLocClustStat::BagOfWhiskers2(), TSnap::PlotShortPathDistr(), TLocClustStat::Run(), TNodeEdgeNet< TSecTm, TSecTm >::SortEIdById(), TNodeNet< TSecTm >::SortNIdById(), TNodeEDatNet< TNodeData, TEdgeData >::SortNIdById(), and TNodeEdgeNet< TSecTm, TSecTm >::SortNIdById().
{ Sort(true, Asc); }

| void THash< TKey, TDat, THashFunc >::Swap | ( | THash< TKey, TDat, THashFunc > & | Hash | ) |
Definition at line 494 of file hash.h.
References THash< TKey, TDat, THashFunc >::AutoSizeP, THash< TKey, TDat, THashFunc >::FFreeKeyId, THash< TKey, TDat, THashFunc >::FreeKeys, THash< TKey, TDat, THashFunc >::KeyDatV, THash< TKey, TDat, THashFunc >::PortV, and Swap().
Referenced by TSnap::GetShortPath().
{
if (this!=&Hash){
PortV.Swap(Hash.PortV);
KeyDatV.Swap(Hash.KeyDatV);
::Swap(AutoSizeP, Hash.AutoSizeP);
::Swap(FFreeKeyId, Hash.FFreeKeyId);
::Swap(FreeKeys, Hash.FreeKeys);
}
}


TBool THash< TKey, TDat, THashFunc >::AutoSizeP [private] |
Definition at line 96 of file hash.h.
Referenced by THash< TInt, TEdge >::IsAutoSize(), THash< TInt, TEdge >::Load(), THash< TInt, TEdge >::operator=(), THash< TInt, TEdge >::Save(), and THash< TKey, TDat, THashFunc >::Swap().
TInt THash< TKey, TDat, THashFunc >::FFreeKeyId [private] |
Definition at line 97 of file hash.h.
Referenced by THash< TInt, TEdge >::Gen(), THash< TInt, TEdge >::Load(), THash< TInt, TEdge >::operator=(), THash< TInt, TEdge >::Save(), and THash< TKey, TDat, THashFunc >::Swap().
TInt THash< TKey, TDat, THashFunc >::FreeKeys [private] |
Definition at line 97 of file hash.h.
Referenced by THash< TInt, TEdge >::Gen(), THash< TInt, TEdge >::IsKeyIdEqKeyN(), THash< TInt, TEdge >::Len(), THash< TInt, TEdge >::Load(), THash< TInt, TEdge >::operator=(), THash< TInt, TEdge >::Save(), and THash< TKey, TDat, THashFunc >::Swap().
const unsigned int THash< TKey, TDat, THashFunc >::HashPrimeT [static] |
{
3ul, 5ul, 11ul, 23ul,
53ul, 97ul, 193ul, 389ul, 769ul,
1543ul, 3079ul, 6151ul, 12289ul, 24593ul,
49157ul, 98317ul, 196613ul, 393241ul, 786433ul,
1572869ul, 3145739ul, 6291469ul, 12582917ul, 25165843ul,
50331653ul, 100663319ul, 201326611ul, 402653189ul, 805306457ul,
1610612741ul, 3221225473ul, 4294967291ul
}
TVec<THKeyDat> THash< TKey, TDat, THashFunc >::KeyDatV [private] |
Definition at line 95 of file hash.h.
Referenced by THash< TInt, TEdge >::AddDat(), THash< TInt, TEdge >::AddDatId(), THash< TInt, TEdge >::BegI(), THash< TInt, TEdge >::EndI(), THash< TInt, TEdge >::Gen(), THash< TInt, TEdge >::GetDat(), THash< TInt, TEdge >::GetHashKeyDat(), THash< TInt, TEdge >::GetI(), THash< TInt, TEdge >::GetMemUsed(), THash< TInt, TEdge >::GetMxKeyIds(), THash< TInt, TEdge >::GetReservedKeyIds(), THash< TInt, TEdge >::IsKeyId(), THash< TInt, TEdge >::Len(), THash< TInt, TEdge >::Load(), THash< TInt, TEdge >::operator=(), THash< TInt, TEdge >::Pack(), THash< TInt, TEdge >::Save(), and THash< TKey, TDat, THashFunc >::Swap().
TIntV THash< TKey, TDat, THashFunc >::PortV [private] |
Definition at line 94 of file hash.h.
Referenced by THash< TInt, TEdge >::Gen(), THash< TInt, TEdge >::GetMemUsed(), THash< TInt, TEdge >::GetPorts(), THash< TInt, TEdge >::Load(), THash< TInt, TEdge >::operator=(), THash< TInt, TEdge >::Save(), THash< TKey, TDat, THashFunc >::Swap(), and THash< TKey, TDat, THashFunc >::THash().