+
+ struct ObjectHdr;
+ struct Object;
+
+ typedef u32 ID;
+ typedef Util::RadixTree<ObjectHdr, ID> IDRMap;
+
+ struct ObjectHdr {
+ ID id;
+
+ union {
+ struct {
+ u32 Pointer:1;
+ };
+
+ u32 flags;
+ };
+ };
+
+ struct Object : public ObjectHdr {
+ Mem::ProcAddrSpace *aspace;
+ uintptr_t entry;
+ };
+
+ struct ObjectPtr : public ObjectHdr {
+ Object *object;
+ };
+
+ class IDSpace {
+ // Reverse mapping of object pointers to local IDs
+ IDRMap idrmap;
+
+ public:
+ Object *lookup(u32 id);
+ ObjectHdr *get_local_hdr(Object *obj);
+ };