emacs-diffs
[Top][All Lists]
Advanced

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

[Emacs-diffs] trunk r117805: * buffer.h (decode_buffer): New function.


From: Dmitry Antipov
Subject: [Emacs-diffs] trunk r117805: * buffer.h (decode_buffer): New function.
Date: Tue, 02 Sep 2014 11:42:00 +0000
User-agent: Bazaar (2.6b2)

------------------------------------------------------------
revno: 117805
revision-id: address@hidden
parent: address@hidden
committer: Dmitry Antipov <address@hidden>
branch nick: trunk
timestamp: Tue 2014-09-02 15:41:22 +0400
message:
  * buffer.h (decode_buffer): New function.
  * buffer.c (Fbuffer_name, Fbuffer_file_name, Fbuffer_base_buffer)
  (Fbuffer_local_variables, Fbuffer_modified_p, Fbuffer_modified_tick)
  (Fbuffer_chars_modified_tick, Fdelete_all_overlays):
  * data.c (Flocal_variables_p):
  * fileio.c (Fverify_visited_file_modtime):
  * marker.c (live_buffer): Use it.
modified:
  src/ChangeLog                  changelog-20091113204419-o5vbwnq5f7feedwu-1438
  src/buffer.c                   buffer.c-20091113204419-o5vbwnq5f7feedwu-264
  src/buffer.h                   buffer.h-20091113204419-o5vbwnq5f7feedwu-196
  src/data.c                     data.c-20091113204419-o5vbwnq5f7feedwu-251
  src/fileio.c                   fileio.c-20091113204419-o5vbwnq5f7feedwu-210
  src/marker.c                   marker.c-20091113204419-o5vbwnq5f7feedwu-156
=== modified file 'src/ChangeLog'
--- a/src/ChangeLog     2014-09-02 06:49:40 +0000
+++ b/src/ChangeLog     2014-09-02 11:41:22 +0000
@@ -7,6 +7,14 @@
        * lisp.h (egetenv): ... because of a new inline function used to
        avoid calls to strlen for a compile-time constants.
 
+       * buffer.h (decode_buffer): New function.
+       * buffer.c (Fbuffer_name, Fbuffer_file_name, Fbuffer_base_buffer)
+       (Fbuffer_local_variables, Fbuffer_modified_p, Fbuffer_modified_tick)
+       (Fbuffer_chars_modified_tick, Fdelete_all_overlays):
+       * data.c (Flocal_variables_p):
+       * fileio.c (Fverify_visited_file_modtime):
+       * marker.c (live_buffer): Use it.
+
 2014-09-01  Dmitry Antipov  <address@hidden>
 
        Avoid extra calls to strlen in filesystem I/O routines.

=== modified file 'src/buffer.c'
--- a/src/buffer.c      2014-08-11 00:59:34 +0000
+++ b/src/buffer.c      2014-09-02 11:41:22 +0000
@@ -1134,10 +1134,7 @@
 Return nil if BUFFER has been killed.  */)
   (register Lisp_Object buffer)
 {
-  if (NILP (buffer))
-    return BVAR (current_buffer, name);
-  CHECK_BUFFER (buffer);
-  return BVAR (XBUFFER (buffer), name);
+  return BVAR (decode_buffer (buffer), name);
 }
 
 DEFUN ("buffer-file-name", Fbuffer_file_name, Sbuffer_file_name, 0, 1, 0,
@@ -1145,10 +1142,7 @@
 No argument or nil as argument means use the current buffer.  */)
   (register Lisp_Object buffer)
 {
-  if (NILP (buffer))
-    return BVAR (current_buffer, filename);
-  CHECK_BUFFER (buffer);
-  return BVAR (XBUFFER (buffer), filename);
+  return BVAR (decode_buffer (buffer), filename);
 }
 
 DEFUN ("buffer-base-buffer", Fbuffer_base_buffer, Sbuffer_base_buffer,
@@ -1158,21 +1152,8 @@
 BUFFER defaults to the current buffer.  */)
   (register Lisp_Object buffer)
 {
-  struct buffer *base;
-  Lisp_Object base_buffer;
-
-  if (NILP (buffer))
-    base = current_buffer->base_buffer;
-  else
-    {
-      CHECK_BUFFER (buffer);
-      base = XBUFFER (buffer)->base_buffer;
-    }
-
-  if (! base)
-    return Qnil;
-  XSETBUFFER (base_buffer, base);
-  return base_buffer;
+  struct buffer *base = decode_buffer (buffer)->base_buffer;
+  return base ? (XSETBUFFER (buffer, base), buffer) : Qnil;
 }
 
 DEFUN ("buffer-local-value", Fbuffer_local_value,
@@ -1297,18 +1278,8 @@
 No argument or nil as argument means use current buffer as BUFFER.  */)
   (register Lisp_Object buffer)
 {
-  register struct buffer *buf;
-  register Lisp_Object result;
-
-  if (NILP (buffer))
-    buf = current_buffer;
-  else
-    {
-      CHECK_BUFFER (buffer);
-      buf = XBUFFER (buffer);
-    }
-
-  result = buffer_lisp_local_variables (buf, 0);
+  register struct buffer *buf = decode_buffer (buffer);
+  register Lisp_Object result = buffer_lisp_local_variables (buf, 0);
 
   /* Add on all the variables stored in special slots.  */
   {
@@ -1337,15 +1308,7 @@
 No argument or nil as argument means use current buffer as BUFFER.  */)
   (register Lisp_Object buffer)
 {
-  register struct buffer *buf;
-  if (NILP (buffer))
-    buf = current_buffer;
-  else
-    {
-      CHECK_BUFFER (buffer);
-      buf = XBUFFER (buffer);
-    }
-
+  register struct buffer *buf = decode_buffer (buffer);
   return BUF_SAVE_MODIFF (buf) < BUF_MODIFF (buf) ? Qt : Qnil;
 }
 
@@ -1451,16 +1414,7 @@
 No argument or nil as argument means use current buffer as BUFFER.  */)
   (register Lisp_Object buffer)
 {
-  register struct buffer *buf;
-  if (NILP (buffer))
-    buf = current_buffer;
-  else
-    {
-      CHECK_BUFFER (buffer);
-      buf = XBUFFER (buffer);
-    }
-
-  return make_number (BUF_MODIFF (buf));
+  return make_number (BUF_MODIFF (decode_buffer (buffer)));
 }
 
 DEFUN ("buffer-chars-modified-tick", Fbuffer_chars_modified_tick,
@@ -1475,16 +1429,7 @@
 buffer as BUFFER.  */)
   (register Lisp_Object buffer)
 {
-  register struct buffer *buf;
-  if (NILP (buffer))
-    buf = current_buffer;
-  else
-    {
-      CHECK_BUFFER (buffer);
-      buf = XBUFFER (buffer);
-    }
-
-  return make_number (BUF_CHARS_MODIFF (buf));
+  return make_number (BUF_CHARS_MODIFF (decode_buffer (buffer)));
 }
 
 DEFUN ("rename-buffer", Frename_buffer, Srename_buffer, 1, 2,
@@ -4137,17 +4082,7 @@
 buffer.  */)
   (Lisp_Object buffer)
 {
-  register struct buffer *buf;
-
-  if (NILP (buffer))
-    buf = current_buffer;
-  else
-    {
-      CHECK_BUFFER (buffer);
-      buf = XBUFFER (buffer);
-    }
-
-  delete_all_overlays (buf);
+  delete_all_overlays (decode_buffer (buffer));
   return Qnil;
 }
 

