SNAP Library , Developer Reference
2013-01-07 14:03:36
SNAP, a general purpose, high performance system for analysis and manipulation of large networks
|
#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 295 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 194 of file hash.h.
Referenced by TCascade::Add(), TUnionFind::Add(), TUniTrie< TInt >::Add(), TExpBi::AddBi(), TNIBs::AddCasc(), TLocClustStat::AddCut(), TNIBs::AddDomainNm(), TNEGraph::AddEdge(), TNodeEdgeNet< TNodeData, TEdgeData >::AddEdge(), THttpRq::AddFldVal(), THttpResp::AddFldVal(), THttpResp::AddHdFld(), TUNGraph::AddNode(), TNGraph::AddNode(), TNEGraph::AddNode(), TNodeEdgeNet< TNodeData, TEdgeData >::AddNode(), TNetInfBs::AddNodeNm(), TNIBs::AddNodeNm(), TSnap::TSnapDetail::TCNMQMatrix::TCmtyDat::AddQ(), TILx::AddRw(), TOLx::AddRw(), TLocClustStat::AddToBestCutH(), TLocClust::ApproxPageRank(), TGStat::AvgGStat(), TLocClustStat::BagOfWhiskers(), TLocClustStat::BagOfWhiskers2(), TNIBs::BSG(), TForestFire::BurnExpFire(), TForestFire::BurnGeoFire(), TSnap::TSnapDetail::TCNMQMatrix::CmtyCMN(), TSnap::CommunityGirvanNewman(), TArtPointVisitor::DiscoverNode(), TBiConVisitor::DiscoverNode(), TSccVisitor< PGraph, OnlyCount >::DiscoverNode(), TLocClust::DrawWhiskers(), TSpecFunc::EntropyBias(), TNIBs::FG(), TZipIn::FillFExtToCmdH(), TZipOut::FillFExtToCmdH(), TSccVisitor< PGraph, OnlyCount >::FinishNode(), TNetInfBs::GenCascade(), TNIBs::GenCascade(), 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(), TNetInfBs::GreedyOpt(), TSnap::TSnapDetail::TCNMQMatrix::Init(), TNetInfBs::Init(), TUniChDb::InitScripts(), TUniChDb::InitSpecialCasing(), TUniChDb::InitWordAndSentenceBoundaryFlags(), TBigNet< TNodeData, IsDir >::InvertFromSources(), TTimeNet::LoadArxiv(), TNIBs::LoadGroundTruthNodesTxt(), TNetInfBs::LoadGroundTruthTxt(), TNIBs::LoadGroundTruthTxt(), TKeyDatFl< TKey, TDat, THashFunc >::LoadHash(), TNIBs::LoadInferredNodesTxt(), TNIBs::LoadInferredTxt(), TUniCaseFolding::LoadTxt(), TUniChDb::LoadTxt(), TDGraphCounter::operator()(), THash< TIntPr, TEdgeInfo >::operator()(), THttpResp::ParseHttpResp(), THttpRq::ParseHttpRq(), TNcpGraphsBase::PlotAvgNcp(), TLocClustStat::PlotBoltzmanCurve(), TSnap::PlotEigValDistr(), TLocClustStat::PlotPhiDistr(), TSnap::PlotShortPathDistr(), TSnap::PlotSngValDistr(), TXmlLx::PutEntityVal(), TXmlLx::PutPEntityVal(), TMacro::PutVarVal(), TUnicode::RegisterCodec(), TBigNet< TNodeData, IsDir >::Rewire(), TLocClustStat::Run(), TSnap::SavePajek(), TBigNet< TNodeData, IsDir >::SaveToDisk(), TGStat::SetDistr(), TXmlChDef::SetEntityVal(), THtmlLxChDef::SetEscStr(), TGStat::SetVal(), TNIBs::SG(), TGStat::TakeClustCf(), TGStat::TakeConnComp(), TGStat::TakeDegDistr(), TGStat::TakeDiam(), TGStat::TakeSpectral(), TGStat::TakeTriadPart(), TD34GraphCounter::TD34GraphCounter(), THttpRq::THttpRq(), TMacro::TMacro(), TPreproc::TPreproc(), TArtPointVisitor::TreeEdge(), TBiConVisitor::TreeEdge(), and TNIBs::UpdateDiff().
int THash< TKey, TDat, THashFunc >::AddKey | ( | const TKey & | Key | ) |
Definition at line 325 of file hash.h.
Referenced by TUniTrie< TInt >::Add(), THash< TIntPr, TEdgeInfo >::AddDat(), THash< TIntPr, TEdgeInfo >::AddDatId(), TTmProfiler::AddTimer(), TLocClustStat::BagOfWhiskers(), TTimeNENet::GetEdgeTmBuckets(), TSnap::GetSngVals(), TSnap::GetSngVec(), TStrCache::GetStr(), TTimeNet::GetTmBuckets(), TTimeNENet::GetTmBuckets(), TUniChDb::InitDerivedCoreProperties(), TUniChDb::InitLineBreaks(), TUniChDb::InitPropList(), TUniChDb::InitScripts(), THtmlTok::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 169 of file hash.h.
Referenced by TNIBs::AddCasc(), TNEGraph::BegEI(), TNodeEdgeNet< TSecTm, TSecTm >::BegEI(), TCascade::BegI(), TGHash< TUInt64 >::BegI(), TBPGraph::BegLNI(), TBigNet< TNodeData, IsDir >::BegNI(), TNodeNet< TSecTm >::BegNI(), TUNGraph::BegNI(), TNGraph::BegNI(), TNodeEDatNet< TStr, TFltFltH >::BegNI(), TNEGraph::BegNI(), TBPGraph::BegNI(), TNodeEdgeNet< TSecTm, TSecTm >::BegNI(), TBPGraph::BegRNI(), TNetInfBs::GenCascade(), TNIBs::GenCascade(), TNIBs::GetGroundTruthGraphAtT(), TNIBs::GetGroundTruthNetworkAtT(), TNIBs::GetInferredGraphAtT(), TNIBs::GetInferredNetworkAtT(), TNIBs::Init(), TNetInfBs::SaveCascades(), TNIBs::SaveCascades(), TNetInfBs::SaveEdgeInfo(), TNIBs::SaveGroundTruth(), TNIBs::SaveGroundTruthPajek(), TNIBs::SaveInferred(), TNIBs::SaveInferredPajek(), TNetInfBs::SaveObjInfo(), TNetInfBs::SavePajek(), TNetInfBs::SavePlaneTextNet(), TNIBs::SaveSites(), 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 313 of file hash.h.
Referenced by TLocClust::ApproxPageRank(), TNIBs::BSG(), TStrCache::Clr(), TCascade::Clr(), TGHash< TUInt64 >::Clr(), TBigNet< TNodeData, IsDir >::Clr(), TLocClustStat::Clr(), TNodeNet< TSecTm >::Clr(), TUNGraph::Clr(), TUniCaseFolding::Clr(), TNGraph::Clr(), TNodeEDatNet< TStr, TFltFltH >::Clr(), TNEGraph::Clr(), TBPGraph::Clr(), TUniTrie< TInt >::Clr(), TUniChDb::Clr(), TNodeEdgeNet< TSecTm, TSecTm >::Clr(), TUnicode::ClrCodecs(), TNIBs::FG(), TNetInfBs::GenCascade(), TNIBs::GenCascade(), TSnap::GetBetweennessCentr(), TSnap::GetNodeClustCf(), TSnap::GetShortPath(), TNetInfBs::Init(), TNIBs::Init(), TNIBs::Reset(), and TNIBs::SG().
{ 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 507 of file hash.h.
References IAssert.
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 356 of file hash.h.
References IAssert.
Referenced by TCascade::Del(), TNEGraph::DelEdge(), TNodeEdgeNet< TNodeData, TEdgeData >::DelEdge(), THash< TIntPr, TEdgeInfo >::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 201 of file hash.h.
Referenced by THash< TIntPr, TEdgeInfo >::DelIfKey(), and THash< TIntPr, TEdgeInfo >::DelKeyIdV().
bool THash< TKey, TDat, THashFunc >::Empty | ( | ) | const [inline] |
Definition at line 183 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 174 of file hash.h.
Referenced by TNIBs::AddCasc(), TBPGraph::BegLNI(), TBPGraph::BegRNI(), TNEGraph::EndEI(), TNodeEdgeNet< TSecTm, TSecTm >::EndEI(), TCascade::EndI(), TGHash< TUInt64 >::EndI(), TBigNet< TNodeData, IsDir >::EndNI(), TNodeNet< TSecTm >::EndNI(), TUNGraph::EndNI(), TNGraph::EndNI(), TNodeEDatNet< TStr, TFltFltH >::EndNI(), TNEGraph::EndNI(), TBPGraph::EndNI(), TNodeEdgeNet< TSecTm, TSecTm >::EndNI(), TNetInfBs::GenCascade(), TNIBs::GetGroundTruthGraphAtT(), TNIBs::GetGroundTruthNetworkAtT(), TNIBs::GetInferredGraphAtT(), TNIBs::GetInferredNetworkAtT(), TBPGraph::GetNI(), TNIBs::Init(), TNetInfBs::SaveCascades(), TNIBs::SaveCascades(), TNetInfBs::SaveEdgeInfo(), TNIBs::SaveGroundTruth(), TNIBs::SaveGroundTruthPajek(), TNIBs::SaveInferred(), TNIBs::SaveInferredPajek(), TNetInfBs::SaveObjInfo(), TNetInfBs::SavePajek(), TNetInfBs::SavePlaneTextNet(), TNIBs::SaveSites(), and TBigNet< TNodeData, IsDir >::SaveToDisk().
int THash< TKey, TDat, THashFunc >::FFirstKeyId | ( | ) | const [inline] |
Definition at line 230 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 430 of file hash.h.
Referenced by TGnuPlot::AddPlot(), THash< TIntPr, TEdgeInfo >::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 178 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< TStr, TFltFltH >::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 218 of file hash.h.
Referenced by TSnap::TSnapDetail::_GirvanNewmanGetModularity(), TLocClustStat::AddToBestCutH(), TLocClust::ApproxPageRank(), TArtPointVisitor::BackEdge(), TBiConVisitor::BackEdge(), TLocClustStat::BagOfWhiskers(), TLocClustStat::BagOfWhiskers2(), TNIBs::BSG(), TBPGraph::DelNode(), TSpecFunc::EntropyBias(), TNIBs::FG(), TLocClustStat::FindBestCut(), TSnap::TSnapDetail::TCNMQMatrix::FindMxQEdge(), TArtPointVisitor::FinishNode(), TBiConVisitor::FinishNode(), TSccVisitor< PGraph, OnlyCount >::FinishNode(), TArtPointVisitor::FwdEdge(), TNetInfBs::GenCascade(), TNIBs::GenCascade(), TNetInfBs::GetAllCascProb(), TSnap::GetBetweennessCentr(), TSnap::GetBfsTree(), TNIBs::GetCasc(), TNIBs::GetCascadeId(), TZipIn::GetCmd(), TZipOut::GetCmd(), TD34GraphCounter::GetCnt(), TGHash< TUInt64 >::GetDat(), TCnCom::GetDfsVisitor(), TGStat::GetDistr(), TNIBs::GetDomainId(), TNodeEdgeNet< TSecTm, TSecTm >::GetEDat(), TNEGraph::GetEdge(), TNodeEdgeNet< TSecTm, TSecTm >::GetEdge(), TTimeNENet::GetEdgeTmBuckets(), TSnap::GetEigenVectorCentr(), TExpBi::GetExpBiArgType(), THttpRq::GetFldVal(), THttpResp::GetFldVal(), THttpResp::GetFldValV(), TUrlEnv::GetFullUrlStr(), TSnap::GetHits(), TLocClustStat::GetKNodeCut(), TSccVisitor< PGraph, OnlyCount >::GetMinDiscTm(), TBigNet< TNodeData, IsDir >::GetNDat(), TNodeNet< TSecTm >::GetNDat(), TNodeEDatNet< TStr, TFltFltH >::GetNDat(), TNodeEdgeNet< TSecTm, TSecTm >::GetNDat(), TGraphAnf< PGraph >::GetNIdOffset(), TBigNet< TNodeData, IsDir >::GetNode(), TNodeNet< TSecTm >::GetNode(), TUNGraph::GetNode(), TNGraph::GetNode(), TNodeEDatNet< TStr, TFltFltH >::GetNode(), TNEGraph::GetNode(), TNodeEdgeNet< TSecTm, TSecTm >::GetNode(), TNetInfBs::GetNodeInfo(), TNIBs::GetNodeInfo(), TNetInfBs::GetNodeNm(), TNIBs::GetNodeNm(), TGraphEnumUtils::GetNormalizedGraph(), TJsonVal::GetObjBool(), TJsonVal::GetObjKey(), TJsonVal::GetObjNum(), TJsonVal::GetObjStr(), TSnap::GetPageRank(), TCascade::GetParent(), TCascade::GetProb(), TILx::GetRw(), TCascade::GetTm(), TTimeNet::GetTmBuckets(), TTimeNENet::GetTmBuckets(), TGStat::GetVal(), TGStat::GetValStr(), TMacro::GetVarVal(), TNetInfBs::GreedyOpt(), TAGM::GVizComGraph(), TNetInfBs::Init(), TUniChDb::InitWordAndSentenceBoundaryFlags(), TBigNet< TNodeData, IsDir >::InvertFromSources(), TPreproc::IsSubstId(), TTimeNet::LoadArxiv(), TNIBs::LoadInferredNodesTxt(), TNIBs::LoadInferredTxt(), 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(), TNetInfBs::SaveEdgeInfo(), TNetInfBs::SaveGroundTruth(), TSnap::SaveGViz(), TSnap::SavePajek(), TNIBs::SaveSites(), TNodeEdgeNet< TNodeData, TEdgeData >::SetNDat(), TNIBs::SG(), TNIBs::UpdateDiff(), and TCascade::UpdateProb().
void THash< TKey, TDat, THashFunc >::GetDatKeyKdV | ( | TVec< TKeyDat< TDat, TKey > > & | DatKeyKdV | ) | const |
Definition at line 485 of file hash.h.
{ 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 463 of file hash.h.
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 444 of file hash.h.
References TVec< TVal >::Add(), and TVec< TVal >::Gen().
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 116 of file hash.h.
Referenced by THash< TIntPr, TEdgeInfo >::GetKey(), THash< TIntPr, TEdgeInfo >::GetKeyDat(), THash< TIntPr, TEdgeInfo >::IsKeyGetDat(), and THash< TIntPr, TEdgeInfo >::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 176 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< TStr, TFltFltH >::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 208 of file hash.h.
Referenced by TGnuPlot::AddPlot(), TLocClustStat::BagOfWhiskers(), TLocClustStat::BagOfWhiskers2(), TNIBs::BSG(), TForestFire::BurnExpFire(), TForestFire::BurnGeoFire(), TSnap::TSnapDetail::CmtyGirvanNewmanStep(), THash< TIntPr, TEdgeInfo >::DelKeyId(), TUnionFind::Dump(), TNIBs::FG(), TLocClust::FindBestCut(), TNIBs::GenCascade(), TSnap::GetBfsEffDiam(), TSnap::GetBfsTree(), TLocClustStat::GetBoltzmanCurveStat(), TSnap::GetClustCf(), TLocClustStat::GetCurveStat(), TSnap::GetDegCnt(), TMacro::GetDstSubstStr(), TNEGraph::GetEIdV(), TNodeEdgeNet< TNodeData, TEdgeData >::GetEIdV(), TSnap::GetEigenVectorCentr(), TD34GraphCounter::GetId(), TSnap::GetInDegCnt(), TGHash< TUInt64 >::GetKey(), TUnionFind::GetKeyI(), TSnap::TSnapDetail::TCNMQMatrix::TCmtyDat::GetMxQNId(), TUNGraph::GetNIdV(), TNGraph::GetNIdV(), TNEGraph::GetNIdV(), TNodeEdgeNet< TNodeData, TEdgeData >::GetNIdV(), TCascade::GetNode(), 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< TStr, TFltFltH >::GetRndNId(), TNEGraph::GetRndNId(), TNodeEdgeNet< TSecTm, TSecTm >::GetRndNId(), TUniChDb::GetScriptName(), TMacro::GetSrcSubstStr(), TStrCache::GetStr(), THttpRq::GetStr(), TMacro::GetVarNm(), TUniChDb::InitScripts(), TUniChDb::InitWordAndSentenceBoundaryFlags(), TNIBs::LabelBurstAutomaton(), TTimeNet::LoadArxiv(), TNIBs::LoadGroundTruthTxt(), TNIBs::LoadInferredTxt(), TUniChDb::LoadTxt(), THash< TIntPr, TEdgeInfo >::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(), TNIBs::SG(), 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 223 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 474 of file hash.h.
{ 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 452 of file hash.h.
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 418 of file hash.h.
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< TIntPr, TEdgeInfo >::GetDat(), THtmlLxChDef::GetEscStr(), THash< TIntPr, TEdgeInfo >::GetI(), TGHash< TUInt64 >::GetKeyId(), TUniChDb::GetSbFlags(), TUniChDb::GetScript(), TUniChDb::GetScriptByName(), TUniChDb::GetSimpleCaseConverted(), TSnap::GetSngVals(), TSnap::GetSngVec(), TMacro::GetSrcSubstStrN(), TLxSymStr::GetSSym(), TUniChDb::GetSubCat(), TILx::GetSym(), TUniChDb::GetWbFlags(), TUniChDb::InitDerivedCoreProperties(), TUniChDb::InitLineBreaks(), TUniChDb::InitPropList(), TUniChDb::InitScripts(), TUniChDb::InitWordAndSentenceBoundaryFlags(), TUniChDb::IsGetChInfo(), THash< TIntPr, TEdgeInfo >::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 436 of file hash.h.
References TVec< TVal >::Add(), and TVec< TVal >::Gen().
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 157 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 187 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 259 of file hash.h.
Referenced by THash< TIntPr, TEdgeInfo >::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 185 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 396 of file hash.h.
References TRnd::GetUniDevInt(), and IAssert.
Referenced by TNEGraph::GetRndEId(), TNodeEdgeNet< TSecTm, TSecTm >::GetRndEId(), TBigNet< TNodeData, IsDir >::GetRndNId(), TNodeNet< TSecTm >::GetRndNId(), TUNGraph::GetRndNId(), TNGraph::GetRndNId(), TNodeEDatNet< TStr, TFltFltH >::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 407 of file hash.h.
References TRnd::GetUniDevInt(), and IAssert.
{ 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 186 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 214 of file hash.h.
Referenced by TILx::AddRw(), TOLx::AddRw(), TLocClustStat::AddToBestCutH(), TArtPointVisitor::BackEdge(), TBiConVisitor::BackEdge(), TLocClustStat::BagOfWhiskers(), TLocClustStat::BagOfWhiskers2(), TNIBs::BSG(), TForestFire::BurnExpFire(), TForestFire::BurnGeoFire(), THash< TIntPr, TEdgeInfo >::DelIfKey(), TSpecFunc::EntropyBias(), TLocClustStat::FindBestCut(), TSnap::TSnapDetail::TCNMQMatrix::FindMxQEdge(), TArtPointVisitor::FinishNode(), TBiConVisitor::FinishNode(), TNetInfBs::GenCascade(), TNIBs::GenCascade(), TZipIn::GetCmd(), TZipOut::GetCmd(), TCnCom::GetDfsVisitor(), TGStat::GetDistr(), TMacro::GetDstTxtStr(), TTimeNENet::GetEdgeTmBuckets(), THttpRq::GetFldVal(), THttpResp::GetFldVal(), THttpResp::GetFldValV(), TNIBs::GetGroundTruthGraphAtT(), TNIBs::GetGroundTruthNetworkAtT(), TNIBs::GetInferredGraphAtT(), TNIBs::GetInferredNetworkAtT(), TStrCache::GetStr(), TTimeNet::GetTmBuckets(), TTimeNENet::GetTmBuckets(), TGStat::GetVal(), TGStat::GetValStr(), TUniTrie< TInt >::Has1Gram(), TUniTrie< TInt >::Has2Gram(), TGStat::HasDistr(), TGStat::HasVal(), TNetInfBs::Init(), TUniChDb::InitWordAndSentenceBoundaryFlags(), THtmlTok::IsBreakTag(), TNIBs::IsCascade(), TNIBs::IsDomainNm(), TNEGraph::IsEdge(), TNodeEdgeNet< TSecTm, TSecTm >::IsEdge(), TExpBi::IsExpBiId(), THttpRq::IsFldNm(), THttpResp::IsFldNm(), TUnionFind::IsKey(), TGHash< TUInt64 >::IsKey(), THash< TIntPr, TEdgeInfo >::IsKeyGetDat(), TBPGraph::IsLNode(), TCascade::IsNode(), TBigNet< TNodeData, IsDir >::IsNode(), TNodeNet< TSecTm >::IsNode(), TUNGraph::IsNode(), TNGraph::IsNode(), TNodeEDatNet< TStr, TFltFltH >::IsNode(), TNEGraph::IsNode(), TNodeEdgeNet< TSecTm, TSecTm >::IsNode(), TNetInfBs::IsNodeNm(), TNIBs::IsNodeNm(), TBPGraph::IsRNode(), TMacro::IsSrcSubstStr(), TPreproc::IsSubstId(), TZipIn::IsZipExt(), TZipOut::IsZipExt(), TTimeNet::LoadArxiv(), TNIBs::LoadInferredNodesTxt(), TNIBs::LoadInferredTxt(), 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(), TNIBs::SaveCascades(), TNetInfBs::SaveGroundTruth(), TNIBs::SaveGroundTruth(), TNIBs::SaveGroundTruthPajek(), TSnap::SaveGViz(), TNIBs::SaveInferred(), TNIBs::SaveInferredEdges(), TNIBs::SaveInferredPajek(), TSnap::SavePajek(), TNIBs::SaveSites(), TLocClustStat::SaveTxtInfo(), TNIBs::SG(), TUniChDb::TestComposition(), TNIBs::UpdateDiff(), and TUniChDb::TSubcatHelper::~TSubcatHelper().
{return GetKeyId(Key)!=-1;}
bool THash< TKey, TDat, THashFunc >::IsKeyGetDat | ( | const TKey & | Key, |
TDat & | Dat | ||
) | const [inline] |
Definition at line 226 of file hash.h.
Referenced by TSnap::GetBfsEffDiam(), TUnicode::GetCodec(), 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 189 of file hash.h.
Referenced by THash< TIntPr, TEdgeInfo >::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 184 of file hash.h.
Referenced by TNIBs::AddCasc(), TNIBs::AddDomainNm(), TGnuPlot::AddPlot(), TILx::AddRw(), TOLx::AddRw(), TLocClust::ApproxPageRank(), TLocClustStat::BagOfWhiskers(), TLocClustStat::BagOfWhiskers2(), THash< TIntPr, TEdgeInfo >::BegI(), TNIBs::BSG(), TForestFire::BurnExpFire(), TForestFire::BurnGeoFire(), TSnap::TSnapDetail::TCNMQMatrix::CmtyCMN(), TUnionFind::Dump(), THash< TIntPr, TEdgeInfo >::Empty(), TNIBs::FG(), TLocClust::FindBestCut(), TLocClustStat::FindBestCut(), TNIBs::GenCascade(), TSnap::GetBfsEffDiam(), TSnap::GetBfsTree(), TLocClustStat::GetBoltzmanCurveStat(), TNIBs::GetCascs(), TSnap::GetClustCf(), TLocClustStat::GetCurveStat(), TLocClustStat::GetCuts(), TSnap::GetDegCnt(), TGStat::GetDistrs(), TNEGraph::GetEdges(), TNodeEdgeNet< TSecTm, TSecTm >::GetEdges(), TSnap::GetEigenVectorCentr(), TSnap::GetHits(), TSnap::GetInDegCnt(), TBPGraph::GetLNodes(), TCascade::GetMaxTm(), TSnap::GetNodeEcc(), TAGM::GetNodeMembership(), TBigNet< TNodeData, IsDir >::GetNodes(), TNodeNet< TSecTm >::GetNodes(), TUNGraph::GetNodes(), TNGraph::GetNodes(), TNodeEDatNet< TStr, TFltFltH >::GetNodes(), TNEGraph::GetNodes(), TNodeEdgeNet< TSecTm, TSecTm >::GetNodes(), TSnap::GetNodesAtHop(), TSnap::GetNodesAtHops(), TBreathFS< PGraph >::GetNVisited(), TSnap::GetOutDegCnt(), TSnap::GetPageRank(), TBPGraph::GetRNodes(), TSnap::GetShortPath(), TLxSymStr::GetSSym(), THttpRq::GetStr(), TMacro::GetSubstStrs(), TSnap::GetSubTreeSz(), TGStat::GetVals(), TMacro::GetVars(), TUniChDb::InitScripts(), THtmlTok::IsBreakTag(), TNIBs::LabelBurstAutomaton(), TD34GraphCounter::Len(), TCascade::Len(), TGHash< TUInt64 >::Len(), TUnionFind::Len(), TNetConstraint< PGraph >::Len(), TCascade::LenAfterT(), TCascade::LenBeforeT(), TTimeNet::LoadArxiv(), TNIBs::LoadGroundTruthTxt(), TNIBs::LoadInferredTxt(), 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(), TNIBs::Reset(), TBigNet< TNodeData, IsDir >::Rewire(), TLocClustStat::Run(), TKeyDatFl< TKey, TDat, THashFunc >::Save(), TNIBs::SaveGroundTruthPajek(), TNIBs::SaveInferredPajek(), TBigNet< TNodeData, IsDir >::SaveToDisk(), TNIBs::SG(), and TLocClust::SupportSweep().
void THash< TKey, TDat, THashFunc >::Load | ( | TSIn & | SIn | ) | [inline] |
Definition at line 136 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 378 of file hash.h.
References IAssert, and IAssertR.
Referenced by THash< TIntPr, TEdgeInfo >::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 206 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 302 of file hash.h.
References THash< TKey, TDat, THashFunc >::GetDat(), THash< TKey, TDat, THashFunc >::IsKey(), 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 154 of file hash.h.
{return GetHashKeyDat(KeyId).Dat;}
TDat& THash< TKey, TDat, THashFunc >::operator[] | ( | const int & | KeyId | ) | [inline] |
Definition at line 155 of file hash.h.
{return GetHashKeyDat(KeyId).Dat;}
void THash< TKey, TDat, THashFunc >::Pack | ( | ) | [inline] |
Definition at line 241 of file hash.h.
Referenced by TUNGraph::Defrag(), and TGHash< TUInt64 >::Pack().
void THash< TKey, TDat, THashFunc >::Resize | ( | ) | [private] |
Definition at line 271 of file hash.h.
References THashKeyDat< TKey, TDat >::HashCd, THashKeyDat< TKey, TDat >::Key, and THashKeyDat< TKey, TDat >::Next.
{ // 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 140 of file hash.h.
Referenced by TStrCache::Save(), TKeyDatFl< TKey, TDat, THashFunc >::Save(), TGStat::Save(), TCascade::Save(), TNetInfBs::Save(), TUNGraph::Save(), TNodeNet< TSecTm >::Save(), TNIBs::Save(), TUniCaseFolding::Save(), TNGraph::Save(), TNodeEDatNet< TStr, TFltFltH >::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 522 of file hash.h.
References IAssertR, and THashKeyDat< TKey, TDat >::Next.
Referenced by TLocClustStat::Run(), THash< TIntPr, TEdgeInfo >::SortByDat(), and THash< TIntPr, TEdgeInfo >::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 244 of file hash.h.
Referenced by TNIBs::BSG(), TSnap::TSnapDetail::CmtyGirvanNewmanStep(), TNIBs::FG(), TLocClust::FindBestCut(), TNetInfBs::GenCascade(), TNIBs::GenCascade(), TSnap::GetBfsTree(), TNIBs::SG(), TCascade::Sort(), TNodeEdgeNet< TSecTm, TSecTm >::SortEIdByDat(), TNodeNet< TSecTm >::SortNIdByDat(), TNodeEDatNet< TStr, TFltFltH >::SortNIdByDat(), TNodeEdgeNet< TSecTm, TSecTm >::SortNIdByDat(), TTimeNENet::SortNodeEdgeTimes(), and TNIBs::SortNodeNmByVol().
{ Sort(false, Asc); }
void THash< TKey, TDat, THashFunc >::SortByKey | ( | const bool & | Asc = true | ) | [inline] |
Definition at line 243 of file hash.h.
Referenced by TLocClustStat::BagOfWhiskers(), TLocClustStat::BagOfWhiskers2(), TSnap::PlotShortPathDistr(), TLocClustStat::Run(), TNodeEdgeNet< TSecTm, TSecTm >::SortEIdById(), TNodeNet< TSecTm >::SortNIdById(), TNodeEDatNet< TStr, TFltFltH >::SortNIdById(), and TNodeEdgeNet< TSecTm, TSecTm >::SortNIdById().
{ Sort(true, Asc); }
void THash< TKey, TDat, THashFunc >::Swap | ( | THash< TKey, TDat, THashFunc > & | Hash | ) |
Definition at line 496 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 98 of file hash.h.
Referenced by THash< TIntPr, TEdgeInfo >::IsAutoSize(), THash< TIntPr, TEdgeInfo >::Load(), THash< TIntPr, TEdgeInfo >::operator=(), THash< TIntPr, TEdgeInfo >::Save(), and THash< TKey, TDat, THashFunc >::Swap().
TInt THash< TKey, TDat, THashFunc >::FFreeKeyId [private] |
Definition at line 99 of file hash.h.
Referenced by THash< TIntPr, TEdgeInfo >::Gen(), THash< TIntPr, TEdgeInfo >::Load(), THash< TIntPr, TEdgeInfo >::operator=(), THash< TIntPr, TEdgeInfo >::Save(), and THash< TKey, TDat, THashFunc >::Swap().
TInt THash< TKey, TDat, THashFunc >::FreeKeys [private] |
Definition at line 99 of file hash.h.
Referenced by THash< TIntPr, TEdgeInfo >::Gen(), THash< TIntPr, TEdgeInfo >::IsKeyIdEqKeyN(), THash< TIntPr, TEdgeInfo >::Len(), THash< TIntPr, TEdgeInfo >::Load(), THash< TIntPr, TEdgeInfo >::operator=(), THash< TIntPr, TEdgeInfo >::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 97 of file hash.h.
Referenced by THash< TIntPr, TEdgeInfo >::AddDat(), THash< TIntPr, TEdgeInfo >::AddDatId(), THash< TIntPr, TEdgeInfo >::BegI(), THash< TIntPr, TEdgeInfo >::EndI(), THash< TIntPr, TEdgeInfo >::Gen(), THash< TIntPr, TEdgeInfo >::GetDat(), THash< TIntPr, TEdgeInfo >::GetHashKeyDat(), THash< TIntPr, TEdgeInfo >::GetI(), THash< TIntPr, TEdgeInfo >::GetMemUsed(), THash< TIntPr, TEdgeInfo >::GetMxKeyIds(), THash< TIntPr, TEdgeInfo >::GetReservedKeyIds(), THash< TIntPr, TEdgeInfo >::IsKeyId(), THash< TIntPr, TEdgeInfo >::Len(), THash< TIntPr, TEdgeInfo >::Load(), THash< TIntPr, TEdgeInfo >::operator=(), THash< TIntPr, TEdgeInfo >::Pack(), THash< TIntPr, TEdgeInfo >::Save(), and THash< TKey, TDat, THashFunc >::Swap().
TIntV THash< TKey, TDat, THashFunc >::PortV [private] |
Definition at line 96 of file hash.h.
Referenced by THash< TIntPr, TEdgeInfo >::Gen(), THash< TIntPr, TEdgeInfo >::GetMemUsed(), THash< TIntPr, TEdgeInfo >::GetPorts(), THash< TIntPr, TEdgeInfo >::Load(), THash< TIntPr, TEdgeInfo >::operator=(), THash< TIntPr, TEdgeInfo >::Save(), THash< TKey, TDat, THashFunc >::Swap(), and THash< TKey, TDat, THashFunc >::THash().