diff options
author | Alexander Barkov <bar@mnogosearch.org> | 2013-01-18 19:21:44 +0400 |
---|---|---|
committer | Alexander Barkov <bar@mnogosearch.org> | 2013-01-18 19:21:44 +0400 |
commit | d7143a4160d093abecf911de4084d5dd3aa3be92 (patch) | |
tree | 4492cb6ec957a6decf98da85482c88fbe9b18465 /storage/connect/block.h | |
parent | 055b62f404ee0a0463ee8ff98a0e24c083b95f1d (diff) | |
download | mariadb-git-d7143a4160d093abecf911de4084d5dd3aa3be92.tar.gz |
Adding the CONNECT storage engine sources.
Diffstat (limited to 'storage/connect/block.h')
-rw-r--r-- | storage/connect/block.h | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/storage/connect/block.h b/storage/connect/block.h new file mode 100644 index 00000000000..7360e442185 --- /dev/null +++ b/storage/connect/block.h @@ -0,0 +1,57 @@ +/**************** Block H Declares Source Code File (.H) ***************/
+/* Name: BLOCK.H Version 2.0 */
+/* */
+/* (C) Copyright to the author Olivier BERTRAND 1998 */
+/* */
+/* 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. */
+/* Instead of allocating small chunks of storage via new or malloc */
+/* Plug 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. */
+/* 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 */
+/* standard default memory pool, example: */
+/* tabp = new(g) XTAB("EMPLOYEE"); */
+/* allocates a XTAB class object in the standard Plug memory pool. */
+/***********************************************************************/
+#if !defined(BLOCK_DEFINED)
+#define BLOCK_DEFINED
+
+#if defined(WIN32) && !defined(NOEX)
+#define DllExport __declspec( dllexport )
+#else // !WIN32
+#define DllExport
+#endif // !WIN32
+
+/***********************************************************************/
+/* Definition of class BLOCK with its method function new. */
+/***********************************************************************/
+typedef class BLOCK *PBLOCK;
+
+class DllExport BLOCK {
+ public:
+ void * operator new(size_t size, PGLOBAL g, void *p = NULL) {
+#ifdef DEBTRACE
+if (debug != NULL)
+ htrc("New BLOCK: size=%d g=%p p=%p\n", size, g, p);
+#endif
+ return (PlugSubAlloc(g, p, size));
+ } // end of new
+
+ virtual void Print(PGLOBAL, FILE *, uint) {} // Produce file desc
+ virtual void Print(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 *) {}
+#endif
+ }; // end of class BLOCK
+
+#endif // !BLOCK_DEFINED
|