home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1998 May / Pcwk5b98.iso / Borland / Cplus45 / BC45 / BOCOLE.PAK / OLENEW.CPP < prev    next >
C/C++ Source or Header  |  1995-08-29  |  2KB  |  91 lines

  1. //
  2. //**************************************************************************
  3. //
  4. // OleNew.cpp -- Remap global operator new to use the current Ole2 allocator
  5. //
  6. // Copyright (c) 1993,94 by Borland International, Inc. All rights reserved
  7. //
  8. //**************************************************************************
  9.  
  10. #include "BOle.h"
  11. #include <Windows.h>
  12.  
  13. #include <string.h>
  14. #include <compobj.h>
  15.  
  16.  
  17. /*inline*/ void _FAR * OleAlloc (unsigned size) 
  18. {
  19.     void _FAR * p = NULL;
  20.     IMalloc *pMalloc;
  21.  
  22. #ifndef WIN32
  23.     if (SUCCEEDED(CoGetMalloc (MEMCTX_SHARED, &pMalloc))) {
  24.         p = pMalloc->Alloc (size);
  25.         pMalloc->Release();
  26.     }
  27.     return p;
  28. #else
  29.     if (SUCCEEDED(CoGetMalloc(MEMCTX_TASK, &pMalloc))) {
  30.         p = pMalloc->Alloc(size); 
  31.         pMalloc->Release();
  32.     }
  33.     return p;
  34. #endif
  35. }
  36.  
  37. inline BOOL OleFree (void * p) 
  38. {
  39.     IMalloc *pMalloc;
  40.  
  41. #ifndef WIN32
  42.     if (SUCCEEDED(CoGetMalloc(MEMCTX_SHARED, &pMalloc))) {
  43.         pMalloc->Free(p);
  44.         return TRUE;
  45.     }
  46.     return FALSE;
  47. #else
  48.     if (SUCCEEDED(CoGetMalloc(MEMCTX_TASK, &pMalloc))) {
  49.         pMalloc->Free(p);
  50.         return TRUE;
  51.     }
  52.     return FALSE;
  53. #endif
  54. }
  55.  
  56. void _FAR * _cdecl _FARFUNC operator new (unsigned size)
  57. {
  58.     return OleAlloc(size);
  59. }
  60.  
  61. #ifndef WIN32
  62. void _FAR * _cdecl _FARFUNC operator new (unsigned long size)
  63. {
  64.     return OleAlloc(size);
  65. }
  66. #endif
  67.  
  68. void _FAR * _cdecl _FARFUNC operator new[] (unsigned size)
  69. {
  70.     return OleAlloc(size);
  71. }
  72.  
  73. #ifndef WIN32
  74. void _FAR * _cdecl _FARFUNC operator new[] (unsigned long size)
  75. {
  76.     return OleAlloc(size);
  77. }
  78. #endif
  79.  
  80. void _cdecl _FARFUNC operator delete (void *p)
  81. {
  82.     OleFree(p);
  83. }
  84.  
  85. void _cdecl _FARFUNC operator delete[] (void *p)
  86. {
  87.     OleFree(p);
  88. }
  89.  
  90.  
  91.