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 |
| rev |
line source |
|
45625
|
1 Iso-Functional Type Contour
|
|
|
2
|
|
|
3
|
|
|
4 This is a term coined to describe "column int->float" change approach, and can
|
|
|
5 be used whenever low-level types need to change (hopefully not often!) but the
|
|
|
6 meanings of the values (whose type has changed) do not.
|
|
|
7
|
|
|
8 The premise is that changing a low-level type potentially means lots of code
|
|
|
9 needs to be changed as well, and the question is how to do this incrementally,
|
|
|
10 which is the preferred way to change things.
|
|
|
11
|
|
|
12 Say LOW and HIGH are C functions:
|
|
|
13
|
|
|
14 int LOW (void) { return 1; }
|
|
|
15 void HIGH (void) { int value = LOW (); }
|
|
|
16
|
|
|
17 We want to convert LOW to return float, so we cast HIGH usage:
|
|
|
18
|
|
|
19 float LOW (void) { return 1.0; }
|
|
|
20 void HIGH (void) { int value = (int) LOW (); } /* iftc */
|
|
|
21
|
|
|
22 The comment /* iftc */ is used to mark this type of casting to differentiate
|
|
|
23 it from other casting. We commit the changes and can now go about modifying
|
|
|
24 LOW and HIGH separately. When HIGH is ready to handle the type change, the
|
|
|
25 cast can be removed.
|
|
52401
|
26
|
|
|
27 ;;; arch-tag: 3309cc41-5d59-421b-b7be-c94b04083bb5
|