SNAP Library 2.3, Developer Reference  2014-06-16 11:58:46
SNAP, a general purpose, high performance system for analysis and manipulation of large networks
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
bd.h
Go to the documentation of this file.
1 #ifndef bd_h
2 #define bd_h
3 
5 // Basic-Macro-Definitions
6 #define forever for(;;)
7 
9 // Basic-Type-Definitions
10 typedef unsigned char uchar;
11 typedef unsigned int uint;
12 typedef unsigned long ulong;
13 typedef unsigned short ushort;
14 
15 typedef float sdouble;
16 typedef long double ldouble;
17 typedef FILE* TFileId;
18 
19 typedef char int8;
20 typedef short int16;
21 typedef int int32;
22 #ifdef GLib_WIN32
23 typedef __int64 int64;
24 #elif defined(GLib_GLIBC)
25 typedef int64_t int64;
26 #else
27 typedef long long int64;
28 #endif
29 
30 typedef unsigned char uint8;
31 typedef unsigned short uint16;
32 typedef unsigned int uint32;
33 #ifdef GLib_WIN32
34 typedef unsigned __int64 uint64;
35 #elif defined(GLib_GLIBC)
36 typedef u_int64_t uint64;
37 #else
38 typedef unsigned long long uint64;
39 #endif
40 
41 #if (!defined(__ssize_t_defined) && !defined(GLib_MACOSX))
42 typedef ptrdiff_t ssize_t;
43 #endif
44 
45 #if defined(GLib_UNIX)
46 #define _isnan(x) isnan(x)
47 #if defined(GLib_MACOSX)
48  #define _finite(x) isfinite(x)
49 #else
50  #define _finite(x) finite(x)
51 #endif
52 #endif
53 
54 #if defined(GLib_WIN32)
55 #define _vsnprintf vsnprintf
56 #endif
57 
58 typedef size_t TSize;
59 #define TSizeMx SIZE_MAX
60 
62 // Localization
63 typedef enum {lUndef, lUs, lSi} TLoc;
64 
66 // Messages
67 void WrNotify(const char* CaptionCStr, const char* NotifyCStr);
68 void SaveToErrLog(const char* MsgCStr);
69 
70 inline void InfoNotify(const char* NotifyCStr){
71  WrNotify("Information", NotifyCStr);}
72 inline void WarnNotify(const char* NotifyCStr){
73  WrNotify("Warning", NotifyCStr);}
74 inline void ErrNotify(const char* NotifyCStr){
75  WrNotify("Error", NotifyCStr);}
76 inline void StatNotify(const char* NotifyCStr){
77  WrNotify("Status", NotifyCStr);}
78 
80 // Compiler-Options
81 #if defined (GLib_WIN)
82  #define snprintf _snprintf
83  #define vsnprintf _vsnprintf
84  // disable warning 'debug symbol greater than 255 chars'
85  #pragma warning(disable: 4786)
86  // disable warning 'return type for 'identifier::operator->'
87  // is not a UDT or reference to a UDT.
88  //#pragma warning(disable: 4284)
89  // 'declaration' : function differs from 'declaration'
90  // only by calling convention
91  //#pragma warning(disable: 4666)
92  #pragma warning(disable: 4996)
93 #endif
94 
95 #if defined (GLib_GCC)
96  #define _CONSOLE
97 #endif
98 
99 // use console output if console already exists, otherwise
100 // define GLib_COUT to use console (class COut)
101 #if defined(_CONSOLE)||defined(__CONSOLE__)
102  #define GLib_Console
103 #endif
104 
105 // create console if want to output but there is no console allocated
106 #if defined(GLib_Console) && (! (defined(__CONSOLE__)||defined(_CONSOLE)))
107  #define GLib_CreateConsole
108 #endif
109 
111 // Class-Definition
112 #define ClassT(TNm) \
113 class TNm{
114 
115 #define ClassTV(TNm, TNmV) \
116 class TNm; \
117 typedef TVec<TNm> TNmV; \
118 class TNm{
119 
120 #define ClassTVQ(TNm, TNmV, TNmQ) \
121 class TNm; \
122 typedef TVec<TNm> TNmV; \
123 typedef TQQueue<TNm> TNmQ; \
124 class TNm{
125 
126 #define ClassTP(TNm, PNm) \
127 class TNm; \
128 typedef TPt<TNm> PNm; \
129 class TNm{ \
130 private: \
131  TCRef CRef; \
132 public: \
133  friend class TPt<TNm>;
134 
135 #define ClassHdTP(TNm, PNm) \
136 class TNm; \
137 typedef TPt<TNm> PNm;
138 
139 #define ClassTPE(TNm, PNm, ENm) \
140 class TNm; \
141 typedef TPt<TNm> PNm; \
142 class TNm: public ENm{ \
143 private: \
144  TCRef CRef; \
145 public: \
146  friend class TPt<TNm>;
147 
148 #define ClassTPEE(TNm, PNm, ENm1, ENm2) \
149 class TNm; \
150 typedef TPt<TNm> PNm; \
151 class TNm: public ENm1, public ENm2{ \
152 private: \
153  TCRef CRef; \
154 public: \
155  friend class TPt<TNm>;
156 
157 #define ClassTE(TNm, ENm) \
158 class TNm; \
159 class TNm: public ENm{ \
160 public: \
161 
162 #define ClassTPV(TNm, PNm, TNmV) \
163 class TNm; \
164 typedef TPt<TNm> PNm; \
165 typedef TVec<PNm> TNmV; \
166 class TNm{ \
167 private: \
168  TCRef CRef; \
169 public: \
170  friend class TPt<TNm>;
171 
172 #define ClassHdTPV(TNm, PNm, TNmV) \
173 class TNm; \
174 typedef TPt<TNm> PNm; \
175 typedef TVec<PNm> TNmV;
176 
177 #define ClassTPVL(TNm, PNm, TNmV, TNmL, TNmLN) \
178 class TNm; \
179 typedef TPt<TNm> PNm; \
180 typedef TVec<PNm> TNmV; \
181 typedef TLst<PNm> TNmL; \
182 typedef TLstNd<PNm>* TNmLN; \
183 class TNm{ \
184 private: \
185  TCRef CRef; \
186 public: \
187  friend class TPt<TNm>;
188 
190 // Forward-Definitions
191 class TSIn;
192 class TSOut;
193 class TStr;
194 class TXmlObjSer;
195 class TXmlObjSerTagNm;
196 template <class TRec> class TPt;
200 
202 // DefaultConstructor/CopyConstructor/AssignmentOperator-UnDefinition
203 #define UndefDefaultCopyAssign(TNm) \
204 private: \
205  TNm(){} \
206  TNm(const TNm&); \
207  TNm& operator=(const TNm&)
208 
209 #define UndefCopyAssign(TNm) \
210 private: \
211  TNm(const TNm&); \
212  TNm& operator=(const TNm&)
213 
214 #define UndefCopy(TNm) \
215 private: \
216  TNm(const TNm&)
217 
218 #define UndefAssign(TNm) \
219 private: \
220  TNm& operator=(const TNm&)
221 
223 // Assertions
225 private:
226  typedef bool (*TOnExeStopF)(char* MsgCStr);
228 public:
229  static bool IsOnExeStopF(){return OnExeStopF!=NULL;}
230  static void PutOnExeStopF(TOnExeStopF _OnExeStopF){OnExeStopF=_OnExeStopF;}
232 };
233 
234 void ExeStop(
235  const char* MsgStr, const char* ReasonStr,
236  const char* CondStr, const char* FNm, const int& LnN);
237 
238 #define Fail ExeStop(NULL, NULL, "Fail", __FILE__, __LINE__)
239 
240 #define FailR(Reason) ExeStop((Reason), NULL, "Fail", __FILE__, __LINE__)
241 #define FailRA(Reason, ArgStr) \
242  ExeStop((TStr(Reason)+" ("+ArgStr+")").CStr(), NULL, "Fail", __FILE__, __LINE__)
243 
244 #define EFail TExcept::ThrowFull("", TStr("[")+ TStr(__FILE__) + " line " + TInt::GetStr(__LINE__) + "]")
245 
246 #define EFailR(Reason) TExcept::ThrowFull(Reason, TStr("[")+TStr(__FILE__)+" line "+TInt::GetStr(__LINE__)+"]")
247 
248 #ifdef NDEBUG
249 #define Assert(Cond)
250 #else
251 #define Assert(Cond) \
252  ((Cond) ? static_cast<void>(0) : ExeStop(NULL, NULL, #Cond, __FILE__, __LINE__))
253 #endif
254 
255 #ifdef NDEBUG
256 #define AssertR(Cond, Reason)
257 #else
258 #define AssertR(Cond, Reason) ((Cond) ? static_cast<void>(0) : \
259  ExeStop(NULL, TStr(Reason).CStr(), #Cond, __FILE__, __LINE__))
260 #endif
261 
262 #define IAssert(Cond) \
263  ((Cond) ? static_cast<void>(0) : ExeStop(NULL, NULL, #Cond, __FILE__, __LINE__))
264 
265 #define IAssertR(Cond, Reason) \
266  ((Cond) ? static_cast<void>(0) : ExeStop(NULL, TStr(Reason).CStr(), #Cond, __FILE__, __LINE__))
267 
268 #define WAssert(Cond, MsgCStr) \
269  ((Cond) ? static_cast<void>(0) : WarnNotify(MsgCStr))
270 
271 #define SAssert(Cond) \
272  ((Cond) ? static_cast<void>(0) : ExeStop(TSysStr::GetLastMsgCStr(), NULL, #Cond, __FILE__, __LINE__))
273 
274 #define FAssert(Cond, MsgCStr) \
275  ((Cond) ? static_cast<void>(0) : ExeStop(TStr(MsgCStr).CStr(), NULL, NULL, __FILE__, __LINE__))
276 
277 #define FSAssert(Cond) \
278  ((Cond) ? static_cast<void>(0) : ExeStop(TSysStr::GetLastMsgCStr(), NULL, NULL, __FILE__, __LINE__))
279 
280 #define EAssert(Cond) \
281  ((Cond) ? static_cast<void>(0) : TExcept::ThrowFull(#Cond, TStr(__FILE__) + " line " + TInt::GetStr(__LINE__) +": "+ TStr(#Cond)))
282 
283 #define EAssertR(Cond, MsgStr) \
284  ((Cond) ? static_cast<void>(0) : TExcept::ThrowFull(MsgStr, TStr(__FILE__)+" line "+TInt::GetStr(__LINE__)+": "+TStr(#Cond)))
285 
286 #define EAssertRA(Cond, MsgStr, ArgStr) \
287  ((Cond) ? static_cast<void>(0) : TExcept::Throw(MsgStr, ArgStr))
288 
289 #define EAssertRAA(Cond, MsgStr, ArgStr1, ArgStr2) \
290  ((Cond) ? static_cast<void>(0) : TExcept::Throw(MsgStr, ArgStr1, ArgStr2))
291 
292 #define ESAssert(Cond) \
293  ((Cond) ? static_cast<void>(0) : TExcept::Throw(TSysStr::GetLastMsgCStr(), \
294  TStr(__FILE__) + " line " + TInt::GetStr(__LINE__) +": "+ TStr(#Cond)))
295 
296 // compile time assert
297 // #define STATIC_ASSERT(x) { const char temp[ (((x) == 0) ? 0 : 1) ] = {'\0'}; }
298 template <bool BoolVal> struct TStaticAssert;
299 template <> struct TStaticAssert<true> { enum { value = 1 }; };
300 template<int IntVal> struct TStaticAssertTest{};
301 
302 #define CAssert(Cond) \
303  /* typedef TStaticAssertTest<sizeof(TStaticAssert<(Cond)==0?false:true>)> TestStaticAssert; */
304 
306 // Xml-Object-Serialization
307 template <class TRec>
308 bool IsXLoadFromFileOk(const TStr& FNm, const TStr& Nm, TRec& Rec, TStr& MsgStr);
309 template <class TRec>
310 void XLoadFromFile(const TStr& FNm, const TStr& Nm, TRec& Rec);
311 
312 #define XLoadHd(Nm) \
313  {TStr TypeNm=TXmlObjSer::GetTagNm(TStr(typeid(*this).name())); \
314  TXmlObjSer::AssertXmlHd(XmlTok, Nm, TypeNm);}
315 #define XLoad(Nm) \
316  Nm.LoadXml(XmlTok->GetTagTok(#Nm), #Nm);
317 
318 #define XSaveHd(Nm) \
319  TStr _TypeNm=TXmlObjSer::GetTagNm(TStr(typeid(*this).name())); \
320  TXmlObjSerTagNm XmlObjSerTagNm(SOut, false, Nm, _TypeNm);
321 #define XSaveHdArg(Nm, ArgNm, ArgVal) \
322  TStr _TypeNm=TXmlObjSer::GetTagNm(TStr(typeid(*this).name())); \
323  TXmlObjSerTagNm XmlObjSerTagNm(SOut, false, Nm, _TypeNm, ArgNm, ArgVal);
324 #define XSaveBETag(Nm) \
325  TStr _TypeNm=TXmlObjSer::GetTagNm(TStr(typeid(*this).name())); \
326  TXmlObjSerTagNm XmlObjSerTagNm(SOut, true, Nm, _TypeNm);
327 #define XSaveBETagArg(Nm, ArgNm, ArgVal) \
328  TStr _TypeNm=TXmlObjSer::GetTagNm(TStr(typeid(*this).name())); \
329  TXmlObjSerTagNm XmlObjSerTagNm(SOut, true, Nm, _TypeNm, ArgNm, ArgVal);
330 #define XSaveBETagArg4(Nm, ArgNm1, ArgVal1, ArgNm2, ArgVal2, ArgNm3, ArgVal3, ArgNm4, ArgVal4) \
331  TStr _TypeNm=TXmlObjSer::GetTagNm(TStr(typeid(*this).name())); \
332  TXmlObjSerTagNm XmlObjSerTagNm(SOut, true, Nm, _TypeNm, ArgNm1, ArgVal1, ArgNm2, ArgVal2, ArgNm3, ArgVal3, ArgNm4, ArgVal4);
333 #define XSave(Nm) \
334  Nm.SaveXml(SOut, #Nm)
335 #define XSaveToFile(Nm, FNm) \
336  {TFOut SOut(FNm); Nm.SaveXml(SOut, #Nm);}
337 
339 // Basic-Operators
340 typedef enum {loUndef, loNot, loAnd, loOr} TLogOp;
341 typedef enum {roUndef, roLs, roLEq, roEq, roNEq, roGEq, roGt} TRelOp;
342 
344 // Comparation-Macros
345 #ifndef min
346  #define min(a,b) ((a)<(b)?(a):(b))
347 #endif
348 
349 #ifndef max
350  #define max(a,b) ((a)>(b)?(a):(b))
351 #endif
352 
354 // Comparator-Definitions
355 template<class T>
356 class TEq{
357 public:
358  bool operator()(const T& x, const T& y) const {return x==y;}
359 };
360 
361 template<class T>
362 class TNEq{
363 public:
364  bool operator()(const T& x, const T& y) const {return x!=y;}
365 };
366 
367 template<class T>
368 class TLss{
369 public:
370  bool operator()(const T& x, const T& y) const {return x<y;}
371  int Cmp(const T& d1, const T& d2) const {
372  if (d1<d2){return -1;}
373  else if (d2<d1){return 1;}
374  else {return 0;}
375  }
376 };
377 
378 template<class T>
379 class TLEq{
380 public:
381  bool operator()(const T& x, const T& y) const {return x<=y;}
382 };
383 
384 template<class T>
385 class TGtr{
386 public:
387  bool operator() (const T& x, const T& y) const { return x>y; }
388  int Cmp(const T& d1, const T& d2) const { //** vprasaj Janeza za uporabo
389  if (d1<d2){return 1;}
390  else if (d2<d1){return -1;}
391  else {return 0;}
392  }
393 };
394 
395 template<class T>
396 class TGEq{
397 public:
398  bool operator()(const T& x, const T& y) const {return x>=y;}
399 };
400 
401 template<class T>
402 class TCmp{
403 public:
404  int operator()(const T& x, const T& y) const {
405  if (x < y){return -1;}
406  else if (x > y){return 1;}
407  else {return 0;}
408  }
409 };
410 
412 // Operator-Definitions
413 template <class TRec>
414 bool operator!=(const TRec& Rec1, const TRec& Rec2){return !(Rec1==Rec2);}
415 
416 template <class TRec>
417 bool operator>(const TRec& Rec1, const TRec& Rec2){return Rec2<Rec1;}
418 
419 template <class TRec>
420 bool operator<=(const TRec& Rec1, const TRec& Rec2){return !(Rec2<Rec1);}
421 
422 template <class TRec>
423 bool operator>=(const TRec& Rec1, const TRec& Rec2){return !(Rec1<Rec2);}
424 
425 template <class TRec>
426 bool Cmp(const int& RelOp, const TRec& Rec1, const TRec& Rec2){
427  switch (RelOp){
428  case roLs: return Rec1<Rec2;
429  case roLEq: return Rec1<=Rec2;
430  case roEq: return Rec1==Rec2;
431  case roNEq: return Rec1!=Rec2;
432  case roGEq: return Rec1>=Rec2;
433  case roGt: return Rec1>Rec2;
434  default: Fail; return false;
435  }
436 }
437 
439 // Reference-Count
440 class TCRef{
441 private:
442  int Refs;
443 private:
444  TCRef& operator=(const TCRef&);
445  TCRef(const TCRef&);
446 public:
447  TCRef(): Refs(0){}
449 
450  void MkRef(){Refs++;}
451  void UnRef(){Assert(Refs>0); Refs--;}
452  bool NoRef() const {return Refs==0;}
453  int GetRefs() const {return Refs;}
454 };
455 
457 // Smart-Pointer-With-Reference-Count
458 template <class TRec>
459 class TPt{
460 public:
461  typedef TRec TObj;
462 private:
463  TRec* Addr;
464  void MkRef() const {
465  if (Addr!=NULL){
466  Addr->CRef.MkRef();
467  }
468  }
469  void UnRef() const {
470  if (Addr!=NULL){
471  Addr->CRef.UnRef();
472  if (Addr->CRef.NoRef()){delete Addr;}
473  }
474  }
475 public:
476  TPt(): Addr(NULL){}
477  TPt(const TPt& Pt): Addr(Pt.Addr){MkRef();}
478  TPt(TRec* _Addr): Addr(_Addr){MkRef();}
479  static TPt New(){return TObj::New();}
480  ~TPt(){UnRef();}
481  explicit TPt(TSIn& SIn);
482  explicit TPt(TSIn& SIn, void* ThisPt);
483  void Save(TSOut& SOut) const;
484  void LoadXml(const TPt<TXmlTok>& XmlTok, const TStr& Nm);
485  void SaveXml(TSOut& SOut, const TStr& Nm) const;
486 
487  TPt& operator=(const TPt& Pt){
488  if (this!=&Pt){Pt.MkRef(); UnRef(); Addr=Pt.Addr;} return *this;}
489  bool operator==(const TPt& Pt) const {return *Addr==*Pt.Addr;}
490  bool operator!=(const TPt& Pt) const {return *Addr!=*Pt.Addr;}
491  bool operator<(const TPt& Pt) const {return *Addr<*Pt.Addr;}
492 
493  TRec* operator->() const {Assert(Addr!=NULL); return Addr;}
494  TRec& operator*() const {Assert(Addr!=NULL); return *Addr;}
495  TRec& operator[](const int& RecN) const {
496  Assert(Addr!=NULL); return Addr[RecN];}
497  TRec* operator()() const {return Addr;}
498  //const TRec* operator()() const {return Addr;}
499  //TRec* operator()() {return Addr;}
500 
501  bool Empty() const { return Addr==NULL;}
502  void Clr(){UnRef(); Addr=NULL;}
503  int GetRefs() const {
504  if (Addr==NULL){return -1;} else {return Addr->CRef.GetRefs();}}
505 
506  int GetPrimHashCd() const {return Addr->GetPrimHashCd();}
507  int GetSecHashCd() const {return Addr->GetSecHashCd();}
508 
509  TPt<TRec> Clone(){return MkClone(*this);}
510 };
511 
513 // Simple-String
514 class TSStr{
515 private:
516  char* Bf;
517 public:
518  TSStr(): Bf(NULL){
519  Bf=new char[0+1]; Bf[0]=0;}
520  TSStr(const TSStr& SStr): Bf(NULL){
521  Bf=new char[strlen(SStr.Bf)+1]; strcpy(Bf, SStr.Bf);}
522  TSStr(const char* _Bf): Bf(NULL){
523  Bf=new char[strlen(_Bf)+1]; strcpy(Bf, _Bf);}
524  ~TSStr(){delete[] Bf;}
525 
526  TSStr& operator=(const TSStr& SStr){
527  if (this!=&SStr){
528  delete[] Bf; Bf=new char[strlen(SStr.Bf)+1]; strcpy(Bf, SStr.Bf);}
529  return *this;}
530 
531  char* CStr() {return Bf;}
532  const char* CStr() const {return Bf;}
533  bool Empty() const {return Bf[0]==0;}
534  int Len() const {return int(strlen(Bf));}
535 };
536 
538 // Conversion-Pointer64-To-Integers32
540 private:
541  union{
542  void* Pt;
544  struct {uint Ls; uint Ms;} UInt32;
545  } Val;
547 public:
549  Val.Pt=0; Val.UInt32.Ms=0; Val.UInt32.Ls=0;}
551  Val.UInt32.Ms=0; Val.UInt32.Ls=0; Val.Pt=Pt;}
552  TConv_Pt64Ints32(const uint& Ms, const uint& Ls){
553  Val.Pt=0; Val.UInt32.Ms=Ms; Val.UInt32.Ls=Ls;}
554 
555  void PutPt(void* Pt){Val.Pt=Pt;}
556  void* GetPt() const {return Val.Pt;}
557  void PutUInt64(const uint64& _UInt64){Val.UInt64=_UInt64;}
558  uint64 GetUInt64() const {return Val.UInt64;}
559  void PutMsUInt32(const uint& Ms){Val.UInt32.Ms=Ms;}
560  uint GetMsUInt32() const {return Val.UInt32.Ms;}
561  void PutLsUInt32(const uint& Ls){Val.UInt32.Ls=Ls;}
562  uint GetLsUInt32() const {return Val.UInt32.Ls;}
563 };
564 
566 // Swap
567 template <class TRec>
568 void Swap(TRec& Rec1, TRec& Rec2){
569  TRec Rec=Rec1; Rec1=Rec2; Rec2=Rec;
570 }
571 
573 
575 
578 public:
579  static inline int GetHashCd(const int hc1, const int hc2) {
580  unsigned long long sum = ((unsigned long long) hc1) + ((unsigned long long) hc2);
581  unsigned long long c = ((sum * (sum + 1)) >> 1) + hc1;
582  return (int) (c % 0x7fffffffULL); }
583 };
584 
586 
589 public:
590  static inline int GetHashCd(const int hc1, const int hc2) {
591  unsigned long long sum = ((unsigned long long) hc1) + ((unsigned long long) hc2);
592  unsigned long long c = ((sum * (sum + 1)) >> 1) + hc1;
593  unsigned int R = (unsigned int) (c >> 31), Q = (unsigned int) (c & 0x7fffffffULL);
594  if ((R & 0x80000000U) != 0) R -= 0x7fffffffU;
595  unsigned int RQ = R + Q;
596  if (RQ < 0x7fffffffU) return (int) RQ;
597  RQ -= 0x7fffffffU;
598  return (RQ == 0x7fffffffU) ? 0 : (int) RQ; }
599 };
600 
601 // Depending on the platform and compiler settings choose the faster implementation (of the same hash function)
602 #if (defined(GLib_64Bit)) && ! (defined(DEBUG) || defined(_DEBUG))
604 #else
606 #endif
607 
608 
609 #endif
Definition: bd.h:440
Definition: bd.h:514
void PutLsUInt32(const uint &Ls)
Definition: bd.h:561
UndefCopyAssign(TConv_Pt64Ints32)
int Refs
Definition: bd.h:442
void XLoadFromFile(const TStr &FNm, const TStr &Nm, TRec &Rec)
Definition: xmlser.h:63
char * CStr()
Definition: bd.h:531
const char * CStr() const
Definition: bd.h:532
TPairHashImpl2 TPairHashImpl
Definition: bd.h:605
static int GetHashCd(const int hc1, const int hc2)
Definition: bd.h:579
bool operator!=(const TPt &Pt) const
Definition: bd.h:490
#define ClassHdTP(TNm, PNm)
Definition: bd.h:135
TPt & operator=(const TPt &Pt)
Definition: bd.h:487
static void PutOnExeStopF(TOnExeStopF _OnExeStopF)
Definition: bd.h:230
void UnRef()
Definition: bd.h:451
Definition: bd.h:341
Definition: bd.h:340
void ExeStop(const char *MsgStr, const char *ReasonStr, const char *CondStr, const char *FNm, const int &LnN)
Definition: bd.cpp:88
TRelOp
Definition: bd.h:341
long double ldouble
Definition: bd.h:16
uint64 GetUInt64() const
Definition: bd.h:558
unsigned int uint
Definition: bd.h:11
int GetRefs() const
Definition: bd.h:453
#define Fail
Definition: bd.h:238
static TPt New()
Definition: bd.h:479
bool Empty() const
Definition: bd.h:501
void SaveXml(TSOut &SOut, const TStr &Nm) const
Definition: xmlser.h:33
Definition: bd.h:340
TCRef()
Definition: bd.h:447
TConv_Pt64Ints32()
Definition: bd.h:548
TRec * operator->() const
Definition: bd.h:493
TSStr(const char *_Bf)
Definition: bd.h:522
uint GetLsUInt32() const
Definition: bd.h:562
Definition: bd.h:340
bool operator()(const T &x, const T &y) const
Definition: bd.h:364
bool operator()(const T &x, const T &y) const
Definition: bd.h:370
void Clr()
Definition: bd.h:502
int Cmp(const T &d1, const T &d2) const
Definition: bd.h:371
TSStr(const TSStr &SStr)
Definition: bd.h:520
Definition: bd.h:341
unsigned char uint8
Definition: bd.h:30
void PutPt(void *Pt)
Definition: bd.h:555
TPt()
Definition: bd.h:476
bool IsXLoadFromFileOk(const TStr &FNm, const TStr &Nm, TRec &Rec, TStr &MsgStr)
Definition: xmlser.h:45
void ErrNotify(const char *NotifyCStr)
Definition: bd.h:74
Definition: bd.h:224
~TPt()
Definition: bd.h:480
Definition: fl.h:58
Definition: xml.h:5
Definition: bd.h:63
bool operator!=(const TRec &Rec1, const TRec &Rec2)
Definition: bd.h:414
ptrdiff_t ssize_t
Definition: bd.h:42
PPp MkClone(const PPp &Pp)
Definition: pp.h:237
TLogOp
Definition: bd.h:340
void SaveToErrLog(const char *MsgCStr)
Definition: bd.cpp:49
bool Empty() const
Definition: bd.h:533
Definition: bd.h:341
void * Pt
Definition: bd.h:542
TRec TObj
Definition: bd.h:461
void WarnNotify(const char *NotifyCStr)
Definition: bd.h:72
Definition: bd.h:368
Definition: bd.h:341
TConv_Pt64Ints32(const uint &Ms, const uint &Ls)
Definition: bd.h:552
struct TConv_Pt64Ints32::@1::@2 UInt32
int int32
Definition: bd.h:21
unsigned long long uint64
Definition: bd.h:38
TSStr & operator=(const TSStr &SStr)
Definition: bd.h:526
void PutMsUInt32(const uint &Ms)
Definition: bd.h:559
TLoc
Definition: bd.h:63
TRec & operator[](const int &RecN) const
Definition: bd.h:495
uint64 UInt64
Definition: bd.h:543
Definition: bd.h:356
Definition: bd.h:402
bool operator>=(const TRec &Rec1, const TRec &Rec2)
Definition: bd.h:423
size_t TSize
Definition: bd.h:58
#define Assert(Cond)
Definition: bd.h:251
char int8
Definition: bd.h:19
int GetSecHashCd() const
Definition: bd.h:507
TRec * operator()() const
Definition: bd.h:497
unsigned long ulong
Definition: bd.h:12
static int GetHashCd(const int hc1, const int hc2)
Definition: bd.h:590
~TCRef()
Definition: bd.h:448
Definition: bd.h:341
~TSStr()
Definition: bd.h:524
TPt(const TPt &Pt)
Definition: bd.h:477
bool operator==(const TPt &Pt) const
Definition: bd.h:489
unsigned char uchar
Definition: bd.h:10
static TOnExeStopF OnExeStopF
Definition: bd.h:227
bool operator<=(const TRec &Rec1, const TRec &Rec2)
Definition: bd.h:420
Definition: fl.h:128
void MkRef()
Definition: bd.h:450
unsigned int uint32
Definition: bd.h:32
void MkRef() const
Definition: bd.h:464
TRec & operator*() const
Definition: bd.h:494
unsigned short ushort
Definition: bd.h:13
Definition: xml.h:198
void InfoNotify(const char *NotifyCStr)
Definition: bd.h:70
Definition: bd.h:63
static bool IsOnExeStopF()
Definition: bd.h:229
int Len() const
Definition: bd.h:534
Definition: bd.h:396
bool operator()(const T &x, const T &y) const
Definition: bd.h:398
TCRef & operator=(const TCRef &)
Definition: ut.h:161
float sdouble
Definition: bd.h:15
Computes a hash code from a pair of hash codes.
Definition: bd.h:577
Definition: bd.h:379
Definition: bd.h:362
TRec * Addr
Definition: bd.h:463
Definition: bd.h:385
long long int64
Definition: bd.h:27
TPt< TRec > Clone()
Definition: bd.h:509
void Save(TSOut &SOut) const
Definition: xmlser.h:16
Definition: dt.h:412
void UnRef() const
Definition: bd.h:469
TSStr()
Definition: bd.h:518
FILE * TFileId
Definition: bd.h:17
uint Ls
Definition: bd.h:544
int GetRefs() const
Definition: bd.h:503
Definition: xml.h:326
Definition: bd.h:63
Definition: bd.h:196
TConv_Pt64Ints32(void *Pt)
Definition: bd.h:550
short int16
Definition: bd.h:20
void StatNotify(const char *NotifyCStr)
Definition: bd.h:76
uint Ms
Definition: bd.h:544
bool Cmp(const int &RelOp, const TRec &Rec1, const TRec &Rec2)
Definition: bd.h:426
bool operator<(const TPt &Pt) const
Definition: bd.h:491
bool(* TOnExeStopF)(char *MsgCStr)
Definition: bd.h:226
void WrNotify(const char *CaptionCStr, const char *NotifyCStr)
Definition: bd.cpp:41
uint GetMsUInt32() const
Definition: bd.h:560
bool operator()(const T &x, const T &y) const
Definition: bd.h:387
int operator()(const T &x, const T &y) const
Definition: bd.h:404
Definition: bd.h:341
bool operator()(const T &x, const T &y) const
Definition: bd.h:358
unsigned short uint16
Definition: bd.h:31
void PutUInt64(const uint64 &_UInt64)
Definition: bd.h:557
Definition: bd.h:340
Definition: bd.h:341
TPt(TRec *_Addr)
Definition: bd.h:478
Computes a hash code from a pair of hash codes.
Definition: bd.h:588
void LoadXml(const TPt< TXmlTok > &XmlTok, const TStr &Nm)
Definition: xmlser.h:21
static TOnExeStopF GetOnExeStopF()
Definition: bd.h:231
int GetPrimHashCd() const
Definition: bd.h:506
union TConv_Pt64Ints32::@1 Val
bool operator()(const T &x, const T &y) const
Definition: bd.h:381
char * Bf
Definition: bd.h:516
void Swap(TRec &Rec1, TRec &Rec2)
Definition: bd.h:568
void * GetPt() const
Definition: bd.h:556
bool NoRef() const
Definition: bd.h:452
int Cmp(const T &d1, const T &d2) const
Definition: bd.h:388
bool operator>(const TRec &Rec1, const TRec &Rec2)
Definition: bd.h:417