19 #include "hermes_common.h"
41 class HERMES_API
HashTable :
public Hermes::Mixins::Loggable
45 Node* get_node(
int id)
const;
48 int get_max_node_id()
const;
55 int get_num_nodes()
const;
58 Node* peek_vertex_node(
int p1,
int p2)
const;
61 Node* peek_edge_node(
int p1,
int p2)
const;
66 Node* get_vertex_node(
int p1,
int p2);
71 Node* get_edge_node(
int p1,
int p2);
73 static const int H2D_DEFAULT_HASH_SIZE = 0x8000;
79 void init(
int size = H2D_DEFAULT_HASH_SIZE);
91 void remove_vertex_node(
int id);
94 void remove_edge_node(
int id);
104 inline int hash(
int p1,
int p2)
const {
return (984120265*p1 + 125965121*p2) & mask; }
108 Node* search_list(
Node* node,
int p1,
int p2)
const;
111 void copy_list(
Node** ptr,
Node* node);
116 template<
typename Scalar>
friend class Space;
117 template<
typename Scalar>
friend class H1Space;
118 template<
typename Scalar>
friend class L2Space;
119 template<
typename Scalar>
friend class HcurlSpace;
120 template<
typename Scalar>
friend class HdivSpace;