SNAP Library , Developer Reference  2013-01-07 14:03:36
SNAP, a general purpose, high performance system for analysis and manipulation of large networks
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines
TBlobBs Class Reference

#include <blobbs.h>

Inheritance diagram for TBlobBs:
Collaboration diagram for TBlobBs:

List of all members.

Public Member Functions

 UndefCopyAssign (TBlobBs)
 TBlobBs ()
virtual ~TBlobBs ()
 TBlobBs (TSIn &)
void Save (TSOut &) const
virtual TStr GetVersionStr () const =0
void PutVersionStr (const PFRnd &FBlobBs)
void AssertVersionStr (const PFRnd &FBlobBs)
TStr GetBlobBsStateStr (const TBlobBsState &BlobBsState)
int GetStateStrLen ()
void PutBlobBsStateStr (const PFRnd &FBlobBs, const TBlobBsState &State)
void AssertBlobBsStateStr (const PFRnd &FBlobBs, const TBlobBsState &State)
void PutMxSegLen (const PFRnd &FBlobBs, const int &MxSegLen)
int GetMxSegLen (const PFRnd &FBlobBs)
void GenBlockLenV (TIntV &BlockLenV)
void PutBlockLenV (const PFRnd &FBlobBs, const TIntV &BlockLenV)
void GetBlockLenV (const PFRnd &FBlobBs, TIntV &BlockLenV)
void GenFFreeBlobPtV (const TIntV &BlockLenV, TBlobPtV &FFreeBlobPtV)
void PutFFreeBlobPtV (const PFRnd &FBlobBs, const TBlobPtV &FFreeBlobPtV)
void GetFFreeBlobPtV (const PFRnd &FBlobBs, TBlobPtV &FFreeBlobPtV)
void GetAllocInfo (const int &BfL, const TIntV &BlockLenV, int &MxBfL, int &FFreeBlobPtN)
uint GetBeginBlobTag ()
uint GetEndBlobTag ()
void PutBlobTag (const PFRnd &FBlobBs, const TBlobTag &BlobTag)
void AssertBlobTag (const PFRnd &FBlobBs, const TBlobTag &BlobTag)
void PutBlobState (const PFRnd &FBlobBs, const TBlobState &State)
TBlobState GetBlobState (const PFRnd &FBlobBs)
void AssertBlobState (const PFRnd &FBlobBs, const TBlobState &State)
void AssertBfCsEqFlCs (const TCs &BfCs, const TCs &FCs)
virtual TBlobPt PutBlob (const PSIn &SIn)=0
TBlobPt PutBlob (const TStr &Str)
virtual TBlobPt PutBlob (const TBlobPt &BlobPt, const PSIn &SIn)=0
virtual PSIn GetBlob (const TBlobPt &BlobPt)=0
virtual void DelBlob (const TBlobPt &BlobPt)=0
virtual TBlobPt GetFirstBlobPt ()=0
virtual TBlobPt FFirstBlobPt ()=0
virtual bool FNextBlobPt (TBlobPt &TrvBlobPt, TBlobPt &BlobPt, PSIn &BlobSIn)=0
bool FNextBlobPt (TBlobPt &TrvBlobPt, PSIn &BlobSIn)

Static Public Member Functions

static PBlobBs Load (TSIn &)

Static Public Attributes

static const int MnBlobBfL = 16
static const int MxBlobFLen = 1000000000
static const TStr MxSegLenVNm = "MxSegLen"
static const TStr BlockLenVNm = "BlockLenV"
static const TStr FFreeBlobPtVNm = "FFreeBlobPtV"

Private Attributes

TCRef CRef

Friends

class TPt< TBlobBs >

Detailed Description

Definition at line 89 of file blobbs.h.


Constructor & Destructor Documentation

TBlobBs::TBlobBs ( ) [inline]

Definition at line 95 of file blobbs.h.

{}
virtual TBlobBs::~TBlobBs ( ) [inline, virtual]

Definition at line 96 of file blobbs.h.

{}
TBlobBs::TBlobBs ( TSIn ) [inline]

Definition at line 97 of file blobbs.h.

References Fail.

{Fail;}

Member Function Documentation

void TBlobBs::AssertBfCsEqFlCs ( const TCs BfCs,
const TCs FCs 
)

Definition at line 205 of file blobbs.cpp.

References TCs::Get().

Referenced by TGBlobBs::FNextBlobPt(), and TGBlobBs::GetBlob().

                                                             {
  if (BfCs!=FCs){
    printf("[%d:%d]\n", BfCs.Get(), FCs.Get());}
  //EAssert(BfCs==FCs);
}

