annotate admin/notes/iftc @ 87591:4e970ff2f991

* progmodes/verilog-mode.el (top-level): Don't require compile. (compilation-error-regexp-alist, compilation-last-buffer): Define for compiler. (verilog-insert-1): New function. (verilog-insert-indices, verilog-generate-numbers): Doc fixes. Use verilog-insert-1. (verilog-surelint-off): Use next-error-last-buffer if bound. Check compile buffer is live. * progmodes/verilog-mode.el: Replace all instances of string-to-int with string-to-number, insert-string with insert, and read-input with read-string. (top-level): No need to require imenu, reporter, dinotrace, vc, font-lock when compiling. Always require compile. Relegate remaining compatibility cruft to XEmacs. Don't require font-lock. (verilog-version): Remove superfluous concat. (dinotrace-unannotate-all, zmacs-activate-region, customize-apropos): No need to define. (verilog-regexp-opt): On Emacs, just make it an alias for regexp-opt. (verilog-font-lock-keywords, verilog-font-lock-keywords-1) (verilog-font-lock-keywords-2, verilog-font-lock-keywords-3) (verilog-startup-message-displayed): These are variables, not constants. (verilog-batch-execute-func, verilog-auto-inst) (verilog-auto-inst-param): Use mapc rather than mapcar. (sigs-in, sigs-inout, sigs-out): Define for compiler rather than actually defining. (verilog-modi-get-decls, verilog-modi-get-sub-decls) (verilog-modi-get-outputs, verilog-modi-get-inouts) (verilog-modi-get-inputs, verilog-modi-get-wires) (verilog-modi-get-regs, verilog-modi-get-assigns) (verilog-modi-get-consts, verilog-modi-get-gparams) (verilog-modi-get-sub-outputs, verilog-modi-get-sub-inouts) (verilog-modi-get-sub-inputs): Move inline functions earlier in the file. (sigs-in, sigs-out): Don't declare multiple times. (got-sig, got-rvalue, uses-delayed): Define for compiler with just `defvar'. (verilog-auto): Call dinotrace-unannotate-all only if bound. (verilog-module-inside-filename-p): No need to wrap fboundp test in condition-case. (reporter-submit-bug-report): Autoload it. (verilog-mark-defun): Call zmacs-activate-region only if bound. (verilog-font-customize): Call customize-apropos only if bound. (verilog-getopt-flags, verilog-auto-reeval-locals): Use make-local-variable rather than make-variable-buffer-local. (verilog-company, verilog-project, verilog-modi-cache-list): Move make-variable-buffer-local calls to top-level. (font-lock-defaults-alist): Don't define it. (verilog-need-fld): Remove. (verilog-font-lock-init): Don't set font-lock-defaults-alist. (verilog-mode): Only call make-local-hook on XEmacs. Set font-lock-defaults rather than using verilog-font-lock-init.
author Dan Nicolaescu <dann@ics.uci.edu>
date Sat, 05 Jan 2008 10:23:27 +0000
parents 695cf19ef79e
children 375f2633d815 ef719132ddfa
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
45625
28f0b229040c Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
1 Iso-Functional Type Contour
28f0b229040c Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
2
28f0b229040c Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
3
28f0b229040c Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
4 This is a term coined to describe "column int->float" change approach, and can
28f0b229040c Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
5 be used whenever low-level types need to change (hopefully not often!) but the
28f0b229040c Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
6 meanings of the values (whose type has changed) do not.
28f0b229040c Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
7
28f0b229040c Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
8 The premise is that changing a low-level type potentially means lots of code
28f0b229040c Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
9 needs to be changed as well, and the question is how to do this incrementally,
28f0b229040c Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
10 which is the preferred way to change things.
28f0b229040c Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
11
28f0b229040c Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
12 Say LOW and HIGH are C functions:
28f0b229040c Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
13
28f0b229040c Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
14 int LOW (void) { return 1; }
28f0b229040c Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
15 void HIGH (void) { int value = LOW (); }
28f0b229040c Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
16
28f0b229040c Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
17 We want to convert LOW to return float, so we cast HIGH usage:
28f0b229040c Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
18
28f0b229040c Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
19 float LOW (void) { return 1.0; }
28f0b229040c Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
20 void HIGH (void) { int value = (int) LOW (); } /* iftc */
28f0b229040c Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
21
28f0b229040c Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
22 The comment /* iftc */ is used to mark this type of casting to differentiate
28f0b229040c Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
23 it from other casting. We commit the changes and can now go about modifying
28f0b229040c Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
24 LOW and HIGH separately. When HIGH is ready to handle the type change, the
28f0b229040c Initial revision
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
diff changeset
25 cast can be removed.
52401
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 45625
diff changeset
26
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 45625
diff changeset
27 ;;; arch-tag: 3309cc41-5d59-421b-b7be-c94b04083bb5