SNAP Library 6.0, Developer Reference  2020-12-09 16:24:20
SNAP, a general purpose, high performance system for analysis and manipulation of large networks
TMem Class Reference

#include <dt.h>

Collaboration diagram for TMem:

Public Member Functions

 TMem (const int &_MxBfL=0)
 
 TMem (const void *_Bf, const int &_BfL)
 
 TMem (const TMem &Mem)
 
 TMem (const TStr &Str)
 
 ~TMem ()
 
 TMem (TSIn &SIn)
 
void Save (TSOut &SOut) const
 
void LoadXml (const PXmlTok &XmlTok, const TStr &Nm)
 
void SaveXml (TSOut &SOut, const TStr &Nm) const
 
TMemoperator= (const TMem &Mem)
 
char * operator() () const
 
TMemoperator+= (const char &Ch)
 
TMemoperator+= (const TMem &Mem)
 
TMemoperator+= (const TStr &Str)
 
TMemoperator+= (const PSIn &SIn)
 
char & operator[] (const int &ChN) const
 
int GetMemUsed () const
 
void Gen (const int &_BfL)
 
void GenZeros (const int &_BfL)
 
void Reserve (const int &_MxBfL, const bool &DoClr=true)
 
void Del (const int &BChN, const int &EChN)
 
void Clr (const bool &DoDel=true)
 
int Len () const
 
bool Empty () const
 
void Trunc (const int &_BfL)
 
void Push (const char &Ch)
 
char Pop ()
 
bool DoFitStr (const TStr &Str) const
 
void AddBf (const void *Bf, const int &BfL)
 
char * GetBf () const
 
TStr GetAsStr (const char &NewNullCh='\0') const
 
PSIn GetSIn () const
 
void SaveMem (const PSOut &SOut) const
 

Static Public Member Functions

static PMem New (const int &MxBfL=0)
 
static PMem New (const void *Bf, const int &BfL)
 
static PMem New (const TMem &Mem)
 
static PMem New (const PMem &Mem)
 
static PMem New (const TStr &Str)
 
static void LoadMem (const PSIn &SIn, TMem &Mem)
 
static void LoadMem (const PSIn &SIn, const PMem &Mem)
 

Private Member Functions

void Resize (const int &_MxBfL)
 
bool DoFitLen (const int &LBfL) const
 

Private Attributes

TCRef CRef
 
int MxBfL
 
int BfL
 
char * Bf
 

Friends

class TPt< TMem >
 

Detailed Description

Definition at line 77 of file dt.h.

Constructor & Destructor Documentation

TMem::TMem ( const int &  _MxBfL = 0)
inline

Definition at line 84 of file dt.h.

References IAssert.

84  :
85  MxBfL(_MxBfL), BfL(0), Bf(NULL){ IAssert(BfL>=0);
86  if (MxBfL>0){Bf=new char[MxBfL]; IAssert(Bf!=NULL);}}
#define IAssert(Cond)
Definition: bd.h:262
char * Bf
Definition: dt.h:80
int BfL
Definition: dt.h:79
int MxBfL
Definition: dt.h:79
TMem::TMem ( const void *  _Bf,
const int &  _BfL 
)
inline

Definition at line 88 of file dt.h.

References IAssert.

88  :
89  MxBfL(_BfL), BfL(_BfL), Bf(NULL){ IAssert(BfL>=0);
90  if (BfL>0){Bf=new char[BfL]; IAssert(Bf!=NULL); memcpy(Bf, _Bf, BfL);}}
#define IAssert(Cond)
Definition: bd.h:262
char * Bf
Definition: dt.h:80
int BfL
Definition: dt.h:79
int MxBfL
Definition: dt.h:79
TMem::TMem ( const TMem Mem)
inline

Definition at line 92 of file dt.h.

References Bf.

