7 static const
int MnBlobBfL;
8 static const
int Flags;
14 Seg(0), Addr(
TUInt::Mx), FSet1(), FSet2(), FSet3(){}
16 Seg(Pt.Seg), Addr(Pt.Addr),
17 FSet1(Pt.FSet1), FSet2(Pt.FSet2), FSet3(Pt.FSet3){}
20 Seg(_Seg), Addr(_Addr), FSet1(_FSet1), FSet2(_FSet2), FSet3(_FSet3){}
22 Seg(_Seg), Addr(_Addr), FSet1(), FSet2(), FSet3(){}
24 Seg(0), Addr(_Addr), FSet1(), FSet2(), FSet3(){}
26 Seg(0), Addr(
uint(_Addr)), FSet1(), FSet2(), FSet3(){
IAssert(_Addr>=0);}
33 FSet1.Save(SOut); FSet2.Save(SOut); FSet3.Save(SOut);}
41 return (Seg==Pt.
Seg)&&(Addr==Pt.
Addr);}
43 return (Seg<Pt.
Seg)||((Seg==Pt.
Seg)&&(Addr<Pt.
Addr));}
55 void PutFlag(
const int& FlagN,
const bool& Val);
56 bool IsFlag(
const int& FlagN)
const;
59 void PutFSet(
const int& FSetN,
const TB8Set& FSet);
60 TB8Set GetFSet(
const int& FSetN);
66 return TBlobPt(Seg, Addr, B8Set1, B8Set2, B8Set3);}
69 FRnd->
PutUCh(FSet1.GetUCh()); FRnd->
PutUCh(FSet2.GetUCh());
70 FRnd->
PutUCh(FSet3.GetUCh());}
91 static const
int MnBlobBfL;
92 static const
int MxBlobFLen;
101 virtual TStr GetVersionStr()
const=0;
102 void PutVersionStr(
const PFRnd& FBlobBs);
103 void AssertVersionStr(
const PFRnd& FBlobBs);
111 void PutMxSegLen(
const PFRnd& FBlobBs,
const int& MxSegLen);
112 int GetMxSegLen(
const PFRnd& FBlobBs);
115 void GenBlockLenV(
TIntV& BlockLenV);
116 void PutBlockLenV(
const PFRnd& FBlobBs,
const TIntV& BlockLenV);
117 void GetBlockLenV(
const PFRnd& FBlobBs,
TIntV& BlockLenV);
120 void GenFFreeBlobPtV(
const TIntV& BlockLenV,
TBlobPtV& FFreeBlobPtV);
121 void PutFFreeBlobPtV(
const PFRnd& FBlobBs,
const TBlobPtV& FFreeBlobPtV);
122 void GetFFreeBlobPtV(
const PFRnd& FBlobBs,
TBlobPtV& FFreeBlobPtV);
125 const int& BfL,
const TIntV& BlockLenV,
int& MxBfL,
int& FFreeBlobPtN);
129 void PutBlobTag(
const PFRnd& FBlobBs,
const TBlobTag& BlobTag);
130 void AssertBlobTag(
const PFRnd& FBlobBs,
const TBlobTag& BlobTag);
136 void AssertBfCsEqFlCs(
const TCs& BfCs,
const TCs& FCs);
143 virtual void DelBlob(
const TBlobPt& BlobPt)=0;
145 virtual TBlobPt GetFirstBlobPt()=0;
146 virtual TBlobPt FFirstBlobPt()=0;
149 TBlobPt BlobPt;
return FNextBlobPt(TrvBlobPt, BlobPt, BlobSIn);}
165 const int& _MxSegLen=-1);
202 const int& _MxSegLen=-1);
211 return TStr(
"Multiple-File Blob Base Format 1.0");}
bool FNextBlobPt(TBlobPt &TrvBlobPt, PSIn &BlobSIn)
void DelBlob(const TBlobPt &BlobPt)
TGBlobBs(const TStr &BlobBsFNm, const TFAccess &_Access=faRdOnly, const int &_MxSegLen=-1)
void DelBlob(const TBlobPt &BlobPt)
static PBlobBs New(const TStr &BlobBsFNm, const TFAccess &Access=faRdOnly, const int &MxSegLen=-1)
static void GetNrFPathFMid(const TStr &BlobBsFNm, TStr &NrFPath, TStr &NrFMid)
static TBlobPt Load(const PFRnd &FRnd)
void PutSeg(const uchar &_Seg)
TBlobPt & operator=(const TBlobPt &Pt)
bool operator==(const TBlobPt &Pt) const
void SaveAddr(const PFRnd &FRnd) const
static TStr GetSegFNm(const TStr &NrFPath, const TStr &NrFMid, const int &SegN)
bool FNextBlobPt(TBlobPt &TrvBlobPt, TBlobPt &BlobPt, PSIn &BlobSIn)
static bool Exists(const TStr &BlobBsFNm)
TBlobPt(const uchar &_Seg, const uint &_Addr)
void PutAddr(const uint &_Addr)
void PutUInt(const uint &UInt)
#define UndefCopyAssign(TNm)
TBlobPt(const uint &_Addr)
TBlobPt(const uchar &_Seg, const uint &_Addr, const TB8Set &_FSet1, const TB8Set &_FSet2, const TB8Set &_FSet3)
#define ClassTVQ(TNm, TNmV, TNmQ)
#define ClassTPV(TNm, PNm, TNmV)
static TStr GetNrBlobBsFNm(const TStr &BlobBsFNm)
TMBlobBs & operator=(const TMBlobBs &)
TBlobPt PutBlob(const PSIn &SIn)
static PSIn New(const TStr &Str)
TStr GetVersionStr() const
static const TStr MxSegLenVNm
PSIn GetBlob(const TBlobPt &BlobPt)
PSIn GetBlob(const TBlobPt &BlobPt)
TBlobPt PutBlob(const TStr &Str)
static PBlobBs New(const TStr &BlobBsFNm, const TFAccess &Access=faRdOnly, const int &MxSegLen=-1)
void Save(const PFRnd &FRnd) const
static TStr GetMainFNm(const TStr &NrFPath, const TStr &NrFMid)
TStr GetVersionStr() const
void Save(const bool &Bool)
static PBlobBs Load(TSIn &)
bool FNextBlobPt(TBlobPt &TrvBlobPt, TBlobPt &BlobPt, PSIn &BlobSIn)
TBlobPt(const int &_Addr)
static const TStr BlockLenVNm
TBlobPt PutBlob(const PSIn &SIn)
bool operator<(const TBlobPt &Pt) const
TBlobPt(const TBlobPt &Pt)
void MergeFlags(const TBlobPt &Pt)
int GetPrimHashCd() const
static bool Exists(const TStr &BlobBsFNm)
TGBlobBs & operator=(const TGBlobBs &)
static TBlobPt LoadAddr(const PFRnd &FRnd, const uchar &Seg=0)
void Save(TSOut &SOut) const
void PutUCh(const uchar &UCh)
static const TStr FFreeBlobPtVNm
TMBlobBs(const TStr &BlobBsFNm, const TFAccess &_Access=faRdOnly, const int &_MxSegLen=-1)