};
namespace Objects {
- // FIXME: make this a built-in ID type that fixes things
- // up when moving between systems. It can be native word
- // sized, rather than always long.
+ typedef uint ID;
+
+ struct GUID {
+ ulong[2] data;
+ };
- typedef ulong ID;
+ struct IHash {
+ uint[5] data;
+ };
struct TypeDesc {
enum BasicType {
interface IDSpace {
guid: "06489629-9C25-4C14-9A5B-6C59639C87D6";
- new_object(Mem.AddrSpace aspace, ulong entry, ID obj out);
+ new_object(ID obj, IHash hash);
// Release "num" references on the object. If exactly "num"
// references remain, the object handle is closed and "gone" is
// a refcount of 1.
release(ID obj, int num, bool gone out);
+
+ // Delete an object regardless of the number of references.
+ // If the object is local, then all remote references will
+ // become dangling; any attempt to pass the handle to the
+ // ORB will result in an InvalidReference exception.
+
+ revoke(ID obj);
+
+ // Return the number of references to an object.
+ // This method is intended for debugging only.
+
+ get_refs(ID obj, int num out);
};
// This is a generic Factory interface; specific factories may