92  :
93  MxBfL(Mem.MxBfL), BfL(Mem.BfL), Bf(NULL){
94  if (MxBfL>0){Bf=new char[MxBfL]; memcpy(Bf, Mem.Bf, BfL);}}
char * Bf
Definition: dt.h:80
int BfL
Definition: dt.h:79
int MxBfL
Definition: dt.h:79
TMem::TMem ( const TStr Str)

Definition at line 234 of file dt.cpp.

References Bf, BfL, TStr::CStr(), and MxBfL.

234  :
235  MxBfL(Str.Len()), BfL(MxBfL), Bf(NULL){
236  if (MxBfL>0){
237  Bf=new char[MxBfL];
238  if (BfL>0){memcpy(Bf, Str.CStr(), BfL);}
239  }
240 }
int Len() const
Definition: dt.h:490
char * Bf
Definition: dt.h:80
int BfL
Definition: dt.h:79
int MxBfL
Definition: dt.h:79
char * CStr()
Definition: dt.h:479

Here is the call graph for this function:

TMem::~TMem ( )
inline

Definition at line 99 of file dt.h.

99 {if (Bf!=NULL){delete[] Bf;}}
char * Bf
Definition: dt.h:80
TMem::TMem ( TSIn SIn)
inlineexplicit

Definition at line 100 of file dt.h.

References TSIn::Load(), and TSIn::LoadBf().

100  {
101  SIn.Load(MxBfL); SIn.Load(BfL);
102  Bf=new char[MxBfL=BfL]; SIn.LoadBf(Bf, BfL);}
char * Bf
Definition: dt.h:80
int BfL
Definition: dt.h:79
void Load(bool &Bool)
Definition: fl.h:84
void LoadBf(const void *Bf, const TSize &BfL)
Definition: fl.h:81
int MxBfL
Definition: dt.h:79

Here is the call graph for this function:

Member Function Documentation

void TMem::AddBf ( const void *  Bf,
const int &  BfL 
)

Definition at line 291 of file dt.cpp.

References Bf, BfL, IAssert, Len(), and Reserve().

291  {
292  IAssert((_BfL>=0) && (_Bf != NULL));
293  Reserve(Len() + _BfL, false);
294  memcpy(Bf + BfL, _Bf, _BfL);
295  BfL+=_BfL;
296  //char* ChBf=(char*)Bf;
297  //for (int BfC=0; BfC<BfL; BfC++){
298  // char Ch=ChBf[BfC];
299  // operator+=(Ch);
300  //}
301 }
#define IAssert(Cond)
Definition: bd.h:262
char * Bf
Definition: dt.h:80
int Len() const
Definition: dt.h:134
int BfL
Definition: dt.h:79
void Reserve(const int &_MxBfL, const bool &DoClr=true)
Definition: dt.h:128

Here is the call graph for this function:

void TMem::Clr ( const bool &  DoDel = true)
inline

Definition at line 131 of file dt.h.

Referenced by THttpLx::ClrMemSf(), Del(), THttpRq::GetAsMem(), THttpResp::GetAsMem(), THttpRq::GetBodyAsMem(), LoadMem(), and THttpResp::ParseHttpResp().

131  {
132  if (DoDel){if (Bf!=NULL){delete[] Bf;} MxBfL=0; BfL=0; Bf=NULL;}
133  else {BfL=0;}}
char * Bf
Definition: dt.h:80
int BfL
Definition: dt.h:79
int MxBfL
Definition: dt.h:79

Here is the caller graph for this function:

void TMem::Del ( const int &  BChN,
const int &  EChN 
)

Definition at line 277 of file dt.cpp.

References Bf, BfL, Clr(), and IAssert.

277  {
278  if (BChN>EChN){return;}
279  if ((BChN==0)&&(EChN==BfL-1)){Clr(); return;}
280  IAssert((0<=BChN)&&(BChN<=EChN)&&(EChN<BfL));
281  memmove(Bf+BChN, Bf+EChN+1, BfL-EChN-1);
282  BfL-=(EChN-BChN+1);
283 }
#define IAssert(Cond)
Definition: bd.h:262
char * Bf
Definition: dt.h:80
int BfL
Definition: dt.h:79
void Clr(const bool &DoDel=true)
Definition: dt.h:131

