Commit d14bb752 authored by Stefan Monnier's avatar Stefan Monnier
Browse files

* lisp/emacs-lisp/gv.el (gv-ref, gv-deref): New function and macro.

parent c66f21ea
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):
......
......@@ -433,6 +433,24 @@ The return value is the last VAL in the list.
`(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)
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment