[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Object identity
From: |
Lars Brinkhoff |
Subject: |
Object identity |
Date: |
21 Oct 2003 08:07:57 +0200 |
User-agent: |
Gnus/5.0808 (Gnus v5.8.8) Emacs/20.7 |
(Would emacs-devel be a more appropriate list to post this?)
Is there a function, say object-identity, in Emacs Lisp that maps an
object to a unique value (other than the object itself)? For example,
the value could be an integer, or a list of integers, or a string,
that represents the memory address of the object.
To clarify, this function would have the property that
(equal (object-identity obj1) (object-identity obj2))
if and only if
(eq obj1 obj2)
.
This is my current implementation. However, my version of Emacs
doesn't implement weak hash tables, so it will make memory leak.
Any ideas about how to deal with that?
(defvar object-identities (make-hash-table :test 'eq :weakness t))
(defvar identity-counter 0)
(defun object-identity (object)
(or (gethash object object-identities)
(setf (gethash object object-identities)
(incf identity-counter))))
(Yes, I'm aware the counter will eventually wrap around...)
--
Lars Brinkhoff, Services for Unix, Linux, GCC, HTTP
Brinkhoff Consulting http://www.brinkhoff.se/
- Object identity,
Lars Brinkhoff <=
Re: Object identity, Barry Margolin, 2003/10/21