| Index: mozilla/security/nss/lib/base/base.h | 
| =================================================================== | 
| --- mozilla/security/nss/lib/base/base.h	(revision 191424) | 
| +++ mozilla/security/nss/lib/base/base.h	(working copy) | 
| @@ -1,1398 +0,0 @@ | 
| -/* This Source Code Form is subject to the terms of the Mozilla Public | 
| - * License, v. 2.0. If a copy of the MPL was not distributed with this | 
| - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ | 
| - | 
| -#ifndef BASE_H | 
| -#define BASE_H | 
| - | 
| -#ifdef DEBUG | 
| -static const char BASE_CVS_ID[] = "@(#) $RCSfile: base.h,v $ $Revision: 1.21 $ $Date: 2012/04/25 14:49:25 $"; | 
| -#endif /* DEBUG */ | 
| - | 
| -/* | 
| - * base.h | 
| - * | 
| - * This header file contains basic prototypes and preprocessor | 
| - * definitions used throughout nss but not available publicly. | 
| - */ | 
| - | 
| -#ifndef BASET_H | 
| -#include "baset.h" | 
| -#endif /* BASET_H */ | 
| - | 
| -#ifndef NSSBASE_H | 
| -#include "nssbase.h" | 
| -#endif /* NSSBASE_H */ | 
| - | 
| -#include "plhash.h" | 
| - | 
| -PR_BEGIN_EXTERN_C | 
| - | 
| -/* | 
| - * NSSArena | 
| - * | 
| - * The nonpublic methods relating to this type are: | 
| - * | 
| - *  nssArena_Create  -- constructor | 
| - *  nssArena_Destroy | 
| - *  nssArena_Mark | 
| - *  nssArena_Release | 
| - *  nssArena_Unmark | 
| - * | 
| - *  nss_ZAlloc | 
| - *  nss_ZFreeIf | 
| - *  nss_ZRealloc | 
| - * | 
| - * Additionally, there are some preprocessor macros: | 
| - * | 
| - *  nss_ZNEW | 
| - *  nss_ZNEWARRAY | 
| - * | 
| - * In debug builds, the following calls are available: | 
| - * | 
| - *  nssArena_verifyPointer | 
| - *  nssArena_registerDestructor | 
| - *  nssArena_deregisterDestructor | 
| - * | 
| - * The following preprocessor macro is also always available: | 
| - * | 
| - *  nssArena_VERIFYPOINTER | 
| - * | 
| - * A constant PLHashAllocOps structure is available for users | 
| - * of the NSPL PLHashTable routines. | 
| - * | 
| - *  nssArenaHashAllocOps | 
| - */ | 
| - | 
| -/* | 
| - * nssArena_Create | 
| - * | 
| - * This routine creates a new memory arena.  This routine may return | 
| - * NULL upon error, in which case it will have set an error on the | 
| - * error stack. | 
| - * | 
| - * The error may be one of the following values: | 
| - *  NSS_ERROR_NO_MEMORY | 
| - * | 
| - * Return value: | 
| - *  NULL upon error | 
| - *  A pointer to an NSSArena upon success | 
| - */ | 
| - | 
| -/* | 
| - * XXX fgmr | 
| - * Arenas can be named upon creation; this is mostly of use when | 
| - * debugging.  Should we expose that here, allowing an optional | 
| - * "const char *name" argument?  Should the public version of this | 
| - * call (NSSArena_Create) have it too? | 
| - */ | 
| - | 
| -NSS_EXTERN NSSArena * | 
| -nssArena_Create | 
| -( | 
| -  void | 
| -); | 
| - | 
| -extern const NSSError NSS_ERROR_NO_MEMORY; | 
| - | 
| -/* | 
| - * nssArena_Destroy | 
| - * | 
| - * This routine will destroy the specified arena, freeing all memory | 
| - * allocated from it.  This routine returns a PRStatus value; if | 
| - * successful, it will return PR_SUCCESS.  If unsuccessful, it will | 
| - * set an error on the error stack and return PR_FAILURE. | 
| - * | 
| - * The error may be one of the following values: | 
| - *  NSS_ERROR_INVALID_ARENA | 
| - * | 
| - * Return value: | 
| - *  PR_SUCCESS | 
| - *  PR_FAILURE | 
| - */ | 
| - | 
| -NSS_EXTERN PRStatus | 
| -nssArena_Destroy | 
| -( | 
| -  NSSArena *arena | 
| -); | 
| - | 
| -extern const NSSError NSS_ERROR_INVALID_ARENA; | 
| - | 
| -/* | 
| - * nssArena_Mark | 
| - * | 
| - * This routine "marks" the current state of an arena.  Space | 
| - * allocated after the arena has been marked can be freed by | 
| - * releasing the arena back to the mark with nssArena_Release, | 
| - * or committed by calling nssArena_Unmark.  When successful, | 
| - * this routine returns a valid nssArenaMark pointer.  This | 
| - * routine may return NULL upon error, in which case it will | 
| - * have set an error on the error stack. | 
| - * | 
| - * The error may be one of the following values: | 
| - *  NSS_ERROR_INVALID_ARENA | 
| - *  NSS_ERROR_NO_MEMORY | 
| - *  NSS_ERROR_ARENA_MARKED_BY_ANOTHER_THREAD | 
| - * | 
| - * Return value: | 
| - *  NULL upon failure | 
| - *  An nssArenaMark pointer upon success | 
| - */ | 
| - | 
| -NSS_EXTERN nssArenaMark * | 
| -nssArena_Mark | 
| -( | 
| -  NSSArena *arena | 
| -); | 
| - | 
| -extern const NSSError NSS_ERROR_INVALID_ARENA; | 
| -extern const NSSError NSS_ERROR_NO_MEMORY; | 
| -extern const NSSError NSS_ERROR_ARENA_MARKED_BY_ANOTHER_THREAD; | 
| - | 
| -/* | 
| - * nssArena_Release | 
| - * | 
| - * This routine invalidates and releases all memory allocated from | 
| - * the specified arena after the point at which the specified mark | 
| - * was obtained.  This routine returns a PRStatus value; if successful, | 
| - * it will return PR_SUCCESS.  If unsuccessful, it will set an error | 
| - * on the error stack and return PR_FAILURE. | 
| - * | 
| - * The error may be one of the following values: | 
| - *  NSS_ERROR_INVALID_ARENA | 
| - *  NSS_ERROR_INVALID_ARENA_MARK | 
| - *  NSS_ERROR_ARENA_MARKED_BY_ANOTHER_THREAD | 
| - * | 
| - * Return value: | 
| - *  PR_SUCCESS | 
| - *  PR_FAILURE | 
| - */ | 
| - | 
| -NSS_EXTERN PRStatus | 
| -nssArena_Release | 
| -( | 
| -  NSSArena *arena, | 
| -  nssArenaMark *arenaMark | 
| -); | 
| - | 
| -extern const NSSError NSS_ERROR_INVALID_ARENA; | 
| -extern const NSSError NSS_ERROR_INVALID_ARENA_MARK; | 
| - | 
| -/* | 
| - * nssArena_Unmark | 
| - * | 
| - * This routine "commits" the indicated mark and any marks after | 
| - * it, making them unreleasable.  Note that any earlier marks can | 
| - * still be released, and such a release will invalidate these | 
| - * later unmarked regions.  If an arena is to be safely shared by | 
| - * more than one thread, all marks must be either released or | 
| - * unmarked.  This routine returns a PRStatus value; if successful, | 
| - * it will return PR_SUCCESS.  If unsuccessful, it will set an error | 
| - * on the error stack and return PR_FAILURE. | 
| - * | 
| - * The error may be one of the following values: | 
| - *  NSS_ERROR_INVALID_ARENA | 
| - *  NSS_ERROR_INVALID_ARENA_MARK | 
| - *  NSS_ERROR_ARENA_MARKED_BY_ANOTHER_THREAD | 
| - * | 
| - * Return value: | 
| - *  PR_SUCCESS | 
| - *  PR_FAILURE | 
| - */ | 
| - | 
| -NSS_EXTERN PRStatus | 
| -nssArena_Unmark | 
| -( | 
| -  NSSArena *arena, | 
| -  nssArenaMark *arenaMark | 
| -); | 
| - | 
| -extern const NSSError NSS_ERROR_INVALID_ARENA; | 
| -extern const NSSError NSS_ERROR_INVALID_ARENA_MARK; | 
| -extern const NSSError NSS_ERROR_ARENA_MARKED_BY_ANOTHER_THREAD; | 
| - | 
| -#ifdef ARENA_DESTRUCTOR_LIST | 
| - | 
| -/* | 
| - * nssArena_registerDestructor | 
| - * | 
| - * This routine stores a pointer to a callback and an arbitrary | 
| - * pointer-sized argument in the arena, at the current point in | 
| - * the mark stack.  If the arena is destroyed, or an "earlier" | 
| - * mark is released, then this destructor will be called at that | 
| - * time.  Note that the destructor will be called with the arena | 
| - * locked, which means the destructor may free memory in that | 
| - * arena, but it may not allocate or cause to be allocated any | 
| - * memory.  This callback facility was included to support our | 
| - * debug-version pointer-tracker feature; overuse runs counter to | 
| - * the the original intent of arenas.  This routine returns a | 
| - * PRStatus value; if successful, it will return PR_SUCCESS.  If | 
| - * unsuccessful, it will set an error on the error stack and | 
| - * return PR_FAILURE. | 
| - * | 
| - * The error may be one of the following values: | 
| - *  NSS_ERROR_INVALID_ARENA | 
| - *  NSS_ERROR_NO_MEMORY | 
| - * | 
| - * Return value: | 
| - *  PR_SUCCESS | 
| - *  PR_FAILURE | 
| - */ | 
| - | 
| -NSS_EXTERN PRStatus | 
| -nssArena_registerDestructor | 
| -( | 
| -  NSSArena *arena, | 
| -  void (*destructor)(void *argument), | 
| -  void *arg | 
| -); | 
| - | 
| -extern const NSSError NSS_ERROR_INVALID_ARENA; | 
| -extern const NSSError NSS_ERROR_NO_MEMORY; | 
| - | 
| -/* | 
| - * nssArena_deregisterDestructor | 
| - * | 
| - * This routine will remove the first destructor in the specified | 
| - * arena which has the specified destructor and argument values. | 
| - * The destructor will not be called.  This routine returns a | 
| - * PRStatus value; if successful, it will return PR_SUCCESS.  If | 
| - * unsuccessful, it will set an error on the error stack and | 
| - * return PR_FAILURE. | 
| - * | 
| - * The error may be one of the following values: | 
| - *  NSS_ERROR_INVALID_ARENA | 
| - *  NSS_ERROR_NOT_FOUND | 
| - * | 
| - * Return value: | 
| - *  PR_SUCCESS | 
| - *  PR_FAILURE | 
| - */ | 
| - | 
| -NSS_EXTERN PRStatus | 
| -nssArena_deregisterDestructor | 
| -( | 
| -  NSSArena *arena, | 
| -  void (*destructor)(void *argument), | 
| -  void *arg | 
| -); | 
| - | 
| -extern const NSSError NSS_ERROR_INVALID_ITEM; | 
| -extern const NSSError NSS_ERROR_INVALID_ARENA; | 
| -extern const NSSError NSS_ERROR_NOT_FOUND; | 
| - | 
| -#endif /* ARENA_DESTRUCTOR_LIST */ | 
| - | 
| -/* | 
| - * nss_ZAlloc | 
| - * | 
| - * This routine allocates and zeroes a section of memory of the | 
| - * size, and returns to the caller a pointer to that memory.  If | 
| - * the optional arena argument is non-null, the memory will be | 
| - * obtained from that arena; otherwise, the memory will be obtained | 
| - * from the heap.  This routine may return NULL upon error, in | 
| - * which case it will have set an error upon the error stack.  The | 
| - * value specified for size may be zero; in which case a valid | 
| - * zero-length block of memory will be allocated.  This block may | 
| - * be expanded by calling nss_ZRealloc. | 
| - * | 
| - * The error may be one of the following values: | 
| - *  NSS_ERROR_INVALID_ARENA | 
| - *  NSS_ERROR_NO_MEMORY | 
| - *  NSS_ERROR_ARENA_MARKED_BY_ANOTHER_THREAD | 
| - * | 
| - * Return value: | 
| - *  NULL upon error | 
| - *  A pointer to the new segment of zeroed memory | 
| - */ | 
| - | 
| -NSS_EXTERN void * | 
| -nss_ZAlloc | 
| -( | 
| -  NSSArena *arenaOpt, | 
| -  PRUint32 size | 
| -); | 
| - | 
| -extern const NSSError NSS_ERROR_INVALID_ARENA; | 
| -extern const NSSError NSS_ERROR_NO_MEMORY; | 
| -extern const NSSError NSS_ERROR_ARENA_MARKED_BY_ANOTHER_THREAD; | 
| - | 
| -/* | 
| - * nss_ZFreeIf | 
| - * | 
| - * If the specified pointer is non-null, then the region of memory | 
| - * to which it points -- which must have been allocated with | 
| - * nss_ZAlloc -- will be zeroed and released.  This routine | 
| - * returns a PRStatus value; if successful, it will return PR_SUCCESS. | 
| - * If unsuccessful, it will set an error on the error stack and return | 
| - * PR_FAILURE. | 
| - * | 
| - * The error may be one of the following values: | 
| - *  NSS_ERROR_INVALID_POINTER | 
| - * | 
| - * Return value: | 
| - *  PR_SUCCESS | 
| - *  PR_FAILURE | 
| - */ | 
| - | 
| -NSS_EXTERN PRStatus | 
| -nss_ZFreeIf | 
| -( | 
| -  void *pointer | 
| -); | 
| - | 
| -extern const NSSError NSS_ERROR_INVALID_POINTER; | 
| - | 
| -/* | 
| - * nss_ZRealloc | 
| - * | 
| - * This routine reallocates a block of memory obtained by calling | 
| - * nss_ZAlloc or nss_ZRealloc.  The portion of memory | 
| - * between the new and old sizes -- which is either being newly | 
| - * obtained or released -- is in either case zeroed.  This routine | 
| - * may return NULL upon failure, in which case it will have placed | 
| - * an error on the error stack. | 
| - * | 
| - * The error may be one of the following values: | 
| - *  NSS_ERROR_INVALID_POINTER | 
| - *  NSS_ERROR_NO_MEMORY | 
| - *  NSS_ERROR_ARENA_MARKED_BY_ANOTHER_THREAD | 
| - * | 
| - * Return value: | 
| - *  NULL upon error | 
| - *  A pointer to the replacement segment of memory | 
| - */ | 
| - | 
| -NSS_EXTERN void * | 
| -nss_ZRealloc | 
| -( | 
| -  void *pointer, | 
| -  PRUint32 newSize | 
| -); | 
| - | 
| -extern const NSSError NSS_ERROR_INVALID_POINTER; | 
| -extern const NSSError NSS_ERROR_NO_MEMORY; | 
| -extern const NSSError NSS_ERROR_ARENA_MARKED_BY_ANOTHER_THREAD; | 
| - | 
| -/* | 
| - * nss_ZNEW | 
| - * | 
| - * This preprocessor macro will allocate memory for a new object | 
| - * of the specified type with nss_ZAlloc, and will cast the | 
| - * return value appropriately.  If the optional arena argument is | 
| - * non-null, the memory will be obtained from that arena; otherwise, | 
| - * the memory will be obtained from the heap.  This routine may | 
| - * return NULL upon error, in which case it will have set an error | 
| - * upon the error stack. | 
| - * | 
| - * The error may be one of the following values: | 
| - *  NSS_ERROR_INVALID_ARENA | 
| - *  NSS_ERROR_NO_MEMORY | 
| - * | 
| - * Return value: | 
| - *  NULL upon error | 
| - *  A pointer to the new segment of zeroed memory | 
| - */ | 
| - | 
| -/* The following line exceeds 72 characters, but emacs screws up if I split it. */ | 
| -#define nss_ZNEW(arenaOpt, type) ((type *)nss_ZAlloc((arenaOpt), sizeof(type))) | 
| - | 
| -/* | 
| - * nss_ZNEWARRAY | 
| - * | 
| - * This preprocessor macro will allocate memory for an array of | 
| - * new objects, and will cast the return value appropriately. | 
| - * If the optional arena argument is non-null, the memory will | 
| - * be obtained from that arena; otherwise, the memory will be | 
| - * obtained from the heap.  This routine may return NULL upon | 
| - * error, in which case it will have set an error upon the error | 
| - * stack.  The array size may be specified as zero. | 
| - * | 
| - * The error may be one of the following values: | 
| - *  NSS_ERROR_INVALID_ARENA | 
| - *  NSS_ERROR_NO_MEMORY | 
| - * | 
| - * Return value: | 
| - *  NULL upon error | 
| - *  A pointer to the new segment of zeroed memory | 
| - */ | 
| - | 
| -/* The following line exceeds 72 characters, but emacs screws up if I split it. */ | 
| -#define nss_ZNEWARRAY(arenaOpt, type, quantity) ((type *)nss_ZAlloc((arenaOpt), sizeof(type) * (quantity))) | 
| - | 
| -/* | 
| - * nss_ZREALLOCARRAY | 
| - * | 
| - * This preprocessor macro will reallocate memory for an array of | 
| - * new objects, and will cast the return value appropriately. | 
| - * This routine may return NULL upon error, in which case it will | 
| - *  have set an error upon the error stack. | 
| - * | 
| - * The error may be one of the following values: | 
| - *  NSS_ERROR_INVALID_POINTER | 
| - *  NSS_ERROR_NO_MEMORY | 
| - *  NSS_ERROR_ARENA_MARKED_BY_ANOTHER_THREAD | 
| - * | 
| - * Return value: | 
| - *  NULL upon error | 
| - *  A pointer to the replacement segment of memory | 
| - */ | 
| -#define nss_ZREALLOCARRAY(p, type, quantity) ((type *)nss_ZRealloc((p), sizeof(type) * (quantity))) | 
| - | 
| -/* | 
| - * nssArena_verifyPointer | 
| - * | 
| - * This method is only present in debug builds. | 
| - * | 
| - * If the specified pointer is a valid pointer to an NSSArena object, | 
| - * this routine will return PR_SUCCESS.  Otherwise, it will put an | 
| - * error on the error stack and return PR_FAILURE. | 
| - * | 
| - * The error may be one of the following values: | 
| - *  NSS_ERROR_INVALID_ARENA | 
| - * | 
| - * Return value: | 
| - *  PR_SUCCESS if the pointer is valid | 
| - *  PR_FAILURE if it isn't | 
| - */ | 
| - | 
| -#ifdef DEBUG | 
| -NSS_EXTERN PRStatus | 
| -nssArena_verifyPointer | 
| -( | 
| -  const NSSArena *arena | 
| -); | 
| - | 
| -extern const NSSError NSS_ERROR_INVALID_ARENA; | 
| -#endif /* DEBUG */ | 
| - | 
| -/* | 
| - * nssArena_VERIFYPOINTER | 
| - * | 
| - * This macro is always available.  In debug builds it will call | 
| - * nssArena_verifyPointer; in non-debug builds, it will merely | 
| - * check that the pointer is not null.  Note that in non-debug | 
| - * builds it cannot place an error on the error stack. | 
| - * | 
| - * Return value: | 
| - *  PR_SUCCESS if the pointer is valid | 
| - *  PR_FAILURE if it isn't | 
| - */ | 
| - | 
| -#ifdef DEBUG | 
| -#define nssArena_VERIFYPOINTER(p) nssArena_verifyPointer(p) | 
| -#else /* DEBUG */ | 
| -/* The following line exceeds 72 characters, but emacs screws up if I split it. */ | 
| -#define nssArena_VERIFYPOINTER(p) (((NSSArena *)NULL == (p))?PR_FAILURE:PR_SUCCESS) | 
| -#endif /* DEBUG */ | 
| - | 
| -/* | 
| - * Private function to be called by NSS_Shutdown to cleanup nssArena | 
| - * bookkeeping. | 
| - */ | 
| -extern PRStatus | 
| -nssArena_Shutdown(void); | 
| - | 
| -/* | 
| - * nssArenaHashAllocOps | 
| - * | 
| - * This constant structure contains allocation callbacks designed for | 
| - * use with the NSPL routine PL_NewHashTable.  For example: | 
| - * | 
| - *  NSSArena *hashTableArena = nssArena_Create(); | 
| - *  PLHashTable *t = PL_NewHashTable(n, hasher, key_compare, | 
| - *    value_compare, nssArenaHashAllocOps, hashTableArena); | 
| - */ | 
| - | 
| -NSS_EXTERN_DATA PLHashAllocOps nssArenaHashAllocOps; | 
| - | 
| -/* | 
| - * The error stack | 
| - * | 
| - * The nonpublic methods relating to the error stack are: | 
| - * | 
| - *  nss_SetError | 
| - *  nss_ClearErrorStack | 
| - */ | 
| - | 
| -/* | 
| - * nss_SetError | 
| - * | 
| - * This routine places a new error code on the top of the calling | 
| - * thread's error stack.  Calling this routine wiht an error code | 
| - * of zero will clear the error stack. | 
| - */ | 
| - | 
| -NSS_EXTERN void | 
| -nss_SetError | 
| -( | 
| -  PRUint32 error | 
| -); | 
| - | 
| -/* | 
| - * nss_ClearErrorStack | 
| - * | 
| - * This routine clears the calling thread's error stack. | 
| - */ | 
| - | 
| -NSS_EXTERN void | 
| -nss_ClearErrorStack | 
| -( | 
| -  void | 
| -); | 
| - | 
| -/* | 
| - * nss_DestroyErrorStack | 
| - * | 
| - * This routine frees the calling thread's error stack. | 
| - */ | 
| - | 
| -NSS_EXTERN void | 
| -nss_DestroyErrorStack | 
| -( | 
| -  void | 
| -); | 
| - | 
| -/* | 
| - * NSSItem | 
| - * | 
| - * nssItem_Create | 
| - * nssItem_Duplicate | 
| - * nssItem_Equal | 
| - */ | 
| - | 
| -NSS_EXTERN NSSItem * | 
| -nssItem_Create | 
| -( | 
| -  NSSArena *arenaOpt, | 
| -  NSSItem *rvOpt, | 
| -  PRUint32 length, | 
| -  const void *data | 
| -); | 
| - | 
| -NSS_EXTERN void | 
| -nssItem_Destroy | 
| -( | 
| -  NSSItem *item | 
| -); | 
| - | 
| -NSS_EXTERN NSSItem * | 
| -nssItem_Duplicate | 
| -( | 
| -  NSSItem *obj, | 
| -  NSSArena *arenaOpt, | 
| -  NSSItem *rvOpt | 
| -); | 
| - | 
| -NSS_EXTERN PRBool | 
| -nssItem_Equal | 
| -( | 
| -  const NSSItem *one, | 
| -  const NSSItem *two, | 
| -  PRStatus *statusOpt | 
| -); | 
| - | 
| -/* | 
| - * NSSUTF8 | 
| - * | 
| - *  nssUTF8_CaseIgnoreMatch | 
| - *  nssUTF8_Duplicate | 
| - *  nssUTF8_Size | 
| - *  nssUTF8_Length | 
| - *  nssUTF8_CopyIntoFixedBuffer | 
| - */ | 
| - | 
| -/* | 
| - * nssUTF8_CaseIgnoreMatch | 
| - * | 
| - * Returns true if the two UTF8-encoded strings pointed to by the | 
| - * two specified NSSUTF8 pointers differ only in typcase. | 
| - * | 
| - * The error may be one of the following values: | 
| - *  NSS_ERROR_INVALID_POINTER | 
| - * | 
| - * Return value: | 
| - *  PR_TRUE if the strings match, ignoring case | 
| - *  PR_FALSE if they don't | 
| - *  PR_FALSE upon error | 
| - */ | 
| - | 
| -NSS_EXTERN PRBool | 
| -nssUTF8_CaseIgnoreMatch | 
| -( | 
| -  const NSSUTF8 *a, | 
| -  const NSSUTF8 *b, | 
| -  PRStatus *statusOpt | 
| -); | 
| - | 
| -/* | 
| - * nssUTF8_Duplicate | 
| - * | 
| - * This routine duplicates the UTF8-encoded string pointed to by the | 
| - * specified NSSUTF8 pointer.  If the optional arenaOpt argument is | 
| - * not null, the memory required will be obtained from that arena; | 
| - * otherwise, the memory required will be obtained from the heap. | 
| - * A pointer to the new string will be returned.  In case of error, | 
| - * an error will be placed on the error stack and NULL will be | 
| - * returned. | 
| - * | 
| - * The error may be one of the following values: | 
| - *  NSS_ERROR_INVALID_POINTER | 
| - *  NSS_ERROR_INVALID_ARENA | 
| - *  NSS_ERROR_NO_MEMORY | 
| - */ | 
| - | 
| -NSS_EXTERN NSSUTF8 * | 
| -nssUTF8_Duplicate | 
| -( | 
| -  const NSSUTF8 *s, | 
| -  NSSArena *arenaOpt | 
| -); | 
| - | 
| -/* | 
| - * nssUTF8_PrintableMatch | 
| - * | 
| - * Returns true if the two Printable strings pointed to by the | 
| - * two specified NSSUTF8 pointers match when compared with the | 
| - * rules for Printable String (leading and trailing spaces are | 
| - * disregarded, extents of whitespace match irregardless of length, | 
| - * and case is not significant), then PR_TRUE will be returned. | 
| - * Otherwise, PR_FALSE will be returned.  Upon failure, PR_FALSE | 
| - * will be returned.  If the optional statusOpt argument is not | 
| - * NULL, then PR_SUCCESS or PR_FAILURE will be stored in that | 
| - * location. | 
| - * | 
| - * The error may be one of the following values: | 
| - *  NSS_ERROR_INVALID_POINTER | 
| - * | 
| - * Return value: | 
| - *  PR_TRUE if the strings match, ignoring case | 
| - *  PR_FALSE if they don't | 
| - *  PR_FALSE upon error | 
| - */ | 
| - | 
| -NSS_EXTERN PRBool | 
| -nssUTF8_PrintableMatch | 
| -( | 
| -  const NSSUTF8 *a, | 
| -  const NSSUTF8 *b, | 
| -  PRStatus *statusOpt | 
| -); | 
| - | 
| -/* | 
| - * nssUTF8_Size | 
| - * | 
| - * This routine returns the length in bytes (including the terminating | 
| - * null) of the UTF8-encoded string pointed to by the specified | 
| - * NSSUTF8 pointer.  Zero is returned on error. | 
| - * | 
| - * The error may be one of the following values: | 
| - *  NSS_ERROR_INVALID_POINTER | 
| - *  NSS_ERROR_VALUE_TOO_LARGE | 
| - * | 
| - * Return value: | 
| - *  nonzero size of the string | 
| - *  0 on error | 
| - */ | 
| - | 
| -NSS_EXTERN PRUint32 | 
| -nssUTF8_Size | 
| -( | 
| -  const NSSUTF8 *s, | 
| -  PRStatus *statusOpt | 
| -); | 
| - | 
| -extern const NSSError NSS_ERROR_INVALID_POINTER; | 
| -extern const NSSError NSS_ERROR_VALUE_TOO_LARGE; | 
| - | 
| -/* | 
| - * nssUTF8_Length | 
| - * | 
| - * This routine returns the length in characters (not including the | 
| - * terminating null) of the UTF8-encoded string pointed to by the | 
| - * specified NSSUTF8 pointer. | 
| - * | 
| - * The error may be one of the following values: | 
| - *  NSS_ERROR_INVALID_POINTER | 
| - *  NSS_ERROR_VALUE_TOO_LARGE | 
| - *  NSS_ERROR_INVALID_STRING | 
| - * | 
| - * Return value: | 
| - *  length of the string (which may be zero) | 
| - *  0 on error | 
| - */ | 
| - | 
| -NSS_EXTERN PRUint32 | 
| -nssUTF8_Length | 
| -( | 
| -  const NSSUTF8 *s, | 
| -  PRStatus *statusOpt | 
| -); | 
| - | 
| -extern const NSSError NSS_ERROR_INVALID_POINTER; | 
| -extern const NSSError NSS_ERROR_VALUE_TOO_LARGE; | 
| -extern const NSSError NSS_ERROR_INVALID_STRING; | 
| - | 
| -/* | 
| - * nssUTF8_Create | 
| - * | 
| - * This routine creates a UTF8 string from a string in some other | 
| - * format.  Some types of string may include embedded null characters, | 
| - * so for them the length parameter must be used.  For string types | 
| - * that are null-terminated, the length parameter is optional; if it | 
| - * is zero, it will be ignored.  If the optional arena argument is | 
| - * non-null, the memory used for the new string will be obtained from | 
| - * that arena, otherwise it will be obtained from the heap.  This | 
| - * routine may return NULL upon error, in which case it will have | 
| - * placed an error on the error stack. | 
| - * | 
| - * The error may be one of the following: | 
| - *  NSS_ERROR_INVALID_POINTER | 
| - *  NSS_ERROR_NO_MEMORY | 
| - *  NSS_ERROR_UNSUPPORTED_TYPE | 
| - * | 
| - * Return value: | 
| - *  NULL upon error | 
| - *  A non-null pointer to a new UTF8 string otherwise | 
| - */ | 
| - | 
| -NSS_EXTERN NSSUTF8 * | 
| -nssUTF8_Create | 
| -( | 
| -  NSSArena *arenaOpt, | 
| -  nssStringType type, | 
| -  const void *inputString, | 
| -  PRUint32 size /* in bytes, not characters */ | 
| -); | 
| - | 
| -extern const NSSError NSS_ERROR_INVALID_POINTER; | 
| -extern const NSSError NSS_ERROR_NO_MEMORY; | 
| -extern const NSSError NSS_ERROR_UNSUPPORTED_TYPE; | 
| - | 
| -NSS_EXTERN NSSItem * | 
| -nssUTF8_GetEncoding | 
| -( | 
| -  NSSArena *arenaOpt, | 
| -  NSSItem *rvOpt, | 
| -  nssStringType type, | 
| -  NSSUTF8 *string | 
| -); | 
| - | 
| -/* | 
| - * nssUTF8_CopyIntoFixedBuffer | 
| - * | 
| - * This will copy a UTF8 string into a fixed-length buffer, making | 
| - * sure that the all characters are valid.  Any remaining space will | 
| - * be padded with the specified ASCII character, typically either | 
| - * null or space. | 
| - * | 
| - * Blah, blah, blah. | 
| - */ | 
| - | 
| -extern const NSSError NSS_ERROR_INVALID_POINTER; | 
| -extern const NSSError NSS_ERROR_INVALID_ARGUMENT; | 
| - | 
| -NSS_EXTERN PRStatus | 
| -nssUTF8_CopyIntoFixedBuffer | 
| -( | 
| -  NSSUTF8 *string, | 
| -  char *buffer, | 
| -  PRUint32 bufferSize, | 
| -  char pad | 
| -); | 
| - | 
| -/* | 
| - * nssUTF8_Equal | 
| - * | 
| - */ | 
| - | 
| -NSS_EXTERN PRBool | 
| -nssUTF8_Equal | 
| -( | 
| -  const NSSUTF8 *a, | 
| -  const NSSUTF8 *b, | 
| -  PRStatus *statusOpt | 
| -); | 
| - | 
| -/* | 
| - * nssList | 
| - * | 
| - * The goal is to provide a simple, optionally threadsafe, linked list | 
| - * class.  Since NSS did not seem to use the circularity of PRCList | 
| - * much before, this provides a list that appears to be a linear, | 
| - * NULL-terminated list. | 
| - */ | 
| - | 
| -/* | 
| - * nssList_Create | 
| - * | 
| - * If threadsafe is true, the list will be locked during modifications | 
| - * and traversals. | 
| - */ | 
| -NSS_EXTERN nssList * | 
| -nssList_Create | 
| -( | 
| -  NSSArena *arenaOpt, | 
| -  PRBool threadSafe | 
| -); | 
| - | 
| -/* | 
| - * nssList_Destroy | 
| - */ | 
| -NSS_EXTERN PRStatus | 
| -nssList_Destroy | 
| -( | 
| -  nssList *list | 
| -); | 
| - | 
| -NSS_EXTERN void | 
| -nssList_Clear | 
| -( | 
| -  nssList *list, | 
| -  nssListElementDestructorFunc destructor | 
| -); | 
| - | 
| -/* | 
| - * nssList_SetCompareFunction | 
| - * | 
| - * By default, two list elements will be compared by comparing their | 
| - * data pointers.  By setting this function, the user can control | 
| - * how elements are compared. | 
| - */ | 
| -NSS_EXTERN void | 
| -nssList_SetCompareFunction | 
| -( | 
| -  nssList *list, | 
| -  nssListCompareFunc compareFunc | 
| -); | 
| - | 
| -/* | 
| - * nssList_SetSortFunction | 
| - * | 
| - * Sort function to use for an ordered list. | 
| - */ | 
| -NSS_EXTERN void | 
| -nssList_SetSortFunction | 
| -( | 
| -  nssList *list, | 
| -  nssListSortFunc sortFunc | 
| -); | 
| - | 
| -/* | 
| - * nssList_Add | 
| - */ | 
| -NSS_EXTERN PRStatus | 
| -nssList_Add | 
| -( | 
| -  nssList *list, | 
| -  void *data | 
| -); | 
| - | 
| -/* | 
| - * nssList_AddUnique | 
| - * | 
| - * This will use the compare function to see if the element is already | 
| - * in the list. | 
| - */ | 
| -NSS_EXTERN PRStatus | 
| -nssList_AddUnique | 
| -( | 
| -  nssList *list, | 
| -  void *data | 
| -); | 
| - | 
| -/* | 
| - * nssList_Remove | 
| - * | 
| - * Uses the compare function to locate the element and remove it. | 
| - */ | 
| -NSS_EXTERN PRStatus | 
| -nssList_Remove(nssList *list, void *data); | 
| - | 
| -/* | 
| - * nssList_Get | 
| - * | 
| - * Uses the compare function to locate an element.  Also serves as | 
| - * nssList_Exists. | 
| - */ | 
| -NSS_EXTERN void * | 
| -nssList_Get | 
| -( | 
| -  nssList *list, | 
| -  void *data | 
| -); | 
| - | 
| -/* | 
| - * nssList_Count | 
| - */ | 
| -NSS_EXTERN PRUint32 | 
| -nssList_Count | 
| -( | 
| -  nssList *list | 
| -); | 
| - | 
| -/* | 
| - * nssList_GetArray | 
| - * | 
| - * Fill rvArray, up to maxElements, with elements in the list.  The | 
| - * array is NULL-terminated, so its allocated size must be maxElements + 1. | 
| - */ | 
| -NSS_EXTERN PRStatus | 
| -nssList_GetArray | 
| -( | 
| -  nssList *list, | 
| -  void **rvArray, | 
| -  PRUint32 maxElements | 
| -); | 
| - | 
| -/* | 
| - * nssList_CreateIterator | 
| - * | 
| - * Create an iterator for list traversal. | 
| - */ | 
| -NSS_EXTERN nssListIterator * | 
| -nssList_CreateIterator | 
| -( | 
| -  nssList *list | 
| -); | 
| - | 
| -NSS_EXTERN nssList * | 
| -nssList_Clone | 
| -( | 
| -  nssList *list | 
| -); | 
| - | 
| -/* | 
| - * nssListIterator_Destroy | 
| - */ | 
| -NSS_EXTERN void | 
| -nssListIterator_Destroy | 
| -( | 
| -  nssListIterator *iter | 
| -); | 
| - | 
| -/* | 
| - * nssListIterator_Start | 
| - * | 
| - * Begin a list iteration.  After this call, if the list is threadSafe, | 
| - * the list is *locked*. | 
| - */ | 
| -NSS_EXTERN void * | 
| -nssListIterator_Start | 
| -( | 
| -  nssListIterator *iter | 
| -); | 
| - | 
| -/* | 
| - * nssListIterator_Next | 
| - * | 
| - * Continue a list iteration. | 
| - */ | 
| -NSS_EXTERN void * | 
| -nssListIterator_Next | 
| -( | 
| -  nssListIterator *iter | 
| -); | 
| - | 
| -/* | 
| - * nssListIterator_Finish | 
| - * | 
| - * Complete a list iteration.  This *must* be called in order for the | 
| - * lock to be released. | 
| - */ | 
| -NSS_EXTERN PRStatus | 
| -nssListIterator_Finish | 
| -( | 
| -  nssListIterator *iter | 
| -); | 
| - | 
| -/* | 
| - * nssHash | 
| - * | 
| - *  nssHash_Create | 
| - *  nssHash_Destroy | 
| - *  nssHash_Add | 
| - *  nssHash_Remove | 
| - *  nssHash_Count | 
| - *  nssHash_Exists | 
| - *  nssHash_Lookup | 
| - *  nssHash_Iterate | 
| - */ | 
| - | 
| -/* | 
| - * nssHash_Create | 
| - * | 
| - */ | 
| - | 
| -NSS_EXTERN nssHash * | 
| -nssHash_Create | 
| -( | 
| -  NSSArena *arenaOpt, | 
| -  PRUint32 numBuckets, | 
| -  PLHashFunction keyHash, | 
| -  PLHashComparator keyCompare, | 
| -  PLHashComparator valueCompare | 
| -); | 
| - | 
| -NSS_EXTERN nssHash * | 
| -nssHash_CreatePointer | 
| -( | 
| -  NSSArena *arenaOpt, | 
| -  PRUint32 numBuckets | 
| -); | 
| - | 
| -NSS_EXTERN nssHash * | 
| -nssHash_CreateString | 
| -( | 
| -  NSSArena *arenaOpt, | 
| -  PRUint32 numBuckets | 
| -); | 
| - | 
| -NSS_EXTERN nssHash * | 
| -nssHash_CreateItem | 
| -( | 
| -  NSSArena *arenaOpt, | 
| -  PRUint32 numBuckets | 
| -); | 
| - | 
| -/* | 
| - * nssHash_Destroy | 
| - * | 
| - */ | 
| -NSS_EXTERN void | 
| -nssHash_Destroy | 
| -( | 
| -  nssHash *hash | 
| -); | 
| - | 
| -/* | 
| - * nssHash_Add | 
| - * | 
| - */ | 
| - | 
| -extern const NSSError NSS_ERROR_HASH_COLLISION; | 
| - | 
| -NSS_EXTERN PRStatus | 
| -nssHash_Add | 
| -( | 
| -  nssHash *hash, | 
| -  const void *key, | 
| -  const void *value | 
| -); | 
| - | 
| -/* | 
| - * nssHash_Remove | 
| - * | 
| - */ | 
| -NSS_EXTERN void | 
| -nssHash_Remove | 
| -( | 
| -  nssHash *hash, | 
| -  const void *it | 
| -); | 
| - | 
| -/* | 
| - * nssHash_Count | 
| - * | 
| - */ | 
| -NSS_EXTERN PRUint32 | 
| -nssHash_Count | 
| -( | 
| -  nssHash *hash | 
| -); | 
| - | 
| -/* | 
| - * nssHash_Exists | 
| - * | 
| - */ | 
| -NSS_EXTERN PRBool | 
| -nssHash_Exists | 
| -( | 
| -  nssHash *hash, | 
| -  const void *it | 
| -); | 
| - | 
| -/* | 
| - * nssHash_Lookup | 
| - * | 
| - */ | 
| -NSS_EXTERN void * | 
| -nssHash_Lookup | 
| -( | 
| -  nssHash *hash, | 
| -  const void *it | 
| -); | 
| - | 
| -/* | 
| - * nssHash_Iterate | 
| - * | 
| - */ | 
| -NSS_EXTERN void | 
| -nssHash_Iterate | 
| -( | 
| -  nssHash *hash, | 
| -  nssHashIterator fcn, | 
| -  void *closure | 
| -); | 
| - | 
| - | 
| -/* | 
| - * nssPointerTracker | 
| - * | 
| - * This type and these methods are only present in debug builds. | 
| - * | 
| - * The nonpublic methods relating to this type are: | 
| - * | 
| - *  nssPointerTracker_initialize | 
| - *  nssPointerTracker_finalize | 
| - *  nssPointerTracker_add | 
| - *  nssPointerTracker_remove | 
| - *  nssPointerTracker_verify | 
| - */ | 
| - | 
| -/* | 
| - * nssPointerTracker_initialize | 
| - * | 
| - * This method is only present in debug builds. | 
| - * | 
| - * This routine initializes an nssPointerTracker object.  Note that | 
| - * the object must have been declared *static* to guarantee that it | 
| - * is in a zeroed state initially.  This routine is idempotent, and | 
| - * may even be safely called by multiple threads simultaneously with | 
| - * the same argument.  This routine returns a PRStatus value; if | 
| - * successful, it will return PR_SUCCESS.  On failure it will set an | 
| - * error on the error stack and return PR_FAILURE. | 
| - * | 
| - * The error may be one of the following values: | 
| - *  NSS_ERROR_NO_MEMORY | 
| - * | 
| - * Return value: | 
| - *  PR_SUCCESS | 
| - *  PR_FAILURE | 
| - */ | 
| - | 
| -#ifdef DEBUG | 
| -NSS_EXTERN PRStatus | 
| -nssPointerTracker_initialize | 
| -( | 
| -  nssPointerTracker *tracker | 
| -); | 
| - | 
| -extern const NSSError NSS_ERROR_NO_MEMORY; | 
| -#endif /* DEBUG */ | 
| - | 
| -/* | 
| - * nssPointerTracker_finalize | 
| - * | 
| - * This method is only present in debug builds. | 
| - * | 
| - * This routine returns the nssPointerTracker object to the pre- | 
| - * initialized state, releasing all resources used by the object. | 
| - * It will *NOT* destroy the objects being tracked by the pointer | 
| - * (should any remain), and therefore cannot be used to "sweep up" | 
| - * remaining objects.  This routine returns a PRStatus value; if | 
| - * successful, it will return PR_SUCCES.  On failure it will set an | 
| - * error on the error stack and return PR_FAILURE.  If any objects | 
| - * remain in the tracker when it is finalized, that will be treated | 
| - * as an error. | 
| - * | 
| - * The error may be one of the following values: | 
| - *  NSS_ERROR_TRACKER_NOT_EMPTY | 
| - * | 
| - * Return value: | 
| - *  PR_SUCCESS | 
| - *  PR_FAILURE | 
| - */ | 
| - | 
| -#ifdef DEBUG | 
| -NSS_EXTERN PRStatus | 
| -nssPointerTracker_finalize | 
| -( | 
| -  nssPointerTracker *tracker | 
| -); | 
| - | 
| -extern const NSSError NSS_ERROR_TRACKER_NOT_EMPTY; | 
| -#endif /* DEBUG */ | 
| - | 
| -/* | 
| - * nssPointerTracker_add | 
| - * | 
| - * This method is only present in debug builds. | 
| - * | 
| - * This routine adds the specified pointer to the nssPointerTracker | 
| - * object.  It should be called in constructor objects to register | 
| - * new valid objects.  The nssPointerTracker is threadsafe, but this | 
| - * call is not idempotent.  This routine returns a PRStatus value; | 
| - * if successful it will return PR_SUCCESS.  On failure it will set | 
| - * an error on the error stack and return PR_FAILURE. | 
| - * | 
| - * The error may be one of the following values: | 
| - *  NSS_ERROR_NO_MEMORY | 
| - *  NSS_ERROR_TRACKER_NOT_INITIALIZED | 
| - *  NSS_ERROR_DUPLICATE_POINTER | 
| - * | 
| - * Return value: | 
| - *  PR_SUCCESS | 
| - *  PR_FAILURE | 
| - */ | 
| - | 
| -#ifdef DEBUG | 
| -NSS_EXTERN PRStatus | 
| -nssPointerTracker_add | 
| -( | 
| -  nssPointerTracker *tracker, | 
| -  const void *pointer | 
| -); | 
| - | 
| -extern const NSSError NSS_ERROR_NO_MEMORY; | 
| -extern const NSSError NSS_ERROR_TRACKER_NOT_INITIALIZED; | 
| -extern const NSSError NSS_ERROR_DUPLICATE_POINTER; | 
| -#endif /* DEBUG */ | 
| - | 
| -/* | 
| - * nssPointerTracker_remove | 
| - * | 
| - * This method is only present in debug builds. | 
| - * | 
| - * This routine removes the specified pointer from the | 
| - * nssPointerTracker object.  It does not call any destructor for the | 
| - * object; rather, this should be called from the object's destructor. | 
| - * The nssPointerTracker is threadsafe, but this call is not | 
| - * idempotent.  This routine returns a PRStatus value; if successful | 
| - * it will return PR_SUCCESS.  On failure it will set an error on the | 
| - * error stack and return PR_FAILURE. | 
| - * | 
| - * The error may be one of the following values: | 
| - *  NSS_ERROR_TRACKER_NOT_INITIALIZED | 
| - *  NSS_ERROR_POINTER_NOT_REGISTERED | 
| - * | 
| - * Return value: | 
| - *  PR_SUCCESS | 
| - *  PR_FAILURE | 
| - */ | 
| - | 
| -#ifdef DEBUG | 
| -NSS_EXTERN PRStatus | 
| -nssPointerTracker_remove | 
| -( | 
| -  nssPointerTracker *tracker, | 
| -  const void *pointer | 
| -); | 
| - | 
| -extern const NSSError NSS_ERROR_TRACKER_NOT_INITIALIZED; | 
| -extern const NSSError NSS_ERROR_POINTER_NOT_REGISTERED; | 
| -#endif /* DEBUG */ | 
| - | 
| -/* | 
| - * nssPointerTracker_verify | 
| - * | 
| - * This method is only present in debug builds. | 
| - * | 
| - * This routine verifies that the specified pointer has been registered | 
| - * with the nssPointerTracker object.  The nssPointerTracker object is | 
| - * threadsafe, and this call may be safely called from multiple threads | 
| - * simultaneously with the same arguments.  This routine returns a | 
| - * PRStatus value; if the pointer is registered this will return | 
| - * PR_SUCCESS.  Otherwise it will set an error on the error stack and | 
| - * return PR_FAILURE.  Although the error is suitable for leaving on | 
| - * the stack, callers may wish to augment the information available by | 
| - * placing a more type-specific error on the stack. | 
| - * | 
| - * The error may be one of the following values: | 
| - *  NSS_ERROR_POINTER_NOT_REGISTERED | 
| - * | 
| - * Return value: | 
| - *  PR_SUCCESS | 
| - *  PR_FAILRUE | 
| - */ | 
| - | 
| -#ifdef DEBUG | 
| -NSS_EXTERN PRStatus | 
| -nssPointerTracker_verify | 
| -( | 
| -  nssPointerTracker *tracker, | 
| -  const void *pointer | 
| -); | 
| - | 
| -extern const NSSError NSS_ERROR_POINTER_NOT_REGISTERED; | 
| -#endif /* DEBUG */ | 
| - | 
| -/* | 
| - * libc | 
| - * | 
| - * nsslibc_memcpy | 
| - * nsslibc_memset | 
| - * nsslibc_offsetof | 
| - */ | 
| - | 
| -/* | 
| - * nsslibc_memcpy | 
| - * | 
| - * Errors: | 
| - *  NSS_ERROR_INVALID_POINTER | 
| - * | 
| - * Return value: | 
| - *  NULL on error | 
| - *  The destination pointer on success | 
| - */ | 
| - | 
| -NSS_EXTERN void * | 
| -nsslibc_memcpy | 
| -( | 
| -  void *dest, | 
| -  const void *source, | 
| -  PRUint32 n | 
| -); | 
| - | 
| -extern const NSSError NSS_ERROR_INVALID_POINTER; | 
| - | 
| -/* | 
| - * nsslibc_memset | 
| - * | 
| - * Errors: | 
| - *  NSS_ERROR_INVALID_POINTER | 
| - * | 
| - * Return value: | 
| - *  NULL on error | 
| - *  The destination pointer on success | 
| - */ | 
| - | 
| -NSS_EXTERN void * | 
| -nsslibc_memset | 
| -( | 
| -  void *dest, | 
| -  PRUint8 byte, | 
| -  PRUint32 n | 
| -); | 
| - | 
| -extern const NSSError NSS_ERROR_INVALID_POINTER; | 
| - | 
| -/* | 
| - * nsslibc_memequal | 
| - * | 
| - * Errors: | 
| - *  NSS_ERROR_INVALID_POINTER | 
| - * | 
| - * Return value: | 
| - *  PR_TRUE if they match | 
| - *  PR_FALSE if they don't | 
| - *  PR_FALSE upon error | 
| - */ | 
| - | 
| -NSS_EXTERN PRBool | 
| -nsslibc_memequal | 
| -( | 
| -  const void *a, | 
| -  const void *b, | 
| -  PRUint32 len, | 
| -  PRStatus *statusOpt | 
| -); | 
| - | 
| -extern const NSSError NSS_ERROR_INVALID_POINTER; | 
| - | 
| -#define nsslibc_offsetof(str, memb) ((PRPtrdiff)(&(((str *)0)->memb))) | 
| - | 
| -PR_END_EXTERN_C | 
| - | 
| -#endif /* BASE_H */ | 
|  |