=== modified file 'src/buffer.h'
--- a/src/buffer.h      2014-07-27 13:21:30 +0000
+++ b/src/buffer.h      2014-09-02 11:41:22 +0000
@@ -1088,6 +1088,13 @@
 extern void restore_buffer (Lisp_Object);
 extern void set_buffer_if_live (Lisp_Object);
 
+INLINE
+struct buffer *
+decode_buffer (Lisp_Object b)
+{
+  return NILP (b) ? current_buffer : (CHECK_BUFFER (b), XBUFFER (b));
+}
+
 /* Set the current buffer to B.
 
    We previously set windows_or_buffers_changed here to invalidate

=== modified file 'src/data.c'
--- a/src/data.c        2014-07-26 13:17:25 +0000
+++ b/src/data.c        2014-09-02 11:41:22 +0000
@@ -1954,17 +1954,9 @@
 BUFFER defaults to the current buffer.  */)
   (register Lisp_Object variable, Lisp_Object buffer)
 {
-  register struct buffer *buf;
+  register struct buffer *buf = decode_buffer (buffer);
   struct Lisp_Symbol *sym;
 
-  if (NILP (buffer))
-    buf = current_buffer;
-  else
-    {
-      CHECK_BUFFER (buffer);
-      buf = XBUFFER (buffer);
-    }
-
   CHECK_SYMBOL (variable);
   sym = XSYMBOL (variable);
 

=== modified file 'src/fileio.c'
--- a/src/fileio.c      2014-09-02 05:44:38 +0000
+++ b/src/fileio.c      2014-09-02 11:41:22 +0000
@@ -5324,20 +5324,12 @@
 See Info node `(elisp)Modification Time' for more details.  */)
   (Lisp_Object buf)
 {
-  struct buffer *b;
+  struct buffer *b = decode_buffer (buf);
   struct stat st;
   Lisp_Object handler;
   Lisp_Object filename;
   struct timespec mtime;
 
-  if (NILP (buf))
-    b = current_buffer;
-  else
-    {
-      CHECK_BUFFER (buf);
-      b = XBUFFER (buf);
-    }
-
   if (!STRINGP (BVAR (b, filename))) return Qt;
   if (b->modtime.tv_nsec == UNKNOWN_MODTIME_NSECS) return Qt;
 

=== modified file 'src/marker.c'
--- a/src/marker.c      2014-01-01 07:43:34 +0000
+++ b/src/marker.c      2014-09-02 11:41:22 +0000
@@ -455,21 +455,8 @@
 static struct buffer *
 live_buffer (Lisp_Object buffer)
 {
-  struct buffer *b;
-
-  if (NILP (buffer))
-    {
-      b = current_buffer;
-      eassert (BUFFER_LIVE_P (b));
-    }
-  else
-    {
-      CHECK_BUFFER (buffer);
-      b = XBUFFER (buffer);
-      if (!BUFFER_LIVE_P (b))
-       b = NULL;
-    }
-  return b;
+  struct buffer *b = decode_buffer (buffer);
+  return BUFFER_LIVE_P (b) ? b : NULL;
 }
 
 /* Internal function to set MARKER in BUFFER at POSITION.  Non-zero


reply via email to

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