baset.h

来自「支持SSL v2/v3, TLS, PKCS #5, PKCS #7, PKCS」· C头文件 代码 · 共 148 行

H
148
字号
/*  * The contents of this file are subject to the Mozilla Public * License Version 1.1 (the "License"); you may not use this file * except in compliance with the License. You may obtain a copy of * the License at http://www.mozilla.org/MPL/ *  * Software distributed under the License is distributed on an "AS * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or * implied. See the License for the specific language governing * rights and limitations under the License. *  * The Original Code is the Netscape security libraries. *  * The Initial Developer of the Original Code is Netscape * Communications Corporation.  Portions created by Netscape are  * Copyright (C) 1994-2000 Netscape Communications Corporation.  All * Rights Reserved. *  * Contributor(s): *  * Alternatively, the contents of this file may be used under the * terms of the GNU General Public License Version 2 or later (the * "GPL"), in which case the provisions of the GPL are applicable  * instead of those above.  If you wish to allow use of your  * version of this file only under the terms of the GPL and not to * allow others to use your version of this file under the MPL, * indicate your decision by deleting the provisions above and * replace them with the notice and other provisions required by * the GPL.  If you do not delete the provisions above, a recipient * may use your version of this file under either the MPL or the * GPL. */#ifndef BASET_H#define BASET_H#ifdef DEBUGstatic const char BASET_CVS_ID[] = "@(#) $RCSfile: baset.h,v $ $Revision: 1.1 $ $Date: 2000/03/31 19:50:09 $ $Name: NSS_3_1_1_RTM $";#endif /* DEBUG *//* * baset.h * * This file contains definitions for the basic types used throughout * nss but not available publicly. */#ifndef NSSBASET_H#include "nssbaset.h"#endif /* NSSBASET_H */#include "plhash.h"PR_BEGIN_EXTERN_C/* * nssArenaMark * * This type is used to mark the current state of an NSSArena. */struct nssArenaMarkStr;typedef struct nssArenaMarkStr nssArenaMark;#ifdef DEBUG/* * ARENA_THREADMARK *  * Optionally, this arena implementation can be compiled with some * runtime checking enabled, which will catch the situation where * one thread "marks" the arena, another thread allocates memory, * and then the mark is released.  Usually this is a surprise to * the second thread, and this leads to weird runtime errors. * Define ARENA_THREADMARK to catch these cases; we define it for all * (internal and external) debug builds. */#define ARENA_THREADMARK/* * ARENA_DESTRUCTOR_LIST * * Unfortunately, our pointer-tracker facility, used in debug * builds to agressively fight invalid pointers, requries that * pointers be deregistered when objects are destroyed.  This * conflicts with the standard arena usage where "memory-only" * objects (that don't hold onto resources outside the arena) * can be allocated in an arena, and never destroyed other than * when the arena is destroyed.  Therefore we have added a * destructor-registratio facility to our arenas.  This was not * a simple decision, since we're getting ever-further away from * the original arena philosophy.  However, it was felt that * adding this in debug builds wouldn't be so bad; as it would * discourage them from being used for "serious" purposes. * This facility requires ARENA_THREADMARK to be defined. */#ifdef ARENA_THREADMARK#define ARENA_DESTRUCTOR_LIST#endif /* ARENA_THREADMARK */#endif /* DEBUG *//* * nssPointerTracker * * This type is used in debug builds (both external and internal) to * track our object pointers.  Objects of this type must be statically * allocated, which means the structure size must be available to the * compiler.  Therefore we must expose the contents of this structure. * But please don't access elements directly; use the accessors. */#ifdef DEBUGstruct nssPointerTrackerStr {  PRCallOnceType once;  PRLock *lock;  PLHashTable *table;};typedef struct nssPointerTrackerStr nssPointerTracker;#endif /* DEBUG *//* * nssStringType * * There are several types of strings in the real world.  We try to * use only UTF8 and avoid the rest, but that's not always possible. * So we have a couple converter routines to go to and from the other * string types.  We have to be able to specify those string types, * so we have this enumeration. */enum nssStringTypeEnum {  nssStringType_DirectoryString,  nssStringType_TeletexString, /* Not "teletext" with trailing 't' */  nssStringType_PrintableString,  nssStringType_UniversalString,  nssStringType_BMPString,  nssStringType_UTF8String,  nssStringType_PHGString,  nssStringType_GeneralString,  nssStringType_Unknown = -1};typedef enum nssStringTypeEnum nssStringType;PR_END_EXTERN_C#endif /* BASET_H */

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?