Here is the call graph for this function:

bool TMem::DoFitLen ( const int &  LBfL) const
inlineprivate

Definition at line 82 of file dt.h.

Referenced by DoFitStr().

82 {return BfL+LBfL<=MxBfL;}
int BfL
Definition: dt.h:79
int MxBfL
Definition: dt.h:79

Here is the caller graph for this function:

bool TMem::DoFitStr ( const TStr Str) const

Definition at line 247 of file dt.cpp.

References DoFitLen(), and TStr::Len().

247  {
248  return DoFitLen(Str.Len()+1);
249 }
int Len() const
Definition: dt.h:490
bool DoFitLen(const int &LBfL) const
Definition: dt.h:82

Here is the call graph for this function:

bool TMem::Empty ( ) const
inline

Definition at line 135 of file dt.h.

Referenced by THttpRq::GetStr().

135 {return BfL==0;}
int BfL
Definition: dt.h:79

Here is the caller graph for this function:

void TMem::Gen ( const int &  _BfL)
inline

Definition at line 123 of file dt.h.

Referenced by TMd5::GetSigMem(), and LoadMem().

123  {
124  Clr(); Resize(_BfL); BfL=_BfL;}
int BfL
Definition: dt.h:79
void Resize(const int &_MxBfL)
Definition: dt.cpp:225
void Clr(const bool &DoDel=true)
Definition: dt.h:131

Here is the caller graph for this function:

void TMem::GenZeros ( const int &  _BfL)
inline

Definition at line 125 of file dt.h.

125  {
126  Clr(false); Resize(_BfL); BfL=_BfL;
127  if (BfL > 0) memset(Bf, 0, BfL);}
char * Bf
Definition: dt.h:80
int BfL
Definition: dt.h:79
void Resize(const int &_MxBfL)
Definition: dt.cpp:225
void Clr(const bool &DoDel=true)
Definition: dt.h:131
TStr TMem::GetAsStr ( const char &  NewNullCh = '\0') const

Definition at line 303 of file dt.cpp.

References TChA::ChangeCh().

Referenced by THttpRq::GetStr(), THttpResp::ParseHttpResp(), and THttpRq::ParseHttpRq().

303  {
304  if (NewNullCh!='\0'){
305  TChA ChA(*this);
306  ChA.ChangeCh('\0', NewNullCh);
307  return ChA;
308  } else {
309  return TStr(*this);
310  }
311 }
Definition: dt.h:201
Definition: dt.h:412

Here is the call graph for this function:

Here is the caller graph for this function:

char* TMem::GetBf ( ) const
inline

Definition at line 144 of file dt.h.

Referenced by TChA::operator+=().

144 {return Bf;}
char * Bf
Definition: dt.h:80

Here is the caller graph for this function:

int TMem::GetMemUsed ( ) const
inline

Definition at line 121 of file dt.h.

121 {return int(2*sizeof(int)+sizeof(char*)+MxBfL);}
int MxBfL
Definition: dt.h:79
PSIn TMem::GetSIn ( ) const
inline

Definition at line 146 of file dt.h.

References TMOut::GetSIn(), and TSOut::SaveBf().

146  {
147  TMOut MOut(BfL); MOut.SaveBf(Bf, BfL); return MOut.GetSIn();}
char * Bf
Definition: dt.h:80
int BfL
Definition: dt.h:79
Definition: fl.h:495

Here is the call graph for this function:

int TMem::Len ( ) const
inline

Definition at line 134 of file dt.h.

Referenced by AddBf(), THttpResp::GetSIn(), THttpRq::GetStr(), TXmlLx::GetXmlStrFromPlainMem(), operator+=(), TChA::operator+=(), THttpRq::ParseHttpRq(), TSOut::PutMem(), TChA::TChA(), and TStr::TStr().

