diff options
Diffstat (limited to 'storage/connect/block.h')
-rw-r--r-- | storage/connect/block.h | 33 |
1 files changed, 20 insertions, 13 deletions
diff --git a/storage/connect/block.h b/storage/connect/block.h index 2ca9586ee3f..479bee373fa 100644 --- a/storage/connect/block.h +++ b/storage/connect/block.h @@ -1,19 +1,19 @@ /**************** Block H Declares Source Code File (.H) ***************/ -/* Name: BLOCK.H Version 2.0 */ +/* Name: BLOCK.H Version 2.1 */ /* */ -/* (C) Copyright to the author Olivier BERTRAND 1998 */ +/* (C) Copyright to the author Olivier BERTRAND 1998 - 2020 */ /* */ /* This file contains the BLOCK pure virtual class definition. */ /*---------------------------------------------------------------------*/ /* Note: one of the main purpose of this base class is to take care */ -/* of the very specific way Plug handles memory allocation. */ +/* of the very specific way Connect handles memory allocation. */ /* Instead of allocating small chunks of storage via new or malloc */ -/* Plug works in its private memory pool in which it does the sub- */ +/* Connect works in its private memory pool in which it does the sub- */ /* allocation using the function PlugSubAlloc. These are never freed */ /* separately but when a transaction is terminated, the entire pool */ /* is set to empty, resulting in a very fast and efficient allocate */ /* process, no garbage collection problem, and an automatic recovery */ -/* procedure (via LongJump) when the memory is exhausted. */ +/* procedure (via throw) when the memory is exhausted. */ /* For this to work new must be given two parameters, first the */ /* global pointer of the Plug application, and an optional pointer to */ /* the memory pool to use, defaulting to NULL meaning using the Plug */ @@ -30,6 +30,8 @@ #define DllExport #endif // !__WIN__ +typedef class JSON *PJSON; + /***********************************************************************/ /* Definition of class BLOCK with its method function new. */ /***********************************************************************/ @@ -37,21 +39,26 @@ typedef class BLOCK *PBLOCK; class DllExport BLOCK { public: - void * operator new(size_t size, PGLOBAL g, void *p = NULL) { - xtrc(256, "New BLOCK: size=%d g=%p p=%p\n", size, g, p); - return (PlugSubAlloc(g, p, size)); - } // end of new + void *operator new(size_t size, PGLOBAL g, void *mp = NULL) { + xtrc(256, "New BLOCK: size=%d g=%p p=%p\n", size, g, mp); + return PlugSubAlloc(g, mp, size); + } // end of new + + void* operator new(size_t size, size_t mp) { + xtrc(256, "Realloc at: mp=%zd\n", mp); + return (void*)mp; + } // end of new - virtual void Printf(PGLOBAL, FILE *, uint) {} // Produce file desc + virtual void Printf(PGLOBAL, FILE *, uint) {} // Produce file desc virtual void Prints(PGLOBAL, char *, uint) {} // Produce string desc #if !defined(__BORLANDC__) // Avoid warning C4291 by defining a matching dummy delete operator - void operator delete(void *, PGLOBAL, void *) {} - void operator delete(void *, size_t) {} + void operator delete(void*, PGLOBAL, void *) {} + //void operator delete(void*, size_t) {} #endif virtual ~BLOCK() {} - }; // end of class BLOCK +}; // end of class BLOCK #endif // !BLOCK_DEFINED |