Here is the call graph for this function:

Here is the caller graph for this function:

void TBlobBs::AssertBlobBsStateStr ( const PFRnd FBlobBs,
const TBlobBsState State 
)

Definition at line 90 of file blobbs.cpp.

References GetBlobBsStateStr(), GetStateStrLen(), TFRnd::GetStr(), TInt::GetStr(), and TExcept::ThrowFull().

Referenced by TGBlobBs::TGBlobBs().

                                                 {
  TStr CorrStateStr=GetBlobBsStateStr(State);
  bool IsOk;
  TStr TestStateStr=FBlobBs->GetStr(GetStateStrLen(), IsOk);
  if (!(IsOk && (CorrStateStr==TestStateStr))) {
        TExcept::ThrowFull("Error in AssertBlobBsStateStr!", TStr(__FILE__)+" line "+TInt::GetStr(__LINE__));
  }
}

Here is the call graph for this function:

Here is the caller graph for this function:

void TBlobBs::AssertBlobState ( const PFRnd FBlobBs,
const TBlobState State 
)

Definition at line 201 of file blobbs.cpp.

References EAssert, and TFRnd::GetCh().

Referenced by TGBlobBs::DelBlob(), TGBlobBs::GetBlob(), and TGBlobBs::PutBlob().

                                                                          {
  EAssert(TBlobState(FBlobBs->GetCh())==State);
}

Here is the call graph for this function:

Here is the caller graph for this function:

void TBlobBs::AssertBlobTag ( const PFRnd FBlobBs,
const TBlobTag BlobTag 
)

Definition at line 185 of file blobbs.cpp.

References btBegin, btEnd, EAssert, GetBeginBlobTag(), GetEndBlobTag(), TFRnd::GetUInt(), and TExcept::Throw().

Referenced by TGBlobBs::DelBlob(), TGBlobBs::FNextBlobPt(), TGBlobBs::GetBlob(), and TGBlobBs::PutBlob().

                                                                        {
  switch (BlobTag){
    case btBegin: EAssert(FBlobBs->GetUInt()==GetBeginBlobTag()); break;
    case btEnd: EAssert(FBlobBs->GetUInt()==GetEndBlobTag()); break;
        default: TExcept::Throw("Error asserting BlobTag");
  }
}

Here is the call graph for this function:

Here is the caller graph for this function:

void TBlobBs::AssertVersionStr ( const PFRnd FBlobBs)

Definition at line 68 of file blobbs.cpp.

References EAssert, TFRnd::GetStr(), GetVersionStr(), and TStr::Len().

Referenced by TGBlobBs::TGBlobBs().

                                                  {
  TStr CorrVersionStr=GetVersionStr();
  bool IsOk=false;
  TStr TestVersionStr=FBlobBs->GetStr(CorrVersionStr.Len(), IsOk);
  EAssert(IsOk && (CorrVersionStr==TestVersionStr));
}

Here is the call graph for this function:

Here is the caller graph for this function:

virtual void TBlobBs::DelBlob ( const TBlobPt BlobPt) [pure virtual]

Implemented in TMBlobBs, and TGBlobBs.

virtual TBlobPt TBlobBs::FFirstBlobPt ( ) [pure virtual]

Implemented in TMBlobBs, and TGBlobBs.

virtual bool TBlobBs::FNextBlobPt ( TBlobPt TrvBlobPt,
TBlobPt BlobPt,
PSIn BlobSIn 
) [pure virtual]

Implemented in TMBlobBs, and TGBlobBs.

bool TBlobBs::FNextBlobPt ( TBlobPt TrvBlobPt,
PSIn BlobSIn 
) [inline]

Definition at line 148 of file blobbs.h.

                                                     {
    TBlobPt BlobPt; return FNextBlobPt(TrvBlobPt, BlobPt, BlobSIn);}
void TBlobBs::GenBlockLenV ( TIntV BlockLenV)

Definition at line 114 of file blobbs.cpp.

References TVec< TVal >::Add(), TVec< TVal >::Clr(), EAssert, TB4Def::GetP2(), TVec< TVal >::Last(), TB4Def::MxP2Exp, and TVec< TVal >::Sort().