134 {return BfL;}
int BfL
Definition: dt.h:79

Here is the caller graph for this function:

static void TMem::LoadMem ( const PSIn SIn,
TMem Mem 
)
inlinestatic

Definition at line 149 of file dt.h.

References Bf, Clr(), Gen(), TSIn::GetBf(), and TSIn::Len().

Referenced by THttpLx::GetRest(), and THttpResp::THttpResp().

149  {
150  Mem.Clr(); Mem.Gen(SIn->Len()); SIn->GetBf(Mem.Bf, SIn->Len());}
virtual int Len() const =0
void Gen(const int &_BfL)
Definition: dt.h:123
char * Bf
Definition: dt.h:80
virtual int GetBf(const void *Bf, const TSize &BfL)=0
void Clr(const bool &DoDel=true)
Definition: dt.h:131

Here is the call graph for this function:

Here is the caller graph for this function:

static void TMem::LoadMem ( const PSIn SIn,
const PMem Mem 
)
inlinestatic

Definition at line 151 of file dt.h.

References Bf, Clr(), Gen(), TSIn::GetBf(), and TSIn::Len().

151  {
152  Mem->Clr(); Mem->Gen(SIn->Len()); SIn->GetBf(Mem->Bf, SIn->Len());}
virtual int Len() const =0
void Gen(const int &_BfL)
Definition: dt.h:123
char * Bf
Definition: dt.h:80
virtual int GetBf(const void *Bf, const TSize &BfL)=0
void Clr(const bool &DoDel=true)
Definition: dt.h:131

Here is the call graph for this function:

void TMem::LoadXml ( const PXmlTok XmlTok,
const TStr Nm 
)
static PMem TMem::New ( const int &  MxBfL = 0)
inlinestatic

Definition at line 87 of file dt.h.

87 {return new TMem(MxBfL);}
int MxBfL
Definition: dt.h:79
TMem(const int &_MxBfL=0)
Definition: dt.h:84
static PMem TMem::New ( const void *  Bf,
const int &  BfL 
)
inlinestatic

Definition at line 91 of file dt.h.

91 {return new TMem(Bf, BfL);}
char * Bf
Definition: dt.h:80
int BfL
Definition: dt.h:79
TMem(const int &_MxBfL=0)
Definition: dt.h:84
static PMem TMem::New ( const TMem Mem)
inlinestatic

Definition at line 95 of file dt.h.

95 {return new TMem(Mem);}
TMem(const int &_MxBfL=0)
Definition: dt.h:84
static PMem TMem::New ( const PMem Mem)
inlinestatic

Definition at line 96 of file dt.h.

96 {return new TMem(*Mem);}
TMem(const int &_MxBfL=0)
Definition: dt.h:84
static PMem TMem::New ( const TStr Str)
inlinestatic

Definition at line 98 of file dt.h.

98 {return new TMem(Str);}
TMem(const int &_MxBfL=0)
Definition: dt.h:84
char* TMem::operator() ( ) const
inline

Definition at line 114 of file dt.h.

114 {return Bf;}
char * Bf
Definition: dt.h:80
TMem & TMem::operator+= ( const char &  Ch)

Definition at line 251 of file dt.cpp.

References Bf, BfL, MxBfL, and Resize().

251  {
252  if (BfL==MxBfL){Resize(BfL+1);}
253  Bf[BfL]=Ch; BfL++; return *this;
254 }
char * Bf
Definition: dt.h:80
int BfL
Definition: dt.h:79
void Resize(const int &_MxBfL)
Definition: dt.cpp:225
int MxBfL
Definition: dt.h:79

Here is the call graph for this function:

TMem & TMem::operator+= ( const TMem Mem)

Definition at line 256 of file dt.cpp.

References Bf, BfL, Len(), MxBfL, and Resize().

