Annotation of sbbs/include/mozilla/nspr/prmem.h, revision 1.1.1.1

1.1       root        1: /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
                      2: /* 
                      3:  * The contents of this file are subject to the Mozilla Public
                      4:  * License Version 1.1 (the "License"); you may not use this file
                      5:  * except in compliance with the License. You may obtain a copy of
                      6:  * the License at http://www.mozilla.org/MPL/
                      7:  * 
                      8:  * Software distributed under the License is distributed on an "AS
                      9:  * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
                     10:  * implied. See the License for the specific language governing
                     11:  * rights and limitations under the License.
                     12:  * 
                     13:  * The Original Code is the Netscape Portable Runtime (NSPR).
                     14:  * 
                     15:  * The Initial Developer of the Original Code is Netscape
                     16:  * Communications Corporation.  Portions created by Netscape are 
                     17:  * Copyright (C) 1998-2000 Netscape Communications Corporation.  All
                     18:  * Rights Reserved.
                     19:  * 
                     20:  * Contributor(s):
                     21:  * 
                     22:  * Alternatively, the contents of this file may be used under the
                     23:  * terms of the GNU General Public License Version 2 or later (the
                     24:  * "GPL"), in which case the provisions of the GPL are applicable 
                     25:  * instead of those above.  If you wish to allow use of your 
                     26:  * version of this file only under the terms of the GPL and not to
                     27:  * allow others to use your version of this file under the MPL,
                     28:  * indicate your decision by deleting the provisions above and
                     29:  * replace them with the notice and other provisions required by
                     30:  * the GPL.  If you do not delete the provisions above, a recipient
                     31:  * may use your version of this file under either the MPL or the
                     32:  * GPL.
                     33:  */
                     34: 
                     35: /*
                     36: ** File: prmem.h
                     37: ** Description: API to NSPR 2.0 memory management functions
                     38: **
                     39: */
                     40: #ifndef prmem_h___
                     41: #define prmem_h___
                     42: 
                     43: #include "prtypes.h"
                     44: #include <stddef.h>
                     45: #include <stdlib.h>
                     46: 
                     47: PR_BEGIN_EXTERN_C
                     48: 
                     49: /*
                     50: ** Thread safe memory allocation.
                     51: **
                     52: ** NOTE: pr wraps up malloc, free, calloc, realloc so they are already
                     53: ** thread safe (and are not declared here - look in stdlib.h).
                     54: */
                     55: 
                     56: /*
                     57: ** PR_Malloc, PR_Calloc, PR_Realloc, and PR_Free have the same signatures
                     58: ** as their libc equivalent malloc, calloc, realloc, and free, and have
                     59: ** the same semantics.  (Note that the argument type size_t is replaced
                     60: ** by PRUint32.)  Memory allocated by PR_Malloc, PR_Calloc, or PR_Realloc
                     61: ** must be freed by PR_Free.
                     62: */
                     63: 
                     64: NSPR_API(void *) PR_Malloc(PRUint32 size);
                     65: 
                     66: NSPR_API(void *) PR_Calloc(PRUint32 nelem, PRUint32 elsize);
                     67: 
                     68: NSPR_API(void *) PR_Realloc(void *ptr, PRUint32 size);
                     69: 
                     70: NSPR_API(void) PR_Free(void *ptr);
                     71: 
                     72: /*
                     73: ** The following are some convenience macros defined in terms of
                     74: ** PR_Malloc, PR_Calloc, PR_Realloc, and PR_Free.
                     75: */
                     76: 
                     77: /***********************************************************************
                     78: ** FUNCTION:   PR_MALLOC()
                     79: ** DESCRIPTION:
                     80: **   PR_NEW() allocates an untyped item of size _size from the heap.
                     81: ** INPUTS:  _size: size in bytes of item to be allocated
                     82: ** OUTPUTS:    untyped pointer to the node allocated
                     83: ** RETURN: pointer to node or error returned from malloc().
                     84: ***********************************************************************/
                     85: #define PR_MALLOC(_bytes) (PR_Malloc((_bytes)))
                     86: 
                     87: /***********************************************************************
                     88: ** FUNCTION:   PR_NEW()
                     89: ** DESCRIPTION:
                     90: **   PR_NEW() allocates an item of type _struct from the heap.
                     91: ** INPUTS:  _struct: a data type
                     92: ** OUTPUTS:    pointer to _struct
                     93: ** RETURN: pointer to _struct or error returns from malloc().
                     94: ***********************************************************************/
                     95: #define PR_NEW(_struct) ((_struct *) PR_MALLOC(sizeof(_struct)))
                     96: 
                     97: /***********************************************************************
                     98: ** FUNCTION:   PR_REALLOC()
                     99: ** DESCRIPTION:
                    100: **   PR_REALLOC() re-allocates _ptr bytes from the heap as a _size
                    101: **   untyped item.
                    102: ** INPUTS: _ptr: pointer to node to reallocate
                    103: **          _size: size of node to allocate
                    104: ** OUTPUTS:    pointer to node allocated
                    105: ** RETURN: pointer to node allocated
                    106: ***********************************************************************/
                    107: #define PR_REALLOC(_ptr, _size) (PR_Realloc((_ptr), (_size)))
                    108: 
                    109: /***********************************************************************
                    110: ** FUNCTION:   PR_CALLOC()
                    111: ** DESCRIPTION:
                    112: **   PR_CALLOC() allocates a _size bytes untyped item from the heap
                    113: **   and sets the allocated memory to all 0x00.
                    114: ** INPUTS: _size: size of node to allocate
                    115: ** OUTPUTS:    pointer to node allocated
                    116: ** RETURN: pointer to node allocated
                    117: ***********************************************************************/
                    118: #define PR_CALLOC(_size) (PR_Calloc(1, (_size)))
                    119: 
                    120: /***********************************************************************
                    121: ** FUNCTION:   PR_NEWZAP()
                    122: ** DESCRIPTION:
                    123: **   PR_NEWZAP() allocates an item of type _struct from the heap
                    124: **   and sets the allocated memory to all 0x00.
                    125: ** INPUTS: _struct: a data type
                    126: ** OUTPUTS:    pointer to _struct
                    127: ** RETURN: pointer to _struct
                    128: ***********************************************************************/
                    129: #define PR_NEWZAP(_struct) ((_struct*)PR_Calloc(1, sizeof(_struct)))
                    130: 
                    131: /***********************************************************************
                    132: ** FUNCTION:   PR_DELETE()
                    133: ** DESCRIPTION:
                    134: **   PR_DELETE() unallocates an object previosly allocated via PR_NEW()
                    135: **   or PR_NEWZAP() to the heap.
                    136: ** INPUTS: pointer to previously allocated object
                    137: ** OUTPUTS:    the referenced object is returned to the heap
                    138: ** RETURN: void
                    139: ***********************************************************************/
                    140: #define PR_DELETE(_ptr) { PR_Free(_ptr); (_ptr) = NULL; }
                    141: 
                    142: /***********************************************************************
                    143: ** FUNCTION:   PR_FREEIF()
                    144: ** DESCRIPTION:
                    145: **   PR_FREEIF() conditionally unallocates an object previously allocated
                    146: **   vial PR_NEW() or PR_NEWZAP(). If the pointer to the object is
                    147: **   equal to zero (0), the object is not released.
                    148: ** INPUTS: pointer to previously allocated object
                    149: ** OUTPUTS:    the referenced object is conditionally returned to the heap
                    150: ** RETURN: void
                    151: ***********************************************************************/
                    152: #define PR_FREEIF(_ptr)    if (_ptr) PR_DELETE(_ptr)
                    153: 
                    154: PR_END_EXTERN_C
                    155: 
                    156: #endif /* prmem_h___ */

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.