emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] /srv/bzr/emacs/trunk r110829: * lisp/emacs-lisp/gv.el (gv-


From: Stefan Monnier
Subject: [Emacs-diffs] /srv/bzr/emacs/trunk r110829: * lisp/emacs-lisp/gv.el (gv-ref, gv-deref): New function and macro.
Date: Thu, 08 Nov 2012 08:34:06 -0500
User-agent: Bazaar (2.5.0)

------------------------------------------------------------
revno: 110829
committer: Stefan Monnier <address@hidden>
branch nick: trunk
timestamp: Thu 2012-11-08 08:34:06 -0500
message:
  * lisp/emacs-lisp/gv.el (gv-ref, gv-deref): New function and macro.
modified:
  lisp/ChangeLog
  lisp/emacs-lisp/gv.el
=== modified file 'lisp/ChangeLog'
--- a/lisp/ChangeLog    2012-11-07 16:55:39 +0000
+++ b/lisp/ChangeLog    2012-11-08 13:34:06 +0000
@@ -1,3 +1,7 @@
+2012-11-08  Stefan Monnier  <address@hidden>
+
+       * emacs-lisp/gv.el (gv-ref, gv-deref): New function and macro.
+
 2012-11-07  Michael Albinus  <address@hidden>
 
        * notifications.el (notifications-get-server-information-method):

=== modified file 'lisp/emacs-lisp/gv.el'
--- a/lisp/emacs-lisp/gv.el     2012-10-18 12:56:10 +0000
+++ b/lisp/emacs-lisp/gv.el     2012-11-08 13:34:06 +0000
@@ -433,6 +433,24 @@
                        `(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)


reply via email to

[Prev in Thread] Current Thread [Next in Thread]