256  {
257  int LBfL=Mem.Len(); if (BfL+LBfL>MxBfL){Resize(BfL+LBfL);}
258  if (LBfL>0){memcpy(&Bf[BfL], Mem(), LBfL);}
259  BfL+=LBfL; return *this;
260 }
char * Bf
Definition: dt.h:80
int Len() const
Definition: dt.h:134
int BfL
Definition: dt.h:79
void Resize(const int &_MxBfL)
Definition: dt.cpp:225
int MxBfL
Definition: dt.h:79

Here is the call graph for this function:

TMem & TMem::operator+= ( const TStr Str)

Definition at line 262 of file dt.cpp.

References Bf, BfL, TStr::CStr(), TStr::Len(), MxBfL, and Resize().

262  {
263  int LBfL=Str.Len(); if (BfL+LBfL>MxBfL){Resize(BfL+LBfL);}
264  if (LBfL>0){memcpy(Bf+BfL, Str.CStr(), LBfL);}
265  BfL+=LBfL; return *this;
266 }
int Len() const
Definition: dt.h:490
char * Bf
Definition: dt.h:80
int BfL
Definition: dt.h:79
void Resize(const int &_MxBfL)
Definition: dt.cpp:225
int MxBfL
Definition: dt.h:79
char * CStr()
Definition: dt.h:479

Here is the call graph for this function:

TMem & TMem::operator+= ( const PSIn SIn)

Definition at line 268 of file dt.cpp.

References Bf, BfL, TSIn::GetBf(), TSIn::Len(), MxBfL, and Resize().

268  {
269  int LBfL=SIn->Len(); if (BfL+LBfL>MxBfL){Resize(BfL+LBfL);}
270  char* LBf=new char[LBfL];
271  SIn->GetBf(LBf, LBfL);
272  if (LBfL>0){memcpy(Bf+BfL, LBf, LBfL);}
273  delete[] LBf;
274  BfL+=LBfL; return *this;
275 }
virtual int Len() const =0
char * Bf
Definition: dt.h:80
virtual int GetBf(const void *Bf, const TSize &BfL)=0
int BfL
Definition: dt.h:79
void Resize(const int &_MxBfL)
Definition: dt.cpp:225
int MxBfL
Definition: dt.h:79

Here is the call graph for this function:

TMem& TMem::operator= ( const TMem Mem)
inline

Definition at line 108 of file dt.h.

References Bf, BfL, and MxBfL.

108  {
109  if (this!=&Mem){
110  if (Bf!=NULL){delete[] Bf;}
111  MxBfL=Mem.MxBfL; BfL=Mem.BfL; Bf=NULL;
112  if (MxBfL>0){Bf=new char[MxBfL]; memcpy(Bf, Mem.Bf, BfL);}}
113  return *this;}
char * Bf
Definition: dt.h:80
int BfL
Definition: dt.h:79
int MxBfL
Definition: dt.h:79
char& TMem::operator[] ( const int &  ChN) const
inline

Definition at line 119 of file dt.h.

References Assert.

119  {
120  Assert((0<=ChN)&&(ChN<BfL)); return Bf[ChN];}
char * Bf
Definition: dt.h:80
int BfL
Definition: dt.h:79
#define Assert(Cond)
Definition: bd.h:251
char TMem::Pop ( )
inline

Definition at line 139 of file dt.h.

References IAssert.

Referenced by THttpLx::PutCh().

139 {IAssert(BfL>0); BfL--; return Bf[BfL];}
#define IAssert(Cond)
Definition: bd.h:262
char * Bf
Definition: dt.h:80
int BfL
Definition: dt.h:79

Here is the caller graph for this function:

void TMem::Push ( const char &  Ch)
inline

Definition at line 138 of file dt.h.

138 {operator+=(Ch);}
TMem & operator+=(const char &Ch)
Definition: dt.cpp:251
void TMem::Reserve ( const int &  _MxBfL,
const bool &  DoClr = true 
)
inline

