Mercurial > emacs
view admin/notes/iftc @ 49667:cbec1327e2f1
(QCfilter_multibyte): New variable.
(setup_process_coding_systems): New function.
(Fset_process_buffer, Fset_process_filter): Call
setup_process_coding_systems.
(Fstart_process): Initialize the member `filter_multibyte' of
struct Lisp_Process.
(create_process): Call setup_process_coding_systems.
(Fmake_network_process): New keyward `:filter-multibyte'.
Initialize the member `filter_multibyte' of struct Lisp_Process.
Call setup_process_coding_systems.
(server_accept_connection): Call setup_process_coding_systems.
(read_process_output): If the process has a filter, decide the
multibyteness of a string to given to the filter by
`filter_multibyte' member of the process. If the process doesn't
have a filter and the result of conversion is unibyte, use
Fstring_to_multibyte (not Fstring_make_multibyte) to get the
multibyte form.
(Fset_process_coding_system): Call setup_process_coding_systems.
(Fset_process_filter_multibyte): New function.
(Fprocess_filter_multibyte_p): New function.
(syms_of_process): Intern and staticpro QCfilter_multibyte.
Defsubr Sset_process_filter_multibyte and
Sprocess_filter_multibyte_p.
author | Kenichi Handa <handa@m17n.org> |
---|---|
date | Mon, 10 Feb 2003 07:58:29 +0000 |
parents | 28f0b229040c |
children | 695cf19ef79e |
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.