#ifndef _CL_RCPOINTER2_HASHWEAK_RCPOINTER_H
#define _CL_RCPOINTER2_HASHWEAK_RCPOINTER_H
-#include "cl_object.h"
+#include "cln/object.h"
-#include "cl_hash2weak.h"
+#include "base/hash/cl_hash2weak.h"
+
+namespace cln {
// Equality.
static inline bool equal (const cl_rcpointer& x, const cl_rcpointer& y)
{ return (x.pointer == y.pointer); }
// Hash code. Luckily objects don't move around in memory.
-inline unsigned long hashcode (const cl_rcpointer& x1, const cl_rcpointer& x2)
+inline uintptr_t hashcode (const cl_rcpointer& x1, const cl_rcpointer& x2)
{
- var unsigned long hashcode1 = (unsigned long)x1.pointer;
- var unsigned long hashcode2 = (unsigned long)x2.pointer;
+ var uintptr_t hashcode1 = (uintptr_t)x1.pointer;
+ var uintptr_t hashcode2 = (uintptr_t)x2.pointer;
hashcode2 = (hashcode2 << 5) | (hashcode2 >> (long_bitsize-5)); // rotate
return hashcode1 ^ hashcode2;
}
struct cl_wht_from_rcpointer2_to_rcpointer : public cl_rcpointer {
// Constructors.
- cl_wht_from_rcpointer2_to_rcpointer (cl_boolean (*maygc_htentry) (const cl_htentry_from_rcpointer2_to_rcpointer&));
+ cl_wht_from_rcpointer2_to_rcpointer (bool (*maygc_htentry) (const cl_htentry_from_rcpointer2_to_rcpointer&));
cl_wht_from_rcpointer2_to_rcpointer (const cl_wht_from_rcpointer2_to_rcpointer&);
// Assignment operators.
cl_wht_from_rcpointer2_to_rcpointer& operator= (const cl_wht_from_rcpointer2_to_rcpointer&);
void put (const cl_rcpointer& x, const cl_rcpointer& y, const cl_rcpointer& z) const;
};
+} // namespace cln
+
#endif /* _CL_RCPOINTER2_HASHWEAK_RCPOINTER_H */