Definition at line 128 of file dt.h.

Referenced by AddBf().

128  {
129  if (DoClr){ Clr(); } Resize(_MxBfL);}
void Resize(const int &_MxBfL)
Definition: dt.cpp:225
void Clr(const bool &DoDel=true)
Definition: dt.h:131

Here is the caller graph for this function:

void TMem::Resize ( const int &  _MxBfL)
private

Definition at line 225 of file dt.cpp.

References Bf, BfL, IAssert, and MxBfL.

Referenced by operator+=().

225  {
226  if (_MxBfL<=MxBfL){return;}
227  else {if (MxBfL*2<_MxBfL){MxBfL=_MxBfL;} else {MxBfL*=2;}}
228  char* NewBf=new char[MxBfL]; IAssert(NewBf!=NULL);
229  if (BfL>0){memcpy(NewBf, Bf, BfL);}
230  if (Bf!=NULL){delete[] Bf;}
231  Bf=NewBf;
232 }
#define IAssert(Cond)
Definition: bd.h:262
char * Bf
Definition: dt.h:80
int BfL
Definition: dt.h:79
int MxBfL
Definition: dt.h:79

Here is the caller graph for this function:

void TMem::Save ( TSOut SOut) const
inline

Definition at line 103 of file dt.h.

References TSOut::Save(), and TSOut::SaveBf().

103  {
104  SOut.Save(MxBfL); SOut.Save(BfL); SOut.SaveBf(Bf, BfL);}
char * Bf
Definition: dt.h:80
int BfL
Definition: dt.h:79
void SaveBf(const void *Bf, const TSize &BfL)
Definition: fl.h:172
void Save(const bool &Bool)
Definition: fl.h:173
int MxBfL
Definition: dt.h:79

Here is the call graph for this function:

void TMem::SaveMem ( const PSOut SOut) const
inline

Definition at line 153 of file dt.h.

References TSOut::SaveBf().

153 {SOut->SaveBf(Bf, Len());}
char * Bf
Definition: dt.h:80
int Len() const
Definition: dt.h:134

Here is the call graph for this function:

void TMem::SaveXml ( TSOut SOut,
const TStr Nm 
) const

Definition at line 242 of file dt.cpp.

References BfL, TInt::GetStr(), TXmlLx::GetXmlStrFromPlainMem(), TSOut::PutStr(), and XSaveHdArg.

242  {
243  XSaveHdArg(Nm, "BfL", TInt::GetStr(BfL));
245 }
TStr GetStr() const
Definition: dt.h:1200
#define XSaveHdArg(Nm, ArgNm, ArgVal)
Definition: bd.h:321
static TStr GetXmlStrFromPlainMem(const TMem &PlainMem)
Definition: xml.cpp:945
int BfL
Definition: dt.h:79
int PutStr(const char *CStr)
Definition: fl.cpp:117

Here is the call graph for this function:

void TMem::Trunc ( const int &  _BfL)
inline

Definition at line 136 of file dt.h.

Referenced by THttpRq::ParseHttpRq().

136  {
137  if ((0<=_BfL)&&(_BfL<=BfL)){BfL=_BfL;}}
int BfL
Definition: dt.h:79

Here is the caller graph for this function:

Friends And Related Function Documentation

friend class TPt< TMem >
friend

Definition at line 77 of file dt.h.

Member Data Documentation

char* TMem::Bf
private

Definition at line 80 of file dt.h.

Referenced by AddBf(), Del(), LoadMem(), operator+=(), operator=(), Resize(), and TMem().

int TMem::BfL
private

Definition at line 79 of file dt.h.

Referenced by AddBf(), Del(), operator+=(), operator=(), Resize(), SaveXml(), and TMem().

TCRef TMem::CRef
private

Definition at line 77 of file dt.h.

int TMem::MxBfL
private

Definition at line 79 of file dt.h.

Referenced by operator+=(), operator=(), Resize(), and TMem().


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