#include "nsXPCOM.h"#include "nsIMemory.h"
Include dependency graph for nsMemory.h:
This graph shows which files directly or indirectly include this file:Classes | |
| class | nsMemory |
| Static helper routines to manage memory. More... | |
| struct | mozilla::AlignmentTestStruct< T > |
Namespaces | |
| namespace | mozilla |
This is the base class for all link classes. | |
Defines | |
| #define | NS_MEMORY_CONTRACTID "@mozilla.org/xpcom/memory-service;1" |
| #define | NS_MEMORY_CLASSNAME "Global Memory Service" |
| #define | NS_MEMORY_CID |
| #define | NS_FREE_XPCOM_POINTER_ARRAY(size, array, freeFunc) |
| Macro to free all elements of an XPCOM array of a given size using freeFunc, then frees the array itself using nsMemory::Free(). | |
| #define | NS_FREE_XPCOM_ALLOCATED_POINTER_ARRAY(size, array) NS_FREE_XPCOM_POINTER_ARRAY((size), (array), NS_Free) |
| Macro to free arrays of non-refcounted objects allocated by the shared allocator (nsMemory) such as strings and wstrings. | |
| #define | NS_FREE_XPCOM_ISUPPORTS_POINTER_ARRAY(size, array) NS_FREE_XPCOM_POINTER_ARRAY((size), (array), NS_IF_RELEASE) |
| Macro to free an array of pointers to nsISupports (or classes derived from it). | |
| #define | NS_ARRAY_LENGTH(array_) (sizeof(array_)/sizeof(array_[0])) |
| Helpful array length function for calculating the length of a statically declared array. | |
| #define | NS_ALIGNMENT_OF(t_) (sizeof(mozilla::AlignmentTestStruct<t_>) - sizeof(t_)) |
Enumerations | |
| enum | nsAssignmentType { NS_ASSIGNMENT_COPY, NS_ASSIGNMENT_DEPEND, NS_ASSIGNMENT_ADOPT } |
An enumeration type used to represent a method of assignment. More... | |
| #define NS_ALIGNMENT_OF | ( | t_ | ) | (sizeof(mozilla::AlignmentTestStruct<t_>) - sizeof(t_)) |
| #define NS_ARRAY_LENGTH | ( | array_ | ) | (sizeof(array_)/sizeof(array_[0])) |
Helpful array length function for calculating the length of a statically declared array.
| #define NS_FREE_XPCOM_ALLOCATED_POINTER_ARRAY | ( | size, | ||
| array | ||||
| ) | NS_FREE_XPCOM_POINTER_ARRAY((size), (array), NS_Free) |
Macro to free arrays of non-refcounted objects allocated by the shared allocator (nsMemory) such as strings and wstrings.
A convenience wrapper around NS_FREE_XPCOM_POINTER_ARRAY.
| size | Number of elements in the array. If not a constant, this should be a PRInt32. Note that this means this macro will not work if size >= 2^31. | |
| array | The array to be freed. |
| #define NS_FREE_XPCOM_ISUPPORTS_POINTER_ARRAY | ( | size, | ||
| array | ||||
| ) | NS_FREE_XPCOM_POINTER_ARRAY((size), (array), NS_IF_RELEASE) |
Macro to free an array of pointers to nsISupports (or classes derived from it).
A convenience wrapper around NS_FREE_XPCOM_POINTER_ARRAY.
Note that if you know that none of your nsISupports pointers are going to be 0, you can gain a bit of speed by calling NS_FREE_XPCOM_POINTER_ARRAY directly and using NS_RELEASE as your free function.
| size | Number of elements in the array. If not a constant, this should be a PRInt32. Note that this means this macro will not work if size >= 2^31. | |
| array | The array to be freed. |
| #define NS_FREE_XPCOM_POINTER_ARRAY | ( | size, | ||
| array, | ||||
| freeFunc | ||||
| ) |
PR_BEGIN_MACRO \ PRInt32 iter_ = PRInt32(size); \ while (--iter_ >= 0) \ freeFunc((array)[iter_]); \ NS_Free((array)); \ PR_END_MACRO
Macro to free all elements of an XPCOM array of a given size using freeFunc, then frees the array itself using nsMemory::Free().
Note that this macro (and its wrappers) can be used to deallocate a partially- or completely-built array while unwinding an error condition inside the XPCOM routine that was going to return the array. For this to work on a partially-built array, your code needs to be building the array from index 0 upwards, and simply pass the number of elements that have already been built (and thus need to be freed) as |size|.
Thanks to <alecf@netscape.com> for suggesting this form, which allows the macro to be used with NS_RELEASE / NS_RELEASE_IF in addition to nsMemory::Free.
| size | Number of elements in the array. If not a constant, this should be a PRInt32. Note that this means this macro will not work if size >= 2^31. | |
| array | The array to be freed. | |
| freeFunc | The function or macro to be used to free it. For arrays of nsISupports (or any class derived from it), NS_IF_RELEASE (or NS_RELEASE) should be passed as freeFunc. For most (all?) other pointer types (including XPCOM strings and wstrings), nsMemory::Free should be used, since the shared-allocator (nsMemory) is what will have been used to allocate the memory. |
| #define NS_MEMORY_CID |
{ /* 30a04e40-38e7-11d4-8cf5-0060b0fc14a3 */ \
0x30a04e40, \
0x38e7, \
0x11d4, \
{0x8c, 0xf5, 0x00, 0x60, 0xb0, 0xfc, 0x14, 0xa3} \
}
| #define NS_MEMORY_CLASSNAME "Global Memory Service" |
| #define NS_MEMORY_CONTRACTID "@mozilla.org/xpcom/memory-service;1" |
| enum nsAssignmentType |
1.7.1