Mercurial > hg > xemacs-beta
view src/procimpl.h @ 867:804517e16990
[xemacs-hg @ 2002-06-05 09:54:39 by ben]
Textual renaming: text/char names
abbrev.c, alloc.c, buffer.c, buffer.h, bytecode.c, callint.c, casefiddle.c, casetab.c, charset.h, chartab.c, chartab.h, cmds.c, console-gtk.h, console-msw.c, console-msw.h, console-stream.c, console-tty.c, console-x.c, console-x.h, console.h, data.c, device-msw.c, device-x.c, dialog-msw.c, dired-msw.c, dired.c, doc.c, doprnt.c, editfns.c, eldap.c, emodules.c, eval.c, event-Xt.c, event-gtk.c, event-msw.c, event-stream.c, event-unixoid.c, events.c, events.h, file-coding.c, file-coding.h, fileio.c, filelock.c, fns.c, font-lock.c, frame-gtk.c, frame-msw.c, frame-x.c, frame.c, glyphs-eimage.c, glyphs-msw.c, glyphs-x.c, glyphs.c, glyphs.h, gpmevent.c, gui-x.c, gui-x.h, gui.c, gui.h, hpplay.c, indent.c, insdel.c, insdel.h, intl-win32.c, keymap.c, line-number.c, line-number.h, lisp-disunion.h, lisp-union.h, lisp.h, lread.c, lrecord.h, lstream.c, lstream.h, md5.c, menubar-msw.c, menubar-x.c, menubar.c, minibuf.c, mule-ccl.c, mule-charset.c, mule-coding.c, mule-wnnfns.c, ndir.h, nt.c, objects-gtk.c, objects-gtk.h, objects-msw.c, objects-tty.c, objects-x.c, objects.c, objects.h, postgresql.c, print.c, process-nt.c, process-unix.c, process.c, procimpl.h, realpath.c, redisplay-gtk.c, redisplay-msw.c, redisplay-output.c, redisplay-tty.c, redisplay-x.c, redisplay.c, redisplay.h, regex.c, search.c, select-common.h, select-gtk.c, select-x.c, sound.h, symbols.c, syntax.c, syntax.h, sysdep.c, sysdep.h, sysdir.h, sysfile.h, sysproc.h, syspwd.h, systime.h, syswindows.h, termcap.c, tests.c, text.c, text.h, toolbar-common.c, tooltalk.c, ui-gtk.c, unexnt.c, unicode.c, win32.c: Text/char naming rationalization.
[a] distinguish between "charptr" when it refers to operations on
the pointer itself and when it refers to operations on text; and
[b] use consistent naming for everything referring to internal
format, i.e.
Itext == text in internal format
Ibyte == a byte in such text
Ichar == a char as represented in internal character format
thus e.g.
set_charptr_emchar -> set_itext_ichar
The pre and post tags on either side of this change are:
pre-internal-format-textual-renaming
post-internal-format-textual-renaming
See the Internals Manual for details of exactly how this was done,
how to handle the change in your workspace, etc.
author | ben |
---|---|
date | Wed, 05 Jun 2002 09:58:45 +0000 |
parents | 2b6fa2618f76 |
children | c925bacdda60 |
line wrap: on
line source
/* Processes implementation header Copyright (C) 1985, 1992, 1993, 1994 Free Software Foundation, Inc. Copyright (C) 2002 Ben Wing. This file is part of XEmacs. XEmacs is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. XEmacs is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with XEmacs; see the file COPYING. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* This file must be only included by the process implementation files: process-unix.c, process-msw.c etc. The Lisp_Process structure and other contents of this file is not exported to the rest of the world */ #ifndef INCLUDED_procimpl_h_ #define INCLUDED_procimpl_h_ /* * Structure which keeps methods of the process implementation. * There is only one object of this class exists in a particular * XEmacs implementation. */ /* #### Comment me... */ struct process_methods { void (*mark_process_data) (Lisp_Process *proc); void (*print_process_data) (Lisp_Process *proc, Lisp_Object printcharfun); void (*finalize_process_data) (Lisp_Process *proc, int for_disksave); void (*alloc_process_data) (Lisp_Process *p); void (*init_process_io_handles) (Lisp_Process *p, void* in, void* out, void *err, int flags); int (*create_process) (Lisp_Process *p, Lisp_Object *argv, int nargv, Lisp_Object program, Lisp_Object cur_dir, int separate_err); int (*tooltalk_connection_p) (Lisp_Process *p); #ifdef HAVE_SOCKETS void (*open_network_stream) (Lisp_Object name, Lisp_Object host, Lisp_Object service, Lisp_Object protocol, void** vinfd, void** voutfd); #ifdef HAVE_MULTICAST void (*open_multicast_group) (Lisp_Object name, Lisp_Object dest, Lisp_Object port, Lisp_Object ttl, void** vinfd, void** voutfd); #endif /* HAVE_MULTICAST */ #endif /* HAVE_SOCKETS */ Lisp_Object (*canonicalize_host_name) (Lisp_Object host); int (*set_window_size) (Lisp_Process* p, int height, int width); void (*send_process) (Lisp_Object proc, struct lstream* lstream); void (*reap_exited_processes) (void); void (*update_status_if_terminated) (Lisp_Process* p); void (*kill_child_process) (Lisp_Object proc, int signo, int current_group, int nomsg); int (*kill_process_by_pid) (int pid, int sigcode); int (*process_send_eof) (Lisp_Object proc); Lisp_Object (*get_tty_name) (Lisp_Process *p); void (*deactivate_process) (Lisp_Process *p, USID* in_usid, USID* err_usid); void (*init_process) (void); }; extern struct process_methods the_process_methods; /* * Accessors for process_methods */ #define HAS_PROCMETH_P(name) (the_process_methods.name != 0) #define PROCMETH(name, par) ((the_process_methods.name) par) #define PROCMETH_OR_GIVEN(name, par, given) (HAS_PROCMETH_P(name) ? PROCMETH(name, par) : (given)) #define MAYBE_PROCMETH(name, par) do { if (HAS_PROCMETH_P(name)) PROCMETH(name, par); } while (0); #define MAYBE_LISP_PROCMETH(name, par) PROCMETH_OR_GIVEN(name, par, Qnil) #define MAYBE_INT_PROCMETH(name, par) PROCMETH_OR_GIVEN(name, par, 0) #define PROCESS_HAS_METHOD(os, name) the_process_methods.name = os##_##name /* * Structure records pertinent information about open channels. * There is one channel associated with each process. */ struct Lisp_Process { struct lcrecord_header header; /* Name of this process */ Lisp_Object name; /* List of command arguments that this process was run with */ Lisp_Object command; /* (funcall FILTER PROC STRING) (if FILTER is non-nil) to dispose of a bunch of chars from the process all at once */ Lisp_Object filter; /* (funcall FILTER PROC STRING) (if FILTER is non-nil) to dispose of a bunch of chars from the stderr of process all at once */ Lisp_Object stderr_filter; /* (funcall SENTINEL PROCESS) when process state changes */ Lisp_Object sentinel; /* Buffer that output or stderr output is going to */ Lisp_Object buffer, stderr_buffer; /* Marker set to end of last buffer-inserted output from this process */ Lisp_Object mark, stderr_mark; /* Lisp_Int of subprocess' PID, or a cons of service/host if this is really a network connection */ Lisp_Object pid; /* Symbol indicating status of process. This may be a symbol: run, stop, exit, signal */ Lisp_Object status_symbol; /* Exit code if process has terminated, signal which stopped/interrupted process or 0 if process is running */ int exit_code; /* Non-false if process has exited and "dumped core" on its way down */ char core_dumped; /* This next field is only actually used #ifdef ENERGIZE */ /* if this flag is not NIL, then filter will do the read on the channel, rather than having a call to make_string. This only works if the filter is a subr. */ char filter_does_read; /* Non-zero means kill silently if Emacs is exited. */ char kill_without_query; char in_selected, err_selected; /* Event-count of last event in which this process changed status. */ volatile int tick; /* Event-count of last such event reported. */ int update_tick; /* Non-zero if stderr and stdout are separated. */ char separate_stderr; /* Low level streams used in input and output, connected to child */ Lisp_Object pipe_instream; Lisp_Object pipe_outstream; Lisp_Object pipe_errstream; /* Data end streams, decoding and encoding pipe_* streams */ Lisp_Object coding_instream; Lisp_Object coding_outstream; Lisp_Object coding_errstream; /* Implementation dependent data */ void *process_data; }; /* Macros to refer to data connection streams */ #define DATA_INSTREAM(p) (p)->coding_instream #define DATA_OUTSTREAM(p) (p)->coding_outstream #define DATA_ERRSTREAM(p) (p)->coding_errstream /* Random externs from process.c */ extern Lisp_Object Qrun, Qstop, Qopen, Qclosed; extern Lisp_Object Qtcp, Qudp; extern Lisp_Object Vprocess_connection_type; extern Lisp_Object Vprocess_list; extern struct hash_table *usid_to_process; extern volatile int process_tick; extern int windowed_process_io; #ifdef HAVE_MULTICAST extern Lisp_Object Qmulticast; #endif #ifdef PROCESS_IO_BLOCKING extern Lisp_Object network_stream_blocking_port_list; #endif /* PROCESS_IO_BLOCKING */ Lisp_Object make_process_internal (Lisp_Object name); void init_process_io_handles (Lisp_Process *p, void* in, void* out, void *err, int flags); void send_process (Lisp_Object proc, Lisp_Object relocatable, const Ibyte *nonrelocatable, int start, int len); #endif /* INCLUDED_procimpl_h_ */