Classes | Defines

nsDoubleHashtable.h File Reference

#include "pldhash.h"
#include "nscore.h"
#include "nsString.h"
#include "nsHashKeys.h"
Include dependency graph for nsDoubleHashtable.h:
This graph shows which files directly or indirectly include this file:

Classes

class  PLDHashStringEntry
class  PLDHashCStringEntry
class  PLDHashInt32Entry
class  PLDHashVoidEntry

Defines

#define DHASH_CALLBACKS(ENTRY_CLASS)
 nsDoubleHashtable.h is OBSOLETE.
#define DHASH_INIT(HASHTABLE, ENTRY_CLASS, NUM_INITIAL_ENTRIES, RV)
#define DECL_DHASH_WRAPPER(CLASSNAME, ENTRY_CLASS, KEY_TYPE)
#define DHASH_WRAPPER(CLASSNAME, ENTRY_CLASS, KEY_TYPE)
#define DHASH_EXPORT

Define Documentation

#define DECL_DHASH_WRAPPER (   CLASSNAME,
  ENTRY_CLASS,
  KEY_TYPE 
)
Value:
class DHASH_EXPORT CLASSNAME {                                                \
public:                                                                       \
  CLASSNAME();                                                                \
  ~CLASSNAME();                                                               \
  nsresult Init(PRUint32 aNumInitialEntries);                                 \
  ENTRY_CLASS* GetEntry(const KEY_TYPE aKey);                                 \
  ENTRY_CLASS* AddEntry(const KEY_TYPE aKey);                                 \
  void Remove(const KEY_TYPE aKey);                                           \
  PLDHashTable mHashTable;                                                    \
};
#define DHASH_CALLBACKS (   ENTRY_CLASS  ) 
Value:
static PLDHashNumber                                                          \
ENTRY_CLASS##HashKey(PLDHashTable* table, const void* key)                    \
{                                                                             \
  return ENTRY_CLASS::HashKey(key);                                           \
}                                                                             \
static PRBool                                                                 \
ENTRY_CLASS##MatchEntry(PLDHashTable *table, const PLDHashEntryHdr *entry,    \
                        const void *key)                                      \
{                                                                             \
  const ENTRY_CLASS* e = static_cast<const ENTRY_CLASS*>(entry);              \
  return e->MatchEntry(key);                                                  \
}                                                                             \
static void                                                                   \
ENTRY_CLASS##ClearEntry(PLDHashTable *table, PLDHashEntryHdr *entry)          \
{                                                                             \
  ENTRY_CLASS* e = static_cast<ENTRY_CLASS *>(entry);                         \
  e->~ENTRY_CLASS();                                                          \
}                                                                             \
static PRBool                                                                 \
ENTRY_CLASS##InitEntry(PLDHashTable *table, PLDHashEntryHdr *entry,           \
                       const void *key)                                       \
{                                                                             \
  new (entry) ENTRY_CLASS(key);                                               \
  return PR_TRUE;                                                             \
}

nsDoubleHashtable.h is OBSOLETE.

Use nsTHashtable or a derivative instead.

#define DHASH_EXPORT
#define DHASH_INIT (   HASHTABLE,
  ENTRY_CLASS,
  NUM_INITIAL_ENTRIES,
  RV 
)
Value:
PR_BEGIN_MACRO                                                                \
  static PLDHashTableOps hash_table_ops =                                     \
  {                                                                           \
    PL_DHashAllocTable,                                                       \
    PL_DHashFreeTable,                                                        \
    ENTRY_CLASS##HashKey,                                                     \
    ENTRY_CLASS##MatchEntry,                                                  \
    PL_DHashMoveEntryStub,                                                    \
    ENTRY_CLASS##ClearEntry,                                                  \
    PL_DHashFinalizeStub,                                                     \
    ENTRY_CLASS##InitEntry                                                    \
  };                                                                          \
  PRBool isLive = PL_DHashTableInit(&(HASHTABLE),                             \
                                    &hash_table_ops, nsnull,                  \
                                    sizeof(ENTRY_CLASS),                      \
                                    (NUM_INITIAL_ENTRIES));                   \
  if (!isLive) {                                                              \
    (HASHTABLE).ops = nsnull;                                                 \
    RV = NS_ERROR_OUT_OF_MEMORY;                                              \
  } else {                                                                    \
    RV = NS_OK;                                                               \
  }                                                                           \
PR_END_MACRO
#define DHASH_WRAPPER (   CLASSNAME,
  ENTRY_CLASS,
  KEY_TYPE 
)