webengine/osswebengine/MemoryManager/Inc/oom.h
changeset 0 dd21522fd290
child 26 cb62a4f66ebe
equal deleted inserted replaced
-1:000000000000 0:dd21522fd290
       
     1 /*
       
     2 * Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies).
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of the License "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:  
       
    15 *
       
    16 */
       
    17 
       
    18 #ifndef __OOM_H__
       
    19 #define __OOM_H__
       
    20 
       
    21 #ifdef __OOM__
       
    22 
       
    23 #include "MemoryManager.h"
       
    24 
       
    25 /*
       
    26 #include "ObjectBase.h"
       
    27 
       
    28 // base class with overloaded new/delete operator
       
    29 #define OOM_NEW_DELETE  public: \
       
    30             static TAny* operator new( TUint size )   { return CObjectBase::operator new(size); }\
       
    31             static void operator delete( TAny* ptr )  { CObjectBase::operator delete(ptr); }
       
    32 
       
    33 #define OOM_NEW_DELETE_WITH_ARRAY public: \
       
    34             static TAny* operator new( TUint size )   { return CObjectBase::operator new(size); }\
       
    35             static void  operator delete( TAny* ptr ) { CObjectBase::operator delete(ptr); } \
       
    36             static TAny* operator new[]( TUint size ) { return CObjectBase::operator new[](size); }\
       
    37             static void  operator delete[]( TAny* ptr ) { CObjectBase::operator delete[](ptr); }
       
    38 */
       
    39 
       
    40 #ifdef OOM_LOGGING
       
    41 
       
    42 // logging the function memory usage, the function shouldn't return between the pair
       
    43 #define OOM_CRITICAL_PATH_BEGIN(func, sz) FunctionLoggerWrapper* __oom_function_logger_wrapper = new FunctionLoggerWrapper(TPtrC8( (const TUint8*)func, strlen(func) ), TPtrC8( (const TUint8*)__FILE__, strlen(__FILE__) ), __LINE__, sz ); {  
       
    44 #define OOM_CRITICAL_PATH_END         } delete __oom_function_logger_wrapper;
       
    45 
       
    46 #else // OOM_LOGGING
       
    47 
       
    48 #define OOM_CRITICAL_PATH_BEGIN(func, sz)
       
    49 #define OOM_CRITICAL_PATH_END
       
    50 
       
    51 #endif
       
    52 
       
    53 // precheck and postcheck macros, the function shouldn't return between precheck and postcheck pair.
       
    54 // usage:
       
    55 //      OOM_PRE_CHECK( 100000, "MemoryConsumer::consume" )
       
    56 //      .... your code without return.
       
    57 //      OOM_POST_CHECK_FAILED { return_with_oom; }
       
    58 //      .... your normal return.
       
    59 #define OOM_PRE_CHECK(s, m, c)  { _LIT8(__temp, c); if( MemoryManager::PreCheck( s, m, __temp ) ) { 
       
    60 #define OOM_POST_CHECK_FAILED(__r)    } } if( MemoryManager::PostCheck() != ENoOOM ) { __r;}
       
    61 
       
    62 #else // __OOM__
       
    63 
       
    64 // empty macros
       
    65 #define OOM_NEW_DELETE
       
    66 #define OOM_NEW_DELETE_WITH_ARRAY
       
    67 #define OOM_CRITICAL_PATH_BEGIN(func, sz)
       
    68 #define OOM_CRITICAL_PATH_END
       
    69 #define OOM_PRE_CHECK( s, m, c )
       
    70 #define OOM_POST_CHECK_FAILED(__r)
       
    71 
       
    72 #endif
       
    73 
       
    74 #endif  //__OOM_H__