1 #ifndef postream_implementation_h
2 #define postream_implementation_h
5 #include <AD/hash/lhash2.h> // linear probing hash table
6 #include <AD/contain/variset.h> // variable length integer set
8 //////////////////////////////////////////////////////////////////////////////
9 // The object log is implemented simply as a hash table.
11 // Object log maps object pointers to
13 //////////////////////////////////////////////////////////////////////////////
14 class PObjectOrdering
{
16 inline static unsigned int hash (P_ObjectAddr obj
)
17 { return (unsigned int)obj
; }
18 inline static Bool
equal (P_ObjectAddr a
, P_ObjectAddr b
)
23 void operator = (const PObjectLog
&);
24 PObjectLog(const PObjectLog
&);
28 P_OBJECT_MARKER marker
;
29 inline PObjectInfo() {}
30 inline PObjectInfo(const PObject
* p
, P_OBJECT_MARKER m
)
31 : obj(p
), marker(m
) {}
33 LHashTable2
<P_ObjectAddr
, PObjectLog::PObjectInfo
, PObjectOrdering
> markers
;
34 VarIntSet object_types
;