view admin/notes/iftc @ 81778:cd3e38bb3dc7

Merge from emacs--rel--22 Patches applied: * emacs--rel--22 (patch 51-54) - Update from CVS - Merge from gnus--rel--5.10 * gnus--rel--5.10 (patch 233-234) - Merge from emacs--devo--0 - Update from CVS 2007-07-08 Katsumi Yamaoka <yamaoka@jpl.org> * lisp/cus-start.el (file-coding-system-alist): Fix custom type. 2007-07-08 Chong Yidong <cyd@stupidchicken.com> * lisp/longlines.el (longlines-wrap-region): Avoid marking buffer as modified. (longlines-auto-wrap, longlines-window-change-function): Remove unnecessary calls to set-buffer-modified-p. 2007-07-03 Dan Nicolaescu <dann@ics.uci.edu> * lisp/progmodes/gud.el (auto-mode-alist): Match more valid gdb init file names. 2007-07-01 Richard Stallman <rms@gnu.org> * lisp/files.el (find-file-visit-truename): Fix safe-local-variable value. 2007-07-04 Katsumi Yamaoka <yamaoka@jpl.org> * lisp/gnus/gnus-sum.el (gnus-summary-catchup): Don't recognize cached articles as unfetched articles. 2007-07-02 Reiner Steib <Reiner.Steib@gmx.de> * lisp/gnus/gnus-start.el (gnus-level-unsubscribed): Improve doc string. 2007-06-26 Katsumi Yamaoka <yamaoka@jpl.org> * lisp/gnus/gnus-art.el (gnus-article-summary-command-nosave) (gnus-article-read-summary-keys): Don't set the 3rd arg of pop-to-buffer for XEmacs. 2007-07-02 Reiner Steib <Reiner.Steib@gmx.de> * man/gnus-faq.texi ([3.2]): Fix locating of environment variables in the Control Panel. * man/gnus.texi (Misc Article): Add index entry for gnus-single-article-buffer. 2007-06-27 Andreas Seltenreich <andreas@gate450.dyndns.org> * man/gnus.texi (Starting Up): Fix typo. 2007-06-25 Katsumi Yamaoka <yamaoka@jpl.org> * man/gnus.texi (Asynchronous Fetching): Fix typo. Revision: emacs@sv.gnu.org/emacs--devo--0--patch-806
author Miles Bader <miles@gnu.org>
date Tue, 10 Jul 2007 02:02:35 +0000
parents 695cf19ef79e
children 375f2633d815 ef719132ddfa
line wrap: on
line source

Iso-Functional Type Contour


This is a term coined to describe "column int->float" change approach, and can
be used whenever low-level types need to change (hopefully not often!) but the
meanings of the values (whose type has changed) do not.

The premise is that changing a low-level type potentially means lots of code
needs to be changed as well, and the question is how to do this incrementally,
which is the preferred way to change things.

Say LOW and HIGH are C functions:

  int LOW (void) { return 1; }
  void HIGH (void) { int value = LOW (); }

We want to convert LOW to return float, so we cast HIGH usage:

  float LOW (void) { return 1.0; }
  void HIGH (void) { int value = (int) LOW (); }  /* iftc */

The comment /* iftc */ is used to mark this type of casting to differentiate
it from other casting.  We commit the changes and can now go about modifying
LOW and HIGH separately.  When HIGH is ready to handle the type change, the
cast can be removed.

;;; arch-tag: 3309cc41-5d59-421b-b7be-c94b04083bb5