Referenced by TGBlobBs::TGBlobBs().

                                          {
  BlockLenV.Clr();
  for (int P2Exp=0; P2Exp<TB4Def::MxP2Exp; P2Exp++){
    BlockLenV.Add(TInt(TB4Def::GetP2(P2Exp)));}
  EAssert(int(BlockLenV.Last())<2000000000);

  {for (int Len=10; Len<100; Len+=10){BlockLenV.Add(Len);}}
  {for (int Len=100; Len<10000; Len+=100){BlockLenV.Add(Len);}}
  {for (int Len=10000; Len<100000; Len+=1000){BlockLenV.Add(Len);}}
  {for (int Len=100000; Len<1000000; Len+=25000){BlockLenV.Add(Len);}}
  {for (int Len=1000000; Len<10000000; Len+=1000000){BlockLenV.Add(Len);}}
  {for (int Len=10000000; Len<100000000; Len+=10000000){BlockLenV.Add(Len);}}

  BlockLenV.Sort();
}

Here is the call graph for this function:

Here is the caller graph for this function:

void TBlobBs::GenFFreeBlobPtV ( const TIntV BlockLenV,
TBlobPtV FFreeBlobPtV 
)

Definition at line 148 of file blobbs.cpp.

References TVec< TVal >::Gen(), and TVec< TVal >::Len().

Referenced by TGBlobBs::TGBlobBs().

                                                                           {
  FFreeBlobPtV.Gen(BlockLenV.Len()+1);
}

Here is the call graph for this function:

Here is the caller graph for this function:

void TBlobBs::GetAllocInfo ( const int &  BfL,
const TIntV BlockLenV,
int &  MxBfL,
int &  FFreeBlobPtN 
)

Definition at line 168 of file blobbs.cpp.

References EAssert, and TVec< TVal >::Len().

Referenced by TGBlobBs::DelBlob(), and TGBlobBs::PutBlob().

                                                                       {
  int BlockLenN=0;
  while ((BlockLenN<BlockLenV.Len())&&(BfL>BlockLenV[BlockLenN])){
    BlockLenN++;}
  EAssert(BlockLenN<BlockLenV.Len());
  MxBfL=BlockLenV[BlockLenN]; FFreeBlobPtN=BlockLenN;
}

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 127 of file blobbs.h.

Referenced by AssertBlobTag(), and PutBlobTag().

{return 0xABCDEFFF;}

Here is the caller graph for this function:

virtual PSIn TBlobBs::GetBlob ( const TBlobPt BlobPt) [pure virtual]

Implemented in TMBlobBs, and TGBlobBs.

Referenced by TFHash< TKey, TFDat, TVDat >::GetFHashKey(), and TFHash< TKey, TFDat, TVDat >::TFHash().

Here is the caller graph for this function:

TStr TBlobBs::GetBlobBsStateStr ( const TBlobBsState BlobBsState)

Definition at line 75 of file blobbs.cpp.

References bbsClosed, bbsOpened, EAssert, Fail, GetStateStrLen(), and TStr::Len().

Referenced by AssertBlobBsStateStr(), and PutBlobBsStateStr().

                                                              {
  TStr StateStr;
  switch (BlobBsState){
    case bbsOpened: StateStr="Opened"; break;
    case bbsClosed: StateStr="Closed"; break;
    default: Fail; return TStr();
  }
  EAssert(StateStr.Len()==GetStateStrLen());
  return StateStr;
}

Here is the call graph for this function:

Here is the caller graph for this function:

TBlobState TBlobBs::GetBlobState ( const PFRnd FBlobBs)

Definition at line 197 of file blobbs.cpp.

References TFRnd::GetCh().

Referenced by TGBlobBs::FNextBlobPt().

                                                    {
  return TBlobState(int(FBlobBs->GetCh()));
}

Here is the call graph for this function:

Here is the caller graph for this function:

void TBlobBs::GetBlockLenV ( const PFRnd FBlobBs,
TIntV BlockLenV 
)

Definition at line 138 of file blobbs.cpp.

References BlockLenVNm, EAssert, TVec< TVal >::Gen(), TFRnd::GetInt(), TFRnd::GetStr(), TVec< TVal >::Len(), and TStr::Len().

Referenced by TGBlobBs::TGBlobBs().

                                                                {
  EAssert(FBlobBs->GetStr(BlockLenVNm.Len())==BlockLenVNm);
  BlockLenV.Gen(FBlobBs->GetInt());
  for (int BlockLenN=0; BlockLenN<BlockLenV.Len(); BlockLenN++){
    BlockLenV[BlockLenN]=FBlobBs->GetInt();}
  EAssert(FBlobBs->GetInt()==-1);
}

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 128 of file blobbs.h.

Referenced by AssertBlobTag(), and PutBlobTag().

{return 0xFFFEDCBA;}

Here is the caller graph for this function:

