summaryrefslogtreecommitdiff
path: root/storage/connect/block.h
diff options
context:
space:
mode:
Diffstat (limited to 'storage/connect/block.h')
-rw-r--r--storage/connect/block.h33
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