| |
| /* |
| * Copyright 2010 Google Inc. |
| * |
| * Use of this source code is governed by a BSD-style license that can be |
| * found in the LICENSE file. |
| */ |
| |
| |
| |
| #ifndef GrInstanceCounter_DEFINED |
| #define GrInstanceCounter_DEFINED |
| |
| #include "GrTypes.h" |
| |
| template <typename T> class GrInstanceCounter { |
| public: |
| GrInstanceCounter() { |
| ++gCounter; |
| GrPrintf("+ %s %d\n", T::InstanceCounterClassName(), gCounter); |
| } |
| |
| ~GrInstanceCounter() { |
| --gCounter; |
| GrPrintf("- %s %d\n", T::InstanceCounterClassName(), gCounter); |
| } |
| |
| private: |
| static int gCounter; |
| }; |
| |
| template <typename T> int GrInstanceCounter<T>::gCounter; |
| |
| #define DECLARE_INSTANCE_COUNTER(T) \ |
| static const char* InstanceCounterClassName() { return #T; } \ |
| friend class GrInstanceCounter<T>; \ |
| GrInstanceCounter<T> fInstanceCounter |
| |
| #endif |
| |