void TBlobBs::GetFFreeBlobPtV ( const PFRnd FBlobBs,
TBlobPtV FFreeBlobPtV 
)

Definition at line 160 of file blobbs.cpp.

References EAssert, FFreeBlobPtVNm, TVec< TVal >::Gen(), TFRnd::GetInt(), TFRnd::GetStr(), TVec< TVal >::Len(), TStr::Len(), and Load().

Referenced by TGBlobBs::TGBlobBs().

                                                                         {
  EAssert(FBlobBs->GetStr(FFreeBlobPtVNm.Len())==FFreeBlobPtVNm);
  FFreeBlobPtV.Gen(FBlobBs->GetInt());
  for (int FFreeBlobPtN=0; FFreeBlobPtN<FFreeBlobPtV.Len(); FFreeBlobPtN++){
    FFreeBlobPtV[FFreeBlobPtN]=TBlobPt::Load(FBlobBs);}
  EAssert(FBlobBs->GetInt()==-1);
}

Here is the call graph for this function:

Here is the caller graph for this function:

virtual TBlobPt TBlobBs::GetFirstBlobPt ( ) [pure virtual]

Implemented in TMBlobBs, and TGBlobBs.

Referenced by TFHash< TKey, TFDat, TVDat >::TFHash().

Here is the caller graph for this function:

int TBlobBs::GetMxSegLen ( const PFRnd FBlobBs)

Definition at line 107 of file blobbs.cpp.

References EAssert, TFRnd::GetInt(), TFRnd::GetStr(), TStr::Len(), and MxSegLenVNm.

Referenced by TGBlobBs::TGBlobBs().

                                            {
  EAssert(FBlobBs->GetStr(MxSegLenVNm.Len())==MxSegLenVNm);
  return FBlobBs->GetInt();
}

Here is the call graph for this function:

Here is the caller graph for this function:

int TBlobBs::GetStateStrLen ( ) [inline]

Definition at line 106 of file blobbs.h.

Referenced by AssertBlobBsStateStr(), and GetBlobBsStateStr().

{return 6;}

Here is the caller graph for this function:

virtual TStr TBlobBs::GetVersionStr ( ) const [pure virtual]

Implemented in TMBlobBs, and TGBlobBs.

Referenced by AssertVersionStr(), and PutVersionStr().

Here is the caller graph for this function:

static PBlobBs TBlobBs::Load ( TSIn ) [inline, static]

Definition at line 98 of file blobbs.h.

References Fail.

Referenced by GetFFreeBlobPtV().

{Fail; return NULL;}

Here is the caller graph for this function:

virtual TBlobPt TBlobBs::PutBlob ( const PSIn SIn) [pure virtual]

Implemented in TMBlobBs, and TGBlobBs.

Referenced by TFHashKey< TKey, TFDat, TVDat >::OnDelFromCache(), and TFHash< TKey, TFDat, TVDat >::TFHash().

Here is the caller graph for this function:

TBlobPt TBlobBs::PutBlob ( const TStr Str) [inline]

Definition at line 139 of file blobbs.h.

References TStrIn::New().

                                  {
    PSIn SIn=TStrIn::New(Str); return PutBlob(SIn);}

Here is the call graph for this function:

virtual TBlobPt TBlobBs::PutBlob ( const TBlobPt BlobPt,
const PSIn SIn 
) [pure virtual]

Implemented in TMBlobBs, and TGBlobBs.

void TBlobBs::PutBlobBsStateStr ( const PFRnd FBlobBs,
const TBlobBsState State 
)

Definition at line 86 of file blobbs.cpp.

References GetBlobBsStateStr(), and TFRnd::PutStr().

Referenced by TGBlobBs::TGBlobBs(), and TGBlobBs::~TGBlobBs().

                                                                              {
  FBlobBs->PutStr(GetBlobBsStateStr(State));
}

Here is the call graph for this function:

Here is the caller graph for this function:

void TBlobBs::PutBlobState ( const PFRnd FBlobBs,
const TBlobState State 
)

Definition at line 193 of file blobbs.cpp.

References TFRnd::PutCh().

Referenced by TGBlobBs::DelBlob(), and TGBlobBs::PutBlob().

                                                                       {
  FBlobBs->PutCh(char(State));
}

Here is the call graph for this function:

Here is the caller graph for this function:

void TBlobBs::PutBlobTag ( const PFRnd FBlobBs,
const TBlobTag BlobTag 
)

Definition at line 177 of file blobbs.cpp.

