view admin/notes/iftc @ 83386:db4e74787e6f

Merged from miles@gnu.org--gnu-2005 (patch 133-141, 596-609) Patches applied: * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-596 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-597 Merge from gnus--rel--5.10 * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-598 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-599 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-600 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-601 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-602 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-603 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-604 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-605 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-606 Remove lisp/toolbar directory * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-607 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-608 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-609 Update from CVS * miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-133 Update from CVS * miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-134 Update from CVS * miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-135 Update from CVS * miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-136 Merge from emacs--cvs-trunk--0 * miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-137 Update from CVS * miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-138 Update from CVS: texi/gnus.texi (RSS): Fix key description. * miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-139 Merge from emacs--cvs-trunk--0 * miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-140 Update from CVS * miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-141 Update from CVS: texi/gnus.texi (Document Server Internals): Addition. git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-426
author Karoly Lorentey <lorentey@elte.hu>
date Wed, 19 Oct 2005 14:06:17 +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