LCOV - code coverage report
Current view: directory - gfx/skia/src/core - SkTemplatesPriv.h (source / functions) Found Hit Coverage
Test: app.info Lines: 8 0 0.0 %
Date: 2012-06-02 Functions: 2 0 0.0 %

       1                 : 
       2                 : /*
       3                 :  * Copyright 2006 The Android Open Source Project
       4                 :  *
       5                 :  * Use of this source code is governed by a BSD-style license that can be
       6                 :  * found in the LICENSE file.
       7                 :  */
       8                 : 
       9                 : 
      10                 : #ifndef SkTemplatesPriv_DEFINED
      11                 : #define SkTemplatesPriv_DEFINED
      12                 : 
      13                 : #include "SkTemplates.h"
      14                 : 
      15                 : ////////////////////////////////////////////////////////////////////////////////
      16                 : 
      17                 : #ifdef SK_BUILD_FOR_WIN32
      18                 :     #define SK_PLACEMENT_NEW(result, classname, storage, storageSize)   \
      19                 :         result = SkNEW(classname)
      20                 : 
      21                 :     #define SK_PLACEMENT_NEW_ARGS(result, classname, storage, storageSize, args)    \
      22                 :         result = SkNEW_ARGS(classname, args)
      23                 : #else
      24                 :     #include <new>
      25                 :     #define SK_PLACEMENT_NEW(result, classname, storage, storagesize)       \
      26                 :     do {                                                                    \
      27                 :         if (storagesize)                                                    \
      28                 :         {                                                                   \
      29                 :             SkASSERT(storageSize >= sizeof(classname));                     \
      30                 :             result = new(storage) classname;                                \
      31                 :         }                                                                   \
      32                 :         else                                                                \
      33                 :             result = SkNEW(classname);                                      \
      34                 :     } while (0)
      35                 : 
      36                 :     #define SK_PLACEMENT_NEW_ARGS(result, classname, storage, storagesize, args)        \
      37                 :     do {                                                                                \
      38                 :         if (storagesize)                                                                \
      39                 :         {                                                                               \
      40                 :             SkASSERT(storageSize >= sizeof(classname));                                 \
      41                 :             result = new(storage) classname args;                                       \
      42                 :         }                                                                               \
      43                 :         else                                                                            \
      44                 :             result = SkNEW_ARGS(classname, args);                                       \
      45                 :     } while (0)
      46                 : #endif
      47                 : 
      48                 : ////////////////////////////////////////////////////////////////////////////////
      49                 : 
      50                 : template <class T> class SkAutoTPlacementDelete {
      51                 : public:
      52               0 :     SkAutoTPlacementDelete(T* obj, void* storage) : fObj(obj), fStorage(storage)
      53                 :     {
      54               0 :     }
      55               0 :     ~SkAutoTPlacementDelete()
      56                 :     {
      57               0 :         if (fObj)
      58                 :         {
      59               0 :             if (fObj == fStorage)
      60               0 :                 fObj->~T();
      61                 :             else
      62               0 :                 delete fObj;
      63                 :         }
      64               0 :     }
      65                 :     T* detach()
      66                 :     {
      67                 :         T*  obj = fObj;
      68                 :         fObj = NULL;
      69                 :         return obj;
      70                 :     }
      71                 : private:
      72                 :     T*      fObj;
      73                 :     void*   fStorage;
      74                 : };
      75                 : 
      76                 : #endif

Generated by: LCOV version 1.7