+2012-11-08 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * emacs-lisp/gv.el (gv-ref, gv-deref): New function and macro.
+
2012-11-07 Michael Albinus <michael.albinus@gmx.de>
* notifications.el (notifications-get-server-information-method):
`(logior (logand ,v ,mask)
(logand ,getter (lognot ,mask))))))))))
+;;; References
+
+;;;###autoload
+(defmacro gv-ref (place)
+ "Return a reference to PLACE.
+This is like the `&' operator of the C language."
+ (gv-letplace (getter setter) place
+ `(cons (lambda () ,getter)
+ (lambda (gv--val) ,(funcall setter 'gv--val)))))
+
+;;;###autoload
+(defsubst gv-deref (ref)
+ "Dereference REF, returning the referenced value.
+This is like the `*' operator of the C language.
+REF must have been previously obtained with `gv-ref'."
+ (declare (gv-setter (lambda (v) `(funcall (cdr ,ref) ,v))))
+ (funcall (car ref)))
+
;;; Vaguely related definitions that should be moved elsewhere.
;; (defun alist-get (key alist)