|
1 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ |
|
2 /* vim: set ts=8 sts=2 et sw=2 tw=80: */ |
|
3 /* This Source Code Form is subject to the terms of the Mozilla Public |
|
4 * License, v. 2.0. If a copy of the MPL was not distributed with this |
|
5 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ |
|
6 |
|
7 #ifndef mozilla_RefCountType_h |
|
8 #define mozilla_RefCountType_h |
|
9 |
|
10 #include <stdint.h> |
|
11 |
|
12 /** |
|
13 * MozRefCountType is Mozilla's reference count type. |
|
14 * |
|
15 * We use the same type to represent the refcount of RefCounted objects |
|
16 * as well, in order to be able to use the leak detection facilities |
|
17 * that are implemented by XPCOM. |
|
18 * |
|
19 * Note that this type is not in the mozilla namespace so that it is |
|
20 * usable for both C and C++ code. |
|
21 */ |
|
22 typedef uintptr_t MozRefCountType; |
|
23 |
|
24 /* |
|
25 * This is the return type for AddRef() and Release() in nsISupports. |
|
26 * IUnknown of COM returns an unsigned long from equivalent functions. |
|
27 * |
|
28 * The following ifdef exists to maintain binary compatibility with |
|
29 * IUnknown, the base interface in Microsoft COM. |
|
30 */ |
|
31 #ifdef XP_WIN |
|
32 typedef unsigned long MozExternalRefCountType; |
|
33 #else |
|
34 typedef uint32_t MozExternalRefCountType; |
|
35 #endif |
|
36 |
|
37 #endif |