Compare commits
10 Commits
nss_dead_b
...
jnance_str
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5efdd75081 | ||
|
|
bb4d583501 | ||
|
|
87f2b425c5 | ||
|
|
e6beef1883 | ||
|
|
86e80f88cd | ||
|
|
a6b3ccc7c5 | ||
|
|
1c214c2fab | ||
|
|
806cb0a4d6 | ||
|
|
1baf4456fb | ||
|
|
f5ac20ebb4 |
5120
mozilla/gfx/src/gtk/nsFontMetricsGTK.cpp
Normal file
5120
mozilla/gfx/src/gtk/nsFontMetricsGTK.cpp
Normal file
File diff suppressed because it is too large
Load Diff
219
mozilla/gfx/src/gtk/nsFontMetricsGTK.h
Normal file
219
mozilla/gfx/src/gtk/nsFontMetricsGTK.h
Normal file
@@ -0,0 +1,219 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
* ex: set tabstop=8 softtabstop=2 shiftwidth=2 expandtab:
|
||||
*
|
||||
* The contents of this file are subject to the Netscape 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/NPL/
|
||||
*
|
||||
* 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 mozilla.org code.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*/
|
||||
|
||||
#ifndef nsFontMetricsGTK_h__
|
||||
#define nsFontMetricsGTK_h__
|
||||
|
||||
#include "nsDeviceContextGTK.h"
|
||||
#include "nsIFontMetrics.h"
|
||||
#include "nsIFontEnumerator.h"
|
||||
#include "nsFont.h"
|
||||
#include "nsString.h"
|
||||
#include "nsUnitConversion.h"
|
||||
#include "nsIDeviceContext.h"
|
||||
#include "nsCRT.h"
|
||||
#include "nsCOMPtr.h"
|
||||
#include "nsRenderingContextGTK.h"
|
||||
#include "nsICharRepresentable.h"
|
||||
|
||||
#include <gdk/gdk.h>
|
||||
#include <gdk/gdkx.h>
|
||||
|
||||
#undef FONT_HAS_GLYPH
|
||||
#define FONT_HAS_GLYPH(map, char) IS_REPRESENTABLE(map, char)
|
||||
|
||||
typedef struct nsFontCharSetInfo nsFontCharSetInfo;
|
||||
|
||||
typedef gint (*nsFontCharSetConverter)(nsFontCharSetInfo* aSelf,
|
||||
XFontStruct* aFont, const PRUnichar* aSrcBuf, PRInt32 aSrcLen,
|
||||
char* aDestBuf, PRInt32 aDestLen);
|
||||
|
||||
struct nsFontCharSet;
|
||||
struct nsFontFamily;
|
||||
struct nsFontNode;
|
||||
struct nsFontStretch;
|
||||
|
||||
class nsFontGTKUserDefined;
|
||||
class nsFontMetricsGTK;
|
||||
|
||||
class nsFontGTK
|
||||
{
|
||||
public:
|
||||
nsFontGTK();
|
||||
virtual ~nsFontGTK();
|
||||
NS_DECL_AND_IMPL_ZEROING_OPERATOR_NEW
|
||||
|
||||
void LoadFont(void);
|
||||
PRBool IsEmptyFont(GdkFont*);
|
||||
|
||||
inline int SupportsChar(PRUnichar aChar)
|
||||
{ return mFont && FONT_HAS_GLYPH(mMap, aChar); };
|
||||
|
||||
virtual GdkFont* GetGDKFont(void);
|
||||
virtual PRBool GetGDKFontIs10646(void);
|
||||
virtual gint GetWidth(const PRUnichar* aString, PRUint32 aLength) = 0;
|
||||
virtual gint DrawString(nsRenderingContextGTK* aContext,
|
||||
nsDrawingSurfaceGTK* aSurface, nscoord aX,
|
||||
nscoord aY, const PRUnichar* aString,
|
||||
PRUint32 aLength) = 0;
|
||||
#ifdef MOZ_MATHML
|
||||
// bounding metrics for a string
|
||||
// remember returned values are not in app units
|
||||
// - to emulate GetWidth () above
|
||||
virtual nsresult
|
||||
GetBoundingMetrics(const PRUnichar* aString,
|
||||
PRUint32 aLength,
|
||||
nsBoundingMetrics& aBoundingMetrics) = 0;
|
||||
#endif
|
||||
|
||||
PRUint32* mMap;
|
||||
nsFontCharSetInfo* mCharSetInfo;
|
||||
char* mName;
|
||||
nsFontGTKUserDefined* mUserDefinedFont;
|
||||
PRUint16 mSize;
|
||||
PRInt16 mBaselineAdjust;
|
||||
|
||||
protected:
|
||||
GdkFont* mFont;
|
||||
PRBool mAlreadyCalledLoadFont;
|
||||
};
|
||||
|
||||
class nsFontMetricsGTK : public nsIFontMetrics
|
||||
{
|
||||
public:
|
||||
nsFontMetricsGTK();
|
||||
virtual ~nsFontMetricsGTK();
|
||||
|
||||
NS_DECL_AND_IMPL_ZEROING_OPERATOR_NEW
|
||||
|
||||
NS_DECL_ISUPPORTS
|
||||
|
||||
NS_IMETHOD Init(const nsFont& aFont, nsIAtom* aLangGroup,
|
||||
nsIDeviceContext* aContext);
|
||||
NS_IMETHOD Destroy();
|
||||
|
||||
NS_IMETHOD GetXHeight(nscoord& aResult);
|
||||
NS_IMETHOD GetSuperscriptOffset(nscoord& aResult);
|
||||
NS_IMETHOD GetSubscriptOffset(nscoord& aResult);
|
||||
NS_IMETHOD GetStrikeout(nscoord& aOffset, nscoord& aSize);
|
||||
NS_IMETHOD GetUnderline(nscoord& aOffset, nscoord& aSize);
|
||||
|
||||
NS_IMETHOD GetHeight(nscoord &aHeight);
|
||||
NS_IMETHOD GetNormalLineHeight(nscoord &aHeight);
|
||||
NS_IMETHOD GetLeading(nscoord &aLeading);
|
||||
NS_IMETHOD GetEmHeight(nscoord &aHeight);
|
||||
NS_IMETHOD GetEmAscent(nscoord &aAscent);
|
||||
NS_IMETHOD GetEmDescent(nscoord &aDescent);
|
||||
NS_IMETHOD GetMaxHeight(nscoord &aHeight);
|
||||
NS_IMETHOD GetMaxAscent(nscoord &aAscent);
|
||||
NS_IMETHOD GetMaxDescent(nscoord &aDescent);
|
||||
NS_IMETHOD GetMaxAdvance(nscoord &aAdvance);
|
||||
NS_IMETHOD GetFont(const nsFont *&aFont);
|
||||
NS_IMETHOD GetLangGroup(nsIAtom** aLangGroup);
|
||||
NS_IMETHOD GetFontHandle(nsFontHandle &aHandle);
|
||||
|
||||
virtual nsresult GetSpaceWidth(nscoord &aSpaceWidth);
|
||||
|
||||
nsFontGTK* FindFont(PRUnichar aChar);
|
||||
nsFontGTK* FindUserDefinedFont(PRUnichar aChar);
|
||||
nsFontGTK* FindStyleSheetSpecificFont(PRUnichar aChar);
|
||||
nsFontGTK* FindStyleSheetGenericFont(PRUnichar aChar);
|
||||
nsFontGTK* FindLangGroupPrefFont(nsIAtom* aLangGroup, PRUnichar aChar);
|
||||
nsFontGTK* FindLangGroupFont(nsIAtom* aLangGroup, PRUnichar aChar, nsCString* aName);
|
||||
nsFontGTK* FindAnyFont(PRUnichar aChar);
|
||||
nsFontGTK* FindSubstituteFont(PRUnichar aChar);
|
||||
|
||||
nsFontGTK* SearchNode(nsFontNode* aNode, PRUnichar aChar);
|
||||
nsFontGTK* TryAliases(nsCString* aName, PRUnichar aChar);
|
||||
nsFontGTK* TryFamily(nsCString* aName, PRUnichar aChar);
|
||||
nsFontGTK* TryNode(nsCString* aName, PRUnichar aChar);
|
||||
nsFontGTK* TryNodes(nsAWritableCString &aFFREName, PRUnichar aChar);
|
||||
nsFontGTK* TryLangGroup(nsIAtom* aLangGroup, nsCString* aName, PRUnichar aChar);
|
||||
|
||||
nsFontGTK* AddToLoadedFontsList(nsFontGTK* aFont);
|
||||
nsFontGTK* PickASizeAndLoad(nsFontStretch* aStretch,
|
||||
nsFontCharSetInfo* aCharSet,
|
||||
PRUnichar aChar,
|
||||
const char *aName);
|
||||
|
||||
static nsresult FamilyExists(const nsString& aFontName);
|
||||
|
||||
//friend struct nsFontGTK;
|
||||
|
||||
nsFontGTK **mLoadedFonts;
|
||||
PRUint16 mLoadedFontsAlloc;
|
||||
PRUint16 mLoadedFontsCount;
|
||||
|
||||
nsFontGTK *mSubstituteFont;
|
||||
|
||||
nsCStringArray mFonts;
|
||||
PRUint16 mFontsIndex;
|
||||
nsVoidArray mFontIsGeneric;
|
||||
|
||||
nsCAutoString mDefaultFont;
|
||||
nsCString *mGeneric;
|
||||
nsCOMPtr<nsIAtom> mLangGroup;
|
||||
nsCAutoString mUserDefined;
|
||||
|
||||
PRUint8 mTriedAllGenerics;
|
||||
PRUint8 mIsUserDefined;
|
||||
|
||||
protected:
|
||||
void RealizeFont();
|
||||
|
||||
nsIDeviceContext *mDeviceContext;
|
||||
nsFont *mFont;
|
||||
nsFontGTK *mWesternFont;
|
||||
|
||||
nscoord mLeading;
|
||||
nscoord mEmHeight;
|
||||
nscoord mEmAscent;
|
||||
nscoord mEmDescent;
|
||||
nscoord mMaxHeight;
|
||||
nscoord mMaxAscent;
|
||||
nscoord mMaxDescent;
|
||||
nscoord mMaxAdvance;
|
||||
nscoord mXHeight;
|
||||
nscoord mSuperscriptOffset;
|
||||
nscoord mSubscriptOffset;
|
||||
nscoord mStrikeoutSize;
|
||||
nscoord mStrikeoutOffset;
|
||||
nscoord mUnderlineSize;
|
||||
nscoord mUnderlineOffset;
|
||||
nscoord mSpaceWidth;
|
||||
|
||||
PRUint16 mPixelSize;
|
||||
PRUint8 mStretchIndex;
|
||||
PRUint8 mStyleIndex;
|
||||
nsFontCharSetConverter mDocConverterType;
|
||||
};
|
||||
|
||||
class nsFontEnumeratorGTK : public nsIFontEnumerator
|
||||
{
|
||||
public:
|
||||
nsFontEnumeratorGTK();
|
||||
NS_DECL_ISUPPORTS
|
||||
NS_DECL_NSIFONTENUMERATOR
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -1,689 +0,0 @@
|
||||
;+#
|
||||
;+# 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) 2000 Netscape Communications Corporation. All
|
||||
;+# Rights Reserved.
|
||||
;+#
|
||||
;+# Contributor(s):
|
||||
;+# Dr Stephen Henson <stephen.henson@gemplus.com>
|
||||
;+#
|
||||
;+# 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.
|
||||
;+#
|
||||
;+#
|
||||
;+# OK, this file is meant to support SUN, LINUX, AIX and WINDOWS
|
||||
;+# 1. For all unix platforms, the string ";-" means "remove this line"
|
||||
;+# 2. For all unix platforms, the string " DATA " will be removed from any
|
||||
;+# line on which it occurs.
|
||||
;+# 3. Lines containing ";+" will have ";+" removed on SUN and LINUX.
|
||||
;+# On AIX, lines containing ";+" will be removed.
|
||||
;+# 4. For all unix platforms, the string ";;" will thave the ";;" removed.
|
||||
;+# 5. For all unix platforms, after the above processing has taken place,
|
||||
;+# all characters after the first ";" on the line will be removed.
|
||||
;+# And for AIX, the first ";" will also be removed.
|
||||
;+# This file is passed directly to windows. Since ';' is a comment, all UNIX
|
||||
;+# directives are hidden behind ";", ";+", and ";-"
|
||||
;+NSS_3.2 { # NSS 3.2 release
|
||||
;+ global:
|
||||
LIBRARY nss3 ;-
|
||||
EXPORTS ;-
|
||||
ATOB_AsciiToData;
|
||||
BTOA_ConvertItemToAscii;
|
||||
BTOA_DataToAscii;
|
||||
CERT_AsciiToName;
|
||||
CERT_CertTimesValid;
|
||||
CERT_CheckCertValidTimes;
|
||||
CERT_CreateCertificateRequest;
|
||||
CERT_ChangeCertTrust;
|
||||
CERT_DecodeDERCrl;
|
||||
CERT_DestroyCertificateRequest;
|
||||
CERT_DestroyCertList;
|
||||
CERT_DestroyName;
|
||||
CERT_EnableOCSPChecking;
|
||||
CERT_FormatName;
|
||||
CERT_DestroyCertificate;
|
||||
CERT_DupCertificate;
|
||||
CERT_FreeDistNames;
|
||||
CERT_FreeNicknames;
|
||||
CERT_GetAVATag;
|
||||
CERT_GetCertEmailAddress;
|
||||
CERT_GetCertNicknames;
|
||||
CERT_GetCertIssuerAndSN;
|
||||
CERT_GetCertTrust;
|
||||
CERT_GetCertUid;
|
||||
CERT_GetCommonName;
|
||||
CERT_GetCountryName;
|
||||
CERT_GetDBContentVersion;
|
||||
CERT_GetDefaultCertDB;
|
||||
CERT_GetDomainComponentName;
|
||||
CERT_GetLocalityName;
|
||||
CERT_GetOrgName;
|
||||
CERT_GetOrgUnitName;
|
||||
CERT_GetSSLCACerts;
|
||||
CERT_GetSlopTime;
|
||||
CERT_GetStateName;
|
||||
CERT_ImportCAChain;
|
||||
CERT_NameToAscii;
|
||||
CERT_RFC1485_EscapeAndQuote;
|
||||
CERT_SetSlopTime;
|
||||
CERT_VerifyCertName;
|
||||
CERT_VerifyCertNow;
|
||||
DER_UTCDayToAscii;
|
||||
DER_UTCTimeToAscii;
|
||||
DER_GeneralizedTimeToTime;
|
||||
NSS_Init;
|
||||
NSS_Initialize;
|
||||
NSS_InitReadWrite;
|
||||
NSS_NoDB_Init;
|
||||
NSS_Shutdown;
|
||||
NSS_VersionCheck;
|
||||
PK11_Authenticate;
|
||||
PK11_ChangePW;
|
||||
PK11_CheckUserPassword;
|
||||
PK11_CipherOp;
|
||||
PK11_CloneContext;
|
||||
PK11_ConfigurePKCS11;
|
||||
PK11_CreateContextBySymKey;
|
||||
PK11_CreateDigestContext;
|
||||
PK11_DestroyContext;
|
||||
PK11_DestroyTokenObject;
|
||||
PK11_DigestBegin;
|
||||
PK11_DigestOp;
|
||||
PK11_DigestFinal;
|
||||
PK11_DoesMechanism;
|
||||
PK11_FindCertFromNickname;
|
||||
PK11_FindCertFromDERCert;
|
||||
PK11_FindCertByIssuerAndSN;
|
||||
PK11_FindKeyByAnyCert;
|
||||
PK11_FindKeyByDERCert;
|
||||
PK11_FindSlotByName;
|
||||
PK11_Finalize;
|
||||
PK11_FortezzaHasKEA;
|
||||
PK11_FreeSlot;
|
||||
PK11_FreeSlotList;
|
||||
PK11_FreeSymKey;
|
||||
PK11_GenerateKeyPair;
|
||||
PK11_GenerateRandom;
|
||||
PK11_GenerateNewParam;
|
||||
PK11_GetAllTokens;
|
||||
PK11_GetBlockSize;
|
||||
PK11_GetFirstSafe;
|
||||
PK11_GetInternalKeySlot;
|
||||
PK11_GetInternalSlot;
|
||||
PK11_GetSlotName;
|
||||
PK11_GetTokenName;
|
||||
PK11_HashBuf;
|
||||
PK11_IsFIPS;
|
||||
PK11_IsFriendly;
|
||||
PK11_IsInternal;
|
||||
PK11_IsHW;
|
||||
PK11_IsPresent;
|
||||
PK11_IsReadOnly;
|
||||
PK11_KeyGen;
|
||||
PK11_ListCerts;
|
||||
PK11_NeedLogin;
|
||||
PK11_RandomUpdate;
|
||||
PK11_SetPasswordFunc;
|
||||
PK11_SetSlotPWValues;
|
||||
PORT_Alloc;
|
||||
PORT_Free;
|
||||
PORT_GetError;
|
||||
PORT_SetError;
|
||||
PORT_SetUCS4_UTF8ConversionFunction;
|
||||
PORT_SetUCS2_UTF8ConversionFunction;
|
||||
PORT_SetUCS2_ASCIIConversionFunction;
|
||||
SECITEM_CopyItem;
|
||||
SECITEM_DupItem;
|
||||
SECITEM_FreeItem;
|
||||
SECITEM_ZfreeItem;
|
||||
SECKEY_ConvertToPublicKey;
|
||||
SECKEY_CopyPrivateKey;
|
||||
SECKEY_CreateSubjectPublicKeyInfo;
|
||||
SECKEY_DestroyPrivateKey;
|
||||
SECKEY_DestroySubjectPublicKeyInfo;
|
||||
SECMOD_IsModulePresent;
|
||||
SECOID_FindOIDTagDescription;
|
||||
SECOID_GetAlgorithmTag;
|
||||
SEC_DeletePermCertificate;
|
||||
SEC_DeletePermCRL;
|
||||
SEC_DerSignData;
|
||||
SEC_DestroyCrl;
|
||||
SEC_FindCrlByDERCert;
|
||||
SEC_FindCrlByName;
|
||||
SEC_LookupCrls;
|
||||
SEC_NewCrl;
|
||||
;+#
|
||||
;+# The following symbols are exported only to make libssl3.so work.
|
||||
;+# These are still private!!!
|
||||
;+#
|
||||
__CERT_NewTempCertificate;
|
||||
__PK11_CreateContextByRawKey;
|
||||
__PK11_GetKeyData;
|
||||
__nss_InitLock;
|
||||
CERT_CertChainFromCert;
|
||||
CERT_DestroyCertificateList;
|
||||
CERT_DupCertList;
|
||||
CERT_ExtractPublicKey;
|
||||
CERT_FindCertByName;
|
||||
DER_Lengths;
|
||||
DSAU_DecodeDerSig;
|
||||
DSAU_EncodeDerSig;
|
||||
HASH_GetHashObject;
|
||||
NSSRWLock_Destroy;
|
||||
NSSRWLock_HaveWriteLock;
|
||||
NSSRWLock_LockRead;
|
||||
NSSRWLock_LockWrite;
|
||||
NSSRWLock_New;
|
||||
NSSRWLock_UnlockRead;
|
||||
NSSRWLock_UnlockWrite;
|
||||
NSS_PutEnv;
|
||||
PK11_Derive;
|
||||
PK11_DeriveWithFlags;
|
||||
PK11_DigestKey;
|
||||
PK11_FindBestKEAMatch;
|
||||
PK11_FindFixedKey;
|
||||
PK11_GenerateFortezzaIV;
|
||||
PK11_GetBestKeyLength;
|
||||
PK11_GetBestSlot;
|
||||
PK11_GetBestSlotMultiple;
|
||||
PK11_GetBestWrapMechanism;
|
||||
PK11_GetCurrentWrapIndex;
|
||||
PK11_GetMechanism;
|
||||
PK11_GetModuleID;
|
||||
PK11_GetPrivateModulusLen;
|
||||
PK11_GetSlotFromKey;
|
||||
PK11_GetSlotFromPrivateKey;
|
||||
PK11_GetSlotID;
|
||||
PK11_GetSlotSeries;
|
||||
PK11_GetTokenInfo;
|
||||
PK11_GetWindow;
|
||||
PK11_GetWrapKey;
|
||||
PK11_IVFromParam;
|
||||
PK11_MakeKEAPubKey;
|
||||
PK11_ParamFromIV;
|
||||
PK11_PubDecryptRaw;
|
||||
PK11_PubDerive;
|
||||
PK11_PubEncryptRaw;
|
||||
PK11_PubUnwrapSymKey;
|
||||
PK11_PubWrapSymKey;
|
||||
PK11_ReferenceSymKey;
|
||||
PK11_RestoreContext;
|
||||
PK11_SaveContext;
|
||||
PK11_SetFortezzaHack;
|
||||
PK11_SetWrapKey;
|
||||
PK11_Sign;
|
||||
PK11_SignatureLen;
|
||||
PK11_SymKeyFromHandle;
|
||||
PK11_TokenExists;
|
||||
PK11_UnwrapSymKey;
|
||||
PK11_UnwrapSymKeyWithFlags;
|
||||
PK11_Verify;
|
||||
PK11_VerifyKeyOK;
|
||||
PK11_WrapSymKey;
|
||||
PORT_ArenaAlloc;
|
||||
PORT_ArenaZAlloc;
|
||||
PORT_FreeArena;
|
||||
PORT_NewArena;
|
||||
PORT_Realloc;
|
||||
PORT_ZAlloc;
|
||||
PORT_ZFree;
|
||||
RSA_FormatBlock;
|
||||
SECITEM_CompareItem;
|
||||
SECKEY_CreateRSAPrivateKey;
|
||||
SECKEY_DestroyPublicKey;
|
||||
SECKEY_PublicKeyStrength;
|
||||
SECKEY_UpdateCertPQG;
|
||||
SECMOD_LookupSlot;
|
||||
SGN_Begin;
|
||||
SGN_DestroyContext;
|
||||
SGN_End;
|
||||
SGN_NewContext;
|
||||
SGN_Update;
|
||||
VFY_Begin;
|
||||
VFY_CreateContext;
|
||||
VFY_DestroyContext;
|
||||
VFY_End;
|
||||
VFY_Update;
|
||||
;+#
|
||||
;+# The following symbols are exported only to make libsmime3.so work.
|
||||
;+# These are still private!!!
|
||||
;+#
|
||||
__CERT_ClosePermCertDB;
|
||||
__CERT_DecodeDERCertificate;
|
||||
__CERT_TraversePermCertsForNickname;
|
||||
__CERT_TraversePermCertsForSubject;
|
||||
__PBE_CreateContext;
|
||||
__PBE_DestroyContext;
|
||||
__PBE_GenerateBits;
|
||||
ATOB_ConvertAsciiToItem;
|
||||
CERT_AddCertToListTail;
|
||||
CERT_CertListFromCert;
|
||||
CERT_DestroyCertArray;
|
||||
CERT_FindCertByDERCert;
|
||||
CERT_FindCertByIssuerAndSN;
|
||||
CERT_FindSMimeProfile;
|
||||
CERT_ImportCerts;
|
||||
CERT_NewCertList;
|
||||
CERT_OpenCertDBFilename;
|
||||
CERT_SaveSMimeProfile;
|
||||
CERT_VerifyCert;
|
||||
DER_GetInteger;
|
||||
DER_TimeToUTCTime;
|
||||
DER_UTCTimeToTime;
|
||||
PK11_AlgtagToMechanism;
|
||||
PK11_BlockData;
|
||||
PK11_CreatePBEAlgorithmID;
|
||||
PK11_DestroyObject;
|
||||
PK11_ExportEncryptedPrivateKeyInfo;
|
||||
PK11_ExportPrivateKeyInfo;
|
||||
PK11_FindCertAndKeyByRecipientList;
|
||||
PK11_FindCertAndKeyByRecipientListNew;
|
||||
PK11_FindCertInSlot;
|
||||
PK11_FindPrivateKeyFromCert;
|
||||
PK11_FortezzaMapSig;
|
||||
PK11_GetKeyLength;
|
||||
PK11_GetKeyStrength;
|
||||
PK11_ImportCertForKeyToSlot;
|
||||
PK11_ImportEncryptedPrivateKeyInfo;
|
||||
PK11_ImportPrivateKeyInfo;
|
||||
PK11_MapPBEMechanismToCryptoMechanism;
|
||||
PK11_PBEKeyGen;
|
||||
PK11_ParamFromAlgid;
|
||||
PK11_ParamToAlgid;
|
||||
PK11_TraverseCertsForNicknameInSlot;
|
||||
PK11_TraverseCertsForSubjectInSlot;
|
||||
PORT_ArenaGrow;
|
||||
PORT_ArenaMark;
|
||||
PORT_ArenaRelease;
|
||||
PORT_ArenaStrdup;
|
||||
PORT_ArenaUnmark;
|
||||
PORT_UCS2_ASCIIConversion;
|
||||
PORT_UCS2_UTF8Conversion;
|
||||
SECITEM_AllocItem;
|
||||
SECKEY_CopyEncryptedPrivateKeyInfo;
|
||||
SECKEY_CopyPrivateKeyInfo;
|
||||
SECKEY_DestroyEncryptedPrivateKeyInfo;
|
||||
SECKEY_DestroyPrivateKeyInfo;
|
||||
SECOID_CompareAlgorithmID;
|
||||
SECOID_CopyAlgorithmID;
|
||||
SECOID_DestroyAlgorithmID;
|
||||
SECOID_FindOID;
|
||||
SECOID_FindOIDByTag;
|
||||
SECOID_FindOIDTag;
|
||||
SECOID_SetAlgorithmID;
|
||||
SEC_ASN1DecodeInteger;
|
||||
SEC_ASN1DecodeItem;
|
||||
SEC_ASN1DecoderClearFilterProc;
|
||||
SEC_ASN1DecoderClearNotifyProc;
|
||||
SEC_ASN1DecoderFinish;
|
||||
SEC_ASN1DecoderSetFilterProc;
|
||||
SEC_ASN1DecoderSetNotifyProc;
|
||||
SEC_ASN1DecoderStart;
|
||||
SEC_ASN1DecoderUpdate;
|
||||
SEC_ASN1Encode;
|
||||
SEC_ASN1EncodeInteger;
|
||||
SEC_ASN1EncodeItem;
|
||||
SEC_ASN1EncoderClearNotifyProc;
|
||||
SEC_ASN1EncoderClearStreaming;
|
||||
SEC_ASN1EncoderClearTakeFromBuf;
|
||||
SEC_ASN1EncoderFinish;
|
||||
SEC_ASN1EncoderSetNotifyProc;
|
||||
SEC_ASN1EncoderSetStreaming;
|
||||
SEC_ASN1EncoderSetTakeFromBuf;
|
||||
SEC_ASN1EncoderStart;
|
||||
SEC_ASN1EncoderUpdate;
|
||||
SEC_ASN1LengthLength;
|
||||
SEC_PKCS5GetCryptoAlgorithm;
|
||||
SEC_PKCS5GetKeyLength;
|
||||
SEC_PKCS5GetPBEAlgorithm;
|
||||
SEC_PKCS5IsAlgorithmPBEAlg;
|
||||
SEC_SignData;
|
||||
SGN_CompareDigestInfo;
|
||||
SGN_CopyDigestInfo;
|
||||
SGN_CreateDigestInfo;
|
||||
SGN_DestroyDigestInfo;
|
||||
SGN_Digest;
|
||||
VFY_VerifyData;
|
||||
VFY_VerifyDigest;
|
||||
;+#
|
||||
;+# Data objects
|
||||
;+#
|
||||
;+# Don't export these DATA symbols on Windows because they don't work right.
|
||||
;;CERT_CrlTemplate DATA ;
|
||||
;;CERT_SignedDataTemplate DATA ;
|
||||
;;CERT_CertificateTemplate DATA ;
|
||||
;;CERT_CertificateRequestTemplate DATA ;
|
||||
;;CERT_IssuerAndSNTemplate DATA ;
|
||||
;;CERT_SetOfSignedCrlTemplate DATA ;
|
||||
;;SECKEY_DSAPublicKeyTemplate DATA ;
|
||||
;;SECKEY_EncryptedPrivateKeyInfoTemplate DATA ;
|
||||
;;SECKEY_PointerToEncryptedPrivateKeyInfoTemplate DATA ;
|
||||
;;SECKEY_PointerToPrivateKeyInfoTemplate DATA ;
|
||||
;;SECKEY_PrivateKeyInfoTemplate DATA ;
|
||||
;;SECKEY_RSAPublicKeyTemplate DATA ;
|
||||
;;SECOID_AlgorithmIDTemplate DATA ;
|
||||
;;SEC_AnyTemplate DATA ;
|
||||
;;SEC_BMPStringTemplate DATA ;
|
||||
;;SEC_BitStringTemplate DATA ;
|
||||
;;SEC_GeneralizedTimeTemplate DATA ;
|
||||
;;SEC_IA5StringTemplate DATA ;
|
||||
;;SEC_IntegerTemplate DATA ;
|
||||
;;SEC_ObjectIDTemplate DATA ;
|
||||
;;SEC_OctetStringTemplate DATA ;
|
||||
;;SEC_PointerToAnyTemplate DATA ;
|
||||
;;SEC_PointerToOctetStringTemplate DATA ;
|
||||
;;SEC_SetOfAnyTemplate DATA ;
|
||||
;;SEC_UTCTimeTemplate DATA ;
|
||||
;;sgn_DigestInfoTemplate DATA ;
|
||||
NSS_Get_CERT_CrlTemplate;
|
||||
NSS_Get_CERT_SignedDataTemplate;
|
||||
NSS_Get_CERT_CertificateTemplate;
|
||||
NSS_Get_CERT_CertificateRequestTemplate;
|
||||
NSS_Get_CERT_IssuerAndSNTemplate;
|
||||
NSS_Get_CERT_SetOfSignedCrlTemplate;
|
||||
NSS_Get_SECKEY_DSAPublicKeyTemplate;
|
||||
NSS_Get_SECKEY_EncryptedPrivateKeyInfoTemplate;
|
||||
NSS_Get_SECKEY_PointerToEncryptedPrivateKeyInfoTemplate;
|
||||
NSS_Get_SECKEY_PointerToPrivateKeyInfoTemplate;
|
||||
NSS_Get_SECKEY_PrivateKeyInfoTemplate;
|
||||
NSS_Get_SECKEY_RSAPublicKeyTemplate;
|
||||
NSS_Get_SECOID_AlgorithmIDTemplate;
|
||||
NSS_Get_SEC_AnyTemplate;
|
||||
NSS_Get_SEC_BMPStringTemplate;
|
||||
NSS_Get_SEC_BitStringTemplate;
|
||||
NSS_Get_SEC_GeneralizedTimeTemplate;
|
||||
NSS_Get_SEC_IA5StringTemplate;
|
||||
NSS_Get_SEC_IntegerTemplate;
|
||||
NSS_Get_SEC_ObjectIDTemplate;
|
||||
NSS_Get_SEC_OctetStringTemplate;
|
||||
NSS_Get_SEC_PointerToAnyTemplate;
|
||||
NSS_Get_SEC_PointerToOctetStringTemplate;
|
||||
NSS_Get_SEC_SetOfAnyTemplate;
|
||||
NSS_Get_SEC_UTCTimeTemplate;
|
||||
NSS_Get_sgn_DigestInfoTemplate;
|
||||
;+# commands
|
||||
CERT_DecodeBasicConstraintValue;
|
||||
CERT_DecodeOidSequence;
|
||||
CERT_DecodeUserNotice;
|
||||
CERT_DecodeCertificatePoliciesExtension;
|
||||
CERT_DestroyCertificatePoliciesExtension;
|
||||
CERT_FindCertByNicknameOrEmailAddr;
|
||||
CERT_FindCertByNickname;
|
||||
CERT_GenTime2FormattedAscii;
|
||||
CERT_Hexify;
|
||||
CERT_CompareName;
|
||||
PK11SDR_Encrypt;
|
||||
PK11SDR_Decrypt;
|
||||
NSSBase64Decoder_Create;
|
||||
NSSBase64Decoder_Destroy;
|
||||
NSSBase64Decoder_Update;
|
||||
NSSBase64Encoder_Create;
|
||||
NSSBase64Encoder_Destroy;
|
||||
NSSBase64Encoder_Update;
|
||||
;+#PK11_DoPassword;
|
||||
;+#PK11_FindKeyByKeyID;
|
||||
PK11_InitPin;
|
||||
PK11_NeedUserInit;
|
||||
;+ local:
|
||||
;+ *;
|
||||
;+};
|
||||
;+NSS_3.2.1 { # NSS 3.2.1 release
|
||||
;+ global:
|
||||
CERT_AddRDN;
|
||||
CERT_CreateRDN;
|
||||
CERT_CreateAVA;
|
||||
CERT_CreateName;
|
||||
;+ local:
|
||||
;+ *;
|
||||
;+};
|
||||
;+NSS_3.3 { # NSS 3.3. release
|
||||
;+ global:
|
||||
CERT_CheckCertUsage;
|
||||
CERT_FindCertIssuer;
|
||||
PK11_GetModule;
|
||||
SECKEY_CreateDHPrivateKey;
|
||||
SECKEY_GetPublicKeyType;
|
||||
SECMOD_AddNewModule;
|
||||
;+#
|
||||
;+# The following symbols are exported only to make JSS work.
|
||||
;+# These are still private!!!
|
||||
;+#
|
||||
CERT_DisableOCSPChecking;
|
||||
CERT_DisableOCSPDefaultResponder;
|
||||
CERT_EnableOCSPDefaultResponder;
|
||||
CERT_GetCertTimes;
|
||||
CERT_ImportCAChainTrusted;
|
||||
CERT_ImportCRL;
|
||||
CERT_IsCACert;
|
||||
CERT_IsCADERCert;
|
||||
CERT_SetOCSPDefaultResponder;
|
||||
PBE_CreateContext;
|
||||
PBE_DestroyContext;
|
||||
PBE_GenerateBits;
|
||||
PK11_CheckSSOPassword;
|
||||
PK11_CopySymKeyForSigning;
|
||||
PK11_DeleteTokenCertAndKey;
|
||||
PK11_DEREncodePublicKey;
|
||||
PK11_ExtractKeyValue;
|
||||
PK11_FindCertsFromNickname;
|
||||
PK11_FindKeyByKeyID;
|
||||
PK11_GetIVLength;
|
||||
PK11_GetKeyData;
|
||||
PK11_GetKeyType;
|
||||
PK11_GetLowLevelKeyIDForCert;
|
||||
PK11_GetLowLevelKeyIDForPrivateKey;
|
||||
PK11_GetSlotPWValues;
|
||||
PK11_ImportCertForKey;
|
||||
PK11_ImportDERCertForKey;
|
||||
PK11_ImportDERPrivateKeyInfo;
|
||||
PK11_ImportSymKey;
|
||||
PK11_IsLoggedIn;
|
||||
PK11_KeyForDERCertExists;
|
||||
PK11_KeyForCertExists;
|
||||
PK11_ListPrivateKeysInSlot;
|
||||
PK11_ListCertsInSlot;
|
||||
PK11_Logout;
|
||||
PK11_NeedPWInit;
|
||||
PK11_MakeIDFromPubKey;
|
||||
PK11_PQG_DestroyParams;
|
||||
PK11_PQG_DestroyVerify;
|
||||
PK11_PQG_GetBaseFromParams;
|
||||
PK11_PQG_GetCounterFromVerify;
|
||||
PK11_PQG_GetHFromVerify;
|
||||
PK11_PQG_GetPrimeFromParams;
|
||||
PK11_PQG_GetSeedFromVerify;
|
||||
PK11_PQG_GetSubPrimeFromParams;
|
||||
PK11_PQG_NewParams;
|
||||
PK11_PQG_NewVerify;
|
||||
PK11_PQG_ParamGen;
|
||||
PK11_PQG_ParamGenSeedLen;
|
||||
PK11_PQG_VerifyParams;
|
||||
PK11_ReferenceSlot;
|
||||
PK11_SeedRandom;
|
||||
PK11_UnwrapPrivKey;
|
||||
PK11_VerifyRecover;
|
||||
PK11_WrapPrivKey;
|
||||
SEC_CertNicknameConflict;
|
||||
SEC_PKCS5GetIV;
|
||||
SECMOD_DeleteInternalModule;
|
||||
SECMOD_DestroyModule;
|
||||
SECMOD_GetDefaultModuleList;
|
||||
SECMOD_GetDefaultModuleListLock;
|
||||
SECMOD_GetInternalModule;
|
||||
SECMOD_GetReadLock;
|
||||
SECMOD_ReferenceModule;
|
||||
SECMOD_ReleaseReadLock;
|
||||
SECKEY_AddPrivateKeyToListTail;
|
||||
SECKEY_EncodeDERSubjectPublicKeyInfo;
|
||||
SECKEY_ExtractPublicKey;
|
||||
SECKEY_DestroyPrivateKeyList;
|
||||
SECKEY_GetPrivateKeyType;
|
||||
SECKEY_HashPassword;
|
||||
SECKEY_ImportDERPublicKey;
|
||||
SECKEY_NewPrivateKeyList;
|
||||
SECKEY_RemovePrivateKeyListNode;
|
||||
VFY_EndWithSignature;
|
||||
;+ local:
|
||||
;+ *;
|
||||
;+};
|
||||
;+NSS_3.3.1 { # NSS 3.3.1 release
|
||||
;+ global:
|
||||
;+#
|
||||
;+# The following symbols are exported only to make libsmime3.so work.
|
||||
;+# These are still private!!!
|
||||
;+#
|
||||
PK11_CreatePBEParams;
|
||||
PK11_DestroyPBEParams;
|
||||
;+ local:
|
||||
;+ *;
|
||||
;+};
|
||||
;+NSS_3.4 { # NSS 3.4 release
|
||||
;+ global:
|
||||
SECMOD_AddNewModuleEx;
|
||||
SECMOD_DeleteModule;
|
||||
SECMOD_FreeModuleSpecList;
|
||||
SECMOD_GetModuleSpecList;
|
||||
SECMOD_LoadModule;
|
||||
SECMOD_LoadUserModule;
|
||||
SECMOD_UnloadUserModule;
|
||||
SECMOD_UpdateModule;
|
||||
;+# for PKCS #12
|
||||
PK11_RawPBEKeyGen;
|
||||
;+# for PSM
|
||||
__CERT_AddTempCertToPerm;
|
||||
CERT_AddOKDomainName;
|
||||
CERT_CopyName;
|
||||
CERT_CreateSubjectCertList;
|
||||
CERT_DecodeAVAValue;
|
||||
;+#CERT_DecodeCertFromPackage;
|
||||
CERT_DecodeGeneralName;
|
||||
CERT_DecodeTrustString;
|
||||
CERT_DerNameToAscii;
|
||||
CERT_EncodeGeneralName;
|
||||
CERT_FilterCertListByCANames;
|
||||
CERT_FilterCertListByUsage;
|
||||
CERT_FindCertExtension;
|
||||
CERT_FindKeyUsageExtension;
|
||||
CERT_FindUserCertByUsage;
|
||||
CERT_FindUserCertsByUsage;
|
||||
CERT_GetCertChainFromCert;
|
||||
CERT_GetOCSPAuthorityInfoAccessLocation;
|
||||
CERT_KeyFromDERCrl;
|
||||
CERT_MakeCANickname;
|
||||
CERT_NicknameStringsFromCertList;
|
||||
CERT_VerifySignedData;
|
||||
DER_Encode;
|
||||
HASH_Begin;
|
||||
HASH_Create;
|
||||
HASH_Destroy;
|
||||
HASH_End;
|
||||
HASH_ResultLen;
|
||||
HASH_Update;
|
||||
NSSBase64_DecodeBuffer; # from Stan
|
||||
NSSBase64_EncodeItem; # from Stan
|
||||
PK11_GetKeyGen;
|
||||
PK11_GetMinimumPwdLength;
|
||||
PK11_GetNextSafe;
|
||||
PK11_GetPadMechanism;
|
||||
PK11_GetSlotInfo;
|
||||
PK11_HasRootCerts;
|
||||
PK11_IsDisabled;
|
||||
PK11_LoadPrivKey;
|
||||
PK11_LogoutAll;
|
||||
PK11_MechanismToAlgtag;
|
||||
PK11_ResetToken;
|
||||
PK11_TraverseSlotCerts;
|
||||
SEC_ASN1Decode;
|
||||
SECKEY_CopySubjectPublicKeyInfo;
|
||||
SECMOD_CreateModule;
|
||||
SECMOD_FindModule;
|
||||
SECMOD_FindSlot;
|
||||
SECMOD_PubCipherFlagstoInternal;
|
||||
SECMOD_PubMechFlagstoInternal;
|
||||
;;CERT_NameTemplate DATA ;
|
||||
;;CERT_SubjectPublicKeyInfoTemplate DATA ;
|
||||
;;SEC_BooleanTemplate DATA ;
|
||||
;;SEC_NullTemplate DATA ;
|
||||
;;SEC_SignedCertificateTemplate DATA ;
|
||||
;;SEC_UTF8StringTemplate DATA ;
|
||||
NSS_Get_CERT_NameTemplate;
|
||||
NSS_Get_CERT_SubjectPublicKeyInfoTemplate;
|
||||
NSS_Get_SEC_BooleanTemplate;
|
||||
NSS_Get_SEC_NullTemplate;
|
||||
NSS_Get_SEC_SignedCertificateTemplate;
|
||||
NSS_Get_SEC_UTF8StringTemplate;
|
||||
;+# for JSS
|
||||
PK11_DeleteTokenPrivateKey;
|
||||
PK11_DeleteTokenPublicKey;
|
||||
PK11_DeleteTokenSymKey;
|
||||
PK11_GetNextSymKey;
|
||||
PK11_GetPQGParamsFromPrivateKey;
|
||||
PK11_GetPrivateKeyNickname;
|
||||
PK11_GetPublicKeyNickname;
|
||||
PK11_GetSymKeyNickname;
|
||||
PK11_ImportDERPrivateKeyInfoAndReturnKey;
|
||||
PK11_ImportPrivateKeyInfoAndReturnKey;
|
||||
PK11_ImportPublicKey;
|
||||
PK11_ImportSymKeyWithFlags;
|
||||
PK11_ListFixedKeysInSlot;
|
||||
PK11_ListPrivKeysInSlot;
|
||||
PK11_ListPublicKeysInSlot;
|
||||
PK11_ProtectedAuthenticationPath;
|
||||
PK11_SetPrivateKeyNickname;
|
||||
PK11_SetPublicKeyNickname;
|
||||
PK11_SetSymKeyNickname;
|
||||
SECKEY_DecodeDERSubjectPublicKeyInfo;
|
||||
SECKEY_DestroyPublicKeyList;
|
||||
;+# for debugging
|
||||
nss_DumpCertificateCacheInfo;
|
||||
;+ local:
|
||||
;+ *;
|
||||
;+};
|
||||
;+NSS_3.5 { # cert creation APIs used by certutil
|
||||
;+ global:
|
||||
CERT_AddExtension;
|
||||
CERT_CopyRDN;
|
||||
CERT_CreateCertificate;
|
||||
CERT_CreateValidity;
|
||||
CERT_DestroyValidity;
|
||||
CERT_EncodeAndAddBitStrExtension;
|
||||
CERT_EncodeAuthKeyID;
|
||||
CERT_EncodeBasicConstraintValue;
|
||||
CERT_EncodeCRLDistributionPoints;
|
||||
CERT_FinishExtensions;
|
||||
CERT_StartCertExtensions;
|
||||
DER_AsciiToTime;
|
||||
PK11_ImportCert;
|
||||
PORT_Strdup;
|
||||
SECMOD_CanDeleteInternalModule;
|
||||
;+ local:
|
||||
;+ *;
|
||||
;+};
|
||||
;+NSS_3.6 { # cert creation APIs used by certutil
|
||||
;+ global:
|
||||
PK11_GetPBEIV;
|
||||
CERT_VerifyCertChain;
|
||||
;+ local:
|
||||
;+ *;
|
||||
;+};
|
||||
134
mozilla/xpcom/ds/Makefile.in
Normal file
134
mozilla/xpcom/ds/Makefile.in
Normal file
@@ -0,0 +1,134 @@
|
||||
#
|
||||
# The contents of this file are subject to the Netscape 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/NPL/
|
||||
#
|
||||
# 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 mozilla.org code.
|
||||
#
|
||||
# The Initial Developer of the Original Code is Netscape
|
||||
# Communications Corporation. Portions created by Netscape are
|
||||
# Copyright (C) 1998 Netscape Communications Corporation. All
|
||||
# Rights Reserved.
|
||||
#
|
||||
# Contributor(s):
|
||||
#
|
||||
|
||||
DEPTH = ../..
|
||||
topsrcdir = @top_srcdir@
|
||||
srcdir = @srcdir@
|
||||
VPATH = @srcdir@
|
||||
|
||||
include $(DEPTH)/config/autoconf.mk
|
||||
|
||||
MODULE = xpcom
|
||||
XPIDL_MODULE = xpcom_ds
|
||||
LIBRARY_NAME = xpcomds_s
|
||||
REQUIRES = unicharutil string
|
||||
|
||||
CSRCS = \
|
||||
pldhash.c \
|
||||
plvector.c \
|
||||
$(NULL)
|
||||
|
||||
CPPSRCS = \
|
||||
nsArena.cpp \
|
||||
nsAtomTable.cpp \
|
||||
nsAtomService.cpp \
|
||||
nsAVLTree.cpp \
|
||||
nsByteBuffer.cpp \
|
||||
nsCRT.cpp \
|
||||
nsConjoiningEnumerator.cpp \
|
||||
nsDeque.cpp \
|
||||
nsEmptyEnumerator.cpp \
|
||||
nsEnumeratorUtils.cpp \
|
||||
nsFixedSizeAllocator.cpp \
|
||||
nsHashtable.cpp \
|
||||
nsHashtableEnumerator.cpp \
|
||||
nsObserver.cpp \
|
||||
nsObserverList.cpp \
|
||||
nsObserverService.cpp \
|
||||
nsProperties.cpp \
|
||||
nsPersistentProperties.cpp \
|
||||
nsQuickSort.cpp \
|
||||
nsSizeOfHandler.cpp \
|
||||
nsStaticNameTable.cpp \
|
||||
nsStatistics.cpp \
|
||||
nsStringMap.cpp \
|
||||
nsSupportsArray.cpp \
|
||||
nsSupportsArrayEnumerator.cpp \
|
||||
nsSupportsPrimitives.cpp \
|
||||
nsUnicharBuffer.cpp \
|
||||
nsVoidArray.cpp \
|
||||
nsVoidBTree.cpp \
|
||||
nsTextFormatter.cpp \
|
||||
nsTimelineService.cpp \
|
||||
$(NULL)
|
||||
|
||||
EXPORTS = \
|
||||
nsAVLTree.h \
|
||||
nsAtomService.h \
|
||||
nsCppSharedAllocator.h \
|
||||
nsCRT.h \
|
||||
nsDeque.h \
|
||||
nsEnumeratorUtils.h \
|
||||
nsFixedSizeAllocator.h \
|
||||
nsHashtable.h \
|
||||
nsHashtableEnumerator.h \
|
||||
nsIArena.h \
|
||||
nsIByteBuffer.h \
|
||||
nsIObserverList.h \
|
||||
nsISimpleEnumerator.h \
|
||||
nsISizeOfHandler.h \
|
||||
nsIUnicharBuffer.h \
|
||||
nsInt64.h \
|
||||
nsQuickSort.h \
|
||||
nsStaticNameTable.h \
|
||||
nsStatistics.h \
|
||||
nsStringMap.h \
|
||||
nsSupportsArray.h \
|
||||
nsSupportsPrimitives.h \
|
||||
nsTime.h \
|
||||
nsUnitConversion.h \
|
||||
nsVector.h \
|
||||
nsVoidArray.h \
|
||||
nsVoidBTree.h \
|
||||
pldhash.h \
|
||||
plvector.h \
|
||||
nsTextFormatter.h \
|
||||
$(NULL)
|
||||
|
||||
XPIDLSRCS = \
|
||||
nsIAtom.idl \
|
||||
nsIAtomService.idl \
|
||||
nsICollection.idl \
|
||||
nsIEnumerator.idl \
|
||||
nsIObserver.idl \
|
||||
nsIObserverService.idl \
|
||||
nsIPersistentProperties2.idl \
|
||||
nsIProperties.idl \
|
||||
nsISerializable.idl \
|
||||
nsIStopwatch.idl \
|
||||
nsISupportsArray.idl \
|
||||
nsISupportsIterators.idl \
|
||||
nsISupportsPrimitives.idl \
|
||||
nsITimelineService.idl \
|
||||
$(NULL)
|
||||
|
||||
EXPORTS := $(addprefix $(srcdir)/, $(EXPORTS))
|
||||
|
||||
# we don't want the shared lib, but we want to force the creation of a static lib.
|
||||
FORCE_STATIC_LIB = 1
|
||||
|
||||
# Force use of PIC
|
||||
FORCE_USE_PIC = 1
|
||||
|
||||
include $(topsrcdir)/config/rules.mk
|
||||
|
||||
DEFINES += -D_IMPL_NS_COM -D_IMPL_NS_BASE
|
||||
|
||||
300
mozilla/xpcom/ds/nsStringMap.cpp
Normal file
300
mozilla/xpcom/ds/nsStringMap.cpp
Normal file
@@ -0,0 +1,300 @@
|
||||
/*
|
||||
* 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 Mozilla Communicator client code.
|
||||
*
|
||||
* The Initial Developer of the Original Code is James L. Nance
|
||||
* Portions created by James L. Nance are Copyright (C) 2001
|
||||
* James L. Nance. All Rights Reserved.
|
||||
*
|
||||
* Contributor(s): Patricia Jewell Nance, Jesse Jacob Nance
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
// #define TEST_PATRICIA
|
||||
|
||||
#if defined(TEST_PATRICIA)
|
||||
# include "stdlib.h"
|
||||
# include "stdio.h"
|
||||
# include "string.h"
|
||||
# define PRBool bool
|
||||
# define PRUint32 unsigned int
|
||||
# define PRInt32 int
|
||||
# define PR_CALLBACK
|
||||
# define PLArenaPool int
|
||||
# define PL_FinishArenaPool(a)
|
||||
# define PL_InitArenaPool(a, b, c, d)
|
||||
# define PL_ArenaAllocate(a, size) malloc(size)
|
||||
# define PR_TRUE true
|
||||
# define PR_FALSE false
|
||||
|
||||
struct nsCRT {
|
||||
static int strlen(const char *a) {return ::strlen(a);}
|
||||
static int memcmp(const void *a, const void *b, PRUint32 c) {
|
||||
return ::memcmp(a,b,c);
|
||||
}
|
||||
};
|
||||
#else
|
||||
# include "nsCRT.h"
|
||||
#endif
|
||||
|
||||
#include "nsStringMap.h"
|
||||
|
||||
const char nsStringMap::zero_str[] = "\0";
|
||||
|
||||
nsStringMap::~nsStringMap()
|
||||
{
|
||||
// Get rid of the arena memory
|
||||
PL_FinishArenaPool(&mPool);
|
||||
}
|
||||
|
||||
nsStringMap::nsStringMap() : numEntries(0)
|
||||
{
|
||||
// Initialize the head
|
||||
head.l = head.r = &head;
|
||||
head.bit = ~0;
|
||||
head.key = zero_str;
|
||||
head.len = 1;
|
||||
head.obj = 0;
|
||||
|
||||
// Initialize the arena. Guess that a 512 byte block size is good
|
||||
PL_InitArenaPool(&mPool, "nsStringMap", 512, sizeof(void*));
|
||||
}
|
||||
|
||||
void
|
||||
nsStringMap::Reset()
|
||||
{
|
||||
// Initialize the head
|
||||
head.l = head.r = &head;
|
||||
head.bit = ~0;
|
||||
head.key = zero_str;
|
||||
head.len = 1;
|
||||
head.obj = 0;
|
||||
|
||||
// Reinitialize the Arena
|
||||
PL_FinishArenaPool(&mPool);
|
||||
PL_InitArenaPool(&mPool, "nsStringMap", 512, sizeof(void*));
|
||||
}
|
||||
|
||||
void
|
||||
nsStringMap::Reset(nsStringMapEnumFunc destroyFunc, void *aClosure)
|
||||
{
|
||||
Enumerate(destroyFunc, aClosure);
|
||||
Reset();
|
||||
}
|
||||
|
||||
nsStringMap::Patricia *
|
||||
nsStringMap::newNode()
|
||||
{
|
||||
return (Patricia*) PL_ArenaAllocate(&mPool, sizeof(Patricia));
|
||||
}
|
||||
|
||||
nsStringMap::Patricia *
|
||||
nsStringMap::searchDown(BitTester &key)
|
||||
{
|
||||
// The head node only branches to the left, so we can optimize here.
|
||||
Patricia *x = head.l;
|
||||
|
||||
PRUint32 lastBits;
|
||||
|
||||
do {
|
||||
lastBits = x->bit;
|
||||
|
||||
if(key.isset(lastBits))
|
||||
x = x->r;
|
||||
else
|
||||
x = x->l;
|
||||
|
||||
} while(lastBits > x->bit);
|
||||
|
||||
return x;
|
||||
}
|
||||
|
||||
void*
|
||||
nsStringMap::Get(const char *str, PRUint32 slen)
|
||||
{
|
||||
BitTester key(str, slen);
|
||||
|
||||
Patricia *t = searchDown(key);
|
||||
|
||||
if(!key.memcmp(t->key, t->len)) {
|
||||
return t->obj;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void*
|
||||
nsStringMap::Get(const char *str)
|
||||
{
|
||||
BitTester key(str);
|
||||
|
||||
Patricia *t = searchDown(key);
|
||||
|
||||
if(!key.memcmp(t->key, t->len)) {
|
||||
return t->obj;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
PRBool
|
||||
nsStringMap::Put(const char *str, void *obj, PRBool copy)
|
||||
{
|
||||
PRUint32 slen = nsCRT::strlen(str);
|
||||
return Put(str, slen, obj, copy);
|
||||
}
|
||||
|
||||
PRBool
|
||||
nsStringMap::Put(const char *str, PRUint32 slen, void *obj, PRBool copy)
|
||||
{
|
||||
if(copy) {
|
||||
PRUint32 mask = sizeof(double) - 1;
|
||||
PRUint32 asize = (slen+mask) & ~mask;
|
||||
char *tstr = (char*) PL_ArenaAllocate(&mPool, asize);
|
||||
memcpy(tstr, str, slen);
|
||||
str = tstr;
|
||||
}
|
||||
|
||||
BitTester key(str, slen);
|
||||
|
||||
Patricia *t = searchDown(key);
|
||||
|
||||
if(!key.memcmp(t->key, t->len)) {
|
||||
t->obj = obj;
|
||||
return PR_TRUE;
|
||||
}
|
||||
|
||||
// This is somewhat ugly. We need to find the maximum bit position that
|
||||
// differs, but this is complicated by the fact that we have random length
|
||||
// data. Assume that data past the end of the string is 0.
|
||||
const PRUint32 klen = key.datalen();
|
||||
const PRUint32 tlen = t->len;
|
||||
PRUint32 bpos;
|
||||
if(klen>tlen) {
|
||||
bpos = 8 * klen - 1;
|
||||
while(!BitTester::isset_checked(str, bpos)) --bpos;
|
||||
} else if(tlen>klen) {
|
||||
bpos = 8 * tlen - 1;
|
||||
while(!BitTester::isset_checked(t->key, bpos)) --bpos;
|
||||
} else /* equal */ {
|
||||
bpos = 8 * tlen - 1;
|
||||
while(BitTester::bitsequal(t->key, str, bpos)) --bpos;
|
||||
}
|
||||
|
||||
Patricia *p, *x = &head;
|
||||
|
||||
do {
|
||||
p = x;
|
||||
x = key.isset(x->bit) ? x->r : x->l;
|
||||
} while(x->bit > bpos && p->bit > x->bit);
|
||||
|
||||
t = newNode();
|
||||
|
||||
if(!t) {
|
||||
return PR_FALSE;
|
||||
}
|
||||
|
||||
t->key = str;
|
||||
t->len = key.datalen();
|
||||
t->obj = obj;
|
||||
t->bit = bpos;
|
||||
|
||||
if(key.isset(t->bit)) {
|
||||
t->r = t;
|
||||
t->l = x;
|
||||
} else {
|
||||
t->r = x;
|
||||
t->l = t;
|
||||
}
|
||||
|
||||
if(key.isset(p->bit)) {
|
||||
p->r = t;
|
||||
} else {
|
||||
p->l = t;
|
||||
}
|
||||
|
||||
return PR_TRUE;
|
||||
}
|
||||
|
||||
void
|
||||
nsStringMap::enumerate_recurse(
|
||||
nsStringMapEnumFunc aEnumFunc, void* aClosure, Patricia *node)
|
||||
{
|
||||
aEnumFunc(node->key, node->obj, aClosure);
|
||||
if(node->l && node->l->bit<node->bit)
|
||||
enumerate_recurse(aEnumFunc, aClosure, node->l);
|
||||
if(node->r && node->r->bit<node->bit)
|
||||
enumerate_recurse(aEnumFunc, aClosure, node->r);
|
||||
}
|
||||
|
||||
void
|
||||
nsStringMap::Enumerate(nsStringMapEnumFunc aEnumFunc, void *aClosure)
|
||||
{
|
||||
// We dont want to process head, its a sentinal
|
||||
if(head.l && head.l->bit<head.bit)
|
||||
enumerate_recurse(aEnumFunc, aClosure, head.l);
|
||||
if(head.r && head.r->bit<head.bit)
|
||||
enumerate_recurse(aEnumFunc, aClosure, head.r);
|
||||
}
|
||||
|
||||
#if defined(TEST_PATRICIA)
|
||||
|
||||
PRBool etest(const char *key, void *data, void *closure)
|
||||
{
|
||||
printf("%s\n", key);
|
||||
return PR_TRUE;
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
nsStringMap map;
|
||||
const char *strings[] = {
|
||||
"I am number 1 string",
|
||||
"I am number 2 string",
|
||||
"I am number 3 string",
|
||||
"a different string",
|
||||
"a similar string",
|
||||
"I am a very long string and I want to make sure we can handle this",
|
||||
"I am a very long string and I want to make sure we can handle this too",
|
||||
0
|
||||
};
|
||||
|
||||
int idx;
|
||||
for(idx=0; strings[idx]; ++idx) {
|
||||
map.Put(strings[idx], (void*)(1+idx));
|
||||
}
|
||||
|
||||
printf("Lookup Test\n");
|
||||
while(--idx>=0) {
|
||||
void *ptr = map.Get(strings[idx]);
|
||||
printf("%d: %s\n", (long)ptr, strings[idx]);
|
||||
}
|
||||
|
||||
printf("\nEnumeration Test\n");
|
||||
|
||||
map.Enumerate(etest, 0);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
#endif
|
||||
112
mozilla/xpcom/ds/nsStringMap.h
Normal file
112
mozilla/xpcom/ds/nsStringMap.h
Normal file
@@ -0,0 +1,112 @@
|
||||
#ifndef nsStringMap_h__
|
||||
#define nsStringMap_h__
|
||||
|
||||
/*
|
||||
* 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 Mozilla Communicator client code.
|
||||
*
|
||||
* The Initial Developer of the Original Code is James L. Nance
|
||||
* Portions created by James L. Nance are Copyright (C) 2001
|
||||
* James L. Nance. All Rights Reserved.
|
||||
*
|
||||
* Contributor(s): Patricia Jewell Nance, Jesse Jacob Nance
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#if !defined(TEST_PATRICIA)
|
||||
# include "nscore.h"
|
||||
# include "prtypes.h"
|
||||
# include "plarena.h"
|
||||
#endif
|
||||
|
||||
typedef PRBool (*PR_CALLBACK nsStringMapEnumFunc) (
|
||||
const char *aKey, void *aData, void *aClosure);
|
||||
|
||||
class nsStringMap
|
||||
{
|
||||
public:
|
||||
nsStringMap();
|
||||
~nsStringMap();
|
||||
PRBool Put(const char *str, PRUint32 slen, void *obj, PRBool copy=PR_FALSE);
|
||||
PRBool Put(const char *str, void *obj, PRBool copy=PR_FALSE);
|
||||
void* Get(const char *str);
|
||||
void* Get(const char *str, PRUint32 slen);
|
||||
void Reset();
|
||||
void Reset(nsStringMapEnumFunc destroyFunc, void *aClosure = 0);
|
||||
void Enumerate(nsStringMapEnumFunc aEnumFunc, void *aClosure = 0);
|
||||
|
||||
struct Patricia {
|
||||
Patricia *l, *r;
|
||||
PRUint32 bit; // Bit position for l/r comp
|
||||
const char *key;
|
||||
PRUint32 len;
|
||||
void *obj;
|
||||
};
|
||||
|
||||
// The BitTester class is used to test a particular bit position in an
|
||||
// array of characters. It does not assign any special meaning to 0
|
||||
// characters. Bits past the end of the array are treated as 0
|
||||
class BitTester {
|
||||
const PRUint32 slen;
|
||||
const char *cstr;
|
||||
public:
|
||||
BitTester(const char *s) : slen(nsCRT::strlen(s)), cstr(s) {}
|
||||
BitTester(const char *s, PRUint32 l) : slen(l), cstr(s) {}
|
||||
|
||||
PRInt32 memcmp(const char *ostr, PRUint32 olen) {
|
||||
if(olen==slen) {
|
||||
return ::memcmp((void*)cstr, ostr, slen);
|
||||
} else {
|
||||
return olen - slen;
|
||||
}
|
||||
}
|
||||
|
||||
PRUint32 datalen() const {return slen;}
|
||||
|
||||
static PRBool isset_checked(const char *str, PRUint32 idx) {
|
||||
return (str[idx/8] & (1<<(idx & 7))) != 0;
|
||||
}
|
||||
|
||||
static PRBool
|
||||
bitsequal(const char *str1, const char*str2, PRUint32 idx) {
|
||||
return (str1[idx/8] & (1<<(idx&7)))==(str2[idx/8] & (1<<(idx&7)));
|
||||
}
|
||||
|
||||
PRBool isset(PRUint32 idx) {
|
||||
const PRUint32 base = idx/8;
|
||||
if(base>=slen) return 0;
|
||||
return (cstr[base] & (1<<(idx & 7))) != 0;
|
||||
}
|
||||
};
|
||||
|
||||
private:
|
||||
PLArenaPool mPool;
|
||||
Patricia *newNode();
|
||||
Patricia *searchDown(BitTester&);
|
||||
void enumerate_recurse(nsStringMapEnumFunc, void*, Patricia*);
|
||||
Patricia head; // Sentinal node
|
||||
PRInt32 numEntries;
|
||||
static const char zero_str[];
|
||||
};
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user