References btBegin, btEnd, Fail, GetBeginBlobTag(), GetEndBlobTag(), and TFRnd::PutUInt().

Referenced by TGBlobBs::PutBlob().

                                                                     {
  switch (BlobTag){
    case btBegin: FBlobBs->PutUInt(GetBeginBlobTag()); break;
    case btEnd: FBlobBs->PutUInt(GetEndBlobTag()); break;
    default: Fail;
  }
}

Here is the call graph for this function:

Here is the caller graph for this function:

void TBlobBs::PutBlockLenV ( const PFRnd FBlobBs,
const TIntV BlockLenV 
)

Definition at line 130 of file blobbs.cpp.

References BlockLenVNm, TVec< TVal >::Len(), TFRnd::PutInt(), and TFRnd::PutStr().

Referenced by TGBlobBs::TGBlobBs(), and TGBlobBs::~TGBlobBs().

                                                                      {
  FBlobBs->PutStr(BlockLenVNm);
  FBlobBs->PutInt(BlockLenV.Len());
  for (int BlockLenN=0; BlockLenN<BlockLenV.Len(); BlockLenN++){
    FBlobBs->PutInt(BlockLenV[BlockLenN]);}
  FBlobBs->PutInt(-1);
}

Here is the call graph for this function:

Here is the caller graph for this function:

void TBlobBs::PutFFreeBlobPtV ( const PFRnd FBlobBs,
const TBlobPtV FFreeBlobPtV 
)

Definition at line 152 of file blobbs.cpp.

References FFreeBlobPtVNm, TVec< TVal >::Len(), TFRnd::PutInt(), TFRnd::PutStr(), and TVec< TVal >::Save().

Referenced by TGBlobBs::TGBlobBs(), and TGBlobBs::~TGBlobBs().

                                                                               {
  FBlobBs->PutStr(FFreeBlobPtVNm);
  FBlobBs->PutInt(FFreeBlobPtV.Len());
  for (int BlockLenN=0; BlockLenN<FFreeBlobPtV.Len(); BlockLenN++){
    FFreeBlobPtV[BlockLenN].Save(FBlobBs);}
  FBlobBs->PutInt(-1);
}

Here is the call graph for this function:

Here is the caller graph for this function:

void TBlobBs::PutMxSegLen ( const PFRnd FBlobBs,
const int &  MxSegLen 
)

Definition at line 102 of file blobbs.cpp.

References MxSegLenVNm, TFRnd::PutInt(), and TFRnd::PutStr().

Referenced by TGBlobBs::TGBlobBs(), and TGBlobBs::~TGBlobBs().

                                                                  {
  FBlobBs->PutStr(MxSegLenVNm);
  FBlobBs->PutInt(MxSegLen);
}

Here is the call graph for this function:

Here is the caller graph for this function:

void TBlobBs::PutVersionStr ( const PFRnd FBlobBs)

Definition at line 64 of file blobbs.cpp.

References GetVersionStr(), and TFRnd::PutStr().

Referenced by TGBlobBs::TGBlobBs(), and TGBlobBs::~TGBlobBs().

                                               {
  FBlobBs->PutStr(GetVersionStr());
}

Here is the call graph for this function:

Here is the caller graph for this function:

void TBlobBs::Save ( TSOut ) const [inline]

Definition at line 99 of file blobbs.h.

References Fail.

{Fail;}

Friends And Related Function Documentation

friend class TPt< TBlobBs > [friend]

Definition at line 89 of file blobbs.h.


Member Data Documentation

const TStr TBlobBs::BlockLenVNm = "BlockLenV" [static]

Definition at line 114 of file blobbs.h.

Referenced by GetBlockLenV(), and PutBlockLenV().

TCRef TBlobBs::CRef [private]

Definition at line 89 of file blobbs.h.

const TStr TBlobBs::FFreeBlobPtVNm = "FFreeBlobPtV" [static]

Definition at line 119 of file blobbs.h.

Referenced by GetFFreeBlobPtV(), and PutFFreeBlobPtV().

const int TBlobBs::MnBlobBfL = 16 [static]

Definition at line 91 of file blobbs.h.

const int TBlobBs::MxBlobFLen = 1000000000 [static]

Definition at line 92 of file blobbs.h.

Referenced by TGBlobBs::PutBlob(), TGBlobBs::TGBlobBs(), and TMBlobBs::TMBlobBs().

const TStr TBlobBs::MxSegLenVNm = "MxSegLen" [static]

Definition at line 110 of file blobbs.h.

Referenced by GetMxSegLen(), and PutMxSegLen().


The documentation for this class was generated from the following files: