annotate src/lisp.h @ 99501:e3acb52d33e1

2008-11-12 Carsten Dominik <carsten.dominik@gmail.com> * org.el (org-yank): Make any prefix force normal yanking. Suppress folding if text would be swallowed into a folded subtree. (org-yank-folded-subtrees, org-yank): Docstring updates. * org-agenda.el (org-agenda-compare-effort): Treat no effort defined as 0. * org-exp.el (org-export-language-setup): Add Catalan and Esperanto language entries. 2008-11-12 Carsten Dominik <carsten.dominik@gmail.com> * org.el (org-refile): Allow refiling of entire regions. * org-clock.el (org-clock-time%): New function. * org.el (org-entry-get, org-entry-delete): Use safer regexps to retrieve property values. 2008-11-12 Carsten Dominik <carsten.dominik@gmail.com> * org-agenda.el (org-agenda-list): Handle the value `only' of org-agenda-show-log'. (org-agenda-log-mode): Interpret a double prefix arg. 2008-11-12 Carsten Dominik <carsten.dominik@gmail.com> * org-exp.el (org-export-html-footnotes-section): New variable. (org-export-as-html): Use `org-export-html-footnotes-section' to insert the footnotes. (org-export-language-setup): Add "Footnotes" to language words. 2008-11-12 Carsten Dominik <carsten.dominik@gmail.com> * org.el (org-yank): Fix bug when not inserting a subtree. 2008-11-12 Carsten Dominik <carsten.dominik@gmail.com> * org-vm.el (org-vm-follow-link): Call `vm-preview-current-message' instead of `vm-beginning-of-message'. * org.el (org-make-link-regexps): Make sure that links to gnus can contain brackets. 2008-11-12 Carsten Dominik <carsten.dominik@gmail.com> * org-attach.el (org-attach-dir): Remove duplicate ID creation code. * org-id.el (org-id-new): Use `org-trim' to extract the uuid from shell output. * org.el (org-link-abbrev-alist): Improve customization type. * org-attach.el (org-attach-expand-link, org-attach-expand): New functions. * org-agenda.el (org-agenda-get-progress): Renamed from `org-get-closed'. Implement searching for state changes as well. (org-agenda-log-mode-items): New option. (org-agenda-log-mode): New option prefix argument, interpreted as request to show all possible progress info. (org-agenda-get-day-entries): Call `org-get-progress' instead of `org-get-closed'. (org-agenda-set-mode-name): Handle the more complex log mode settings. (org-get-closed): New alias, pointing to `org-get-progress'. 2008-11-12 Carsten Dominik <dominik@science.uva.nl> * org.el (org-file-apps-defaults-gnu) (org-file-apps-defaults-macosx) (org-file-apps-defaults-windowsnt): Add an entry defining the system command. (org-file-apps): Allow `system' as key and value. (org-open-at-point): Explain the effect of a double prefix arg. (org-open-file): If the argument `in-emacs' is (16), i.e. corresponding to a double prefix argument, try to open the file externally. 2008-11-12 Carsten Dominik <dominik@science.uva.nl> * org.el (org-insert-link): Abbreviate absolute files names in links. Also, fix a bug in which the double C-u prefix would not be honored. 2008-11-12 Carsten Dominik <dominik@science.uva.nl> * org.el (org-insert-heading): If buffer does not end with a newline, add one if necessary to insert headline correctly. * org-exp.el (org-export-as-html): Make sure that <hr/> is between paragraphs, not inside. * org.el (org-todo): Quote `org-agenda-headline-snapshot-before-repeat'. * org-exp.el (org-export-as-html): Fully process link descriptions. (org-export-html-format-desc): New function. (org-export-as-html): Collect footnotes into the correct basket. (org-html-protect): No longer protect quotations marks here, this goes wrong. * org-agenda.el (org-agenda-remove-marked-text): Bind variable BEG. * org-compat.el (org-fit-window-to-buffer): New function (not really, a preliminary and incomplete version was present earlier, but not used). * org.el (org-fast-todo-selection, org-fast-tag-selection): Use `org-fit-window-to-buffer'. * org-exp.el (org-export): Use `org-fit-window-to-buffer'. * org-agenda.el (org-agenda-get-restriction-and-command) (org-fit-agenda-window, org-agenda-convert-date): Use `org-fit-window-to-buffer'. * org-exp.el (org-export-as-html): Process href links through `org-export-html-format-href'. (org-export-html-format-href): New function. * org-agenda.el (org-agenda-todo): Update only the current headline if this is a repeated TODO, marked done for today. (org-agenda-change-all-lines): New argument JUST-THIS, to change only the current line. * org.el (org-todo): Take a snapshot of the headline if the repeater might change it. 2008-11-12 Carsten Dominik <dominik@science.uva.nl> * org-publish.el (org-publish-find-title): Remove buffers visited only for extracting the title. * org-exp.el (org-export-html-style) (org-export-html-style-default): Mark style definitions as unparsed CDATA. * org-publish.el (org-publish-validate-link): Function re-introduced. 2008-11-12 Charles Sebold <csebold@gmail.com> * org-plot.el (org-plot/add-options-to-plist): Supports timefmt property. (org-plot-quote-timestamp-field): New function. (org-plot-quote-tsv-field): Call timestamp field function when necessary rather than just quoting as a string. (org-plot/gnuplot-to-data): Pass in timefmt property. (org-plot/gnuplot-script): Supports timefmt property. (org-plot/gnuplot): Checks for timestamp column before checking for text index column. 2008-11-12 Carsten Dominik <dominik@science.uva.nl> * org.el (org-insert-heading): Improve behavior with hidden subtrees. * org-publish.el (org-publish-org-index): Create a section in the index file. (org-publish-org-index): Stop linking to directories. * org.el (org-emphasis-alist): Use span instead of <u> to underline text. * org-exp.el (org-export-as-html): Make sure <p> is closed before <pre> sections. 2008-11-12 Sebastian Rose <sebastian_rose@gmx.de> * org-jsinfo.el (org-infojs-template): Remove language attribute from script tag. 2008-11-12 Carsten Dominik <dominik@science.uva.nl> * org-agenda.el (org-agenda-remove-marked-text): New function. (org-agenda-mark-filtered-text) (org-agenda-unmark-filtered-text): New functions. (org-write-agenda): Remove fltered text. * org.el (org-make-tags-matcher): Give access to TODO "property" without speed penalty. 2008-11-12 Carsten Dominik <dominik@science.uva.nl> * org.el (org-link-frame-setup): Add `org-gnus-no-new-news' as an option. (org-store-link-props): Make sure adding to the plist works correctly. * org-gnus.el (org-gnus-no-new-news): New function. (org-gnus-follow-link): Allow the article ID to be a message-id, in addition to allowing article numbers. Message IDs make much more roubust links. (org-gnus-store-link): Use message-id to create link. 2008-11-12 Carsten Dominik <dominik@science.uva.nl> * org.el (org-emphasize): Reverse the selection array. (org-emphasis-alist): Set <code> tags for the verbatim environment. * org-remember.el (org-remember-handler): Fix bug with prefix-related changing of the note storage target. * org-exp.el (org-print-icalendar-entries): Make the exported priorities compatible with RFC 2445. * org-clock.el (org-clock-save): Insert time stamp without dependence on time-stamp.el. 2008-11-12 Carsten Dominik <dominik@science.uva.nl> * org.el ("saveplace"): If saveplace puts point into an invisible location, make it visible. (org-make-tags-matcher): Allow inactive time stamps in time comparisons. (org-yank-adjusted-subtrees): New option. (org-yank): Incorporate adjusting trees. (org-paste-subtree): New argument FOR-YANK which will cause insertion at point without backing up over white lines, and leave point at the end of the inserted text. Also if the cursor is at the beginning of a headline, use the same level or the inserted tree. * org-publish.el (org-publish-get-base-files-1): Deal correctly with broken symlinks 2008-11-12 Carsten Dominik <dominik@science.uva.nl> * org-exp.el (org-export-select-tags, org-get-current-options): Fix typo.
author Carsten Dominik <dominik@science.uva.nl>
date Wed, 12 Nov 2008 08:01:06 +0000
parents 91206eb7321f
children e038c1a8307c
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1 /* Fundamental definitions for GNU Emacs Lisp interpreter.
60897
0f9e0d897751 (make_number): Make prototype more precise.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 60417
diff changeset
2 Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 1998, 1999, 2000,
79759
fc2bcd2a8aad Add 2008 to copyright years.
Glenn Morris <rgm@gnu.org>
parents: 78616
diff changeset
3 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
fc2bcd2a8aad Add 2008 to copyright years.
Glenn Morris <rgm@gnu.org>
parents: 78616
diff changeset
4 Free Software Foundation, Inc.
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
6 This file is part of GNU Emacs.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
7
94994
29adfc9354e7 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 94935
diff changeset
8 GNU Emacs is free software: you can redistribute it and/or modify
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
9 it under the terms of the GNU General Public License as published by
94994
29adfc9354e7 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 94935
diff changeset
10 the Free Software Foundation, either version 3 of the License, or
29adfc9354e7 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 94935
diff changeset
11 (at your option) any later version.
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
12
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
13 GNU Emacs is distributed in the hope that it will be useful,
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
16 GNU General Public License for more details.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
17
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
18 You should have received a copy of the GNU General Public License
94994
29adfc9354e7 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 94935
diff changeset
19 along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
20
52274
9f08d8959a2a (EMACS_LISP_H): New.
Dave Love <fx@gnu.org>
parents: 51868
diff changeset
21 #ifndef EMACS_LISP_H
9f08d8959a2a (EMACS_LISP_H): New.
Dave Love <fx@gnu.org>
parents: 51868
diff changeset
22 #define EMACS_LISP_H
9f08d8959a2a (EMACS_LISP_H): New.
Dave Love <fx@gnu.org>
parents: 51868
diff changeset
23
25017
4a142fb92f94 (P_): Moved to top of file.
Gerd Moellmann <gerd@gnu.org>
parents: 23984
diff changeset
24 /* Declare the prototype for a general external function. */
28054
d53d22ce7f4b (P_): Define based on PROTOTYPES, not __STDC__.
Dave Love <fx@gnu.org>
parents: 27885
diff changeset
25 #if defined (PROTOTYPES) || defined (WINDOWSNT)
25017
4a142fb92f94 (P_): Moved to top of file.
Gerd Moellmann <gerd@gnu.org>
parents: 23984
diff changeset
26 #define P_(proto) proto
4a142fb92f94 (P_): Moved to top of file.
Gerd Moellmann <gerd@gnu.org>
parents: 23984
diff changeset
27 #else
4a142fb92f94 (P_): Moved to top of file.
Gerd Moellmann <gerd@gnu.org>
parents: 23984
diff changeset
28 #define P_(proto) ()
4a142fb92f94 (P_): Moved to top of file.
Gerd Moellmann <gerd@gnu.org>
parents: 23984
diff changeset
29 #endif
4a142fb92f94 (P_): Moved to top of file.
Gerd Moellmann <gerd@gnu.org>
parents: 23984
diff changeset
30
36941
8107e2a17261 (Vx_resource_name) [HAVE_X_WINDOWS]: Declare extern.
Gerd Moellmann <gerd@gnu.org>
parents: 36816
diff changeset
31 #if 0
35184
07ec5658a7a5 (STRING_BYTES) [GC_CHECK_STRING_BYTES]: Call
Gerd Moellmann <gerd@gnu.org>
parents: 35173
diff changeset
32 /* Define this temporarily to hunt a bug. If defined, the size of
07ec5658a7a5 (STRING_BYTES) [GC_CHECK_STRING_BYTES]: Call
Gerd Moellmann <gerd@gnu.org>
parents: 35173
diff changeset
33 strings is redundantly recorded in sdata structures so that it can
07ec5658a7a5 (STRING_BYTES) [GC_CHECK_STRING_BYTES]: Call
Gerd Moellmann <gerd@gnu.org>
parents: 35173
diff changeset
34 be compared to the sizes recorded in Lisp strings. */
07ec5658a7a5 (STRING_BYTES) [GC_CHECK_STRING_BYTES]: Call
Gerd Moellmann <gerd@gnu.org>
parents: 35173
diff changeset
35
07ec5658a7a5 (STRING_BYTES) [GC_CHECK_STRING_BYTES]: Call
Gerd Moellmann <gerd@gnu.org>
parents: 35173
diff changeset
36 #define GC_CHECK_STRING_BYTES 1
58633
55d668830eed New defines to enable buffer overrun checking.
Kim F. Storm <storm@cua.dk>
parents: 58575
diff changeset
37
55d668830eed New defines to enable buffer overrun checking.
Kim F. Storm <storm@cua.dk>
parents: 58575
diff changeset
38 /* Define this to check for short string overrun. */
55d668830eed New defines to enable buffer overrun checking.
Kim F. Storm <storm@cua.dk>
parents: 58575
diff changeset
39
55d668830eed New defines to enable buffer overrun checking.
Kim F. Storm <storm@cua.dk>
parents: 58575
diff changeset
40 #define GC_CHECK_STRING_OVERRUN 1
55d668830eed New defines to enable buffer overrun checking.
Kim F. Storm <storm@cua.dk>
parents: 58575
diff changeset
41
55d668830eed New defines to enable buffer overrun checking.
Kim F. Storm <storm@cua.dk>
parents: 58575
diff changeset
42 /* Define this to check the string free list. */
55d668830eed New defines to enable buffer overrun checking.
Kim F. Storm <storm@cua.dk>
parents: 58575
diff changeset
43
55d668830eed New defines to enable buffer overrun checking.
Kim F. Storm <storm@cua.dk>
parents: 58575
diff changeset
44 #define GC_CHECK_STRING_FREE_LIST 1
55d668830eed New defines to enable buffer overrun checking.
Kim F. Storm <storm@cua.dk>
parents: 58575
diff changeset
45
55d668830eed New defines to enable buffer overrun checking.
Kim F. Storm <storm@cua.dk>
parents: 58575
diff changeset
46 /* Define this to check for malloc buffer overrun. */
55d668830eed New defines to enable buffer overrun checking.
Kim F. Storm <storm@cua.dk>
parents: 58575
diff changeset
47
55d668830eed New defines to enable buffer overrun checking.
Kim F. Storm <storm@cua.dk>
parents: 58575
diff changeset
48 #define XMALLOC_OVERRUN_CHECK 1
55d668830eed New defines to enable buffer overrun checking.
Kim F. Storm <storm@cua.dk>
parents: 58575
diff changeset
49
55d668830eed New defines to enable buffer overrun checking.
Kim F. Storm <storm@cua.dk>
parents: 58575
diff changeset
50 /* Define this to check for errors in cons list. */
55d668830eed New defines to enable buffer overrun checking.
Kim F. Storm <storm@cua.dk>
parents: 58575
diff changeset
51 /* #define GC_CHECK_CONS_LIST 1 */
55d668830eed New defines to enable buffer overrun checking.
Kim F. Storm <storm@cua.dk>
parents: 58575
diff changeset
52
51167
70fb9c159754 (Vfundamental_mode_abbrev_table): Don't declare.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51035
diff changeset
53 #endif /* 0 */
35184
07ec5658a7a5 (STRING_BYTES) [GC_CHECK_STRING_BYTES]: Call
Gerd Moellmann <gerd@gnu.org>
parents: 35173
diff changeset
54
60417
4a07536ef0de (CHECK_CONS_LIST): New macro (two definitions).
Richard M. Stallman <rms@gnu.org>
parents: 59678
diff changeset
55 #ifdef GC_CHECK_CONS_LIST
4a07536ef0de (CHECK_CONS_LIST): New macro (two definitions).
Richard M. Stallman <rms@gnu.org>
parents: 59678
diff changeset
56 #define CHECK_CONS_LIST() check_cons_list()
4a07536ef0de (CHECK_CONS_LIST): New macro (two definitions).
Richard M. Stallman <rms@gnu.org>
parents: 59678
diff changeset
57 #else
81813
32d8fd242bb2 * lisp.h (struct Lisp_Hash_Table): Turn next_weak into a bare pointer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 81794
diff changeset
58 #define CHECK_CONS_LIST() ((void)0)
60417
4a07536ef0de (CHECK_CONS_LIST): New macro (two definitions).
Richard M. Stallman <rms@gnu.org>
parents: 59678
diff changeset
59 #endif
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
60
8835
48bcdcb9d191 (EMACS_INT, EMACS_UINT): Define, if not already defined.
Richard M. Stallman <rms@gnu.org>
parents: 8827
diff changeset
61 /* These are default choices for the types to use. */
26088
b7aa6ac26872 Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents: 25818
diff changeset
62 #ifdef _LP64
b7aa6ac26872 Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents: 25818
diff changeset
63 #ifndef EMACS_INT
b7aa6ac26872 Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents: 25818
diff changeset
64 #define EMACS_INT long
b7aa6ac26872 Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents: 25818
diff changeset
65 #define BITS_PER_EMACS_INT BITS_PER_LONG
b7aa6ac26872 Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents: 25818
diff changeset
66 #endif
b7aa6ac26872 Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents: 25818
diff changeset
67 #ifndef EMACS_UINT
b7aa6ac26872 Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents: 25818
diff changeset
68 #define EMACS_UINT unsigned long
b7aa6ac26872 Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents: 25818
diff changeset
69 #endif
b7aa6ac26872 Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents: 25818
diff changeset
70 #else /* not _LP64 */
8835
48bcdcb9d191 (EMACS_INT, EMACS_UINT): Define, if not already defined.
Richard M. Stallman <rms@gnu.org>
parents: 8827
diff changeset
71 #ifndef EMACS_INT
48bcdcb9d191 (EMACS_INT, EMACS_UINT): Define, if not already defined.
Richard M. Stallman <rms@gnu.org>
parents: 8827
diff changeset
72 #define EMACS_INT int
16133
36566aa94b49 Add many declarations.
Richard M. Stallman <rms@gnu.org>
parents: 16051
diff changeset
73 #define BITS_PER_EMACS_INT BITS_PER_INT
8835
48bcdcb9d191 (EMACS_INT, EMACS_UINT): Define, if not already defined.
Richard M. Stallman <rms@gnu.org>
parents: 8827
diff changeset
74 #endif
48bcdcb9d191 (EMACS_INT, EMACS_UINT): Define, if not already defined.
Richard M. Stallman <rms@gnu.org>
parents: 8827
diff changeset
75 #ifndef EMACS_UINT
48bcdcb9d191 (EMACS_INT, EMACS_UINT): Define, if not already defined.
Richard M. Stallman <rms@gnu.org>
parents: 8827
diff changeset
76 #define EMACS_UINT unsigned int
48bcdcb9d191 (EMACS_INT, EMACS_UINT): Define, if not already defined.
Richard M. Stallman <rms@gnu.org>
parents: 8827
diff changeset
77 #endif
26088
b7aa6ac26872 Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents: 25818
diff changeset
78 #endif
8835
48bcdcb9d191 (EMACS_INT, EMACS_UINT): Define, if not already defined.
Richard M. Stallman <rms@gnu.org>
parents: 8827
diff changeset
79
28406
451721e784a8 Stop assuming interval pointers and lisp objects can be distinguished by
Ken Raeburn <raeburn@raeburn.org>
parents: 28141
diff changeset
80 /* Extra internal type checking? */
451721e784a8 Stop assuming interval pointers and lisp objects can be distinguished by
Ken Raeburn <raeburn@raeburn.org>
parents: 28141
diff changeset
81 extern int suppress_checking;
71063
7510757f449b * search.c (matcher_overflow): Mark as NO_RETURN.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 70929
diff changeset
82 extern void die P_((const char *, const char *, int)) NO_RETURN;
28430
f805ef5a2a03 * lisp.h (NO_UNION_TYPE) [ENABLE_CHECKING]: Undef.
Ken Raeburn <raeburn@raeburn.org>
parents: 28417
diff changeset
83
28406
451721e784a8 Stop assuming interval pointers and lisp objects can be distinguished by
Ken Raeburn <raeburn@raeburn.org>
parents: 28141
diff changeset
84 #ifdef ENABLE_CHECKING
28430
f805ef5a2a03 * lisp.h (NO_UNION_TYPE) [ENABLE_CHECKING]: Undef.
Ken Raeburn <raeburn@raeburn.org>
parents: 28417
diff changeset
85
85764
e12efff1fa77 Comment the ENABLE_CHECKING version of the CHECK macro.
Ken Raeburn <raeburn@raeburn.org>
parents: 85595
diff changeset
86 /* The suppress_checking variable is initialized to 0 in alloc.c. Set
e12efff1fa77 Comment the ENABLE_CHECKING version of the CHECK macro.
Ken Raeburn <raeburn@raeburn.org>
parents: 85595
diff changeset
87 it to 1 using a debugger to temporarily disable aborting on
e12efff1fa77 Comment the ENABLE_CHECKING version of the CHECK macro.
Ken Raeburn <raeburn@raeburn.org>
parents: 85595
diff changeset
88 detected internal inconsistencies or error conditions.
e12efff1fa77 Comment the ENABLE_CHECKING version of the CHECK macro.
Ken Raeburn <raeburn@raeburn.org>
parents: 85595
diff changeset
89
e12efff1fa77 Comment the ENABLE_CHECKING version of the CHECK macro.
Ken Raeburn <raeburn@raeburn.org>
parents: 85595
diff changeset
90 Testing suppress_checking after the supplied condition ensures that
e12efff1fa77 Comment the ENABLE_CHECKING version of the CHECK macro.
Ken Raeburn <raeburn@raeburn.org>
parents: 85595
diff changeset
91 the side effects produced by CHECK will be consistent, independent
e12efff1fa77 Comment the ENABLE_CHECKING version of the CHECK macro.
Ken Raeburn <raeburn@raeburn.org>
parents: 85595
diff changeset
92 of whether ENABLE_CHECKING is defined, or whether the checks are
e12efff1fa77 Comment the ENABLE_CHECKING version of the CHECK macro.
Ken Raeburn <raeburn@raeburn.org>
parents: 85595
diff changeset
93 suppressed at run time.
e12efff1fa77 Comment the ENABLE_CHECKING version of the CHECK macro.
Ken Raeburn <raeburn@raeburn.org>
parents: 85595
diff changeset
94
e12efff1fa77 Comment the ENABLE_CHECKING version of the CHECK macro.
Ken Raeburn <raeburn@raeburn.org>
parents: 85595
diff changeset
95 In some cases, a good compiler may be able to optimize away the
e12efff1fa77 Comment the ENABLE_CHECKING version of the CHECK macro.
Ken Raeburn <raeburn@raeburn.org>
parents: 85595
diff changeset
96 CHECK macro altogether, e.g., if XSTRING (x) uses CHECK to test
e12efff1fa77 Comment the ENABLE_CHECKING version of the CHECK macro.
Ken Raeburn <raeburn@raeburn.org>
parents: 85595
diff changeset
97 STRINGP (x), but a particular use of XSTRING is invoked only after
e12efff1fa77 Comment the ENABLE_CHECKING version of the CHECK macro.
Ken Raeburn <raeburn@raeburn.org>
parents: 85595
diff changeset
98 testing that STRINGP (x) is true, making the test redundant. */
e12efff1fa77 Comment the ENABLE_CHECKING version of the CHECK macro.
Ken Raeburn <raeburn@raeburn.org>
parents: 85595
diff changeset
99
50761
3afa0d82e92e (CHECK): Wrap args in parenthesis.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50748
diff changeset
100 #define CHECK(check,msg) (((check) || suppress_checking \
30943
429bcc971263 (CHECK) [ENABLE_CHECKING]: Make both side of the
Gerd Moellmann <gerd@gnu.org>
parents: 30934
diff changeset
101 ? (void) 0 \
50761
3afa0d82e92e (CHECK): Wrap args in parenthesis.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50748
diff changeset
102 : die ((msg), __FILE__, __LINE__)), \
28430
f805ef5a2a03 * lisp.h (NO_UNION_TYPE) [ENABLE_CHECKING]: Undef.
Ken Raeburn <raeburn@raeburn.org>
parents: 28417
diff changeset
103 0)
28406
451721e784a8 Stop assuming interval pointers and lisp objects can be distinguished by
Ken Raeburn <raeburn@raeburn.org>
parents: 28141
diff changeset
104 #else
28430
f805ef5a2a03 * lisp.h (NO_UNION_TYPE) [ENABLE_CHECKING]: Undef.
Ken Raeburn <raeburn@raeburn.org>
parents: 28417
diff changeset
105
28406
451721e784a8 Stop assuming interval pointers and lisp objects can be distinguished by
Ken Raeburn <raeburn@raeburn.org>
parents: 28141
diff changeset
106 /* Produce same side effects and result, but don't complain. */
451721e784a8 Stop assuming interval pointers and lisp objects can be distinguished by
Ken Raeburn <raeburn@raeburn.org>
parents: 28141
diff changeset
107 #define CHECK(check,msg) ((check),0)
28430
f805ef5a2a03 * lisp.h (NO_UNION_TYPE) [ENABLE_CHECKING]: Undef.
Ken Raeburn <raeburn@raeburn.org>
parents: 28417
diff changeset
108
28406
451721e784a8 Stop assuming interval pointers and lisp objects can be distinguished by
Ken Raeburn <raeburn@raeburn.org>
parents: 28141
diff changeset
109 #endif
28430
f805ef5a2a03 * lisp.h (NO_UNION_TYPE) [ENABLE_CHECKING]: Undef.
Ken Raeburn <raeburn@raeburn.org>
parents: 28417
diff changeset
110
28406
451721e784a8 Stop assuming interval pointers and lisp objects can be distinguished by
Ken Raeburn <raeburn@raeburn.org>
parents: 28141
diff changeset
111 /* Define an Emacs version of "assert", since some system ones are
451721e784a8 Stop assuming interval pointers and lisp objects can be distinguished by
Ken Raeburn <raeburn@raeburn.org>
parents: 28141
diff changeset
112 flaky. */
29337
637117135842 (eassert) [!ENABLE_CHECKING]: Define as `(void) 0'.
Gerd Moellmann <gerd@gnu.org>
parents: 29276
diff changeset
113 #ifndef ENABLE_CHECKING
637117135842 (eassert) [!ENABLE_CHECKING]: Define as `(void) 0'.
Gerd Moellmann <gerd@gnu.org>
parents: 29276
diff changeset
114 #define eassert(X) (void) 0
637117135842 (eassert) [!ENABLE_CHECKING]: Define as `(void) 0'.
Gerd Moellmann <gerd@gnu.org>
parents: 29276
diff changeset
115 #else /* ENABLE_CHECKING */
28406
451721e784a8 Stop assuming interval pointers and lisp objects can be distinguished by
Ken Raeburn <raeburn@raeburn.org>
parents: 28141
diff changeset
116 #if defined (__GNUC__) && __GNUC__ >= 2 && defined (__STDC__)
451721e784a8 Stop assuming interval pointers and lisp objects can be distinguished by
Ken Raeburn <raeburn@raeburn.org>
parents: 28141
diff changeset
117 #define eassert(cond) CHECK(cond,"assertion failed: " #cond)
451721e784a8 Stop assuming interval pointers and lisp objects can be distinguished by
Ken Raeburn <raeburn@raeburn.org>
parents: 28141
diff changeset
118 #else
451721e784a8 Stop assuming interval pointers and lisp objects can be distinguished by
Ken Raeburn <raeburn@raeburn.org>
parents: 28141
diff changeset
119 #define eassert(cond) CHECK(cond,"assertion failed")
451721e784a8 Stop assuming interval pointers and lisp objects can be distinguished by
Ken Raeburn <raeburn@raeburn.org>
parents: 28141
diff changeset
120 #endif
29337
637117135842 (eassert) [!ENABLE_CHECKING]: Define as `(void) 0'.
Gerd Moellmann <gerd@gnu.org>
parents: 29276
diff changeset
121 #endif /* ENABLE_CHECKING */
84979
79d85dce25a5 (DECL_ALIGN, USE_LSB_TAG): Move logic to before definition of
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 84804
diff changeset
122
97232
5584d562a3b5 Fix erroneous last commit.
Eli Zaretskii <eliz@gnu.org>
parents: 97226
diff changeset
123 /* Define this to make Lisp_Object use a union type instead of the
5584d562a3b5 Fix erroneous last commit.
Eli Zaretskii <eliz@gnu.org>
parents: 97226
diff changeset
124 default int. FIXME: It might be better to add a flag to configure
5584d562a3b5 Fix erroneous last commit.
Eli Zaretskii <eliz@gnu.org>
parents: 97226
diff changeset
125 to do this. */
5584d562a3b5 Fix erroneous last commit.
Eli Zaretskii <eliz@gnu.org>
parents: 97226
diff changeset
126 /* #define USE_LISP_UNION_TYPE */
5584d562a3b5 Fix erroneous last commit.
Eli Zaretskii <eliz@gnu.org>
parents: 97226
diff changeset
127
84979
79d85dce25a5 (DECL_ALIGN, USE_LSB_TAG): Move logic to before definition of
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 84804
diff changeset
128 /***** Select the tagging scheme. *****/
79d85dce25a5 (DECL_ALIGN, USE_LSB_TAG): Move logic to before definition of
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 84804
diff changeset
129 /* There are basically two options that control the tagging scheme:
97232
5584d562a3b5 Fix erroneous last commit.
Eli Zaretskii <eliz@gnu.org>
parents: 97226
diff changeset
130 - USE_LISP_UNION_TYPE says that Lisp_Object should be a union instead
5584d562a3b5 Fix erroneous last commit.
Eli Zaretskii <eliz@gnu.org>
parents: 97226
diff changeset
131 of an integer.
84979
79d85dce25a5 (DECL_ALIGN, USE_LSB_TAG): Move logic to before definition of
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 84804
diff changeset
132 - USE_LSB_TAG means that we can assume the least 3 bits of pointers are
79d85dce25a5 (DECL_ALIGN, USE_LSB_TAG): Move logic to before definition of
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 84804
diff changeset
133 always 0, and we can thus use them to hold tag bits, without
79d85dce25a5 (DECL_ALIGN, USE_LSB_TAG): Move logic to before definition of
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 84804
diff changeset
134 restricting our addressing space.
79d85dce25a5 (DECL_ALIGN, USE_LSB_TAG): Move logic to before definition of
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 84804
diff changeset
135
79d85dce25a5 (DECL_ALIGN, USE_LSB_TAG): Move logic to before definition of
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 84804
diff changeset
136 If USE_LSB_TAG is not set, then we use the top 3 bits for tagging, thus
79d85dce25a5 (DECL_ALIGN, USE_LSB_TAG): Move logic to before definition of
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 84804
diff changeset
137 restricting our possible address range. Currently USE_LSB_TAG is not
79d85dce25a5 (DECL_ALIGN, USE_LSB_TAG): Move logic to before definition of
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 84804
diff changeset
138 allowed together with a union. This is not due to any fundamental
79d85dce25a5 (DECL_ALIGN, USE_LSB_TAG): Move logic to before definition of
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 84804
diff changeset
139 technical (or political ;-) problem: nobody wrote the code to do it yet.
79d85dce25a5 (DECL_ALIGN, USE_LSB_TAG): Move logic to before definition of
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 84804
diff changeset
140
79d85dce25a5 (DECL_ALIGN, USE_LSB_TAG): Move logic to before definition of
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 84804
diff changeset
141 USE_LSB_TAG not only requires the least 3 bits of pointers returned by
79d85dce25a5 (DECL_ALIGN, USE_LSB_TAG): Move logic to before definition of
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 84804
diff changeset
142 malloc to be 0 but also needs to be able to impose a mult-of-8 alignment
79d85dce25a5 (DECL_ALIGN, USE_LSB_TAG): Move logic to before definition of
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 84804
diff changeset
143 on the few static Lisp_Objects used: all the defsubr as well
79d85dce25a5 (DECL_ALIGN, USE_LSB_TAG): Move logic to before definition of
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 84804
diff changeset
144 as the two special buffers buffer_defaults and buffer_local_symbols. */
79d85dce25a5 (DECL_ALIGN, USE_LSB_TAG): Move logic to before definition of
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 84804
diff changeset
145
79d85dce25a5 (DECL_ALIGN, USE_LSB_TAG): Move logic to before definition of
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 84804
diff changeset
146 /* First, try and define DECL_ALIGN(type,var) which declares a static
79d85dce25a5 (DECL_ALIGN, USE_LSB_TAG): Move logic to before definition of
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 84804
diff changeset
147 variable VAR of type TYPE with the added requirement that it be
79d85dce25a5 (DECL_ALIGN, USE_LSB_TAG): Move logic to before definition of
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 84804
diff changeset
148 TYPEBITS-aligned. */
79d85dce25a5 (DECL_ALIGN, USE_LSB_TAG): Move logic to before definition of
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 84804
diff changeset
149 #ifndef NO_DECL_ALIGN
79d85dce25a5 (DECL_ALIGN, USE_LSB_TAG): Move logic to before definition of
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 84804
diff changeset
150 # ifndef DECL_ALIGN
79d85dce25a5 (DECL_ALIGN, USE_LSB_TAG): Move logic to before definition of
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 84804
diff changeset
151 /* What compiler directive should we use for non-gcc compilers? -stef */
79d85dce25a5 (DECL_ALIGN, USE_LSB_TAG): Move logic to before definition of
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 84804
diff changeset
152 # if defined (__GNUC__)
79d85dce25a5 (DECL_ALIGN, USE_LSB_TAG): Move logic to before definition of
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 84804
diff changeset
153 # define DECL_ALIGN(type, var) \
79d85dce25a5 (DECL_ALIGN, USE_LSB_TAG): Move logic to before definition of
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 84804
diff changeset
154 type __attribute__ ((__aligned__ (1 << GCTYPEBITS))) var
79d85dce25a5 (DECL_ALIGN, USE_LSB_TAG): Move logic to before definition of
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 84804
diff changeset
155 # endif
79d85dce25a5 (DECL_ALIGN, USE_LSB_TAG): Move logic to before definition of
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 84804
diff changeset
156 # endif
79d85dce25a5 (DECL_ALIGN, USE_LSB_TAG): Move logic to before definition of
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 84804
diff changeset
157 #endif
79d85dce25a5 (DECL_ALIGN, USE_LSB_TAG): Move logic to before definition of
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 84804
diff changeset
158
79d85dce25a5 (DECL_ALIGN, USE_LSB_TAG): Move logic to before definition of
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 84804
diff changeset
159 /* Let's USE_LSB_TAG on systems where we know malloc returns mult-of-8. */
97279
76ed169d532c Dock menu customization, based on a patch by Ken Raeburn, plus some other fixes.
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 97267
diff changeset
160 #if defined GNU_MALLOC || defined DOUG_LEA_MALLOC || defined __GLIBC__ || defined DARWIN_OS
84979
79d85dce25a5 (DECL_ALIGN, USE_LSB_TAG): Move logic to before definition of
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 84804
diff changeset
161 /* We also need to be able to specify mult-of-8 alignment on static vars. */
79d85dce25a5 (DECL_ALIGN, USE_LSB_TAG): Move logic to before definition of
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 84804
diff changeset
162 # if defined DECL_ALIGN
79d85dce25a5 (DECL_ALIGN, USE_LSB_TAG): Move logic to before definition of
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 84804
diff changeset
163 /* We currently do not support USE_LSB_TAG with a union Lisp_Object. */
97232
5584d562a3b5 Fix erroneous last commit.
Eli Zaretskii <eliz@gnu.org>
parents: 97226
diff changeset
164 # ifndef USE_LISP_UNION_TYPE
84979
79d85dce25a5 (DECL_ALIGN, USE_LSB_TAG): Move logic to before definition of
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 84804
diff changeset
165 # define USE_LSB_TAG
79d85dce25a5 (DECL_ALIGN, USE_LSB_TAG): Move logic to before definition of
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 84804
diff changeset
166 # endif
79d85dce25a5 (DECL_ALIGN, USE_LSB_TAG): Move logic to before definition of
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 84804
diff changeset
167 # endif
79d85dce25a5 (DECL_ALIGN, USE_LSB_TAG): Move logic to before definition of
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 84804
diff changeset
168 #endif
79d85dce25a5 (DECL_ALIGN, USE_LSB_TAG): Move logic to before definition of
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 84804
diff changeset
169
79d85dce25a5 (DECL_ALIGN, USE_LSB_TAG): Move logic to before definition of
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 84804
diff changeset
170 /* If we cannot use 8-byte alignment, make DECL_ALIGN a no-op. */
79d85dce25a5 (DECL_ALIGN, USE_LSB_TAG): Move logic to before definition of
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 84804
diff changeset
171 #ifndef DECL_ALIGN
79d85dce25a5 (DECL_ALIGN, USE_LSB_TAG): Move logic to before definition of
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 84804
diff changeset
172 # ifdef USE_LSB_TAG
79d85dce25a5 (DECL_ALIGN, USE_LSB_TAG): Move logic to before definition of
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 84804
diff changeset
173 # error "USE_LSB_TAG used without defining DECL_ALIGN"
79d85dce25a5 (DECL_ALIGN, USE_LSB_TAG): Move logic to before definition of
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 84804
diff changeset
174 # endif
79d85dce25a5 (DECL_ALIGN, USE_LSB_TAG): Move logic to before definition of
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 84804
diff changeset
175 # define DECL_ALIGN(type, var) type var
79d85dce25a5 (DECL_ALIGN, USE_LSB_TAG): Move logic to before definition of
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 84804
diff changeset
176 #endif
79d85dce25a5 (DECL_ALIGN, USE_LSB_TAG): Move logic to before definition of
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 84804
diff changeset
177
28406
451721e784a8 Stop assuming interval pointers and lisp objects can be distinguished by
Ken Raeburn <raeburn@raeburn.org>
parents: 28141
diff changeset
178
10316
272f15eddaca (enum Lisp_Type): Delete Lisp_Buffer.
Richard M. Stallman <rms@gnu.org>
parents: 10292
diff changeset
179 /* Define the fundamental Lisp data structures. */
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
180
10316
272f15eddaca (enum Lisp_Type): Delete Lisp_Buffer.
Richard M. Stallman <rms@gnu.org>
parents: 10292
diff changeset
181 /* This is the set of Lisp data types. */
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
182
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
183 enum Lisp_Type
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
184 {
10316
272f15eddaca (enum Lisp_Type): Delete Lisp_Buffer.
Richard M. Stallman <rms@gnu.org>
parents: 10292
diff changeset
185 /* Integer. XINT (obj) is the integer value. */
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
186 Lisp_Int,
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
187
10316
272f15eddaca (enum Lisp_Type): Delete Lisp_Buffer.
Richard M. Stallman <rms@gnu.org>
parents: 10292
diff changeset
188 /* Symbol. XSYMBOL (object) points to a struct Lisp_Symbol. */
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
189 Lisp_Symbol,
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
190
9435
3a157cdf395c (Lisp_Misc): new type code, replacing Lisp_Marker (and soon to replace other
Karl Heuer <kwzh@gnu.org>
parents: 9392
diff changeset
191 /* Miscellaneous. XMISC (object) points to a union Lisp_Misc,
3a157cdf395c (Lisp_Misc): new type code, replacing Lisp_Marker (and soon to replace other
Karl Heuer <kwzh@gnu.org>
parents: 9392
diff changeset
192 whose first member indicates the subtype. */
3a157cdf395c (Lisp_Misc): new type code, replacing Lisp_Marker (and soon to replace other
Karl Heuer <kwzh@gnu.org>
parents: 9392
diff changeset
193 Lisp_Misc,
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
194
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
195 /* String. XSTRING (object) points to a struct Lisp_String.
10316
272f15eddaca (enum Lisp_Type): Delete Lisp_Buffer.
Richard M. Stallman <rms@gnu.org>
parents: 10292
diff changeset
196 The length of the string, and its contents, are stored therein. */
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
197 Lisp_String,
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
198
10010
67375493afa2 (enum Lisp_Misc_Type): Rename Lisp_Vector to Lisp_Vectorlike. Mark
Karl Heuer <kwzh@gnu.org>
parents: 10003
diff changeset
199 /* Vector of Lisp objects, or something resembling it.
10292
c467ec24a6bd (VALBITS): Default now 28.
Richard M. Stallman <rms@gnu.org>
parents: 10247
diff changeset
200 XVECTOR (object) points to a struct Lisp_Vector, which contains
10010
67375493afa2 (enum Lisp_Misc_Type): Rename Lisp_Vector to Lisp_Vectorlike. Mark
Karl Heuer <kwzh@gnu.org>
parents: 10003
diff changeset
201 the size and contents. The size field also contains the type
67375493afa2 (enum Lisp_Misc_Type): Rename Lisp_Vector to Lisp_Vectorlike. Mark
Karl Heuer <kwzh@gnu.org>
parents: 10003
diff changeset
202 information, if it's not a real vector object. */
67375493afa2 (enum Lisp_Misc_Type): Rename Lisp_Vector to Lisp_Vectorlike. Mark
Karl Heuer <kwzh@gnu.org>
parents: 10003
diff changeset
203 Lisp_Vectorlike,
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
204
10316
272f15eddaca (enum Lisp_Type): Delete Lisp_Buffer.
Richard M. Stallman <rms@gnu.org>
parents: 10292
diff changeset
205 /* Cons. XCONS (object) points to a struct Lisp_Cons. */
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
206 Lisp_Cons,
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
207
2780
cfe7659bbc05 * lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents: 2728
diff changeset
208 Lisp_Float,
10246
c000ce65503e (enum Lisp_Type): Add Max_Lisp_Type.
Richard M. Stallman <rms@gnu.org>
parents: 10032
diff changeset
209
c000ce65503e (enum Lisp_Type): Add Max_Lisp_Type.
Richard M. Stallman <rms@gnu.org>
parents: 10032
diff changeset
210 /* This is not a type code. It is for range checking. */
10321
c91b1f4295a1 (enum Lisp_Type): Don't use trailing comma.
Karl Heuer <kwzh@gnu.org>
parents: 10316
diff changeset
211 Lisp_Type_Limit
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
212 };
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
213
39579
e307d3530117 (LIST_END_P, FOREACH): New macros.
Gerd Moellmann <gerd@gnu.org>
parents: 39451
diff changeset
214 /* This is the set of data types that share a common structure.
10396
47938020b39d Use large constants for Lisp_Misc_Type.
Karl Heuer <kwzh@gnu.org>
parents: 10387
diff changeset
215 The first member of the structure is a type code from this set.
47938020b39d Use large constants for Lisp_Misc_Type.
Karl Heuer <kwzh@gnu.org>
parents: 10387
diff changeset
216 The enum values are arbitrary, but we'll use large numbers to make it
47938020b39d Use large constants for Lisp_Misc_Type.
Karl Heuer <kwzh@gnu.org>
parents: 10387
diff changeset
217 more likely that we'll spot the error if a random word in memory is
47938020b39d Use large constants for Lisp_Misc_Type.
Karl Heuer <kwzh@gnu.org>
parents: 10387
diff changeset
218 mistakenly interpreted as a Lisp_Misc. */
9392
32186e807f02 (enum Lisp_Misc_Type): New type.
Karl Heuer <kwzh@gnu.org>
parents: 9370
diff changeset
219 enum Lisp_Misc_Type
32186e807f02 (enum Lisp_Misc_Type): New type.
Karl Heuer <kwzh@gnu.org>
parents: 9370
diff changeset
220 {
10396
47938020b39d Use large constants for Lisp_Misc_Type.
Karl Heuer <kwzh@gnu.org>
parents: 10387
diff changeset
221 Lisp_Misc_Free = 0x5eab,
9435
3a157cdf395c (Lisp_Misc): new type code, replacing Lisp_Marker (and soon to replace other
Karl Heuer <kwzh@gnu.org>
parents: 9392
diff changeset
222 Lisp_Misc_Marker,
9462
3601bf7327b2 (enum Lisp_Misc_Type): Add new enumerations Lisp_Misc_Intfwd,
Karl Heuer <kwzh@gnu.org>
parents: 9435
diff changeset
223 Lisp_Misc_Intfwd,
3601bf7327b2 (enum Lisp_Misc_Type): Add new enumerations Lisp_Misc_Intfwd,
Karl Heuer <kwzh@gnu.org>
parents: 9435
diff changeset
224 Lisp_Misc_Boolfwd,
3601bf7327b2 (enum Lisp_Misc_Type): Add new enumerations Lisp_Misc_Intfwd,
Karl Heuer <kwzh@gnu.org>
parents: 9435
diff changeset
225 Lisp_Misc_Objfwd,
9891
f4a53f86853d (enum Lisp_Misc_Type): Add new enumerations Lisp_Misc_Buffer_Local_Value and
Karl Heuer <kwzh@gnu.org>
parents: 9885
diff changeset
226 Lisp_Misc_Buffer_Objfwd,
f4a53f86853d (enum Lisp_Misc_Type): Add new enumerations Lisp_Misc_Buffer_Local_Value and
Karl Heuer <kwzh@gnu.org>
parents: 9885
diff changeset
227 Lisp_Misc_Buffer_Local_Value,
10316
272f15eddaca (enum Lisp_Type): Delete Lisp_Buffer.
Richard M. Stallman <rms@gnu.org>
parents: 10292
diff changeset
228 Lisp_Misc_Overlay,
11012
31d88266ed12 (struct KBOARD, MULTI_KBOARD, current_kboard, all_kboards,
Karl Heuer <kwzh@gnu.org>
parents: 10944
diff changeset
229 Lisp_Misc_Kboard_Objfwd,
49056
88f14a14e005 New misc type Lisp_Save_Value.
Richard M. Stallman <rms@gnu.org>
parents: 48540
diff changeset
230 Lisp_Misc_Save_Value,
10316
272f15eddaca (enum Lisp_Type): Delete Lisp_Buffer.
Richard M. Stallman <rms@gnu.org>
parents: 10292
diff changeset
231 /* Currently floats are not a misc type,
272f15eddaca (enum Lisp_Type): Delete Lisp_Buffer.
Richard M. Stallman <rms@gnu.org>
parents: 10292
diff changeset
232 but let's define this in case we want to change that. */
272f15eddaca (enum Lisp_Type): Delete Lisp_Buffer.
Richard M. Stallman <rms@gnu.org>
parents: 10292
diff changeset
233 Lisp_Misc_Float,
272f15eddaca (enum Lisp_Type): Delete Lisp_Buffer.
Richard M. Stallman <rms@gnu.org>
parents: 10292
diff changeset
234 /* This is not a type code. It is for range checking. */
272f15eddaca (enum Lisp_Type): Delete Lisp_Buffer.
Richard M. Stallman <rms@gnu.org>
parents: 10292
diff changeset
235 Lisp_Misc_Limit
9392
32186e807f02 (enum Lisp_Misc_Type): New type.
Karl Heuer <kwzh@gnu.org>
parents: 9370
diff changeset
236 };
32186e807f02 (enum Lisp_Misc_Type): New type.
Karl Heuer <kwzh@gnu.org>
parents: 9370
diff changeset
237
51858
bf6232373c39 (VALBITS): Define in terms of GCTYPEBITS.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51833
diff changeset
238 #ifndef GCTYPEBITS
bf6232373c39 (VALBITS): Define in terms of GCTYPEBITS.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51833
diff changeset
239 #define GCTYPEBITS 3
bf6232373c39 (VALBITS): Define in terms of GCTYPEBITS.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51833
diff changeset
240 #endif
bf6232373c39 (VALBITS): Define in terms of GCTYPEBITS.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51833
diff changeset
241
10321
c91b1f4295a1 (enum Lisp_Type): Don't use trailing comma.
Karl Heuer <kwzh@gnu.org>
parents: 10316
diff changeset
242 /* These values are overridden by the m- file on some machines. */
c91b1f4295a1 (enum Lisp_Type): Don't use trailing comma.
Karl Heuer <kwzh@gnu.org>
parents: 10316
diff changeset
243 #ifndef VALBITS
52476
1b64668b2442 (VALBITS): Don't remove 1 for the markbit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
244 #define VALBITS (BITS_PER_EMACS_INT - GCTYPEBITS)
10321
c91b1f4295a1 (enum Lisp_Type): Don't use trailing comma.
Karl Heuer <kwzh@gnu.org>
parents: 10316
diff changeset
245 #endif
c91b1f4295a1 (enum Lisp_Type): Don't use trailing comma.
Karl Heuer <kwzh@gnu.org>
parents: 10316
diff changeset
246
97232
5584d562a3b5 Fix erroneous last commit.
Eli Zaretskii <eliz@gnu.org>
parents: 97226
diff changeset
247 #ifdef USE_LISP_UNION_TYPE
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
248
5241
1536c6b80ff6 Use WORDS_BIG_ENDIAN, not BIG_ENDIAN.
Richard M. Stallman <rms@gnu.org>
parents: 5128
diff changeset
249 #ifndef WORDS_BIG_ENDIAN
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
250
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
251 /* Definition of Lisp_Object for little-endian machines. */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
252
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
253 typedef
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
254 union Lisp_Object
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
255 {
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
256 /* Used for comparing two Lisp_Objects;
10316
272f15eddaca (enum Lisp_Type): Delete Lisp_Buffer.
Richard M. Stallman <rms@gnu.org>
parents: 10292
diff changeset
257 also, positive integers can be accessed fast this way. */
84979
79d85dce25a5 (DECL_ALIGN, USE_LSB_TAG): Move logic to before definition of
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 84804
diff changeset
258 EMACS_UINT i;
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
259
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
260 struct
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
261 {
31901
4e2853ad5d2d (union Lisp_Object) [!NO_UNION_TYPE]: Use EMACS_INT and
Gerd Moellmann <gerd@gnu.org>
parents: 31833
diff changeset
262 EMACS_INT val : VALBITS;
54083
16821fe4a0bf (union Lisp_Object): Give a more precise type for `type'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53884
diff changeset
263 enum Lisp_Type type : GCTYPEBITS;
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
264 } s;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
265 struct
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
266 {
31901
4e2853ad5d2d (union Lisp_Object) [!NO_UNION_TYPE]: Use EMACS_INT and
Gerd Moellmann <gerd@gnu.org>
parents: 31833
diff changeset
267 EMACS_UINT val : VALBITS;
54083
16821fe4a0bf (union Lisp_Object): Give a more precise type for `type'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53884
diff changeset
268 enum Lisp_Type type : GCTYPEBITS;
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
269 } u;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
270 }
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
271 Lisp_Object;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
272
5241
1536c6b80ff6 Use WORDS_BIG_ENDIAN, not BIG_ENDIAN.
Richard M. Stallman <rms@gnu.org>
parents: 5128
diff changeset
273 #else /* If WORDS_BIG_ENDIAN */
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
274
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
275 typedef
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
276 union Lisp_Object
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
277 {
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
278 /* Used for comparing two Lisp_Objects;
10316
272f15eddaca (enum Lisp_Type): Delete Lisp_Buffer.
Richard M. Stallman <rms@gnu.org>
parents: 10292
diff changeset
279 also, positive integers can be accessed fast this way. */
84979
79d85dce25a5 (DECL_ALIGN, USE_LSB_TAG): Move logic to before definition of
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 84804
diff changeset
280 EMACS_UINT i;
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
281
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
282 struct
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
283 {
54083
16821fe4a0bf (union Lisp_Object): Give a more precise type for `type'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53884
diff changeset
284 enum Lisp_Type type : GCTYPEBITS;
31901
4e2853ad5d2d (union Lisp_Object) [!NO_UNION_TYPE]: Use EMACS_INT and
Gerd Moellmann <gerd@gnu.org>
parents: 31833
diff changeset
285 EMACS_INT val : VALBITS;
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
286 } s;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
287 struct
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
288 {
54083
16821fe4a0bf (union Lisp_Object): Give a more precise type for `type'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53884
diff changeset
289 enum Lisp_Type type : GCTYPEBITS;
31901
4e2853ad5d2d (union Lisp_Object) [!NO_UNION_TYPE]: Use EMACS_INT and
Gerd Moellmann <gerd@gnu.org>
parents: 31833
diff changeset
290 EMACS_UINT val : VALBITS;
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
291 } u;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
292 }
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
293 Lisp_Object;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
294
5241
1536c6b80ff6 Use WORDS_BIG_ENDIAN, not BIG_ENDIAN.
Richard M. Stallman <rms@gnu.org>
parents: 5128
diff changeset
295 #endif /* WORDS_BIG_ENDIAN */
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
296
39973
579177964efa Avoid (most) uses of XCAR/XCDR as lvalues, for flexibility in experimenting
Ken Raeburn <raeburn@raeburn.org>
parents: 39924
diff changeset
297 #ifdef __GNUC__
579177964efa Avoid (most) uses of XCAR/XCDR as lvalues, for flexibility in experimenting
Ken Raeburn <raeburn@raeburn.org>
parents: 39924
diff changeset
298 static __inline__ Lisp_Object
579177964efa Avoid (most) uses of XCAR/XCDR as lvalues, for flexibility in experimenting
Ken Raeburn <raeburn@raeburn.org>
parents: 39924
diff changeset
299 LISP_MAKE_RVALUE (Lisp_Object o)
579177964efa Avoid (most) uses of XCAR/XCDR as lvalues, for flexibility in experimenting
Ken Raeburn <raeburn@raeburn.org>
parents: 39924
diff changeset
300 {
579177964efa Avoid (most) uses of XCAR/XCDR as lvalues, for flexibility in experimenting
Ken Raeburn <raeburn@raeburn.org>
parents: 39924
diff changeset
301 return o;
579177964efa Avoid (most) uses of XCAR/XCDR as lvalues, for flexibility in experimenting
Ken Raeburn <raeburn@raeburn.org>
parents: 39924
diff changeset
302 }
579177964efa Avoid (most) uses of XCAR/XCDR as lvalues, for flexibility in experimenting
Ken Raeburn <raeburn@raeburn.org>
parents: 39924
diff changeset
303 #else
45416
c6aa7f66df20 update LISP_MAKE_RVALUE comment for union, non-gcc case
Ken Raeburn <raeburn@raeburn.org>
parents: 45405
diff changeset
304 /* This isn't quite right - it keeps the argument as an lvalue.
c6aa7f66df20 update LISP_MAKE_RVALUE comment for union, non-gcc case
Ken Raeburn <raeburn@raeburn.org>
parents: 45405
diff changeset
305 Making it const via casting would help avoid code actually
c6aa7f66df20 update LISP_MAKE_RVALUE comment for union, non-gcc case
Ken Raeburn <raeburn@raeburn.org>
parents: 45405
diff changeset
306 modifying the location in question, but the casting could cover
c6aa7f66df20 update LISP_MAKE_RVALUE comment for union, non-gcc case
Ken Raeburn <raeburn@raeburn.org>
parents: 45405
diff changeset
307 other type-related bugs. */
c6aa7f66df20 update LISP_MAKE_RVALUE comment for union, non-gcc case
Ken Raeburn <raeburn@raeburn.org>
parents: 45405
diff changeset
308 #define LISP_MAKE_RVALUE(o) (o)
39973
579177964efa Avoid (most) uses of XCAR/XCDR as lvalues, for flexibility in experimenting
Ken Raeburn <raeburn@raeburn.org>
parents: 39924
diff changeset
309 #endif
579177964efa Avoid (most) uses of XCAR/XCDR as lvalues, for flexibility in experimenting
Ken Raeburn <raeburn@raeburn.org>
parents: 39924
diff changeset
310
97232
5584d562a3b5 Fix erroneous last commit.
Eli Zaretskii <eliz@gnu.org>
parents: 97226
diff changeset
311 #else /* USE_LISP_UNION_TYPE */
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
312
18115
06ce39d8e93e (VALMASK, GCTYPEMASK, MARKBIT, ARRAY_MARK_FLAG)
Richard M. Stallman <rms@gnu.org>
parents: 18111
diff changeset
313 /* If union type is not wanted, define Lisp_Object as just a number. */
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
314
67029
911421314d0e Use typedef when Lisp_Object is EMACS_INT so that
Nick Roberts <nickrob@snap.net.nz>
parents: 66888
diff changeset
315 typedef EMACS_INT Lisp_Object;
39973
579177964efa Avoid (most) uses of XCAR/XCDR as lvalues, for flexibility in experimenting
Ken Raeburn <raeburn@raeburn.org>
parents: 39924
diff changeset
316 #define LISP_MAKE_RVALUE(o) (0+(o))
97232
5584d562a3b5 Fix erroneous last commit.
Eli Zaretskii <eliz@gnu.org>
parents: 97226
diff changeset
317 #endif /* USE_LISP_UNION_TYPE */
6216
9f7708f75f17 (ARRAY_MARK_FLAG): Define here.
Richard M. Stallman <rms@gnu.org>
parents: 6131
diff changeset
318
51685
5c80476f5ff2 (MARKBIT): Update comment.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51666
diff changeset
319 /* In the size word of a vector, this bit means the vector has been marked. */
6216
9f7708f75f17 (ARRAY_MARK_FLAG): Define here.
Richard M. Stallman <rms@gnu.org>
parents: 6131
diff changeset
320
85022
96eb42c9e0e3 * window.h (struct window):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85021
diff changeset
321 #define ARRAY_MARK_FLAG ((EMACS_UINT) 1 << (BITS_PER_EMACS_INT - 1))
6216
9f7708f75f17 (ARRAY_MARK_FLAG): Define here.
Richard M. Stallman <rms@gnu.org>
parents: 6131
diff changeset
322
10010
67375493afa2 (enum Lisp_Misc_Type): Rename Lisp_Vector to Lisp_Vectorlike. Mark
Karl Heuer <kwzh@gnu.org>
parents: 10003
diff changeset
323 /* In the size word of a struct Lisp_Vector, this bit means it's really
67375493afa2 (enum Lisp_Misc_Type): Rename Lisp_Vector to Lisp_Vectorlike. Mark
Karl Heuer <kwzh@gnu.org>
parents: 10003
diff changeset
324 some other vector-like object. */
85022
96eb42c9e0e3 * window.h (struct window):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85021
diff changeset
325 #define PSEUDOVECTOR_FLAG ((ARRAY_MARK_FLAG >> 1))
10010
67375493afa2 (enum Lisp_Misc_Type): Rename Lisp_Vector to Lisp_Vectorlike. Mark
Karl Heuer <kwzh@gnu.org>
parents: 10003
diff changeset
326
10322
c1c2ec3aeefa Use consistent spelling in comments.
Karl Heuer <kwzh@gnu.org>
parents: 10321
diff changeset
327 /* In a pseudovector, the size field actually contains a word with one
10010
67375493afa2 (enum Lisp_Misc_Type): Rename Lisp_Vector to Lisp_Vectorlike. Mark
Karl Heuer <kwzh@gnu.org>
parents: 10003
diff changeset
328 PSEUDOVECTOR_FLAG bit set, and exactly one of the following bits to
84689
73c717fa7866 (enum pvec_type): New `terminal' pseudovector.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 84434
diff changeset
329 indicate the actual type.
85012
3a31b2cfe77f (ARRAY_MARK_FLAG, PSEUDOVECTOR_FLAG): Don't allow definition in m/*.h files.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85011
diff changeset
330 We use a bitset, even tho only one of the bits can be set at any
3a31b2cfe77f (ARRAY_MARK_FLAG, PSEUDOVECTOR_FLAG): Don't allow definition in m/*.h files.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85011
diff changeset
331 particular time just so as to be able to use micro-optimizations such as
3a31b2cfe77f (ARRAY_MARK_FLAG, PSEUDOVECTOR_FLAG): Don't allow definition in m/*.h files.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85011
diff changeset
332 testing membership of a particular subset of pseudovectors in Fequal.
3a31b2cfe77f (ARRAY_MARK_FLAG, PSEUDOVECTOR_FLAG): Don't allow definition in m/*.h files.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85011
diff changeset
333 It is not crucial, but there are plenty of bits here, so why not do it? */
10316
272f15eddaca (enum Lisp_Type): Delete Lisp_Buffer.
Richard M. Stallman <rms@gnu.org>
parents: 10292
diff changeset
334 enum pvec_type
272f15eddaca (enum Lisp_Type): Delete Lisp_Buffer.
Richard M. Stallman <rms@gnu.org>
parents: 10292
diff changeset
335 {
272f15eddaca (enum Lisp_Type): Delete Lisp_Buffer.
Richard M. Stallman <rms@gnu.org>
parents: 10292
diff changeset
336 PVEC_NORMAL_VECTOR = 0,
272f15eddaca (enum Lisp_Type): Delete Lisp_Buffer.
Richard M. Stallman <rms@gnu.org>
parents: 10292
diff changeset
337 PVEC_PROCESS = 0x200,
272f15eddaca (enum Lisp_Type): Delete Lisp_Buffer.
Richard M. Stallman <rms@gnu.org>
parents: 10292
diff changeset
338 PVEC_FRAME = 0x400,
272f15eddaca (enum Lisp_Type): Delete Lisp_Buffer.
Richard M. Stallman <rms@gnu.org>
parents: 10292
diff changeset
339 PVEC_COMPILED = 0x800,
272f15eddaca (enum Lisp_Type): Delete Lisp_Buffer.
Richard M. Stallman <rms@gnu.org>
parents: 10292
diff changeset
340 PVEC_WINDOW = 0x1000,
272f15eddaca (enum Lisp_Type): Delete Lisp_Buffer.
Richard M. Stallman <rms@gnu.org>
parents: 10292
diff changeset
341 PVEC_WINDOW_CONFIGURATION = 0x2000,
272f15eddaca (enum Lisp_Type): Delete Lisp_Buffer.
Richard M. Stallman <rms@gnu.org>
parents: 10292
diff changeset
342 PVEC_SUBR = 0x4000,
13149
b1dcc3e87ffb (struct Lisp_Boolvector): New data type.
Richard M. Stallman <rms@gnu.org>
parents: 12890
diff changeset
343 PVEC_CHAR_TABLE = 0x8000,
b1dcc3e87ffb (struct Lisp_Boolvector): New data type.
Richard M. Stallman <rms@gnu.org>
parents: 12890
diff changeset
344 PVEC_BOOL_VECTOR = 0x10000,
b1dcc3e87ffb (struct Lisp_Boolvector): New data type.
Richard M. Stallman <rms@gnu.org>
parents: 12890
diff changeset
345 PVEC_BUFFER = 0x20000,
25017
4a142fb92f94 (P_): Moved to top of file.
Gerd Moellmann <gerd@gnu.org>
parents: 23984
diff changeset
346 PVEC_HASH_TABLE = 0x40000,
84689
73c717fa7866 (enum pvec_type): New `terminal' pseudovector.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 84434
diff changeset
347 PVEC_TERMINAL = 0x80000,
91041
bdb3fe0ba9fa Merge from emacs--devo--0
Miles Bader <miles@gnu.org>
parents: 91005 85105
diff changeset
348 PVEC_SUB_CHAR_TABLE = 0x100000,
94935
45602a11979b (enum pvec_type): New member PREV_FONT.
Kenichi Handa <handa@m17n.org>
parents: 94121
diff changeset
349 PVEC_FONT = 0x200000,
45602a11979b (enum pvec_type): New member PREV_FONT.
Kenichi Handa <handa@m17n.org>
parents: 94121
diff changeset
350 PVEC_OTHER = 0x400000,
45602a11979b (enum pvec_type): New member PREV_FONT.
Kenichi Handa <handa@m17n.org>
parents: 94121
diff changeset
351 PVEC_TYPE_MASK = 0x7ffe00
45623
0e92d219e195 (current_column): Now returns float.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 45545
diff changeset
352
26569
d5f7eaff00db Fix typo in previous change.
Gerd Moellmann <gerd@gnu.org>
parents: 26566
diff changeset
353 #if 0 /* This is used to make the value of PSEUDOVECTOR_FLAG available to
d5f7eaff00db Fix typo in previous change.
Gerd Moellmann <gerd@gnu.org>
parents: 26566
diff changeset
354 GDB. It doesn't work on OS Alpha. Moved to a variable in
d5f7eaff00db Fix typo in previous change.
Gerd Moellmann <gerd@gnu.org>
parents: 26566
diff changeset
355 emacs.c. */
12246
4de2d34c04d3 (enum pvec_type): Don't use trailing comma.
Karl Heuer <kwzh@gnu.org>
parents: 12114
diff changeset
356 PVEC_FLAG = PSEUDOVECTOR_FLAG
26569
d5f7eaff00db Fix typo in previous change.
Gerd Moellmann <gerd@gnu.org>
parents: 26566
diff changeset
357 #endif
10316
272f15eddaca (enum Lisp_Type): Delete Lisp_Buffer.
Richard M. Stallman <rms@gnu.org>
parents: 10292
diff changeset
358 };
10010
67375493afa2 (enum Lisp_Misc_Type): Rename Lisp_Vector to Lisp_Vectorlike. Mark
Karl Heuer <kwzh@gnu.org>
parents: 10003
diff changeset
359
69871
8a7ecbca8672 (PSEUDOVECTOR_SIZE_MASK): Expand docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 69869
diff changeset
360 /* For convenience, we also store the number of elements in these bits.
8a7ecbca8672 (PSEUDOVECTOR_SIZE_MASK): Expand docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 69869
diff changeset
361 Note that this size is not necessarily the memory-footprint size, but
8a7ecbca8672 (PSEUDOVECTOR_SIZE_MASK): Expand docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 69869
diff changeset
362 only the number of Lisp_Object fields (that need to be traced by the GC).
8a7ecbca8672 (PSEUDOVECTOR_SIZE_MASK): Expand docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 69869
diff changeset
363 The distinction is used e.g. by Lisp_Process which places extra
8a7ecbca8672 (PSEUDOVECTOR_SIZE_MASK): Expand docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 69869
diff changeset
364 non-Lisp_Object fields at the end of the structure. */
13149
b1dcc3e87ffb (struct Lisp_Boolvector): New data type.
Richard M. Stallman <rms@gnu.org>
parents: 12890
diff changeset
365 #define PSEUDOVECTOR_SIZE_MASK 0x1ff
55157
2a1571603eac (BOOL_VECTOR_BITS_PER_CHAR): Define.
Andreas Schwab <schwab@suse.de>
parents: 55142
diff changeset
366
2a1571603eac (BOOL_VECTOR_BITS_PER_CHAR): Define.
Andreas Schwab <schwab@suse.de>
parents: 55142
diff changeset
367 /* Number of bits to put in each character in the internal representation
2a1571603eac (BOOL_VECTOR_BITS_PER_CHAR): Define.
Andreas Schwab <schwab@suse.de>
parents: 55142
diff changeset
368 of bool vectors. This should not vary across implementations. */
2a1571603eac (BOOL_VECTOR_BITS_PER_CHAR): Define.
Andreas Schwab <schwab@suse.de>
parents: 55142
diff changeset
369 #define BOOL_VECTOR_BITS_PER_CHAR 8
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
370
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
371 /* These macros extract various sorts of values from a Lisp_Object.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
372 For example, if tem is a Lisp_Object whose type is Lisp_Cons,
10316
272f15eddaca (enum Lisp_Type): Delete Lisp_Buffer.
Richard M. Stallman <rms@gnu.org>
parents: 10292
diff changeset
373 XCONS (tem) is the struct Lisp_Cons * pointing to the memory for that cons. */
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
374
97232
5584d562a3b5 Fix erroneous last commit.
Eli Zaretskii <eliz@gnu.org>
parents: 97226
diff changeset
375 #ifndef USE_LISP_UNION_TYPE
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
376
84979
79d85dce25a5 (DECL_ALIGN, USE_LSB_TAG): Move logic to before definition of
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 84804
diff changeset
377 /* Return a perfect hash of the Lisp_Object representation. */
79d85dce25a5 (DECL_ALIGN, USE_LSB_TAG): Move logic to before definition of
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 84804
diff changeset
378 #define XHASH(a) (a)
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
379
53654
8dc805af6250 [USE_LSB_TAG]: Add definitions for Lisp_Object value
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53653
diff changeset
380 #ifdef USE_LSB_TAG
8dc805af6250 [USE_LSB_TAG]: Add definitions for Lisp_Object value
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53653
diff changeset
381
8dc805af6250 [USE_LSB_TAG]: Add definitions for Lisp_Object value
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53653
diff changeset
382 #define TYPEMASK ((((EMACS_INT) 1) << GCTYPEBITS) - 1)
8dc805af6250 [USE_LSB_TAG]: Add definitions for Lisp_Object value
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53653
diff changeset
383 #define XTYPE(a) ((enum Lisp_Type) (((EMACS_UINT) (a)) & TYPEMASK))
8dc805af6250 [USE_LSB_TAG]: Add definitions for Lisp_Object value
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53653
diff changeset
384 #define XINT(a) (((EMACS_INT) (a)) >> GCTYPEBITS)
8dc805af6250 [USE_LSB_TAG]: Add definitions for Lisp_Object value
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53653
diff changeset
385 #define XUINT(a) (((EMACS_UINT) (a)) >> GCTYPEBITS)
8dc805af6250 [USE_LSB_TAG]: Add definitions for Lisp_Object value
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53653
diff changeset
386 #define XSET(var, type, ptr) \
8dc805af6250 [USE_LSB_TAG]: Add definitions for Lisp_Object value
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53653
diff changeset
387 (eassert (XTYPE (ptr) == 0), /* Check alignment. */ \
8dc805af6250 [USE_LSB_TAG]: Add definitions for Lisp_Object value
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53653
diff changeset
388 (var) = ((EMACS_INT) (type)) | ((EMACS_INT) (ptr)))
8dc805af6250 [USE_LSB_TAG]: Add definitions for Lisp_Object value
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53653
diff changeset
389 #define make_number(N) (((EMACS_INT) (N)) << GCTYPEBITS)
8dc805af6250 [USE_LSB_TAG]: Add definitions for Lisp_Object value
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53653
diff changeset
390
8dc805af6250 [USE_LSB_TAG]: Add definitions for Lisp_Object value
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53653
diff changeset
391 /* XFASTINT and XSETFASTINT are for use when the integer is known to be
8dc805af6250 [USE_LSB_TAG]: Add definitions for Lisp_Object value
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53653
diff changeset
392 positive, in which case the implementation can sometimes be faster
8dc805af6250 [USE_LSB_TAG]: Add definitions for Lisp_Object value
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53653
diff changeset
393 depending on the tagging scheme. With USE_LSB_TAG, there's no benefit. */
8dc805af6250 [USE_LSB_TAG]: Add definitions for Lisp_Object value
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53653
diff changeset
394 #define XFASTINT(a) XINT (a)
8dc805af6250 [USE_LSB_TAG]: Add definitions for Lisp_Object value
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53653
diff changeset
395 #define XSETFASTINT(a, b) ((a) = make_number (b))
8dc805af6250 [USE_LSB_TAG]: Add definitions for Lisp_Object value
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53653
diff changeset
396
8dc805af6250 [USE_LSB_TAG]: Add definitions for Lisp_Object value
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53653
diff changeset
397 #define XPNTR(a) ((EMACS_INT) ((a) & ~TYPEMASK))
8dc805af6250 [USE_LSB_TAG]: Add definitions for Lisp_Object value
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53653
diff changeset
398
8dc805af6250 [USE_LSB_TAG]: Add definitions for Lisp_Object value
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53653
diff changeset
399 #else /* not USE_LSB_TAG */
8dc805af6250 [USE_LSB_TAG]: Add definitions for Lisp_Object value
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53653
diff changeset
400
53088
63a8b584e971 (VALMASK): Only define for non-union type.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53001
diff changeset
401 #define VALMASK ((((EMACS_INT) 1) << VALBITS) - 1)
63a8b584e971 (VALMASK): Only define for non-union type.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53001
diff changeset
402
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
403 /* One need to override this if there must be high bits set in data space
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
404 (doing the result of the below & ((1 << (GCTYPE + 1)) - 1) would work
39579
e307d3530117 (LIST_END_P, FOREACH): New macros.
Gerd Moellmann <gerd@gnu.org>
parents: 39451
diff changeset
405 on all machines, but would penalize machines which don't need it)
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
406 */
52476
1b64668b2442 (VALBITS): Don't remove 1 for the markbit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
407 #define XTYPE(a) ((enum Lisp_Type) (((EMACS_UINT) (a)) >> VALBITS))
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
408
9292
ec707cca800a (XSETFASTINT): New macro.
Karl Heuer <kwzh@gnu.org>
parents: 9287
diff changeset
409 /* For integers known to be positive, XFASTINT provides fast retrieval
ec707cca800a (XSETFASTINT): New macro.
Karl Heuer <kwzh@gnu.org>
parents: 9287
diff changeset
410 and XSETFASTINT provides fast storage. This takes advantage of the
53088
63a8b584e971 (VALMASK): Only define for non-union type.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53001
diff changeset
411 fact that Lisp_Int is 0. */
9328
4db4768d5857 (XFASTINT): Changed to non-lvalue syntax, to ensure that callers will use
Karl Heuer <kwzh@gnu.org>
parents: 9292
diff changeset
412 #define XFASTINT(a) ((a) + 0)
9292
ec707cca800a (XSETFASTINT): New macro.
Karl Heuer <kwzh@gnu.org>
parents: 9287
diff changeset
413 #define XSETFASTINT(a, b) ((a) = (b))
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
414
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
415 /* Extract the value of a Lisp_Object as a signed integer. */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
416
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
417 #ifndef XINT /* Some machines need to do this differently. */
52998
3d26cfe32fa7 (XINT): Move the cast to clarify what is going on.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52476
diff changeset
418 #define XINT(a) ((((EMACS_INT) (a)) << (BITS_PER_EMACS_INT - VALBITS)) \
3d26cfe32fa7 (XINT): Move the cast to clarify what is going on.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52476
diff changeset
419 >> (BITS_PER_EMACS_INT - VALBITS))
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
420 #endif
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
421
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
422 /* Extract the value as an unsigned integer. This is a basis
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
423 for extracting it as a pointer to a structure in storage. */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
424
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
425 #ifndef XUINT
31907
b786c3535d32 (XINT) [EXPLICIT_SIGN_EXTEND]: Use BITS_PER_EMACS_INT
Gerd Moellmann <gerd@gnu.org>
parents: 31901
diff changeset
426 #define XUINT(a) ((EMACS_UINT) ((a) & VALMASK))
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
427 #endif
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
428
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
429 #ifndef XSET
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
430 #define XSET(var, type, ptr) \
8827
97bf951c0b98 (Lisp_Object): Use EMACS_INT.
Richard M. Stallman <rms@gnu.org>
parents: 8631
diff changeset
431 ((var) = ((EMACS_INT)(type) << VALBITS) + ((EMACS_INT) (ptr) & VALMASK))
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
432 #endif
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
433
14306
b30429f0b599 (XCAR, XCDR, CAR, CDR): New macros.
Karl Heuer <kwzh@gnu.org>
parents: 14186
diff changeset
434 /* Convert a C integer into a Lisp_Object integer. */
b30429f0b599 (XCAR, XCDR, CAR, CDR): New macros.
Karl Heuer <kwzh@gnu.org>
parents: 14186
diff changeset
435
b30429f0b599 (XCAR, XCDR, CAR, CDR): New macros.
Karl Heuer <kwzh@gnu.org>
parents: 14186
diff changeset
436 #define make_number(N) \
b30429f0b599 (XCAR, XCDR, CAR, CDR): New macros.
Karl Heuer <kwzh@gnu.org>
parents: 14186
diff changeset
437 ((((EMACS_INT) (N)) & VALMASK) | ((EMACS_INT) Lisp_Int) << VALBITS)
b30429f0b599 (XCAR, XCDR, CAR, CDR): New macros.
Karl Heuer <kwzh@gnu.org>
parents: 14186
diff changeset
438
53654
8dc805af6250 [USE_LSB_TAG]: Add definitions for Lisp_Object value
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53653
diff changeset
439 #endif /* not USE_LSB_TAG */
8dc805af6250 [USE_LSB_TAG]: Add definitions for Lisp_Object value
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53653
diff changeset
440
97232
5584d562a3b5 Fix erroneous last commit.
Eli Zaretskii <eliz@gnu.org>
parents: 97226
diff changeset
441 #else /* USE_LISP_UNION_TYPE */
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
442
84979
79d85dce25a5 (DECL_ALIGN, USE_LSB_TAG): Move logic to before definition of
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 84804
diff changeset
443 #define XHASH(a) ((a).i)
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
444
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
445 #define XTYPE(a) ((enum Lisp_Type) (a).u.type)
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
446
9292
ec707cca800a (XSETFASTINT): New macro.
Karl Heuer <kwzh@gnu.org>
parents: 9287
diff changeset
447 /* For integers known to be positive, XFASTINT provides fast retrieval
ec707cca800a (XSETFASTINT): New macro.
Karl Heuer <kwzh@gnu.org>
parents: 9287
diff changeset
448 and XSETFASTINT provides fast storage. This takes advantage of the
ec707cca800a (XSETFASTINT): New macro.
Karl Heuer <kwzh@gnu.org>
parents: 9287
diff changeset
449 fact that Lisp_Int is 0. */
9328
4db4768d5857 (XFASTINT): Changed to non-lvalue syntax, to ensure that callers will use
Karl Heuer <kwzh@gnu.org>
parents: 9292
diff changeset
450 #define XFASTINT(a) ((a).i + 0)
9292
ec707cca800a (XSETFASTINT): New macro.
Karl Heuer <kwzh@gnu.org>
parents: 9287
diff changeset
451 #define XSETFASTINT(a, b) ((a).i = (b))
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
452
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
453 #ifdef EXPLICIT_SIGN_EXTEND
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
454 /* Make sure we sign-extend; compilers have been known to fail to do so. */
55081
35a889bb25b7 (XINT) [EXPLICIT_SIGN_EXTEND && !NO_UNION_TYPE]:
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55024
diff changeset
455 #define XINT(a) (((a).s.val << (BITS_PER_EMACS_INT - VALBITS)) \
31907
b786c3535d32 (XINT) [EXPLICIT_SIGN_EXTEND]: Use BITS_PER_EMACS_INT
Gerd Moellmann <gerd@gnu.org>
parents: 31901
diff changeset
456 >> (BITS_PER_EMACS_INT - VALBITS))
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
457 #else
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
458 #define XINT(a) ((a).s.val)
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
459 #endif /* EXPLICIT_SIGN_EXTEND */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
460
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
461 #define XUINT(a) ((a).u.val)
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
462
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
463 #define XSET(var, vartype, ptr) \
31901
4e2853ad5d2d (union Lisp_Object) [!NO_UNION_TYPE]: Use EMACS_INT and
Gerd Moellmann <gerd@gnu.org>
parents: 31833
diff changeset
464 (((var).s.val = ((EMACS_INT) (ptr))), ((var).s.type = ((char) (vartype))))
28508
a68042252425 * lisp.h (make_number) [!NO_UNION_TYPE && __GNUC__ >= 2 && __OPTIMIZE__]:
Ken Raeburn <raeburn@raeburn.org>
parents: 28480
diff changeset
465
a68042252425 * lisp.h (make_number) [!NO_UNION_TYPE && __GNUC__ >= 2 && __OPTIMIZE__]:
Ken Raeburn <raeburn@raeburn.org>
parents: 28480
diff changeset
466 #if __GNUC__ >= 2 && defined (__OPTIMIZE__)
a68042252425 * lisp.h (make_number) [!NO_UNION_TYPE && __GNUC__ >= 2 && __OPTIMIZE__]:
Ken Raeburn <raeburn@raeburn.org>
parents: 28480
diff changeset
467 #define make_number(N) \
a68042252425 * lisp.h (make_number) [!NO_UNION_TYPE && __GNUC__ >= 2 && __OPTIMIZE__]:
Ken Raeburn <raeburn@raeburn.org>
parents: 28480
diff changeset
468 (__extension__ ({ Lisp_Object _l; _l.s.val = (N); _l.s.type = Lisp_Int; _l; }))
a68042252425 * lisp.h (make_number) [!NO_UNION_TYPE && __GNUC__ >= 2 && __OPTIMIZE__]:
Ken Raeburn <raeburn@raeburn.org>
parents: 28480
diff changeset
469 #else
60897
0f9e0d897751 (make_number): Make prototype more precise.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 60417
diff changeset
470 extern Lisp_Object make_number P_ ((EMACS_INT));
28508
a68042252425 * lisp.h (make_number) [!NO_UNION_TYPE && __GNUC__ >= 2 && __OPTIMIZE__]:
Ken Raeburn <raeburn@raeburn.org>
parents: 28480
diff changeset
471 #endif
17404
73012b195cf3 (DOWNCASE): Return int, not Lisp_Object.
Karl Heuer <kwzh@gnu.org>
parents: 17326
diff changeset
472
97232
5584d562a3b5 Fix erroneous last commit.
Eli Zaretskii <eliz@gnu.org>
parents: 97226
diff changeset
473 #endif /* USE_LISP_UNION_TYPE */
53000
8e568e954adf (GCTYPEMASK): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52998
diff changeset
474
84979
79d85dce25a5 (DECL_ALIGN, USE_LSB_TAG): Move logic to before definition of
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 84804
diff changeset
475 #define EQ(x, y) (XHASH (x) == XHASH (y))
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
476
46650
445d27e93380 (XPNTR): Use NO_UNION_TYPE version for union as well,
Ken Raeburn <raeburn@raeburn.org>
parents: 46573
diff changeset
477 #ifndef XPNTR
445d27e93380 (XPNTR): Use NO_UNION_TYPE version for union as well,
Ken Raeburn <raeburn@raeburn.org>
parents: 46573
diff changeset
478 #ifdef HAVE_SHM
445d27e93380 (XPNTR): Use NO_UNION_TYPE version for union as well,
Ken Raeburn <raeburn@raeburn.org>
parents: 46573
diff changeset
479 /* In this representation, data is found in two widely separated segments. */
445d27e93380 (XPNTR): Use NO_UNION_TYPE version for union as well,
Ken Raeburn <raeburn@raeburn.org>
parents: 46573
diff changeset
480 extern size_t pure_size;
445d27e93380 (XPNTR): Use NO_UNION_TYPE version for union as well,
Ken Raeburn <raeburn@raeburn.org>
parents: 46573
diff changeset
481 #define XPNTR(a) \
445d27e93380 (XPNTR): Use NO_UNION_TYPE version for union as well,
Ken Raeburn <raeburn@raeburn.org>
parents: 46573
diff changeset
482 (XUINT (a) | (XUINT (a) > pure_size ? DATA_SEG_BITS : PURE_SEG_BITS))
445d27e93380 (XPNTR): Use NO_UNION_TYPE version for union as well,
Ken Raeburn <raeburn@raeburn.org>
parents: 46573
diff changeset
483 #else /* not HAVE_SHM */
445d27e93380 (XPNTR): Use NO_UNION_TYPE version for union as well,
Ken Raeburn <raeburn@raeburn.org>
parents: 46573
diff changeset
484 #ifdef DATA_SEG_BITS
445d27e93380 (XPNTR): Use NO_UNION_TYPE version for union as well,
Ken Raeburn <raeburn@raeburn.org>
parents: 46573
diff changeset
485 /* This case is used for the rt-pc.
445d27e93380 (XPNTR): Use NO_UNION_TYPE version for union as well,
Ken Raeburn <raeburn@raeburn.org>
parents: 46573
diff changeset
486 In the diffs I was given, it checked for ptr = 0
445d27e93380 (XPNTR): Use NO_UNION_TYPE version for union as well,
Ken Raeburn <raeburn@raeburn.org>
parents: 46573
diff changeset
487 and did not adjust it in that case.
445d27e93380 (XPNTR): Use NO_UNION_TYPE version for union as well,
Ken Raeburn <raeburn@raeburn.org>
parents: 46573
diff changeset
488 But I don't think that zero should ever be found
445d27e93380 (XPNTR): Use NO_UNION_TYPE version for union as well,
Ken Raeburn <raeburn@raeburn.org>
parents: 46573
diff changeset
489 in a Lisp object whose data type says it points to something. */
445d27e93380 (XPNTR): Use NO_UNION_TYPE version for union as well,
Ken Raeburn <raeburn@raeburn.org>
parents: 46573
diff changeset
490 #define XPNTR(a) (XUINT (a) | DATA_SEG_BITS)
445d27e93380 (XPNTR): Use NO_UNION_TYPE version for union as well,
Ken Raeburn <raeburn@raeburn.org>
parents: 46573
diff changeset
491 #else
68628
6c6e4e3cccc8 (XPNTR) [!NO_UNION_TYPE && !HAVE_SHM && !DATA_SEG_BITS]: Cast bitfield
Ken Raeburn <raeburn@raeburn.org>
parents: 67506
diff changeset
492 /* Some versions of gcc seem to consider the bitfield width when
6c6e4e3cccc8 (XPNTR) [!NO_UNION_TYPE && !HAVE_SHM && !DATA_SEG_BITS]: Cast bitfield
Ken Raeburn <raeburn@raeburn.org>
parents: 67506
diff changeset
493 issuing the "cast to pointer from integer of different size"
6c6e4e3cccc8 (XPNTR) [!NO_UNION_TYPE && !HAVE_SHM && !DATA_SEG_BITS]: Cast bitfield
Ken Raeburn <raeburn@raeburn.org>
parents: 67506
diff changeset
494 warning, so the cast is here to widen the value back to its natural
6c6e4e3cccc8 (XPNTR) [!NO_UNION_TYPE && !HAVE_SHM && !DATA_SEG_BITS]: Cast bitfield
Ken Raeburn <raeburn@raeburn.org>
parents: 67506
diff changeset
495 size. */
6c6e4e3cccc8 (XPNTR) [!NO_UNION_TYPE && !HAVE_SHM && !DATA_SEG_BITS]: Cast bitfield
Ken Raeburn <raeburn@raeburn.org>
parents: 67506
diff changeset
496 #define XPNTR(a) ((EMACS_INT) XUINT (a))
46650
445d27e93380 (XPNTR): Use NO_UNION_TYPE version for union as well,
Ken Raeburn <raeburn@raeburn.org>
parents: 46573
diff changeset
497 #endif
445d27e93380 (XPNTR): Use NO_UNION_TYPE version for union as well,
Ken Raeburn <raeburn@raeburn.org>
parents: 46573
diff changeset
498 #endif /* not HAVE_SHM */
445d27e93380 (XPNTR): Use NO_UNION_TYPE version for union as well,
Ken Raeburn <raeburn@raeburn.org>
parents: 46573
diff changeset
499 #endif /* no XPNTR */
445d27e93380 (XPNTR): Use NO_UNION_TYPE version for union as well,
Ken Raeburn <raeburn@raeburn.org>
parents: 46573
diff changeset
500
39640
6f7166fc8eec Fix last change.
Gerd Moellmann <gerd@gnu.org>
parents: 39631
diff changeset
501 /* Largest and smallest representable fixnum values. These are the C
6f7166fc8eec Fix last change.
Gerd Moellmann <gerd@gnu.org>
parents: 39631
diff changeset
502 values. */
6f7166fc8eec Fix last change.
Gerd Moellmann <gerd@gnu.org>
parents: 39631
diff changeset
503
6f7166fc8eec Fix last change.
Gerd Moellmann <gerd@gnu.org>
parents: 39631
diff changeset
504 #define MOST_NEGATIVE_FIXNUM - ((EMACS_INT) 1 << (VALBITS - 1))
6f7166fc8eec Fix last change.
Gerd Moellmann <gerd@gnu.org>
parents: 39631
diff changeset
505 #define MOST_POSITIVE_FIXNUM (((EMACS_INT) 1 << (VALBITS - 1)) - 1)
53088
63a8b584e971 (VALMASK): Only define for non-union type.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53001
diff changeset
506 /* Mask indicating the significant bits of a Lisp_Int.
63a8b584e971 (VALMASK): Only define for non-union type.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53001
diff changeset
507 I.e. (x & INTMASK) == XUINT (make_number (x)). */
63a8b584e971 (VALMASK): Only define for non-union type.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53001
diff changeset
508 #define INTMASK ((((EMACS_INT) 1) << VALBITS) - 1)
39631
3d61dd23854a (MOST_NEGATIVE_FIXNUM, MOST_POSITIVE_FIXNUM)
Gerd Moellmann <gerd@gnu.org>
parents: 39579
diff changeset
509
3d61dd23854a (MOST_NEGATIVE_FIXNUM, MOST_POSITIVE_FIXNUM)
Gerd Moellmann <gerd@gnu.org>
parents: 39579
diff changeset
510 /* Value is non-zero if C integer I doesn't fit into a Lisp fixnum. */
3d61dd23854a (MOST_NEGATIVE_FIXNUM, MOST_POSITIVE_FIXNUM)
Gerd Moellmann <gerd@gnu.org>
parents: 39579
diff changeset
511
3d61dd23854a (MOST_NEGATIVE_FIXNUM, MOST_POSITIVE_FIXNUM)
Gerd Moellmann <gerd@gnu.org>
parents: 39579
diff changeset
512 #define FIXNUM_OVERFLOW_P(i) \
39779
15e432be013a (FIXNUM_OVERFLOW_P): Cast I to EMACS_INT in comparisons
Gerd Moellmann <gerd@gnu.org>
parents: 39773
diff changeset
513 ((EMACS_INT)(i) > MOST_POSITIVE_FIXNUM \
15e432be013a (FIXNUM_OVERFLOW_P): Cast I to EMACS_INT in comparisons
Gerd Moellmann <gerd@gnu.org>
parents: 39773
diff changeset
514 || (EMACS_INT) (i) < MOST_NEGATIVE_FIXNUM)
39631
3d61dd23854a (MOST_NEGATIVE_FIXNUM, MOST_POSITIVE_FIXNUM)
Gerd Moellmann <gerd@gnu.org>
parents: 39579
diff changeset
515
10316
272f15eddaca (enum Lisp_Type): Delete Lisp_Buffer.
Richard M. Stallman <rms@gnu.org>
parents: 10292
diff changeset
516 /* Extract a value or address from a Lisp_Object. */
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
517
90971
2acda4a4ac92 (XGCTYPE, GC_HASH_TABLE_P, GC_NILP, GC_NUMBERP, GC_NATNUMP)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 90918
diff changeset
518 #define XCONS(a) (eassert (CONSP(a)),(struct Lisp_Cons *) XPNTR(a))
2acda4a4ac92 (XGCTYPE, GC_HASH_TABLE_P, GC_NILP, GC_NUMBERP, GC_NATNUMP)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 90918
diff changeset
519 #define XVECTOR(a) (eassert (VECTORLIKEP(a)),(struct Lisp_Vector *) XPNTR(a))
2acda4a4ac92 (XGCTYPE, GC_HASH_TABLE_P, GC_NILP, GC_NUMBERP, GC_NATNUMP)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 90918
diff changeset
520 #define XSTRING(a) (eassert (STRINGP(a)),(struct Lisp_String *) XPNTR(a))
2acda4a4ac92 (XGCTYPE, GC_HASH_TABLE_P, GC_NILP, GC_NUMBERP, GC_NATNUMP)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 90918
diff changeset
521 #define XSYMBOL(a) (eassert (SYMBOLP(a)),(struct Lisp_Symbol *) XPNTR(a))
2acda4a4ac92 (XGCTYPE, GC_HASH_TABLE_P, GC_NILP, GC_NUMBERP, GC_NATNUMP)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 90918
diff changeset
522 #define XFLOAT(a) (eassert (FLOATP(a)),(struct Lisp_Float *) XPNTR(a))
10292
c467ec24a6bd (VALBITS): Default now 28.
Richard M. Stallman <rms@gnu.org>
parents: 10247
diff changeset
523
c467ec24a6bd (VALBITS): Default now 28.
Richard M. Stallman <rms@gnu.org>
parents: 10247
diff changeset
524 /* Misc types. */
30173
420acffb79c2 (AREF, ASET, ASIZE): New macros.
Gerd Moellmann <gerd@gnu.org>
parents: 30081
diff changeset
525
9435
3a157cdf395c (Lisp_Misc): new type code, replacing Lisp_Marker (and soon to replace other
Karl Heuer <kwzh@gnu.org>
parents: 9392
diff changeset
526 #define XMISC(a) ((union Lisp_Misc *) XPNTR(a))
85345
35d2f0abc597 (XMISCANY, XMARKER, XINTFWD, XBOOLFWD, XOBJFWD, XOVERLAY, XBUFFER_OBJFWD)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85328
diff changeset
527 #define XMISCANY(a) (eassert (MISCP (a)), &(XMISC(a)->u_any))
85328
d0d527210b0c * lisp.h (enum Lisp_Misc_Type): Del Lisp_Misc_Some_Buffer_Local_Value.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85250
diff changeset
528 #define XMISCTYPE(a) (XMISCANY (a)->type)
85345
35d2f0abc597 (XMISCANY, XMARKER, XINTFWD, XBOOLFWD, XOBJFWD, XOVERLAY, XBUFFER_OBJFWD)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85328
diff changeset
529 #define XMARKER(a) (eassert (MARKERP (a)), &(XMISC(a)->u_marker))
35d2f0abc597 (XMISCANY, XMARKER, XINTFWD, XBOOLFWD, XOBJFWD, XOVERLAY, XBUFFER_OBJFWD)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85328
diff changeset
530 #define XINTFWD(a) (eassert (INTFWDP (a)), &(XMISC(a)->u_intfwd))
35d2f0abc597 (XMISCANY, XMARKER, XINTFWD, XBOOLFWD, XOBJFWD, XOVERLAY, XBUFFER_OBJFWD)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85328
diff changeset
531 #define XBOOLFWD(a) (eassert (BOOLFWDP (a)), &(XMISC(a)->u_boolfwd))
35d2f0abc597 (XMISCANY, XMARKER, XINTFWD, XBOOLFWD, XOBJFWD, XOVERLAY, XBUFFER_OBJFWD)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85328
diff changeset
532 #define XOBJFWD(a) (eassert (OBJFWDP (a)), &(XMISC(a)->u_objfwd))
35d2f0abc597 (XMISCANY, XMARKER, XINTFWD, XBOOLFWD, XOBJFWD, XOVERLAY, XBUFFER_OBJFWD)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85328
diff changeset
533 #define XOVERLAY(a) (eassert (OVERLAYP (a)), &(XMISC(a)->u_overlay))
35d2f0abc597 (XMISCANY, XMARKER, XINTFWD, XBOOLFWD, XOBJFWD, XOVERLAY, XBUFFER_OBJFWD)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85328
diff changeset
534 #define XSAVE_VALUE(a) (eassert (SAVE_VALUEP (a)), &(XMISC(a)->u_save_value))
35d2f0abc597 (XMISCANY, XMARKER, XINTFWD, XBOOLFWD, XOBJFWD, XOVERLAY, XBUFFER_OBJFWD)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85328
diff changeset
535 #define XBUFFER_OBJFWD(a) \
35d2f0abc597 (XMISCANY, XMARKER, XINTFWD, XBOOLFWD, XOBJFWD, XOVERLAY, XBUFFER_OBJFWD)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85328
diff changeset
536 (eassert (BUFFER_OBJFWDP (a)), &(XMISC(a)->u_buffer_objfwd))
35d2f0abc597 (XMISCANY, XMARKER, XINTFWD, XBOOLFWD, XOBJFWD, XOVERLAY, XBUFFER_OBJFWD)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85328
diff changeset
537 #define XBUFFER_LOCAL_VALUE(a) \
35d2f0abc597 (XMISCANY, XMARKER, XINTFWD, XBOOLFWD, XOBJFWD, XOVERLAY, XBUFFER_OBJFWD)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85328
diff changeset
538 (eassert (BUFFER_LOCAL_VALUEP (a)), &(XMISC(a)->u_buffer_local_value))
35d2f0abc597 (XMISCANY, XMARKER, XINTFWD, XBOOLFWD, XOBJFWD, XOVERLAY, XBUFFER_OBJFWD)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85328
diff changeset
539 #define XKBOARD_OBJFWD(a) \
35d2f0abc597 (XMISCANY, XMARKER, XINTFWD, XBOOLFWD, XOBJFWD, XOVERLAY, XBUFFER_OBJFWD)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85328
diff changeset
540 (eassert (KBOARD_OBJFWDP (a)), &(XMISC(a)->u_kboard_objfwd))
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
541
10292
c467ec24a6bd (VALBITS): Default now 28.
Richard M. Stallman <rms@gnu.org>
parents: 10247
diff changeset
542 /* Pseudovector types. */
30173
420acffb79c2 (AREF, ASET, ASIZE): New macros.
Gerd Moellmann <gerd@gnu.org>
parents: 30081
diff changeset
543
90971
2acda4a4ac92 (XGCTYPE, GC_HASH_TABLE_P, GC_NILP, GC_NUMBERP, GC_NATNUMP)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 90918
diff changeset
544 #define XPROCESS(a) (eassert (PROCESSP(a)),(struct Lisp_Process *) XPNTR(a))
2acda4a4ac92 (XGCTYPE, GC_HASH_TABLE_P, GC_NILP, GC_NUMBERP, GC_NATNUMP)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 90918
diff changeset
545 #define XWINDOW(a) (eassert (WINDOWP(a)),(struct window *) XPNTR(a))
91041
bdb3fe0ba9fa Merge from emacs--devo--0
Miles Bader <miles@gnu.org>
parents: 91005 85105
diff changeset
546 #define XTERMINAL(a) (eassert (TERMINALP(a)),(struct terminal *) XPNTR(a))
90971
2acda4a4ac92 (XGCTYPE, GC_HASH_TABLE_P, GC_NILP, GC_NUMBERP, GC_NATNUMP)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 90918
diff changeset
547 #define XSUBR(a) (eassert (SUBRP(a)),(struct Lisp_Subr *) XPNTR(a))
2acda4a4ac92 (XGCTYPE, GC_HASH_TABLE_P, GC_NILP, GC_NUMBERP, GC_NATNUMP)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 90918
diff changeset
548 #define XBUFFER(a) (eassert (BUFFERP(a)),(struct buffer *) XPNTR(a))
91041
bdb3fe0ba9fa Merge from emacs--devo--0
Miles Bader <miles@gnu.org>
parents: 91005 85105
diff changeset
549 #define XCHAR_TABLE(a) (eassert (CHAR_TABLE_P (a)), (struct Lisp_Char_Table *) XPNTR(a))
bdb3fe0ba9fa Merge from emacs--devo--0
Miles Bader <miles@gnu.org>
parents: 91005 85105
diff changeset
550 #define XSUB_CHAR_TABLE(a) (eassert (SUB_CHAR_TABLE_P (a)), (struct Lisp_Sub_Char_Table *) XPNTR(a))
bdb3fe0ba9fa Merge from emacs--devo--0
Miles Bader <miles@gnu.org>
parents: 91005 85105
diff changeset
551 #define XBOOL_VECTOR(a) (eassert (BOOL_VECTOR_P (a)), (struct Lisp_Bool_Vector *) XPNTR(a))
10316
272f15eddaca (enum Lisp_Type): Delete Lisp_Buffer.
Richard M. Stallman <rms@gnu.org>
parents: 10292
diff changeset
552
272f15eddaca (enum Lisp_Type): Delete Lisp_Buffer.
Richard M. Stallman <rms@gnu.org>
parents: 10292
diff changeset
553 /* Construct a Lisp_Object from a value or address. */
10292
c467ec24a6bd (VALBITS): Default now 28.
Richard M. Stallman <rms@gnu.org>
parents: 10247
diff changeset
554
51657
7fb427e8d984 (struct interval, struct Lisp_Symbol, struct Lisp_Free)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51167
diff changeset
555 #define XSETINT(a, b) (a) = make_number (b)
9287
781ada39b15c (XSETINT, XSETCONS, XSETBUFFER, XSETVECTOR, XSETSUBR, XSETSTRING, XSETSYMBOL,
Karl Heuer <kwzh@gnu.org>
parents: 9150
diff changeset
556 #define XSETCONS(a, b) XSET (a, Lisp_Cons, b)
10010
67375493afa2 (enum Lisp_Misc_Type): Rename Lisp_Vector to Lisp_Vectorlike. Mark
Karl Heuer <kwzh@gnu.org>
parents: 10003
diff changeset
557 #define XSETVECTOR(a, b) XSET (a, Lisp_Vectorlike, b)
9287
781ada39b15c (XSETINT, XSETCONS, XSETBUFFER, XSETVECTOR, XSETSUBR, XSETSTRING, XSETSYMBOL,
Karl Heuer <kwzh@gnu.org>
parents: 9150
diff changeset
558 #define XSETSTRING(a, b) XSET (a, Lisp_String, b)
781ada39b15c (XSETINT, XSETCONS, XSETBUFFER, XSETVECTOR, XSETSUBR, XSETSTRING, XSETSYMBOL,
Karl Heuer <kwzh@gnu.org>
parents: 9150
diff changeset
559 #define XSETSYMBOL(a, b) XSET (a, Lisp_Symbol, b)
10292
c467ec24a6bd (VALBITS): Default now 28.
Richard M. Stallman <rms@gnu.org>
parents: 10247
diff changeset
560 #define XSETFLOAT(a, b) XSET (a, Lisp_Float, b)
c467ec24a6bd (VALBITS): Default now 28.
Richard M. Stallman <rms@gnu.org>
parents: 10247
diff changeset
561
c467ec24a6bd (VALBITS): Default now 28.
Richard M. Stallman <rms@gnu.org>
parents: 10247
diff changeset
562 /* Misc types. */
30173
420acffb79c2 (AREF, ASET, ASIZE): New macros.
Gerd Moellmann <gerd@gnu.org>
parents: 30081
diff changeset
563
9435
3a157cdf395c (Lisp_Misc): new type code, replacing Lisp_Marker (and soon to replace other
Karl Heuer <kwzh@gnu.org>
parents: 9392
diff changeset
564 #define XSETMISC(a, b) XSET (a, Lisp_Misc, b)
11335
78eda0ee4cba (XMISCTYPE): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 11204
diff changeset
565 #define XSETMARKER(a, b) (XSETMISC (a, b), XMISCTYPE (a) = Lisp_Misc_Marker)
10292
c467ec24a6bd (VALBITS): Default now 28.
Richard M. Stallman <rms@gnu.org>
parents: 10247
diff changeset
566
c467ec24a6bd (VALBITS): Default now 28.
Richard M. Stallman <rms@gnu.org>
parents: 10247
diff changeset
567 /* Pseudovector types. */
30173
420acffb79c2 (AREF, ASET, ASIZE): New macros.
Gerd Moellmann <gerd@gnu.org>
parents: 30081
diff changeset
568
85012
3a31b2cfe77f (ARRAY_MARK_FLAG, PSEUDOVECTOR_FLAG): Don't allow definition in m/*.h files.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85011
diff changeset
569 #define XSETPVECTYPE(v,code) ((v)->size |= PSEUDOVECTOR_FLAG | (code))
10292
c467ec24a6bd (VALBITS): Default now 28.
Richard M. Stallman <rms@gnu.org>
parents: 10247
diff changeset
570 #define XSETPSEUDOVECTOR(a, b, code) \
85105
ba4f1a829f83 (XSETPSEUDOVECTOR): Don't set the tag anymore.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85022
diff changeset
571 (XSETVECTOR (a, b), \
ba4f1a829f83 (XSETPSEUDOVECTOR): Don't set the tag anymore.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85022
diff changeset
572 eassert ((XVECTOR (a)->size & (PSEUDOVECTOR_FLAG | PVEC_TYPE_MASK)) \
ba4f1a829f83 (XSETPSEUDOVECTOR): Don't set the tag anymore.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85022
diff changeset
573 == (PSEUDOVECTOR_FLAG | (code))))
10292
c467ec24a6bd (VALBITS): Default now 28.
Richard M. Stallman <rms@gnu.org>
parents: 10247
diff changeset
574 #define XSETWINDOW_CONFIGURATION(a, b) \
c467ec24a6bd (VALBITS): Default now 28.
Richard M. Stallman <rms@gnu.org>
parents: 10247
diff changeset
575 (XSETPSEUDOVECTOR (a, b, PVEC_WINDOW_CONFIGURATION))
c467ec24a6bd (VALBITS): Default now 28.
Richard M. Stallman <rms@gnu.org>
parents: 10247
diff changeset
576 #define XSETPROCESS(a, b) (XSETPSEUDOVECTOR (a, b, PVEC_PROCESS))
c467ec24a6bd (VALBITS): Default now 28.
Richard M. Stallman <rms@gnu.org>
parents: 10247
diff changeset
577 #define XSETWINDOW(a, b) (XSETPSEUDOVECTOR (a, b, PVEC_WINDOW))
84689
73c717fa7866 (enum pvec_type): New `terminal' pseudovector.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 84434
diff changeset
578 #define XSETTERMINAL(a, b) (XSETPSEUDOVECTOR (a, b, PVEC_TERMINAL))
10292
c467ec24a6bd (VALBITS): Default now 28.
Richard M. Stallman <rms@gnu.org>
parents: 10247
diff changeset
579 #define XSETSUBR(a, b) (XSETPSEUDOVECTOR (a, b, PVEC_SUBR))
c467ec24a6bd (VALBITS): Default now 28.
Richard M. Stallman <rms@gnu.org>
parents: 10247
diff changeset
580 #define XSETCOMPILED(a, b) (XSETPSEUDOVECTOR (a, b, PVEC_COMPILED))
10316
272f15eddaca (enum Lisp_Type): Delete Lisp_Buffer.
Richard M. Stallman <rms@gnu.org>
parents: 10292
diff changeset
581 #define XSETBUFFER(a, b) (XSETPSEUDOVECTOR (a, b, PVEC_BUFFER))
13149
b1dcc3e87ffb (struct Lisp_Boolvector): New data type.
Richard M. Stallman <rms@gnu.org>
parents: 12890
diff changeset
582 #define XSETCHAR_TABLE(a, b) (XSETPSEUDOVECTOR (a, b, PVEC_CHAR_TABLE))
b1dcc3e87ffb (struct Lisp_Boolvector): New data type.
Richard M. Stallman <rms@gnu.org>
parents: 12890
diff changeset
583 #define XSETBOOL_VECTOR(a, b) (XSETPSEUDOVECTOR (a, b, PVEC_BOOL_VECTOR))
88382
5e3e1d9d514f (enum pvec_type): New member PVEC_SUB_CHAR_TABLE.
Kenichi Handa <handa@m17n.org>
parents: 43176
diff changeset
584 #define XSETSUB_CHAR_TABLE(a, b) (XSETPSEUDOVECTOR (a, b, PVEC_SUB_CHAR_TABLE))
30173
420acffb79c2 (AREF, ASET, ASIZE): New macros.
Gerd Moellmann <gerd@gnu.org>
parents: 30081
diff changeset
585
420acffb79c2 (AREF, ASET, ASIZE): New macros.
Gerd Moellmann <gerd@gnu.org>
parents: 30081
diff changeset
586 /* Convenience macros for dealing with Lisp arrays. */
420acffb79c2 (AREF, ASET, ASIZE): New macros.
Gerd Moellmann <gerd@gnu.org>
parents: 30081
diff changeset
587
420acffb79c2 (AREF, ASET, ASIZE): New macros.
Gerd Moellmann <gerd@gnu.org>
parents: 30081
diff changeset
588 #define AREF(ARRAY, IDX) XVECTOR ((ARRAY))->contents[IDX]
420acffb79c2 (AREF, ASET, ASIZE): New macros.
Gerd Moellmann <gerd@gnu.org>
parents: 30081
diff changeset
589 #define ASIZE(ARRAY) XVECTOR ((ARRAY))->size
91822
311ffbbfa909 Undo last mistakenly commited change.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 91813
diff changeset
590 /* The IDX==IDX tries to detect when the macro argument is side-effecting. */
91717
23bd9edca21f (ASET): Check bounds.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 91702
diff changeset
591 #define ASET(ARRAY, IDX, VAL) \
23bd9edca21f (ASET): Check bounds.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 91702
diff changeset
592 (eassert ((IDX) == (IDX)), \
23bd9edca21f (ASET): Check bounds.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 91702
diff changeset
593 eassert ((IDX) >= 0 && (IDX) < ASIZE (ARRAY)), \
91822
311ffbbfa909 Undo last mistakenly commited change.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 91813
diff changeset
594 AREF ((ARRAY), (IDX)) = (VAL))
30173
420acffb79c2 (AREF, ASET, ASIZE): New macros.
Gerd Moellmann <gerd@gnu.org>
parents: 30081
diff changeset
595
43780
412b8fa3fd95 (SREF, SDATA, SCHARS, SBYTES, SMBP): New macros.
Gerd Moellmann <gerd@gnu.org>
parents: 43713
diff changeset
596 /* Convenience macros for dealing with Lisp strings. */
412b8fa3fd95 (SREF, SDATA, SCHARS, SBYTES, SMBP): New macros.
Gerd Moellmann <gerd@gnu.org>
parents: 43713
diff changeset
597
46416
de62156bec9a (SDATA): Produce rvalue.
Ken Raeburn <raeburn@raeburn.org>
parents: 46377
diff changeset
598 #define SDATA(string) (XSTRING (string)->data + 0)
84979
79d85dce25a5 (DECL_ALIGN, USE_LSB_TAG): Move logic to before definition of
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 84804
diff changeset
599 #define SREF(string, index) (SDATA (string)[index] + 0)
79d85dce25a5 (DECL_ALIGN, USE_LSB_TAG): Move logic to before definition of
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 84804
diff changeset
600 #define SSET(string, index, new) (SDATA (string)[index] = (new))
46372
e7289ef367d8 * lisp.h (STRING_SET_CHARS): New macro.
Ken Raeburn <raeburn@raeburn.org>
parents: 46369
diff changeset
601 #define SCHARS(string) (XSTRING (string)->size + 0)
e7289ef367d8 * lisp.h (STRING_SET_CHARS): New macro.
Ken Raeburn <raeburn@raeburn.org>
parents: 46369
diff changeset
602 #define SBYTES(string) (STRING_BYTES (XSTRING (string)) + 0)
e7289ef367d8 * lisp.h (STRING_SET_CHARS): New macro.
Ken Raeburn <raeburn@raeburn.org>
parents: 46369
diff changeset
603
e7289ef367d8 * lisp.h (STRING_SET_CHARS): New macro.
Ken Raeburn <raeburn@raeburn.org>
parents: 46369
diff changeset
604 #define STRING_SET_CHARS(string, newsize) \
e7289ef367d8 * lisp.h (STRING_SET_CHARS): New macro.
Ken Raeburn <raeburn@raeburn.org>
parents: 46369
diff changeset
605 (XSTRING (string)->size = (newsize))
43780
412b8fa3fd95 (SREF, SDATA, SCHARS, SBYTES, SMBP): New macros.
Gerd Moellmann <gerd@gnu.org>
parents: 43713
diff changeset
606
46552
cb055b77d3c6 (STRING_COPYIN): New macro.
Ken Raeburn <raeburn@raeburn.org>
parents: 46471
diff changeset
607 #define STRING_COPYIN(string, index, new, count) \
84979
79d85dce25a5 (DECL_ALIGN, USE_LSB_TAG): Move logic to before definition of
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 84804
diff changeset
608 bcopy (new, SDATA (string) + index, count)
46552
cb055b77d3c6 (STRING_COPYIN): New macro.
Ken Raeburn <raeburn@raeburn.org>
parents: 46471
diff changeset
609
71822
7b7a32c8c767 (CHECK_TYPE): New macro for generic type checking.
Kim F. Storm <storm@cua.dk>
parents: 71796
diff changeset
610 /* Type checking. */
7b7a32c8c767 (CHECK_TYPE): New macro for generic type checking.
Kim F. Storm <storm@cua.dk>
parents: 71796
diff changeset
611
7b7a32c8c767 (CHECK_TYPE): New macro for generic type checking.
Kim F. Storm <storm@cua.dk>
parents: 71796
diff changeset
612 #define CHECK_TYPE(ok, Qxxxp, x) \
7b7a32c8c767 (CHECK_TYPE): New macro for generic type checking.
Kim F. Storm <storm@cua.dk>
parents: 71796
diff changeset
613 do { if (!(ok)) wrong_type_argument (Qxxxp, (x)); } while (0)
7b7a32c8c767 (CHECK_TYPE): New macro for generic type checking.
Kim F. Storm <storm@cua.dk>
parents: 71796
diff changeset
614
7b7a32c8c767 (CHECK_TYPE): New macro for generic type checking.
Kim F. Storm <storm@cua.dk>
parents: 71796
diff changeset
615
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
616
51858
bf6232373c39 (VALBITS): Define in terms of GCTYPEBITS.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51833
diff changeset
617 /* See the macros in intervals.h. */
1290
9b0ddca4773b * lisp.h: Conditionally define interval structure and macros.
Joseph Arceneaux <jla@gnu.org>
parents: 1277
diff changeset
618
9b0ddca4773b * lisp.h: Conditionally define interval structure and macros.
Joseph Arceneaux <jla@gnu.org>
parents: 1277
diff changeset
619 typedef struct interval *INTERVAL;
9b0ddca4773b * lisp.h: Conditionally define interval structure and macros.
Joseph Arceneaux <jla@gnu.org>
parents: 1277
diff changeset
620
9b0ddca4773b * lisp.h: Conditionally define interval structure and macros.
Joseph Arceneaux <jla@gnu.org>
parents: 1277
diff changeset
621 /* Complain if object is not string or buffer type */
40653
6c48a4da1da5 (CHECK_STRING_OR_BUFFER, CHECK_HASH_TABLE, CHECK_LIST, CHECK_STRING,
Pavel Janík <Pavel@Janik.cz>
parents: 40536
diff changeset
622 #define CHECK_STRING_OR_BUFFER(x) \
71822
7b7a32c8c767 (CHECK_TYPE): New macro for generic type checking.
Kim F. Storm <storm@cua.dk>
parents: 71796
diff changeset
623 CHECK_TYPE (STRINGP (x) || BUFFERP (x), Qbuffer_or_string_p, x)
7b7a32c8c767 (CHECK_TYPE): New macro for generic type checking.
Kim F. Storm <storm@cua.dk>
parents: 71796
diff changeset
624
1290
9b0ddca4773b * lisp.h: Conditionally define interval structure and macros.
Joseph Arceneaux <jla@gnu.org>
parents: 1277
diff changeset
625
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
626 /* In a cons, the markbit of the car is the gc mark bit */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
627
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
628 struct Lisp_Cons
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
629 {
25421
65a7e9c02d4f (struct Lisp_Cons, XCAR, XCDR, struct Lisp_Float): Change names of structure
Ken Raeburn <raeburn@raeburn.org>
parents: 25392
diff changeset
630 /* Please do not use the names of these elements in code other
65a7e9c02d4f (struct Lisp_Cons, XCAR, XCDR, struct Lisp_Float): Change names of structure
Ken Raeburn <raeburn@raeburn.org>
parents: 25392
diff changeset
631 than the core lisp implementation. Use XCAR and XCDR below. */
65a7e9c02d4f (struct Lisp_Cons, XCAR, XCDR, struct Lisp_Float): Change names of structure
Ken Raeburn <raeburn@raeburn.org>
parents: 25392
diff changeset
632 #ifdef HIDE_LISP_IMPLEMENTATION
66888
b991cdef1a8d (struct Lisp_Cons): Make cdr a union.
Andreas Schwab <schwab@suse.de>
parents: 66778
diff changeset
633 Lisp_Object car_;
b991cdef1a8d (struct Lisp_Cons): Make cdr a union.
Andreas Schwab <schwab@suse.de>
parents: 66778
diff changeset
634 union
b991cdef1a8d (struct Lisp_Cons): Make cdr a union.
Andreas Schwab <schwab@suse.de>
parents: 66778
diff changeset
635 {
b991cdef1a8d (struct Lisp_Cons): Make cdr a union.
Andreas Schwab <schwab@suse.de>
parents: 66778
diff changeset
636 Lisp_Object cdr_;
b991cdef1a8d (struct Lisp_Cons): Make cdr a union.
Andreas Schwab <schwab@suse.de>
parents: 66778
diff changeset
637 struct Lisp_Cons *chain;
b991cdef1a8d (struct Lisp_Cons): Make cdr a union.
Andreas Schwab <schwab@suse.de>
parents: 66778
diff changeset
638 } u;
25421
65a7e9c02d4f (struct Lisp_Cons, XCAR, XCDR, struct Lisp_Float): Change names of structure
Ken Raeburn <raeburn@raeburn.org>
parents: 25392
diff changeset
639 #else
66888
b991cdef1a8d (struct Lisp_Cons): Make cdr a union.
Andreas Schwab <schwab@suse.de>
parents: 66778
diff changeset
640 Lisp_Object car;
b991cdef1a8d (struct Lisp_Cons): Make cdr a union.
Andreas Schwab <schwab@suse.de>
parents: 66778
diff changeset
641 union
b991cdef1a8d (struct Lisp_Cons): Make cdr a union.
Andreas Schwab <schwab@suse.de>
parents: 66778
diff changeset
642 {
b991cdef1a8d (struct Lisp_Cons): Make cdr a union.
Andreas Schwab <schwab@suse.de>
parents: 66778
diff changeset
643 Lisp_Object cdr;
b991cdef1a8d (struct Lisp_Cons): Make cdr a union.
Andreas Schwab <schwab@suse.de>
parents: 66778
diff changeset
644 struct Lisp_Cons *chain;
b991cdef1a8d (struct Lisp_Cons): Make cdr a union.
Andreas Schwab <schwab@suse.de>
parents: 66778
diff changeset
645 } u;
25421
65a7e9c02d4f (struct Lisp_Cons, XCAR, XCDR, struct Lisp_Float): Change names of structure
Ken Raeburn <raeburn@raeburn.org>
parents: 25392
diff changeset
646 #endif
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
647 };
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
648
14306
b30429f0b599 (XCAR, XCDR, CAR, CDR): New macros.
Karl Heuer <kwzh@gnu.org>
parents: 14186
diff changeset
649 /* Take the car or cdr of something known to be a cons cell. */
39973
579177964efa Avoid (most) uses of XCAR/XCDR as lvalues, for flexibility in experimenting
Ken Raeburn <raeburn@raeburn.org>
parents: 39924
diff changeset
650 /* The _AS_LVALUE macros shouldn't be used outside of the minimal set
579177964efa Avoid (most) uses of XCAR/XCDR as lvalues, for flexibility in experimenting
Ken Raeburn <raeburn@raeburn.org>
parents: 39924
diff changeset
651 of code that has to know what a cons cell looks like. Other code not
579177964efa Avoid (most) uses of XCAR/XCDR as lvalues, for flexibility in experimenting
Ken Raeburn <raeburn@raeburn.org>
parents: 39924
diff changeset
652 part of the basic lisp implementation should assume that the car and cdr
579177964efa Avoid (most) uses of XCAR/XCDR as lvalues, for flexibility in experimenting
Ken Raeburn <raeburn@raeburn.org>
parents: 39924
diff changeset
653 fields are not accessible as lvalues. (What if we want to switch to
579177964efa Avoid (most) uses of XCAR/XCDR as lvalues, for flexibility in experimenting
Ken Raeburn <raeburn@raeburn.org>
parents: 39924
diff changeset
654 a copying collector someday? Cached cons cell field addresses may be
579177964efa Avoid (most) uses of XCAR/XCDR as lvalues, for flexibility in experimenting
Ken Raeburn <raeburn@raeburn.org>
parents: 39924
diff changeset
655 invalidated at arbitrary points.) */
25421
65a7e9c02d4f (struct Lisp_Cons, XCAR, XCDR, struct Lisp_Float): Change names of structure
Ken Raeburn <raeburn@raeburn.org>
parents: 25392
diff changeset
656 #ifdef HIDE_LISP_IMPLEMENTATION
39973
579177964efa Avoid (most) uses of XCAR/XCDR as lvalues, for flexibility in experimenting
Ken Raeburn <raeburn@raeburn.org>
parents: 39924
diff changeset
657 #define XCAR_AS_LVALUE(c) (XCONS ((c))->car_)
66888
b991cdef1a8d (struct Lisp_Cons): Make cdr a union.
Andreas Schwab <schwab@suse.de>
parents: 66778
diff changeset
658 #define XCDR_AS_LVALUE(c) (XCONS ((c))->u.cdr_)
25421
65a7e9c02d4f (struct Lisp_Cons, XCAR, XCDR, struct Lisp_Float): Change names of structure
Ken Raeburn <raeburn@raeburn.org>
parents: 25392
diff changeset
659 #else
39973
579177964efa Avoid (most) uses of XCAR/XCDR as lvalues, for flexibility in experimenting
Ken Raeburn <raeburn@raeburn.org>
parents: 39924
diff changeset
660 #define XCAR_AS_LVALUE(c) (XCONS ((c))->car)
66888
b991cdef1a8d (struct Lisp_Cons): Make cdr a union.
Andreas Schwab <schwab@suse.de>
parents: 66778
diff changeset
661 #define XCDR_AS_LVALUE(c) (XCONS ((c))->u.cdr)
25421
65a7e9c02d4f (struct Lisp_Cons, XCAR, XCDR, struct Lisp_Float): Change names of structure
Ken Raeburn <raeburn@raeburn.org>
parents: 25392
diff changeset
662 #endif
14306
b30429f0b599 (XCAR, XCDR, CAR, CDR): New macros.
Karl Heuer <kwzh@gnu.org>
parents: 14186
diff changeset
663
39973
579177964efa Avoid (most) uses of XCAR/XCDR as lvalues, for flexibility in experimenting
Ken Raeburn <raeburn@raeburn.org>
parents: 39924
diff changeset
664 /* Use these from normal code. */
579177964efa Avoid (most) uses of XCAR/XCDR as lvalues, for flexibility in experimenting
Ken Raeburn <raeburn@raeburn.org>
parents: 39924
diff changeset
665 #define XCAR(c) LISP_MAKE_RVALUE(XCAR_AS_LVALUE(c))
579177964efa Avoid (most) uses of XCAR/XCDR as lvalues, for flexibility in experimenting
Ken Raeburn <raeburn@raeburn.org>
parents: 39924
diff changeset
666 #define XCDR(c) LISP_MAKE_RVALUE(XCDR_AS_LVALUE(c))
579177964efa Avoid (most) uses of XCAR/XCDR as lvalues, for flexibility in experimenting
Ken Raeburn <raeburn@raeburn.org>
parents: 39924
diff changeset
667
579177964efa Avoid (most) uses of XCAR/XCDR as lvalues, for flexibility in experimenting
Ken Raeburn <raeburn@raeburn.org>
parents: 39924
diff changeset
668 /* Use these to set the fields of a cons cell.
579177964efa Avoid (most) uses of XCAR/XCDR as lvalues, for flexibility in experimenting
Ken Raeburn <raeburn@raeburn.org>
parents: 39924
diff changeset
669
579177964efa Avoid (most) uses of XCAR/XCDR as lvalues, for flexibility in experimenting
Ken Raeburn <raeburn@raeburn.org>
parents: 39924
diff changeset
670 Note that both arguments may refer to the same object, so 'n'
579177964efa Avoid (most) uses of XCAR/XCDR as lvalues, for flexibility in experimenting
Ken Raeburn <raeburn@raeburn.org>
parents: 39924
diff changeset
671 should not be read after 'c' is first modified. Also, neither
579177964efa Avoid (most) uses of XCAR/XCDR as lvalues, for flexibility in experimenting
Ken Raeburn <raeburn@raeburn.org>
parents: 39924
diff changeset
672 argument should be evaluated more than once; side effects are
579177964efa Avoid (most) uses of XCAR/XCDR as lvalues, for flexibility in experimenting
Ken Raeburn <raeburn@raeburn.org>
parents: 39924
diff changeset
673 especially common in the second argument. */
579177964efa Avoid (most) uses of XCAR/XCDR as lvalues, for flexibility in experimenting
Ken Raeburn <raeburn@raeburn.org>
parents: 39924
diff changeset
674 #define XSETCAR(c,n) (XCAR_AS_LVALUE(c) = (n))
579177964efa Avoid (most) uses of XCAR/XCDR as lvalues, for flexibility in experimenting
Ken Raeburn <raeburn@raeburn.org>
parents: 39924
diff changeset
675 #define XSETCDR(c,n) (XCDR_AS_LVALUE(c) = (n))
579177964efa Avoid (most) uses of XCAR/XCDR as lvalues, for flexibility in experimenting
Ken Raeburn <raeburn@raeburn.org>
parents: 39924
diff changeset
676
579177964efa Avoid (most) uses of XCAR/XCDR as lvalues, for flexibility in experimenting
Ken Raeburn <raeburn@raeburn.org>
parents: 39924
diff changeset
677 /* For performance: Fast storage of positive integers into the
579177964efa Avoid (most) uses of XCAR/XCDR as lvalues, for flexibility in experimenting
Ken Raeburn <raeburn@raeburn.org>
parents: 39924
diff changeset
678 fields of a cons cell. See above caveats. */
579177964efa Avoid (most) uses of XCAR/XCDR as lvalues, for flexibility in experimenting
Ken Raeburn <raeburn@raeburn.org>
parents: 39924
diff changeset
679 #define XSETCARFASTINT(c,n) XSETFASTINT(XCAR_AS_LVALUE(c),(n))
579177964efa Avoid (most) uses of XCAR/XCDR as lvalues, for flexibility in experimenting
Ken Raeburn <raeburn@raeburn.org>
parents: 39924
diff changeset
680 #define XSETCDRFASTINT(c,n) XSETFASTINT(XCDR_AS_LVALUE(c),(n))
579177964efa Avoid (most) uses of XCAR/XCDR as lvalues, for flexibility in experimenting
Ken Raeburn <raeburn@raeburn.org>
parents: 39924
diff changeset
681
14306
b30429f0b599 (XCAR, XCDR, CAR, CDR): New macros.
Karl Heuer <kwzh@gnu.org>
parents: 14186
diff changeset
682 /* Take the car or cdr of something whose type is not known. */
b30429f0b599 (XCAR, XCDR, CAR, CDR): New macros.
Karl Heuer <kwzh@gnu.org>
parents: 14186
diff changeset
683 #define CAR(c) \
b30429f0b599 (XCAR, XCDR, CAR, CDR): New macros.
Karl Heuer <kwzh@gnu.org>
parents: 14186
diff changeset
684 (CONSP ((c)) ? XCAR ((c)) \
b30429f0b599 (XCAR, XCDR, CAR, CDR): New macros.
Karl Heuer <kwzh@gnu.org>
parents: 14186
diff changeset
685 : NILP ((c)) ? Qnil \
b30429f0b599 (XCAR, XCDR, CAR, CDR): New macros.
Karl Heuer <kwzh@gnu.org>
parents: 14186
diff changeset
686 : wrong_type_argument (Qlistp, (c)))
b30429f0b599 (XCAR, XCDR, CAR, CDR): New macros.
Karl Heuer <kwzh@gnu.org>
parents: 14186
diff changeset
687
b30429f0b599 (XCAR, XCDR, CAR, CDR): New macros.
Karl Heuer <kwzh@gnu.org>
parents: 14186
diff changeset
688 #define CDR(c) \
b30429f0b599 (XCAR, XCDR, CAR, CDR): New macros.
Karl Heuer <kwzh@gnu.org>
parents: 14186
diff changeset
689 (CONSP ((c)) ? XCDR ((c)) \
b30429f0b599 (XCAR, XCDR, CAR, CDR): New macros.
Karl Heuer <kwzh@gnu.org>
parents: 14186
diff changeset
690 : NILP ((c)) ? Qnil \
b30429f0b599 (XCAR, XCDR, CAR, CDR): New macros.
Karl Heuer <kwzh@gnu.org>
parents: 14186
diff changeset
691 : wrong_type_argument (Qlistp, (c)))
b30429f0b599 (XCAR, XCDR, CAR, CDR): New macros.
Karl Heuer <kwzh@gnu.org>
parents: 14186
diff changeset
692
71822
7b7a32c8c767 (CHECK_TYPE): New macro for generic type checking.
Kim F. Storm <storm@cua.dk>
parents: 71796
diff changeset
693 /* Take the car or cdr of something whose type is not known. */
7b7a32c8c767 (CHECK_TYPE): New macro for generic type checking.
Kim F. Storm <storm@cua.dk>
parents: 71796
diff changeset
694 #define CAR_SAFE(c) \
7b7a32c8c767 (CHECK_TYPE): New macro for generic type checking.
Kim F. Storm <storm@cua.dk>
parents: 71796
diff changeset
695 (CONSP ((c)) ? XCAR ((c)) : Qnil)
7b7a32c8c767 (CHECK_TYPE): New macro for generic type checking.
Kim F. Storm <storm@cua.dk>
parents: 71796
diff changeset
696
7b7a32c8c767 (CHECK_TYPE): New macro for generic type checking.
Kim F. Storm <storm@cua.dk>
parents: 71796
diff changeset
697 #define CDR_SAFE(c) \
7b7a32c8c767 (CHECK_TYPE): New macro for generic type checking.
Kim F. Storm <storm@cua.dk>
parents: 71796
diff changeset
698 (CONSP ((c)) ? XCDR ((c)) : Qnil)
7b7a32c8c767 (CHECK_TYPE): New macro for generic type checking.
Kim F. Storm <storm@cua.dk>
parents: 71796
diff changeset
699
21276
e0c0f8846fb0 Declarations changed.
Kenichi Handa <handa@m17n.org>
parents: 21199
diff changeset
700 /* Nonzero if STR is a multibyte string. */
e0c0f8846fb0 Declarations changed.
Kenichi Handa <handa@m17n.org>
parents: 21199
diff changeset
701 #define STRING_MULTIBYTE(STR) \
e0c0f8846fb0 Declarations changed.
Kenichi Handa <handa@m17n.org>
parents: 21199
diff changeset
702 (XSTRING (STR)->size_byte >= 0)
e0c0f8846fb0 Declarations changed.
Kenichi Handa <handa@m17n.org>
parents: 21199
diff changeset
703
e0c0f8846fb0 Declarations changed.
Kenichi Handa <handa@m17n.org>
parents: 21199
diff changeset
704 /* Return the length in bytes of STR. */
35184
07ec5658a7a5 (STRING_BYTES) [GC_CHECK_STRING_BYTES]: Call
Gerd Moellmann <gerd@gnu.org>
parents: 35173
diff changeset
705
07ec5658a7a5 (STRING_BYTES) [GC_CHECK_STRING_BYTES]: Call
Gerd Moellmann <gerd@gnu.org>
parents: 35173
diff changeset
706 #ifdef GC_CHECK_STRING_BYTES
07ec5658a7a5 (STRING_BYTES) [GC_CHECK_STRING_BYTES]: Call
Gerd Moellmann <gerd@gnu.org>
parents: 35173
diff changeset
707
07ec5658a7a5 (STRING_BYTES) [GC_CHECK_STRING_BYTES]: Call
Gerd Moellmann <gerd@gnu.org>
parents: 35173
diff changeset
708 struct Lisp_String;
07ec5658a7a5 (STRING_BYTES) [GC_CHECK_STRING_BYTES]: Call
Gerd Moellmann <gerd@gnu.org>
parents: 35173
diff changeset
709 extern int string_bytes P_ ((struct Lisp_String *));
07ec5658a7a5 (STRING_BYTES) [GC_CHECK_STRING_BYTES]: Call
Gerd Moellmann <gerd@gnu.org>
parents: 35173
diff changeset
710 #define STRING_BYTES(S) string_bytes ((S))
07ec5658a7a5 (STRING_BYTES) [GC_CHECK_STRING_BYTES]: Call
Gerd Moellmann <gerd@gnu.org>
parents: 35173
diff changeset
711
07ec5658a7a5 (STRING_BYTES) [GC_CHECK_STRING_BYTES]: Call
Gerd Moellmann <gerd@gnu.org>
parents: 35173
diff changeset
712 #else /* not GC_CHECK_STRING_BYTES */
07ec5658a7a5 (STRING_BYTES) [GC_CHECK_STRING_BYTES]: Call
Gerd Moellmann <gerd@gnu.org>
parents: 35173
diff changeset
713
21276
e0c0f8846fb0 Declarations changed.
Kenichi Handa <handa@m17n.org>
parents: 21199
diff changeset
714 #define STRING_BYTES(STR) \
e0c0f8846fb0 Declarations changed.
Kenichi Handa <handa@m17n.org>
parents: 21199
diff changeset
715 ((STR)->size_byte < 0 ? (STR)->size : (STR)->size_byte)
e0c0f8846fb0 Declarations changed.
Kenichi Handa <handa@m17n.org>
parents: 21199
diff changeset
716
35184
07ec5658a7a5 (STRING_BYTES) [GC_CHECK_STRING_BYTES]: Call
Gerd Moellmann <gerd@gnu.org>
parents: 35173
diff changeset
717 #endif /* not GC_CHECK_STRING_BYTES */
07ec5658a7a5 (STRING_BYTES) [GC_CHECK_STRING_BYTES]: Call
Gerd Moellmann <gerd@gnu.org>
parents: 35173
diff changeset
718
46369
dd1d3b1d0053 (SMBP): Deleted. All uses changed to STRING_MULTIBYTE.
Ken Raeburn <raeburn@raeburn.org>
parents: 46304
diff changeset
719 /* Mark STR as a unibyte string. */
81269
5e310b8be81d (STRING_SET_UNIBYTE): Return the canonical empty unibyte string, if appropriate.
Juanma Barranquero <lekktu@gmail.com>
parents: 80985
diff changeset
720 #define STRING_SET_UNIBYTE(STR) \
5e310b8be81d (STRING_SET_UNIBYTE): Return the canonical empty unibyte string, if appropriate.
Juanma Barranquero <lekktu@gmail.com>
parents: 80985
diff changeset
721 do { if (EQ (STR, empty_multibyte_string)) \
5e310b8be81d (STRING_SET_UNIBYTE): Return the canonical empty unibyte string, if appropriate.
Juanma Barranquero <lekktu@gmail.com>
parents: 80985
diff changeset
722 (STR) = empty_unibyte_string; \
5e310b8be81d (STRING_SET_UNIBYTE): Return the canonical empty unibyte string, if appropriate.
Juanma Barranquero <lekktu@gmail.com>
parents: 80985
diff changeset
723 else XSTRING (STR)->size_byte = -1; } while (0)
46369
dd1d3b1d0053 (SMBP): Deleted. All uses changed to STRING_MULTIBYTE.
Ken Raeburn <raeburn@raeburn.org>
parents: 46304
diff changeset
724
94121
21ceec8c4a93 (STRING_SET_MULTIBYTE): New macro.
Kenichi Handa <handa@m17n.org>
parents: 93369
diff changeset
725 /* Mark STR as a multibyte string. Assure that STR contains only
21ceec8c4a93 (STRING_SET_MULTIBYTE): New macro.
Kenichi Handa <handa@m17n.org>
parents: 93369
diff changeset
726 ASCII characters in advance. */
21ceec8c4a93 (STRING_SET_MULTIBYTE): New macro.
Kenichi Handa <handa@m17n.org>
parents: 93369
diff changeset
727 #define STRING_SET_MULTIBYTE(STR) \
21ceec8c4a93 (STRING_SET_MULTIBYTE): New macro.
Kenichi Handa <handa@m17n.org>
parents: 93369
diff changeset
728 do { if (EQ (STR, empty_unibyte_string)) \
21ceec8c4a93 (STRING_SET_MULTIBYTE): New macro.
Kenichi Handa <handa@m17n.org>
parents: 93369
diff changeset
729 (STR) = empty_multibyte_string; \
21ceec8c4a93 (STRING_SET_MULTIBYTE): New macro.
Kenichi Handa <handa@m17n.org>
parents: 93369
diff changeset
730 else XSTRING (STR)->size_byte = XSTRING (STR)->size; } while (0)
46369
dd1d3b1d0053 (SMBP): Deleted. All uses changed to STRING_MULTIBYTE.
Ken Raeburn <raeburn@raeburn.org>
parents: 46304
diff changeset
731
dd1d3b1d0053 (SMBP): Deleted. All uses changed to STRING_MULTIBYTE.
Ken Raeburn <raeburn@raeburn.org>
parents: 46304
diff changeset
732 /* Get text properties. */
46377
d50779ef2a76 * lisp.h (STRING_INTERVALS): Produce rvalue.
Ken Raeburn <raeburn@raeburn.org>
parents: 46372
diff changeset
733 #define STRING_INTERVALS(STR) (XSTRING (STR)->intervals + 0)
d50779ef2a76 * lisp.h (STRING_INTERVALS): Produce rvalue.
Ken Raeburn <raeburn@raeburn.org>
parents: 46372
diff changeset
734
d50779ef2a76 * lisp.h (STRING_INTERVALS): Produce rvalue.
Ken Raeburn <raeburn@raeburn.org>
parents: 46372
diff changeset
735 /* Set text properties. */
d50779ef2a76 * lisp.h (STRING_INTERVALS): Produce rvalue.
Ken Raeburn <raeburn@raeburn.org>
parents: 46372
diff changeset
736 #define STRING_SET_INTERVALS(STR, INT) (XSTRING (STR)->intervals = (INT))
21276
e0c0f8846fb0 Declarations changed.
Kenichi Handa <handa@m17n.org>
parents: 21199
diff changeset
737
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
738 /* In a string or vector, the sign bit of the `size' is the gc mark bit */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
739
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
740 struct Lisp_String
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
741 {
8827
97bf951c0b98 (Lisp_Object): Use EMACS_INT.
Richard M. Stallman <rms@gnu.org>
parents: 8631
diff changeset
742 EMACS_INT size;
20625
a9c4bf3f4e46 (STRING_MULTIBYTE): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20569
diff changeset
743 EMACS_INT size_byte;
30934
ce33e6835a31 (Lisp_String): Replace DECLARE_INTERVALS with real decl.
Miles Bader <miles@gnu.org>
parents: 30918
diff changeset
744 INTERVAL intervals; /* text properties in this string */
27141
d7b1de135a40 Add prototype for allocate_string_data.
Gerd Moellmann <gerd@gnu.org>
parents: 27078
diff changeset
745 unsigned char *data;
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
746 };
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
747
69869
89bc86c44d7c (OFFSETOF, PSEUDOVECSIZE): New macros.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 69374
diff changeset
748 #ifdef offsetof
89bc86c44d7c (OFFSETOF, PSEUDOVECSIZE): New macros.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 69374
diff changeset
749 #define OFFSETOF(type,field) offsetof(type,field)
89bc86c44d7c (OFFSETOF, PSEUDOVECSIZE): New macros.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 69374
diff changeset
750 #else
89bc86c44d7c (OFFSETOF, PSEUDOVECSIZE): New macros.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 69374
diff changeset
751 #define OFFSETOF(type,field) \
89bc86c44d7c (OFFSETOF, PSEUDOVECSIZE): New macros.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 69374
diff changeset
752 ((int)((char*)&((type*)0)->field - (char*)0))
89bc86c44d7c (OFFSETOF, PSEUDOVECSIZE): New macros.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 69374
diff changeset
753 #endif
89bc86c44d7c (OFFSETOF, PSEUDOVECSIZE): New macros.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 69374
diff changeset
754
69874
e9739d967d09 (PSEUDOVECSIZE): Fix last change.
Eli Zaretskii <eliz@gnu.org>
parents: 69871
diff changeset
755 struct Lisp_Vector
e9739d967d09 (PSEUDOVECSIZE): Fix last change.
Eli Zaretskii <eliz@gnu.org>
parents: 69871
diff changeset
756 {
85022
96eb42c9e0e3 * window.h (struct window):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85021
diff changeset
757 EMACS_UINT size;
69874
e9739d967d09 (PSEUDOVECSIZE): Fix last change.
Eli Zaretskii <eliz@gnu.org>
parents: 69871
diff changeset
758 struct Lisp_Vector *next;
e9739d967d09 (PSEUDOVECSIZE): Fix last change.
Eli Zaretskii <eliz@gnu.org>
parents: 69871
diff changeset
759 Lisp_Object contents[1];
e9739d967d09 (PSEUDOVECSIZE): Fix last change.
Eli Zaretskii <eliz@gnu.org>
parents: 69871
diff changeset
760 };
e9739d967d09 (PSEUDOVECSIZE): Fix last change.
Eli Zaretskii <eliz@gnu.org>
parents: 69871
diff changeset
761
9971
214a00665c2b Declare allocate_vectorlike.
Karl Heuer <kwzh@gnu.org>
parents: 9967
diff changeset
762 /* If a struct is made to look like a vector, this macro returns the length
14473
7c93a4ce40b0 (VECSIZE): Round up when dividing.
Richard M. Stallman <rms@gnu.org>
parents: 14306
diff changeset
763 of the shortest vector that would hold that struct. */
80829
6601f854ccc9 (VECSIZE): Use OFFSETOF.
Andreas Schwab <schwab@suse.de>
parents: 76496
diff changeset
764 #define VECSIZE(type) ((sizeof (type) \
6601f854ccc9 (VECSIZE): Use OFFSETOF.
Andreas Schwab <schwab@suse.de>
parents: 76496
diff changeset
765 - OFFSETOF (struct Lisp_Vector, contents[0]) \
6601f854ccc9 (VECSIZE): Use OFFSETOF.
Andreas Schwab <schwab@suse.de>
parents: 76496
diff changeset
766 + sizeof(Lisp_Object) - 1) /* round up */ \
9971
214a00665c2b Declare allocate_vectorlike.
Karl Heuer <kwzh@gnu.org>
parents: 9967
diff changeset
767 / sizeof (Lisp_Object))
214a00665c2b Declare allocate_vectorlike.
Karl Heuer <kwzh@gnu.org>
parents: 9967
diff changeset
768
69869
89bc86c44d7c (OFFSETOF, PSEUDOVECSIZE): New macros.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 69374
diff changeset
769 /* Like VECSIZE, but used when the pseudo-vector has non-Lisp_Object fields
89bc86c44d7c (OFFSETOF, PSEUDOVECSIZE): New macros.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 69374
diff changeset
770 at the end and we need to compute the number of Lisp_Object fields (the
89bc86c44d7c (OFFSETOF, PSEUDOVECSIZE): New macros.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 69374
diff changeset
771 ones that the GC needs to trace). */
89bc86c44d7c (OFFSETOF, PSEUDOVECSIZE): New macros.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 69374
diff changeset
772 #define PSEUDOVECSIZE(type, nonlispfield) \
69874
e9739d967d09 (PSEUDOVECSIZE): Fix last change.
Eli Zaretskii <eliz@gnu.org>
parents: 69871
diff changeset
773 ((OFFSETOF(type, nonlispfield) - OFFSETOF(struct Lisp_Vector, contents[0])) \
69869
89bc86c44d7c (OFFSETOF, PSEUDOVECSIZE): New macros.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 69374
diff changeset
774 / sizeof (Lisp_Object))
89bc86c44d7c (OFFSETOF, PSEUDOVECSIZE): New macros.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 69374
diff changeset
775
88382
5e3e1d9d514f (enum pvec_type): New member PVEC_SUB_CHAR_TABLE.
Kenichi Handa <handa@m17n.org>
parents: 43176
diff changeset
776 /* A char-table is a kind of vectorlike, with contents are like a
17326
bd34aa57f3f5 (CHAR_TABLE_STANDARD_SLOTS): Now 4 more slots than
Kenichi Handa <handa@m17n.org>
parents: 17289
diff changeset
777 vector but with a few other slots. For some purposes, it makes
88382
5e3e1d9d514f (enum pvec_type): New member PVEC_SUB_CHAR_TABLE.
Kenichi Handa <handa@m17n.org>
parents: 43176
diff changeset
778 sense to handle a char-table with type struct Lisp_Vector. An
17326
bd34aa57f3f5 (CHAR_TABLE_STANDARD_SLOTS): Now 4 more slots than
Kenichi Handa <handa@m17n.org>
parents: 17289
diff changeset
779 element of a char table can be any Lisp objects, but if it is a sub
bd34aa57f3f5 (CHAR_TABLE_STANDARD_SLOTS): Now 4 more slots than
Kenichi Handa <handa@m17n.org>
parents: 17289
diff changeset
780 char-table, we treat it a table that contains information of a
88382
5e3e1d9d514f (enum pvec_type): New member PVEC_SUB_CHAR_TABLE.
Kenichi Handa <handa@m17n.org>
parents: 43176
diff changeset
781 specific range of characters. A sub char-table has the same
5e3e1d9d514f (enum pvec_type): New member PVEC_SUB_CHAR_TABLE.
Kenichi Handa <handa@m17n.org>
parents: 43176
diff changeset
782 structure as a vector. A sub char table appears only in an element
5e3e1d9d514f (enum pvec_type): New member PVEC_SUB_CHAR_TABLE.
Kenichi Handa <handa@m17n.org>
parents: 43176
diff changeset
783 of a char-table, and there's no way to access it directly from
5e3e1d9d514f (enum pvec_type): New member PVEC_SUB_CHAR_TABLE.
Kenichi Handa <handa@m17n.org>
parents: 43176
diff changeset
784 Emacs Lisp program. */
13149
b1dcc3e87ffb (struct Lisp_Boolvector): New data type.
Richard M. Stallman <rms@gnu.org>
parents: 12890
diff changeset
785
17326
bd34aa57f3f5 (CHAR_TABLE_STANDARD_SLOTS): Now 4 more slots than
Kenichi Handa <handa@m17n.org>
parents: 17289
diff changeset
786 /* This is the number of slots that every char table must have. This
bd34aa57f3f5 (CHAR_TABLE_STANDARD_SLOTS): Now 4 more slots than
Kenichi Handa <handa@m17n.org>
parents: 17289
diff changeset
787 counts the ordinary slots and the top, defalt, parent, and purpose
bd34aa57f3f5 (CHAR_TABLE_STANDARD_SLOTS): Now 4 more slots than
Kenichi Handa <handa@m17n.org>
parents: 17289
diff changeset
788 slots. */
88382
5e3e1d9d514f (enum pvec_type): New member PVEC_SUB_CHAR_TABLE.
Kenichi Handa <handa@m17n.org>
parents: 43176
diff changeset
789 #define CHAR_TABLE_STANDARD_SLOTS (VECSIZE (struct Lisp_Char_Table) - 1)
13149
b1dcc3e87ffb (struct Lisp_Boolvector): New data type.
Richard M. Stallman <rms@gnu.org>
parents: 12890
diff changeset
790
b1dcc3e87ffb (struct Lisp_Boolvector): New data type.
Richard M. Stallman <rms@gnu.org>
parents: 12890
diff changeset
791 /* Return the number of "extra" slots in the char table CT. */
b1dcc3e87ffb (struct Lisp_Boolvector): New data type.
Richard M. Stallman <rms@gnu.org>
parents: 12890
diff changeset
792
b1dcc3e87ffb (struct Lisp_Boolvector): New data type.
Richard M. Stallman <rms@gnu.org>
parents: 12890
diff changeset
793 #define CHAR_TABLE_EXTRA_SLOTS(CT) \
b1dcc3e87ffb (struct Lisp_Boolvector): New data type.
Richard M. Stallman <rms@gnu.org>
parents: 12890
diff changeset
794 (((CT)->size & PSEUDOVECTOR_SIZE_MASK) - CHAR_TABLE_STANDARD_SLOTS)
b1dcc3e87ffb (struct Lisp_Boolvector): New data type.
Richard M. Stallman <rms@gnu.org>
parents: 12890
diff changeset
795
17188
e38cc84db8ab (CHAR_TABLE_ORDINARY_SLOTS): Change to 384 (== 256 + 128).
Kenichi Handa <handa@m17n.org>
parents: 17141
diff changeset
796 /* Almost equivalent to Faref (CT, IDX) with optimization for ASCII
88382
5e3e1d9d514f (enum pvec_type): New member PVEC_SUB_CHAR_TABLE.
Kenichi Handa <handa@m17n.org>
parents: 43176
diff changeset
797 characters. Do not check validity of CT. */
5e3e1d9d514f (enum pvec_type): New member PVEC_SUB_CHAR_TABLE.
Kenichi Handa <handa@m17n.org>
parents: 43176
diff changeset
798 #define CHAR_TABLE_REF(CT, IDX) \
88904
da66b8fcc88c (CHAR_TABLE_REF): Remove unnecessary check (IDX >= 0).
Kenichi Handa <handa@m17n.org>
parents: 88748
diff changeset
799 ((ASCII_CHAR_P (IDX) \
88382
5e3e1d9d514f (enum pvec_type): New member PVEC_SUB_CHAR_TABLE.
Kenichi Handa <handa@m17n.org>
parents: 43176
diff changeset
800 && SUB_CHAR_TABLE_P (XCHAR_TABLE (CT)->ascii) \
5e3e1d9d514f (enum pvec_type): New member PVEC_SUB_CHAR_TABLE.
Kenichi Handa <handa@m17n.org>
parents: 43176
diff changeset
801 && !NILP (XSUB_CHAR_TABLE (XCHAR_TABLE (CT)->ascii)->contents[IDX])) \
5e3e1d9d514f (enum pvec_type): New member PVEC_SUB_CHAR_TABLE.
Kenichi Handa <handa@m17n.org>
parents: 43176
diff changeset
802 ? XSUB_CHAR_TABLE (XCHAR_TABLE (CT)->ascii)->contents[IDX] \
5e3e1d9d514f (enum pvec_type): New member PVEC_SUB_CHAR_TABLE.
Kenichi Handa <handa@m17n.org>
parents: 43176
diff changeset
803 : char_table_ref ((CT), (IDX)))
17188
e38cc84db8ab (CHAR_TABLE_ORDINARY_SLOTS): Change to 384 (== 256 + 128).
Kenichi Handa <handa@m17n.org>
parents: 17141
diff changeset
804
89574
3c4fef237ab7 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 89520
diff changeset
805 /* Almost equivalent to Faref (CT, IDX). However, if the result is
3c4fef237ab7 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 89520
diff changeset
806 not a character, return IDX.
22239
0a666cecb85d (CHAR_TABLE_TRANSLATE): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 22190
diff changeset
807
0a666cecb85d (CHAR_TABLE_TRANSLATE): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 22190
diff changeset
808 For these characters, do not check validity of CT
0a666cecb85d (CHAR_TABLE_TRANSLATE): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 22190
diff changeset
809 and do not follow parent. */
88382
5e3e1d9d514f (enum pvec_type): New member PVEC_SUB_CHAR_TABLE.
Kenichi Handa <handa@m17n.org>
parents: 43176
diff changeset
810 #define CHAR_TABLE_TRANSLATE(CT, IDX) \
5e3e1d9d514f (enum pvec_type): New member PVEC_SUB_CHAR_TABLE.
Kenichi Handa <handa@m17n.org>
parents: 43176
diff changeset
811 char_table_translate (CT, IDX)
22239
0a666cecb85d (CHAR_TABLE_TRANSLATE): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 22190
diff changeset
812
17188
e38cc84db8ab (CHAR_TABLE_ORDINARY_SLOTS): Change to 384 (== 256 + 128).
Kenichi Handa <handa@m17n.org>
parents: 17141
diff changeset
813 /* Equivalent to Faset (CT, IDX, VAL) with optimization for ASCII and
88933
b47c197101cf (Fnew_fontset): Declare.
Dave Love <fx@gnu.org>
parents: 88904
diff changeset
814 8-bit European characters. Do not check validity of CT. */
88382
5e3e1d9d514f (enum pvec_type): New member PVEC_SUB_CHAR_TABLE.
Kenichi Handa <handa@m17n.org>
parents: 43176
diff changeset
815 #define CHAR_TABLE_SET(CT, IDX, VAL) \
5e3e1d9d514f (enum pvec_type): New member PVEC_SUB_CHAR_TABLE.
Kenichi Handa <handa@m17n.org>
parents: 43176
diff changeset
816 (((IDX) >= 0 && ASCII_CHAR_P (IDX) \
5e3e1d9d514f (enum pvec_type): New member PVEC_SUB_CHAR_TABLE.
Kenichi Handa <handa@m17n.org>
parents: 43176
diff changeset
817 && SUB_CHAR_TABLE_P (XCHAR_TABLE (CT)->ascii)) \
5e3e1d9d514f (enum pvec_type): New member PVEC_SUB_CHAR_TABLE.
Kenichi Handa <handa@m17n.org>
parents: 43176
diff changeset
818 ? XSUB_CHAR_TABLE (XCHAR_TABLE (CT)->ascii)->contents[IDX] = VAL \
5e3e1d9d514f (enum pvec_type): New member PVEC_SUB_CHAR_TABLE.
Kenichi Handa <handa@m17n.org>
parents: 43176
diff changeset
819 : char_table_set (CT, IDX, VAL))
5e3e1d9d514f (enum pvec_type): New member PVEC_SUB_CHAR_TABLE.
Kenichi Handa <handa@m17n.org>
parents: 43176
diff changeset
820
5e3e1d9d514f (enum pvec_type): New member PVEC_SUB_CHAR_TABLE.
Kenichi Handa <handa@m17n.org>
parents: 43176
diff changeset
821 #define CHARTAB_SIZE_BITS_0 6
5e3e1d9d514f (enum pvec_type): New member PVEC_SUB_CHAR_TABLE.
Kenichi Handa <handa@m17n.org>
parents: 43176
diff changeset
822 #define CHARTAB_SIZE_BITS_1 4
5e3e1d9d514f (enum pvec_type): New member PVEC_SUB_CHAR_TABLE.
Kenichi Handa <handa@m17n.org>
parents: 43176
diff changeset
823 #define CHARTAB_SIZE_BITS_2 5
5e3e1d9d514f (enum pvec_type): New member PVEC_SUB_CHAR_TABLE.
Kenichi Handa <handa@m17n.org>
parents: 43176
diff changeset
824 #define CHARTAB_SIZE_BITS_3 7
5e3e1d9d514f (enum pvec_type): New member PVEC_SUB_CHAR_TABLE.
Kenichi Handa <handa@m17n.org>
parents: 43176
diff changeset
825
5e3e1d9d514f (enum pvec_type): New member PVEC_SUB_CHAR_TABLE.
Kenichi Handa <handa@m17n.org>
parents: 43176
diff changeset
826 extern const int chartab_size[4];
5e3e1d9d514f (enum pvec_type): New member PVEC_SUB_CHAR_TABLE.
Kenichi Handa <handa@m17n.org>
parents: 43176
diff changeset
827
5e3e1d9d514f (enum pvec_type): New member PVEC_SUB_CHAR_TABLE.
Kenichi Handa <handa@m17n.org>
parents: 43176
diff changeset
828 struct Lisp_Sub_Char_Table;
17188
e38cc84db8ab (CHAR_TABLE_ORDINARY_SLOTS): Change to 384 (== 256 + 128).
Kenichi Handa <handa@m17n.org>
parents: 17141
diff changeset
829
13149
b1dcc3e87ffb (struct Lisp_Boolvector): New data type.
Richard M. Stallman <rms@gnu.org>
parents: 12890
diff changeset
830 struct Lisp_Char_Table
b1dcc3e87ffb (struct Lisp_Boolvector): New data type.
Richard M. Stallman <rms@gnu.org>
parents: 12890
diff changeset
831 {
b1dcc3e87ffb (struct Lisp_Boolvector): New data type.
Richard M. Stallman <rms@gnu.org>
parents: 12890
diff changeset
832 /* This is the vector's size field, which also holds the
b1dcc3e87ffb (struct Lisp_Boolvector): New data type.
Richard M. Stallman <rms@gnu.org>
parents: 12890
diff changeset
833 pseudovector type information. It holds the size, too.
91041
bdb3fe0ba9fa Merge from emacs--devo--0
Miles Bader <miles@gnu.org>
parents: 91005 85105
diff changeset
834 The size counts the defalt, parent, purpose, ascii,
bdb3fe0ba9fa Merge from emacs--devo--0
Miles Bader <miles@gnu.org>
parents: 91005 85105
diff changeset
835 contents, and extras slots. */
85022
96eb42c9e0e3 * window.h (struct window):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85021
diff changeset
836 EMACS_UINT size;
13149
b1dcc3e87ffb (struct Lisp_Boolvector): New data type.
Richard M. Stallman <rms@gnu.org>
parents: 12890
diff changeset
837 struct Lisp_Vector *next;
89483
2f877ed80fa6 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 88123 89439
diff changeset
838
13149
b1dcc3e87ffb (struct Lisp_Boolvector): New data type.
Richard M. Stallman <rms@gnu.org>
parents: 12890
diff changeset
839 /* This holds a default value,
b1dcc3e87ffb (struct Lisp_Boolvector): New data type.
Richard M. Stallman <rms@gnu.org>
parents: 12890
diff changeset
840 which is used whenever the value for a specific character is nil. */
b1dcc3e87ffb (struct Lisp_Boolvector): New data type.
Richard M. Stallman <rms@gnu.org>
parents: 12890
diff changeset
841 Lisp_Object defalt;
89483
2f877ed80fa6 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 88123 89439
diff changeset
842
2f877ed80fa6 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 88123 89439
diff changeset
843 /* This points to another char table, which we inherit from when the
2f877ed80fa6 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 88123 89439
diff changeset
844 value for a specific character is nil. The `defalt' slot takes
2f877ed80fa6 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 88123 89439
diff changeset
845 precedence over this. */
13149
b1dcc3e87ffb (struct Lisp_Boolvector): New data type.
Richard M. Stallman <rms@gnu.org>
parents: 12890
diff changeset
846 Lisp_Object parent;
89483
2f877ed80fa6 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 88123 89439
diff changeset
847
2f877ed80fa6 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 88123 89439
diff changeset
848 /* This is a symbol which says what kind of use this char-table is
2f877ed80fa6 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 88123 89439
diff changeset
849 meant for. */
13202
b307cd5c259f (struct Lisp_Char_Table): New slot `purpose'.
Richard M. Stallman <rms@gnu.org>
parents: 13149
diff changeset
850 Lisp_Object purpose;
89483
2f877ed80fa6 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 88123 89439
diff changeset
851
2f877ed80fa6 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 88123 89439
diff changeset
852 /* The bottom sub char-table for characters of the range 0..127. It
2f877ed80fa6 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 88123 89439
diff changeset
853 is nil if none of ASCII character has a specific value. */
2f877ed80fa6 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 88123 89439
diff changeset
854 Lisp_Object ascii;
2f877ed80fa6 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 88123 89439
diff changeset
855
2f877ed80fa6 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 88123 89439
diff changeset
856 Lisp_Object contents[(1 << CHARTAB_SIZE_BITS_0)];
2f877ed80fa6 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 88123 89439
diff changeset
857
2f877ed80fa6 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 88123 89439
diff changeset
858 /* These hold additional data. It is a vector. */
13149
b1dcc3e87ffb (struct Lisp_Boolvector): New data type.
Richard M. Stallman <rms@gnu.org>
parents: 12890
diff changeset
859 Lisp_Object extras[1];
b1dcc3e87ffb (struct Lisp_Boolvector): New data type.
Richard M. Stallman <rms@gnu.org>
parents: 12890
diff changeset
860 };
b1dcc3e87ffb (struct Lisp_Boolvector): New data type.
Richard M. Stallman <rms@gnu.org>
parents: 12890
diff changeset
861
88382
5e3e1d9d514f (enum pvec_type): New member PVEC_SUB_CHAR_TABLE.
Kenichi Handa <handa@m17n.org>
parents: 43176
diff changeset
862 struct Lisp_Sub_Char_Table
89483
2f877ed80fa6 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 88123 89439
diff changeset
863 {
2f877ed80fa6 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 88123 89439
diff changeset
864 /* This is the vector's size field, which also holds the
2f877ed80fa6 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 88123 89439
diff changeset
865 pseudovector type information. It holds the size, too. */
2f877ed80fa6 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 88123 89439
diff changeset
866 EMACS_INT size;
2f877ed80fa6 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 88123 89439
diff changeset
867 struct Lisp_Vector *next;
2f877ed80fa6 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 88123 89439
diff changeset
868
2f877ed80fa6 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 88123 89439
diff changeset
869 /* Depth of this sub char-table. It should be 1, 2, or 3. A sub
2f877ed80fa6 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 88123 89439
diff changeset
870 char-table of depth 1 contains 16 elments, and each element
2f877ed80fa6 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 88123 89439
diff changeset
871 covers 4096 (128*32) characters. A sub char-table of depth 2
2f877ed80fa6 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 88123 89439
diff changeset
872 contains 32 elements, and each element covers 128 characters. A
2f877ed80fa6 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 88123 89439
diff changeset
873 sub char-table of depth 3 contains 128 elements, and each element
2f877ed80fa6 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 88123 89439
diff changeset
874 is for one character. */
2f877ed80fa6 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 88123 89439
diff changeset
875 Lisp_Object depth;
2f877ed80fa6 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 88123 89439
diff changeset
876
2f877ed80fa6 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 88123 89439
diff changeset
877 /* Minimum character covered by the sub char-table. */
2f877ed80fa6 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 88123 89439
diff changeset
878 Lisp_Object min_char;
2f877ed80fa6 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 88123 89439
diff changeset
879
2f877ed80fa6 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 88123 89439
diff changeset
880 Lisp_Object contents[1];
2f877ed80fa6 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 88123 89439
diff changeset
881 };
13149
b1dcc3e87ffb (struct Lisp_Boolvector): New data type.
Richard M. Stallman <rms@gnu.org>
parents: 12890
diff changeset
882
b1dcc3e87ffb (struct Lisp_Boolvector): New data type.
Richard M. Stallman <rms@gnu.org>
parents: 12890
diff changeset
883 /* A boolvector is a kind of vectorlike, with contents are like a string. */
b1dcc3e87ffb (struct Lisp_Boolvector): New data type.
Richard M. Stallman <rms@gnu.org>
parents: 12890
diff changeset
884 struct Lisp_Bool_Vector
b1dcc3e87ffb (struct Lisp_Boolvector): New data type.
Richard M. Stallman <rms@gnu.org>
parents: 12890
diff changeset
885 {
b1dcc3e87ffb (struct Lisp_Boolvector): New data type.
Richard M. Stallman <rms@gnu.org>
parents: 12890
diff changeset
886 /* This is the vector's size field. It doesn't have the real size,
b1dcc3e87ffb (struct Lisp_Boolvector): New data type.
Richard M. Stallman <rms@gnu.org>
parents: 12890
diff changeset
887 just the subtype information. */
85022
96eb42c9e0e3 * window.h (struct window):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85021
diff changeset
888 EMACS_UINT vector_size;
13149
b1dcc3e87ffb (struct Lisp_Boolvector): New data type.
Richard M. Stallman <rms@gnu.org>
parents: 12890
diff changeset
889 struct Lisp_Vector *next;
b1dcc3e87ffb (struct Lisp_Boolvector): New data type.
Richard M. Stallman <rms@gnu.org>
parents: 12890
diff changeset
890 /* This is the size in bits. */
85022
96eb42c9e0e3 * window.h (struct window):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85021
diff changeset
891 EMACS_UINT size;
13149
b1dcc3e87ffb (struct Lisp_Boolvector): New data type.
Richard M. Stallman <rms@gnu.org>
parents: 12890
diff changeset
892 /* This contains the actual bits, packed into bytes. */
b1dcc3e87ffb (struct Lisp_Boolvector): New data type.
Richard M. Stallman <rms@gnu.org>
parents: 12890
diff changeset
893 unsigned char data[1];
b1dcc3e87ffb (struct Lisp_Boolvector): New data type.
Richard M. Stallman <rms@gnu.org>
parents: 12890
diff changeset
894 };
b1dcc3e87ffb (struct Lisp_Boolvector): New data type.
Richard M. Stallman <rms@gnu.org>
parents: 12890
diff changeset
895
10292
c467ec24a6bd (VALBITS): Default now 28.
Richard M. Stallman <rms@gnu.org>
parents: 10247
diff changeset
896 /* This structure describes a built-in function.
c467ec24a6bd (VALBITS): Default now 28.
Richard M. Stallman <rms@gnu.org>
parents: 10247
diff changeset
897 It is generated by the DEFUN macro only.
c467ec24a6bd (VALBITS): Default now 28.
Richard M. Stallman <rms@gnu.org>
parents: 10247
diff changeset
898 defsubr makes it into a Lisp object.
c467ec24a6bd (VALBITS): Default now 28.
Richard M. Stallman <rms@gnu.org>
parents: 10247
diff changeset
899
c467ec24a6bd (VALBITS): Default now 28.
Richard M. Stallman <rms@gnu.org>
parents: 10247
diff changeset
900 This type is treated in most respects as a pseudovector,
c467ec24a6bd (VALBITS): Default now 28.
Richard M. Stallman <rms@gnu.org>
parents: 10247
diff changeset
901 but since we never dynamically allocate or free them,
c467ec24a6bd (VALBITS): Default now 28.
Richard M. Stallman <rms@gnu.org>
parents: 10247
diff changeset
902 we don't need a next-vector field. */
17404
73012b195cf3 (DOWNCASE): Return int, not Lisp_Object.
Karl Heuer <kwzh@gnu.org>
parents: 17326
diff changeset
903
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
904 struct Lisp_Subr
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
905 {
85022
96eb42c9e0e3 * window.h (struct window):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85021
diff changeset
906 EMACS_UINT size;
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
907 Lisp_Object (*function) ();
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
908 short min_args, max_args;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
909 char *symbol_name;
84434
83ebc6baeac5 (struct Lisp_Subr): Rename `prompt' field to `intspec'.
Michaël Cadilhac <michael.cadilhac@lrde.org>
parents: 83766
diff changeset
910 char *intspec;
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
911 char *doc;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
912 };
25017
4a142fb92f94 (P_): Moved to top of file.
Gerd Moellmann <gerd@gnu.org>
parents: 23984
diff changeset
913
4a142fb92f94 (P_): Moved to top of file.
Gerd Moellmann <gerd@gnu.org>
parents: 23984
diff changeset
914
4a142fb92f94 (P_): Moved to top of file.
Gerd Moellmann <gerd@gnu.org>
parents: 23984
diff changeset
915 /***********************************************************************
39579
e307d3530117 (LIST_END_P, FOREACH): New macros.
Gerd Moellmann <gerd@gnu.org>
parents: 39451
diff changeset
916 Symbols
e307d3530117 (LIST_END_P, FOREACH): New macros.
Gerd Moellmann <gerd@gnu.org>
parents: 39451
diff changeset
917 ***********************************************************************/
e307d3530117 (LIST_END_P, FOREACH): New macros.
Gerd Moellmann <gerd@gnu.org>
parents: 39451
diff changeset
918
e307d3530117 (LIST_END_P, FOREACH): New macros.
Gerd Moellmann <gerd@gnu.org>
parents: 39451
diff changeset
919 /* Interned state of a symbol. */
e307d3530117 (LIST_END_P, FOREACH): New macros.
Gerd Moellmann <gerd@gnu.org>
parents: 39451
diff changeset
920
e307d3530117 (LIST_END_P, FOREACH): New macros.
Gerd Moellmann <gerd@gnu.org>
parents: 39451
diff changeset
921 enum symbol_interned
e307d3530117 (LIST_END_P, FOREACH): New macros.
Gerd Moellmann <gerd@gnu.org>
parents: 39451
diff changeset
922 {
e307d3530117 (LIST_END_P, FOREACH): New macros.
Gerd Moellmann <gerd@gnu.org>
parents: 39451
diff changeset
923 SYMBOL_UNINTERNED = 0,
e307d3530117 (LIST_END_P, FOREACH): New macros.
Gerd Moellmann <gerd@gnu.org>
parents: 39451
diff changeset
924 SYMBOL_INTERNED = 1,
e307d3530117 (LIST_END_P, FOREACH): New macros.
Gerd Moellmann <gerd@gnu.org>
parents: 39451
diff changeset
925 SYMBOL_INTERNED_IN_INITIAL_OBARRAY = 2
e307d3530117 (LIST_END_P, FOREACH): New macros.
Gerd Moellmann <gerd@gnu.org>
parents: 39451
diff changeset
926 };
e307d3530117 (LIST_END_P, FOREACH): New macros.
Gerd Moellmann <gerd@gnu.org>
parents: 39451
diff changeset
927
e307d3530117 (LIST_END_P, FOREACH): New macros.
Gerd Moellmann <gerd@gnu.org>
parents: 39451
diff changeset
928 /* In a symbol, the markbit of the plist is used as the gc mark bit */
e307d3530117 (LIST_END_P, FOREACH): New macros.
Gerd Moellmann <gerd@gnu.org>
parents: 39451
diff changeset
929
e307d3530117 (LIST_END_P, FOREACH): New macros.
Gerd Moellmann <gerd@gnu.org>
parents: 39451
diff changeset
930 struct Lisp_Symbol
e307d3530117 (LIST_END_P, FOREACH): New macros.
Gerd Moellmann <gerd@gnu.org>
parents: 39451
diff changeset
931 {
51657
7fb427e8d984 (struct interval, struct Lisp_Symbol, struct Lisp_Free)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51167
diff changeset
932 unsigned gcmarkbit : 1;
7fb427e8d984 (struct interval, struct Lisp_Symbol, struct Lisp_Free)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51167
diff changeset
933
39579
e307d3530117 (LIST_END_P, FOREACH): New macros.
Gerd Moellmann <gerd@gnu.org>
parents: 39451
diff changeset
934 /* Non-zero means symbol serves as a variable alias. The symbol
e307d3530117 (LIST_END_P, FOREACH): New macros.
Gerd Moellmann <gerd@gnu.org>
parents: 39451
diff changeset
935 holding the real value is found in the value slot. */
e307d3530117 (LIST_END_P, FOREACH): New macros.
Gerd Moellmann <gerd@gnu.org>
parents: 39451
diff changeset
936 unsigned indirect_variable : 1;
e307d3530117 (LIST_END_P, FOREACH): New macros.
Gerd Moellmann <gerd@gnu.org>
parents: 39451
diff changeset
937
e307d3530117 (LIST_END_P, FOREACH): New macros.
Gerd Moellmann <gerd@gnu.org>
parents: 39451
diff changeset
938 /* Non-zero means symbol is constant, i.e. changing its value
e307d3530117 (LIST_END_P, FOREACH): New macros.
Gerd Moellmann <gerd@gnu.org>
parents: 39451
diff changeset
939 should signal an error. */
e307d3530117 (LIST_END_P, FOREACH): New macros.
Gerd Moellmann <gerd@gnu.org>
parents: 39451
diff changeset
940 unsigned constant : 1;
e307d3530117 (LIST_END_P, FOREACH): New macros.
Gerd Moellmann <gerd@gnu.org>
parents: 39451
diff changeset
941
e307d3530117 (LIST_END_P, FOREACH): New macros.
Gerd Moellmann <gerd@gnu.org>
parents: 39451
diff changeset
942 /* Interned state of the symbol. This is an enumerator from
e307d3530117 (LIST_END_P, FOREACH): New macros.
Gerd Moellmann <gerd@gnu.org>
parents: 39451
diff changeset
943 enum symbol_interned. */
e307d3530117 (LIST_END_P, FOREACH): New macros.
Gerd Moellmann <gerd@gnu.org>
parents: 39451
diff changeset
944 unsigned interned : 2;
e307d3530117 (LIST_END_P, FOREACH): New macros.
Gerd Moellmann <gerd@gnu.org>
parents: 39451
diff changeset
945
45405
13e858104d3b * lisp.h (struct Lisp_Symbol): Replace field "name" with a lisp
Ken Raeburn <raeburn@raeburn.org>
parents: 45375
diff changeset
946 /* The symbol's name, as a Lisp string.
13e858104d3b * lisp.h (struct Lisp_Symbol): Replace field "name" with a lisp
Ken Raeburn <raeburn@raeburn.org>
parents: 45375
diff changeset
947
13e858104d3b * lisp.h (struct Lisp_Symbol): Replace field "name" with a lisp
Ken Raeburn <raeburn@raeburn.org>
parents: 45375
diff changeset
948 The name "xname" is used to intentionally break code referring to
13e858104d3b * lisp.h (struct Lisp_Symbol): Replace field "name" with a lisp
Ken Raeburn <raeburn@raeburn.org>
parents: 45375
diff changeset
949 the old field "name" of type pointer to struct Lisp_String. */
13e858104d3b * lisp.h (struct Lisp_Symbol): Replace field "name" with a lisp
Ken Raeburn <raeburn@raeburn.org>
parents: 45375
diff changeset
950 Lisp_Object xname;
39579
e307d3530117 (LIST_END_P, FOREACH): New macros.
Gerd Moellmann <gerd@gnu.org>
parents: 39451
diff changeset
951
e307d3530117 (LIST_END_P, FOREACH): New macros.
Gerd Moellmann <gerd@gnu.org>
parents: 39451
diff changeset
952 /* Value of the symbol or Qunbound if unbound. If this symbol is a
e307d3530117 (LIST_END_P, FOREACH): New macros.
Gerd Moellmann <gerd@gnu.org>
parents: 39451
diff changeset
953 defvaralias, `value' contains the symbol for which it is an
e307d3530117 (LIST_END_P, FOREACH): New macros.
Gerd Moellmann <gerd@gnu.org>
parents: 39451
diff changeset
954 alias. Use the SYMBOL_VALUE and SET_SYMBOL_VALUE macros to get
e307d3530117 (LIST_END_P, FOREACH): New macros.
Gerd Moellmann <gerd@gnu.org>
parents: 39451
diff changeset
955 and set a symbol's value, to take defvaralias into account. */
e307d3530117 (LIST_END_P, FOREACH): New macros.
Gerd Moellmann <gerd@gnu.org>
parents: 39451
diff changeset
956 Lisp_Object value;
e307d3530117 (LIST_END_P, FOREACH): New macros.
Gerd Moellmann <gerd@gnu.org>
parents: 39451
diff changeset
957
41615
6486180ed9ef (run_hook_list_with_args): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 41262
diff changeset
958 /* Function value of the symbol or Qunbound if not fboundp. */
39579
e307d3530117 (LIST_END_P, FOREACH): New macros.
Gerd Moellmann <gerd@gnu.org>
parents: 39451
diff changeset
959 Lisp_Object function;
e307d3530117 (LIST_END_P, FOREACH): New macros.
Gerd Moellmann <gerd@gnu.org>
parents: 39451
diff changeset
960
e307d3530117 (LIST_END_P, FOREACH): New macros.
Gerd Moellmann <gerd@gnu.org>
parents: 39451
diff changeset
961 /* The symbol's property list. */
e307d3530117 (LIST_END_P, FOREACH): New macros.
Gerd Moellmann <gerd@gnu.org>
parents: 39451
diff changeset
962 Lisp_Object plist;
45623
0e92d219e195 (current_column): Now returns float.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 45545
diff changeset
963
39579
e307d3530117 (LIST_END_P, FOREACH): New macros.
Gerd Moellmann <gerd@gnu.org>
parents: 39451
diff changeset
964 /* Next symbol in obarray bucket, if the symbol is interned. */
e307d3530117 (LIST_END_P, FOREACH): New macros.
Gerd Moellmann <gerd@gnu.org>
parents: 39451
diff changeset
965 struct Lisp_Symbol *next;
e307d3530117 (LIST_END_P, FOREACH): New macros.
Gerd Moellmann <gerd@gnu.org>
parents: 39451
diff changeset
966 };
e307d3530117 (LIST_END_P, FOREACH): New macros.
Gerd Moellmann <gerd@gnu.org>
parents: 39451
diff changeset
967
45405
13e858104d3b * lisp.h (struct Lisp_Symbol): Replace field "name" with a lisp
Ken Raeburn <raeburn@raeburn.org>
parents: 45375
diff changeset
968 /* Value is name of symbol. */
13e858104d3b * lisp.h (struct Lisp_Symbol): Replace field "name" with a lisp
Ken Raeburn <raeburn@raeburn.org>
parents: 45375
diff changeset
969
13e858104d3b * lisp.h (struct Lisp_Symbol): Replace field "name" with a lisp
Ken Raeburn <raeburn@raeburn.org>
parents: 45375
diff changeset
970 #define SYMBOL_NAME(sym) \
13e858104d3b * lisp.h (struct Lisp_Symbol): Replace field "name" with a lisp
Ken Raeburn <raeburn@raeburn.org>
parents: 45375
diff changeset
971 LISP_MAKE_RVALUE (XSYMBOL (sym)->xname)
13e858104d3b * lisp.h (struct Lisp_Symbol): Replace field "name" with a lisp
Ken Raeburn <raeburn@raeburn.org>
parents: 45375
diff changeset
972
39579
e307d3530117 (LIST_END_P, FOREACH): New macros.
Gerd Moellmann <gerd@gnu.org>
parents: 39451
diff changeset
973 /* Value is non-zero if SYM is an interned symbol. */
e307d3530117 (LIST_END_P, FOREACH): New macros.
Gerd Moellmann <gerd@gnu.org>
parents: 39451
diff changeset
974
e307d3530117 (LIST_END_P, FOREACH): New macros.
Gerd Moellmann <gerd@gnu.org>
parents: 39451
diff changeset
975 #define SYMBOL_INTERNED_P(sym) \
e307d3530117 (LIST_END_P, FOREACH): New macros.
Gerd Moellmann <gerd@gnu.org>
parents: 39451
diff changeset
976 (XSYMBOL (sym)->interned != SYMBOL_UNINTERNED)
e307d3530117 (LIST_END_P, FOREACH): New macros.
Gerd Moellmann <gerd@gnu.org>
parents: 39451
diff changeset
977
e307d3530117 (LIST_END_P, FOREACH): New macros.
Gerd Moellmann <gerd@gnu.org>
parents: 39451
diff changeset
978 /* Value is non-zero if SYM is interned in initial_obarray. */
e307d3530117 (LIST_END_P, FOREACH): New macros.
Gerd Moellmann <gerd@gnu.org>
parents: 39451
diff changeset
979
e307d3530117 (LIST_END_P, FOREACH): New macros.
Gerd Moellmann <gerd@gnu.org>
parents: 39451
diff changeset
980 #define SYMBOL_INTERNED_IN_INITIAL_OBARRAY_P(sym) \
e307d3530117 (LIST_END_P, FOREACH): New macros.
Gerd Moellmann <gerd@gnu.org>
parents: 39451
diff changeset
981 (XSYMBOL (sym)->interned == SYMBOL_INTERNED_IN_INITIAL_OBARRAY)
e307d3530117 (LIST_END_P, FOREACH): New macros.
Gerd Moellmann <gerd@gnu.org>
parents: 39451
diff changeset
982
e307d3530117 (LIST_END_P, FOREACH): New macros.
Gerd Moellmann <gerd@gnu.org>
parents: 39451
diff changeset
983 /* Value is non-zero if symbol is considered a constant, i.e. its
e307d3530117 (LIST_END_P, FOREACH): New macros.
Gerd Moellmann <gerd@gnu.org>
parents: 39451
diff changeset
984 value cannot be changed (there is an exception for keyword symbols,
e307d3530117 (LIST_END_P, FOREACH): New macros.
Gerd Moellmann <gerd@gnu.org>
parents: 39451
diff changeset
985 whose value can be set to the keyword symbol itself). */
e307d3530117 (LIST_END_P, FOREACH): New macros.
Gerd Moellmann <gerd@gnu.org>
parents: 39451
diff changeset
986
e307d3530117 (LIST_END_P, FOREACH): New macros.
Gerd Moellmann <gerd@gnu.org>
parents: 39451
diff changeset
987 #define SYMBOL_CONSTANT_P(sym) XSYMBOL (sym)->constant
e307d3530117 (LIST_END_P, FOREACH): New macros.
Gerd Moellmann <gerd@gnu.org>
parents: 39451
diff changeset
988
e307d3530117 (LIST_END_P, FOREACH): New macros.
Gerd Moellmann <gerd@gnu.org>
parents: 39451
diff changeset
989 /* Value is the value of SYM, with defvaralias taken into
e307d3530117 (LIST_END_P, FOREACH): New macros.
Gerd Moellmann <gerd@gnu.org>
parents: 39451
diff changeset
990 account. */
e307d3530117 (LIST_END_P, FOREACH): New macros.
Gerd Moellmann <gerd@gnu.org>
parents: 39451
diff changeset
991
e307d3530117 (LIST_END_P, FOREACH): New macros.
Gerd Moellmann <gerd@gnu.org>
parents: 39451
diff changeset
992 #define SYMBOL_VALUE(sym) \
e307d3530117 (LIST_END_P, FOREACH): New macros.
Gerd Moellmann <gerd@gnu.org>
parents: 39451
diff changeset
993 (XSYMBOL (sym)->indirect_variable \
95112
0835cb21d60e * lisp.h (indirect_variable):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94994
diff changeset
994 ? indirect_variable (XSYMBOL (sym))->value \
39579
e307d3530117 (LIST_END_P, FOREACH): New macros.
Gerd Moellmann <gerd@gnu.org>
parents: 39451
diff changeset
995 : XSYMBOL (sym)->value)
e307d3530117 (LIST_END_P, FOREACH): New macros.
Gerd Moellmann <gerd@gnu.org>
parents: 39451
diff changeset
996
e307d3530117 (LIST_END_P, FOREACH): New macros.
Gerd Moellmann <gerd@gnu.org>
parents: 39451
diff changeset
997 /* Set SYM's value to VAL, taking defvaralias into account. */
e307d3530117 (LIST_END_P, FOREACH): New macros.
Gerd Moellmann <gerd@gnu.org>
parents: 39451
diff changeset
998
e307d3530117 (LIST_END_P, FOREACH): New macros.
Gerd Moellmann <gerd@gnu.org>
parents: 39451
diff changeset
999 #define SET_SYMBOL_VALUE(sym, val) \
e307d3530117 (LIST_END_P, FOREACH): New macros.
Gerd Moellmann <gerd@gnu.org>
parents: 39451
diff changeset
1000 do { \
e307d3530117 (LIST_END_P, FOREACH): New macros.
Gerd Moellmann <gerd@gnu.org>
parents: 39451
diff changeset
1001 if (XSYMBOL (sym)->indirect_variable) \
95112
0835cb21d60e * lisp.h (indirect_variable):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94994
diff changeset
1002 indirect_variable (XSYMBOL (sym))->value = (val); \
39579
e307d3530117 (LIST_END_P, FOREACH): New macros.
Gerd Moellmann <gerd@gnu.org>
parents: 39451
diff changeset
1003 else \
e307d3530117 (LIST_END_P, FOREACH): New macros.
Gerd Moellmann <gerd@gnu.org>
parents: 39451
diff changeset
1004 XSYMBOL (sym)->value = (val); \
e307d3530117 (LIST_END_P, FOREACH): New macros.
Gerd Moellmann <gerd@gnu.org>
parents: 39451
diff changeset
1005 } while (0)
45623
0e92d219e195 (current_column): Now returns float.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 45545
diff changeset
1006
39579
e307d3530117 (LIST_END_P, FOREACH): New macros.
Gerd Moellmann <gerd@gnu.org>
parents: 39451
diff changeset
1007
e307d3530117 (LIST_END_P, FOREACH): New macros.
Gerd Moellmann <gerd@gnu.org>
parents: 39451
diff changeset
1008 /***********************************************************************
25017
4a142fb92f94 (P_): Moved to top of file.
Gerd Moellmann <gerd@gnu.org>
parents: 23984
diff changeset
1009 Hash Tables
4a142fb92f94 (P_): Moved to top of file.
Gerd Moellmann <gerd@gnu.org>
parents: 23984
diff changeset
1010 ***********************************************************************/
4a142fb92f94 (P_): Moved to top of file.
Gerd Moellmann <gerd@gnu.org>
parents: 23984
diff changeset
1011
4a142fb92f94 (P_): Moved to top of file.
Gerd Moellmann <gerd@gnu.org>
parents: 23984
diff changeset
1012 /* The structure of a Lisp hash table. */
4a142fb92f94 (P_): Moved to top of file.
Gerd Moellmann <gerd@gnu.org>
parents: 23984
diff changeset
1013
4a142fb92f94 (P_): Moved to top of file.
Gerd Moellmann <gerd@gnu.org>
parents: 23984
diff changeset
1014 struct Lisp_Hash_Table
4a142fb92f94 (P_): Moved to top of file.
Gerd Moellmann <gerd@gnu.org>
parents: 23984
diff changeset
1015 {
4a142fb92f94 (P_): Moved to top of file.
Gerd Moellmann <gerd@gnu.org>
parents: 23984
diff changeset
1016 /* Vector fields. The hash table code doesn't refer to these. */
85022
96eb42c9e0e3 * window.h (struct window):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85021
diff changeset
1017 EMACS_UINT size;
25017
4a142fb92f94 (P_): Moved to top of file.
Gerd Moellmann <gerd@gnu.org>
parents: 23984
diff changeset
1018 struct Lisp_Vector *vec_next;
45623
0e92d219e195 (current_column): Now returns float.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 45545
diff changeset
1019
25017
4a142fb92f94 (P_): Moved to top of file.
Gerd Moellmann <gerd@gnu.org>
parents: 23984
diff changeset
1020 /* Function used to compare keys. */
4a142fb92f94 (P_): Moved to top of file.
Gerd Moellmann <gerd@gnu.org>
parents: 23984
diff changeset
1021 Lisp_Object test;
4a142fb92f94 (P_): Moved to top of file.
Gerd Moellmann <gerd@gnu.org>
parents: 23984
diff changeset
1022
4a142fb92f94 (P_): Moved to top of file.
Gerd Moellmann <gerd@gnu.org>
parents: 23984
diff changeset
1023 /* Nil if table is non-weak. Otherwise a symbol describing the
4a142fb92f94 (P_): Moved to top of file.
Gerd Moellmann <gerd@gnu.org>
parents: 23984
diff changeset
1024 weakness of the table. */
4a142fb92f94 (P_): Moved to top of file.
Gerd Moellmann <gerd@gnu.org>
parents: 23984
diff changeset
1025 Lisp_Object weak;
45623
0e92d219e195 (current_column): Now returns float.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 45545
diff changeset
1026
25017
4a142fb92f94 (P_): Moved to top of file.
Gerd Moellmann <gerd@gnu.org>
parents: 23984
diff changeset
1027 /* When the table is resized, and this is an integer, compute the
4a142fb92f94 (P_): Moved to top of file.
Gerd Moellmann <gerd@gnu.org>
parents: 23984
diff changeset
1028 new size by adding this to the old size. If a float, compute the
4a142fb92f94 (P_): Moved to top of file.
Gerd Moellmann <gerd@gnu.org>
parents: 23984
diff changeset
1029 new size by multiplying the old size with this factor. */
4a142fb92f94 (P_): Moved to top of file.
Gerd Moellmann <gerd@gnu.org>
parents: 23984
diff changeset
1030 Lisp_Object rehash_size;
4a142fb92f94 (P_): Moved to top of file.
Gerd Moellmann <gerd@gnu.org>
parents: 23984
diff changeset
1031
4a142fb92f94 (P_): Moved to top of file.
Gerd Moellmann <gerd@gnu.org>
parents: 23984
diff changeset
1032 /* Resize hash table when number of entries/ table size is >= this
4a142fb92f94 (P_): Moved to top of file.
Gerd Moellmann <gerd@gnu.org>
parents: 23984
diff changeset
1033 ratio, a float. */
4a142fb92f94 (P_): Moved to top of file.
Gerd Moellmann <gerd@gnu.org>
parents: 23984
diff changeset
1034 Lisp_Object rehash_threshold;
4a142fb92f94 (P_): Moved to top of file.
Gerd Moellmann <gerd@gnu.org>
parents: 23984
diff changeset
1035
4a142fb92f94 (P_): Moved to top of file.
Gerd Moellmann <gerd@gnu.org>
parents: 23984
diff changeset
1036 /* Vector of hash codes.. If hash[I] is nil, this means that that
4a142fb92f94 (P_): Moved to top of file.
Gerd Moellmann <gerd@gnu.org>
parents: 23984
diff changeset
1037 entry I is unused. */
4a142fb92f94 (P_): Moved to top of file.
Gerd Moellmann <gerd@gnu.org>
parents: 23984
diff changeset
1038 Lisp_Object hash;
4a142fb92f94 (P_): Moved to top of file.
Gerd Moellmann <gerd@gnu.org>
parents: 23984
diff changeset
1039
4a142fb92f94 (P_): Moved to top of file.
Gerd Moellmann <gerd@gnu.org>
parents: 23984
diff changeset
1040 /* Vector used to chain entries. If entry I is free, next[I] is the
4a142fb92f94 (P_): Moved to top of file.
Gerd Moellmann <gerd@gnu.org>
parents: 23984
diff changeset
1041 entry number of the next free item. If entry I is non-free,
4a142fb92f94 (P_): Moved to top of file.
Gerd Moellmann <gerd@gnu.org>
parents: 23984
diff changeset
1042 next[I] is the index of the next entry in the collision chain. */
4a142fb92f94 (P_): Moved to top of file.
Gerd Moellmann <gerd@gnu.org>
parents: 23984
diff changeset
1043 Lisp_Object next;
4a142fb92f94 (P_): Moved to top of file.
Gerd Moellmann <gerd@gnu.org>
parents: 23984
diff changeset
1044
4a142fb92f94 (P_): Moved to top of file.
Gerd Moellmann <gerd@gnu.org>
parents: 23984
diff changeset
1045 /* Index of first free entry in free list. */
4a142fb92f94 (P_): Moved to top of file.
Gerd Moellmann <gerd@gnu.org>
parents: 23984
diff changeset
1046 Lisp_Object next_free;
4a142fb92f94 (P_): Moved to top of file.
Gerd Moellmann <gerd@gnu.org>
parents: 23984
diff changeset
1047
4a142fb92f94 (P_): Moved to top of file.
Gerd Moellmann <gerd@gnu.org>
parents: 23984
diff changeset
1048 /* Bucket vector. A non-nil entry is the index of the first item in
4a142fb92f94 (P_): Moved to top of file.
Gerd Moellmann <gerd@gnu.org>
parents: 23984
diff changeset
1049 a collision chain. This vector's size can be larger than the
4a142fb92f94 (P_): Moved to top of file.
Gerd Moellmann <gerd@gnu.org>
parents: 23984
diff changeset
1050 hash table size to reduce collisions. */
4a142fb92f94 (P_): Moved to top of file.
Gerd Moellmann <gerd@gnu.org>
parents: 23984
diff changeset
1051 Lisp_Object index;
4a142fb92f94 (P_): Moved to top of file.
Gerd Moellmann <gerd@gnu.org>
parents: 23984
diff changeset
1052
4a142fb92f94 (P_): Moved to top of file.
Gerd Moellmann <gerd@gnu.org>
parents: 23984
diff changeset
1053 /* User-supplied hash function, or nil. */
4a142fb92f94 (P_): Moved to top of file.
Gerd Moellmann <gerd@gnu.org>
parents: 23984
diff changeset
1054 Lisp_Object user_hash_function;
4a142fb92f94 (P_): Moved to top of file.
Gerd Moellmann <gerd@gnu.org>
parents: 23984
diff changeset
1055
4a142fb92f94 (P_): Moved to top of file.
Gerd Moellmann <gerd@gnu.org>
parents: 23984
diff changeset
1056 /* User-supplied key comparison function, or nil. */
4a142fb92f94 (P_): Moved to top of file.
Gerd Moellmann <gerd@gnu.org>
parents: 23984
diff changeset
1057 Lisp_Object user_cmp_function;
4a142fb92f94 (P_): Moved to top of file.
Gerd Moellmann <gerd@gnu.org>
parents: 23984
diff changeset
1058
85021
a0c901e4e649 * lisp.h (struct Lisp_Hash_Table): Move non-traced elements at the end.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85012
diff changeset
1059 /* Only the fields above are traced normally by the GC. The ones below
a0c901e4e649 * lisp.h (struct Lisp_Hash_Table): Move non-traced elements at the end.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85012
diff changeset
1060 `count'. are special and are either ignored by the GC or traced in
a0c901e4e649 * lisp.h (struct Lisp_Hash_Table): Move non-traced elements at the end.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85012
diff changeset
1061 a special way (e.g. because of weakness). */
a0c901e4e649 * lisp.h (struct Lisp_Hash_Table): Move non-traced elements at the end.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85012
diff changeset
1062
a0c901e4e649 * lisp.h (struct Lisp_Hash_Table): Move non-traced elements at the end.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85012
diff changeset
1063 /* Number of key/value entries in the table. */
a0c901e4e649 * lisp.h (struct Lisp_Hash_Table): Move non-traced elements at the end.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85012
diff changeset
1064 unsigned int count;
a0c901e4e649 * lisp.h (struct Lisp_Hash_Table): Move non-traced elements at the end.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85012
diff changeset
1065
a0c901e4e649 * lisp.h (struct Lisp_Hash_Table): Move non-traced elements at the end.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85012
diff changeset
1066 /* Vector of keys and values. The key of item I is found at index
a0c901e4e649 * lisp.h (struct Lisp_Hash_Table): Move non-traced elements at the end.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85012
diff changeset
1067 2 * I, the value is found at index 2 * I + 1.
a0c901e4e649 * lisp.h (struct Lisp_Hash_Table): Move non-traced elements at the end.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85012
diff changeset
1068 This is gc_marked specially if the table is weak. */
a0c901e4e649 * lisp.h (struct Lisp_Hash_Table): Move non-traced elements at the end.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85012
diff changeset
1069 Lisp_Object key_and_value;
a0c901e4e649 * lisp.h (struct Lisp_Hash_Table): Move non-traced elements at the end.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85012
diff changeset
1070
81813
32d8fd242bb2 * lisp.h (struct Lisp_Hash_Table): Turn next_weak into a bare pointer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 81794
diff changeset
1071 /* Next weak hash table if this is a weak hash table. The head
32d8fd242bb2 * lisp.h (struct Lisp_Hash_Table): Turn next_weak into a bare pointer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 81794
diff changeset
1072 of the list is in weak_hash_tables. */
32d8fd242bb2 * lisp.h (struct Lisp_Hash_Table): Turn next_weak into a bare pointer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 81794
diff changeset
1073 struct Lisp_Hash_Table *next_weak;
32d8fd242bb2 * lisp.h (struct Lisp_Hash_Table): Turn next_weak into a bare pointer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 81794
diff changeset
1074
25017
4a142fb92f94 (P_): Moved to top of file.
Gerd Moellmann <gerd@gnu.org>
parents: 23984
diff changeset
1075 /* C function to compare two keys. */
4a142fb92f94 (P_): Moved to top of file.
Gerd Moellmann <gerd@gnu.org>
parents: 23984
diff changeset
1076 int (* cmpfn) P_ ((struct Lisp_Hash_Table *, Lisp_Object,
4a142fb92f94 (P_): Moved to top of file.
Gerd Moellmann <gerd@gnu.org>
parents: 23984
diff changeset
1077 unsigned, Lisp_Object, unsigned));
4a142fb92f94 (P_): Moved to top of file.
Gerd Moellmann <gerd@gnu.org>
parents: 23984
diff changeset
1078
4a142fb92f94 (P_): Moved to top of file.
Gerd Moellmann <gerd@gnu.org>
parents: 23984
diff changeset
1079 /* C function to compute hash code. */
4a142fb92f94 (P_): Moved to top of file.
Gerd Moellmann <gerd@gnu.org>
parents: 23984
diff changeset
1080 unsigned (* hashfn) P_ ((struct Lisp_Hash_Table *, Lisp_Object));
4a142fb92f94 (P_): Moved to top of file.
Gerd Moellmann <gerd@gnu.org>
parents: 23984
diff changeset
1081 };
4a142fb92f94 (P_): Moved to top of file.
Gerd Moellmann <gerd@gnu.org>
parents: 23984
diff changeset
1082
4a142fb92f94 (P_): Moved to top of file.
Gerd Moellmann <gerd@gnu.org>
parents: 23984
diff changeset
1083
4a142fb92f94 (P_): Moved to top of file.
Gerd Moellmann <gerd@gnu.org>
parents: 23984
diff changeset
1084 #define XHASH_TABLE(OBJ) \
4a142fb92f94 (P_): Moved to top of file.
Gerd Moellmann <gerd@gnu.org>
parents: 23984
diff changeset
1085 ((struct Lisp_Hash_Table *) XPNTR (OBJ))
4a142fb92f94 (P_): Moved to top of file.
Gerd Moellmann <gerd@gnu.org>
parents: 23984
diff changeset
1086
4a142fb92f94 (P_): Moved to top of file.
Gerd Moellmann <gerd@gnu.org>
parents: 23984
diff changeset
1087 #define XSET_HASH_TABLE(VAR, PTR) \
4a142fb92f94 (P_): Moved to top of file.
Gerd Moellmann <gerd@gnu.org>
parents: 23984
diff changeset
1088 (XSETPSEUDOVECTOR (VAR, PTR, PVEC_HASH_TABLE))
4a142fb92f94 (P_): Moved to top of file.
Gerd Moellmann <gerd@gnu.org>
parents: 23984
diff changeset
1089
4a142fb92f94 (P_): Moved to top of file.
Gerd Moellmann <gerd@gnu.org>
parents: 23984
diff changeset
1090 #define HASH_TABLE_P(OBJ) PSEUDOVECTORP (OBJ, PVEC_HASH_TABLE)
4a142fb92f94 (P_): Moved to top of file.
Gerd Moellmann <gerd@gnu.org>
parents: 23984
diff changeset
1091
71822
7b7a32c8c767 (CHECK_TYPE): New macro for generic type checking.
Kim F. Storm <storm@cua.dk>
parents: 71796
diff changeset
1092 #define CHECK_HASH_TABLE(x) \
7b7a32c8c767 (CHECK_TYPE): New macro for generic type checking.
Kim F. Storm <storm@cua.dk>
parents: 71796
diff changeset
1093 CHECK_TYPE (HASH_TABLE_P (x), Qhash_table_p, x)
25017
4a142fb92f94 (P_): Moved to top of file.
Gerd Moellmann <gerd@gnu.org>
parents: 23984
diff changeset
1094
46220
5abad41fb43b (HASH_KEY, HASH_VALUE, HASH_NEXT, HASH_HASH, HASH_INDEX)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46070
diff changeset
1095 /* Value is the key part of entry IDX in hash table H. */
5abad41fb43b (HASH_KEY, HASH_VALUE, HASH_NEXT, HASH_HASH, HASH_INDEX)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46070
diff changeset
1096
5abad41fb43b (HASH_KEY, HASH_VALUE, HASH_NEXT, HASH_HASH, HASH_INDEX)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46070
diff changeset
1097 #define HASH_KEY(H, IDX) AREF ((H)->key_and_value, 2 * (IDX))
5abad41fb43b (HASH_KEY, HASH_VALUE, HASH_NEXT, HASH_HASH, HASH_INDEX)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46070
diff changeset
1098
5abad41fb43b (HASH_KEY, HASH_VALUE, HASH_NEXT, HASH_HASH, HASH_INDEX)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46070
diff changeset
1099 /* Value is the value part of entry IDX in hash table H. */
5abad41fb43b (HASH_KEY, HASH_VALUE, HASH_NEXT, HASH_HASH, HASH_INDEX)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46070
diff changeset
1100
5abad41fb43b (HASH_KEY, HASH_VALUE, HASH_NEXT, HASH_HASH, HASH_INDEX)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46070
diff changeset
1101 #define HASH_VALUE(H, IDX) AREF ((H)->key_and_value, 2 * (IDX) + 1)
5abad41fb43b (HASH_KEY, HASH_VALUE, HASH_NEXT, HASH_HASH, HASH_INDEX)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46070
diff changeset
1102
5abad41fb43b (HASH_KEY, HASH_VALUE, HASH_NEXT, HASH_HASH, HASH_INDEX)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46070
diff changeset
1103 /* Value is the index of the next entry following the one at IDX
5abad41fb43b (HASH_KEY, HASH_VALUE, HASH_NEXT, HASH_HASH, HASH_INDEX)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46070
diff changeset
1104 in hash table H. */
5abad41fb43b (HASH_KEY, HASH_VALUE, HASH_NEXT, HASH_HASH, HASH_INDEX)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46070
diff changeset
1105
5abad41fb43b (HASH_KEY, HASH_VALUE, HASH_NEXT, HASH_HASH, HASH_INDEX)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46070
diff changeset
1106 #define HASH_NEXT(H, IDX) AREF ((H)->next, (IDX))
5abad41fb43b (HASH_KEY, HASH_VALUE, HASH_NEXT, HASH_HASH, HASH_INDEX)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46070
diff changeset
1107
5abad41fb43b (HASH_KEY, HASH_VALUE, HASH_NEXT, HASH_HASH, HASH_INDEX)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46070
diff changeset
1108 /* Value is the hash code computed for entry IDX in hash table H. */
5abad41fb43b (HASH_KEY, HASH_VALUE, HASH_NEXT, HASH_HASH, HASH_INDEX)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46070
diff changeset
1109
5abad41fb43b (HASH_KEY, HASH_VALUE, HASH_NEXT, HASH_HASH, HASH_INDEX)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46070
diff changeset
1110 #define HASH_HASH(H, IDX) AREF ((H)->hash, (IDX))
5abad41fb43b (HASH_KEY, HASH_VALUE, HASH_NEXT, HASH_HASH, HASH_INDEX)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46070
diff changeset
1111
5abad41fb43b (HASH_KEY, HASH_VALUE, HASH_NEXT, HASH_HASH, HASH_INDEX)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46070
diff changeset
1112 /* Value is the index of the element in hash table H that is the
5abad41fb43b (HASH_KEY, HASH_VALUE, HASH_NEXT, HASH_HASH, HASH_INDEX)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46070
diff changeset
1113 start of the collision list at index IDX in the index vector of H. */
5abad41fb43b (HASH_KEY, HASH_VALUE, HASH_NEXT, HASH_HASH, HASH_INDEX)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46070
diff changeset
1114
5abad41fb43b (HASH_KEY, HASH_VALUE, HASH_NEXT, HASH_HASH, HASH_INDEX)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46070
diff changeset
1115 #define HASH_INDEX(H, IDX) AREF ((H)->index, (IDX))
5abad41fb43b (HASH_KEY, HASH_VALUE, HASH_NEXT, HASH_HASH, HASH_INDEX)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46070
diff changeset
1116
5abad41fb43b (HASH_KEY, HASH_VALUE, HASH_NEXT, HASH_HASH, HASH_INDEX)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46070
diff changeset
1117 /* Value is the size of hash table H. */
5abad41fb43b (HASH_KEY, HASH_VALUE, HASH_NEXT, HASH_HASH, HASH_INDEX)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46070
diff changeset
1118
5abad41fb43b (HASH_KEY, HASH_VALUE, HASH_NEXT, HASH_HASH, HASH_INDEX)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46070
diff changeset
1119 #define HASH_TABLE_SIZE(H) XVECTOR ((H)->next)->size
5abad41fb43b (HASH_KEY, HASH_VALUE, HASH_NEXT, HASH_HASH, HASH_INDEX)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46070
diff changeset
1120
25017
4a142fb92f94 (P_): Moved to top of file.
Gerd Moellmann <gerd@gnu.org>
parents: 23984
diff changeset
1121 /* Default size for hash tables if not specified. */
4a142fb92f94 (P_): Moved to top of file.
Gerd Moellmann <gerd@gnu.org>
parents: 23984
diff changeset
1122
4a142fb92f94 (P_): Moved to top of file.
Gerd Moellmann <gerd@gnu.org>
parents: 23984
diff changeset
1123 #define DEFAULT_HASH_SIZE 65
4a142fb92f94 (P_): Moved to top of file.
Gerd Moellmann <gerd@gnu.org>
parents: 23984
diff changeset
1124
4a142fb92f94 (P_): Moved to top of file.
Gerd Moellmann <gerd@gnu.org>
parents: 23984
diff changeset
1125 /* Default threshold specifying when to resize a hash table. The
4a142fb92f94 (P_): Moved to top of file.
Gerd Moellmann <gerd@gnu.org>
parents: 23984
diff changeset
1126 value gives the ratio of current entries in the hash table and the
4a142fb92f94 (P_): Moved to top of file.
Gerd Moellmann <gerd@gnu.org>
parents: 23984
diff changeset
1127 size of the hash table. */
4a142fb92f94 (P_): Moved to top of file.
Gerd Moellmann <gerd@gnu.org>
parents: 23984
diff changeset
1128
4a142fb92f94 (P_): Moved to top of file.
Gerd Moellmann <gerd@gnu.org>
parents: 23984
diff changeset
1129 #define DEFAULT_REHASH_THRESHOLD 0.8
4a142fb92f94 (P_): Moved to top of file.
Gerd Moellmann <gerd@gnu.org>
parents: 23984
diff changeset
1130
4a142fb92f94 (P_): Moved to top of file.
Gerd Moellmann <gerd@gnu.org>
parents: 23984
diff changeset
1131 /* Default factor by which to increase the size of a hash table. */
4a142fb92f94 (P_): Moved to top of file.
Gerd Moellmann <gerd@gnu.org>
parents: 23984
diff changeset
1132
4a142fb92f94 (P_): Moved to top of file.
Gerd Moellmann <gerd@gnu.org>
parents: 23984
diff changeset
1133 #define DEFAULT_REHASH_SIZE 1.5
4a142fb92f94 (P_): Moved to top of file.
Gerd Moellmann <gerd@gnu.org>
parents: 23984
diff changeset
1134
9462
3601bf7327b2 (enum Lisp_Misc_Type): Add new enumerations Lisp_Misc_Intfwd,
Karl Heuer <kwzh@gnu.org>
parents: 9435
diff changeset
1135
10292
c467ec24a6bd (VALBITS): Default now 28.
Richard M. Stallman <rms@gnu.org>
parents: 10247
diff changeset
1136 /* These structures are used for various misc types. */
c467ec24a6bd (VALBITS): Default now 28.
Richard M. Stallman <rms@gnu.org>
parents: 10247
diff changeset
1137
85328
d0d527210b0c * lisp.h (enum Lisp_Misc_Type): Del Lisp_Misc_Some_Buffer_Local_Value.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85250
diff changeset
1138 struct Lisp_Misc_Any /* Supertype of all Misc types. */
d0d527210b0c * lisp.h (enum Lisp_Misc_Type): Del Lisp_Misc_Some_Buffer_Local_Value.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85250
diff changeset
1139 {
91727
b2df1fe6ce6d (struct Lisp_Misc_Any, struct Lisp_Marker)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 91720
diff changeset
1140 enum Lisp_Misc_Type type : 16; /* = Lisp_Misc_Marker */
85328
d0d527210b0c * lisp.h (enum Lisp_Misc_Type): Del Lisp_Misc_Some_Buffer_Local_Value.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85250
diff changeset
1141 unsigned gcmarkbit : 1;
d0d527210b0c * lisp.h (enum Lisp_Misc_Type): Del Lisp_Misc_Some_Buffer_Local_Value.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85250
diff changeset
1142 int spacer : 15;
d0d527210b0c * lisp.h (enum Lisp_Misc_Type): Del Lisp_Misc_Some_Buffer_Local_Value.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85250
diff changeset
1143 };
d0d527210b0c * lisp.h (enum Lisp_Misc_Type): Del Lisp_Misc_Some_Buffer_Local_Value.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85250
diff changeset
1144
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1145 struct Lisp_Marker
12890
2a1edeeb13fb (struct Lisp_Marker): Make insertion_type an unsigned int.
Richard M. Stallman <rms@gnu.org>
parents: 12731
diff changeset
1146 {
91727
b2df1fe6ce6d (struct Lisp_Misc_Any, struct Lisp_Marker)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 91720
diff changeset
1147 enum Lisp_Misc_Type type : 16; /* = Lisp_Misc_Marker */
51657
7fb427e8d984 (struct interval, struct Lisp_Symbol, struct Lisp_Free)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51167
diff changeset
1148 unsigned gcmarkbit : 1;
91343
347746964570 (struct Lisp_Marker): New member need_adjustment.
Kenichi Handa <handa@m17n.org>
parents: 91327
diff changeset
1149 int spacer : 13;
347746964570 (struct Lisp_Marker): New member need_adjustment.
Kenichi Handa <handa@m17n.org>
parents: 91327
diff changeset
1150 /* This flag is temporarily used in the functions
347746964570 (struct Lisp_Marker): New member need_adjustment.
Kenichi Handa <handa@m17n.org>
parents: 91327
diff changeset
1151 decode/encode_coding_object to record that the marker position
347746964570 (struct Lisp_Marker): New member need_adjustment.
Kenichi Handa <handa@m17n.org>
parents: 91327
diff changeset
1152 must be adjusted after the conversion. */
347746964570 (struct Lisp_Marker): New member need_adjustment.
Kenichi Handa <handa@m17n.org>
parents: 91327
diff changeset
1153 unsigned int need_adjustment : 1;
12890
2a1edeeb13fb (struct Lisp_Marker): Make insertion_type an unsigned int.
Richard M. Stallman <rms@gnu.org>
parents: 12731
diff changeset
1154 /* 1 means normal insertion at the marker's position
2a1edeeb13fb (struct Lisp_Marker): Make insertion_type an unsigned int.
Richard M. Stallman <rms@gnu.org>
parents: 12731
diff changeset
1155 leaves the marker after the inserted text. */
2a1edeeb13fb (struct Lisp_Marker): Make insertion_type an unsigned int.
Richard M. Stallman <rms@gnu.org>
parents: 12731
diff changeset
1156 unsigned int insertion_type : 1;
84979
79d85dce25a5 (DECL_ALIGN, USE_LSB_TAG): Move logic to before definition of
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 84804
diff changeset
1157 /* This is the buffer that the marker points into, or 0 if it points nowhere.
79d85dce25a5 (DECL_ALIGN, USE_LSB_TAG): Move logic to before definition of
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 84804
diff changeset
1158 Note: a chain of markers can contain markers pointing into different
79d85dce25a5 (DECL_ALIGN, USE_LSB_TAG): Move logic to before definition of
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 84804
diff changeset
1159 buffers (the chain is per buffer_text rather than per buffer, so it's
79d85dce25a5 (DECL_ALIGN, USE_LSB_TAG): Move logic to before definition of
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 84804
diff changeset
1160 shared between indirect buffers). */
79d85dce25a5 (DECL_ALIGN, USE_LSB_TAG): Move logic to before definition of
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 84804
diff changeset
1161 /* This is used for (other than NULL-checking):
79d85dce25a5 (DECL_ALIGN, USE_LSB_TAG): Move logic to before definition of
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 84804
diff changeset
1162 - Fmarker_buffer
79d85dce25a5 (DECL_ALIGN, USE_LSB_TAG): Move logic to before definition of
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 84804
diff changeset
1163 - Fset_marker: check eq(oldbuf, newbuf) to avoid unchain+rechain.
79d85dce25a5 (DECL_ALIGN, USE_LSB_TAG): Move logic to before definition of
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 84804
diff changeset
1164 - unchain_marker: to find the list from which to unchain.
79d85dce25a5 (DECL_ALIGN, USE_LSB_TAG): Move logic to before definition of
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 84804
diff changeset
1165 - Fkill_buffer: to unchain the markers of current indirect buffer.
79d85dce25a5 (DECL_ALIGN, USE_LSB_TAG): Move logic to before definition of
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 84804
diff changeset
1166 */
12890
2a1edeeb13fb (struct Lisp_Marker): Make insertion_type an unsigned int.
Richard M. Stallman <rms@gnu.org>
parents: 12731
diff changeset
1167 struct buffer *buffer;
20559
38941faa1564 (struct Lisp_Marker): New field `charpos'.
Richard M. Stallman <rms@gnu.org>
parents: 20499
diff changeset
1168
38941faa1564 (struct Lisp_Marker): New field `charpos'.
Richard M. Stallman <rms@gnu.org>
parents: 20499
diff changeset
1169 /* The remaining fields are meaningless in a marker that
38941faa1564 (struct Lisp_Marker): New field `charpos'.
Richard M. Stallman <rms@gnu.org>
parents: 20499
diff changeset
1170 does not point anywhere. */
38941faa1564 (struct Lisp_Marker): New field `charpos'.
Richard M. Stallman <rms@gnu.org>
parents: 20499
diff changeset
1171
38941faa1564 (struct Lisp_Marker): New field `charpos'.
Richard M. Stallman <rms@gnu.org>
parents: 20499
diff changeset
1172 /* For markers that point somewhere,
38941faa1564 (struct Lisp_Marker): New field `charpos'.
Richard M. Stallman <rms@gnu.org>
parents: 20499
diff changeset
1173 this is used to chain of all the markers in a given buffer. */
85011
1d35aa875508 * buffer.c (syms_of_buffer) <local-abbrev-table>: Move from abbrev.c.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 84979
diff changeset
1174 /* We could remove it and use an array in buffer_text instead.
1d35aa875508 * buffer.c (syms_of_buffer) <local-abbrev-table>: Move from abbrev.c.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 84979
diff changeset
1175 That would also allow to preserve it ordered. */
51666
7181f5ced81c (unchain_marker): Lisp_Object arg => Lisp_Marker.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51657
diff changeset
1176 struct Lisp_Marker *next;
20559
38941faa1564 (struct Lisp_Marker): New field `charpos'.
Richard M. Stallman <rms@gnu.org>
parents: 20499
diff changeset
1177 /* This is the char position where the marker points. */
51858
bf6232373c39 (VALBITS): Define in terms of GCTYPEBITS.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51833
diff changeset
1178 EMACS_INT charpos;
20569
d8013f2236a0 (struct Lisp_Marker): Rename `bufpos' to `bytepos'.
Richard M. Stallman <rms@gnu.org>
parents: 20559
diff changeset
1179 /* This is the byte position. */
51858
bf6232373c39 (VALBITS): Define in terms of GCTYPEBITS.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51833
diff changeset
1180 EMACS_INT bytepos;
12890
2a1edeeb13fb (struct Lisp_Marker): Make insertion_type an unsigned int.
Richard M. Stallman <rms@gnu.org>
parents: 12731
diff changeset
1181 };
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1182
9462
3601bf7327b2 (enum Lisp_Misc_Type): Add new enumerations Lisp_Misc_Intfwd,
Karl Heuer <kwzh@gnu.org>
parents: 9435
diff changeset
1183 /* Forwarding pointer to an int variable.
3601bf7327b2 (enum Lisp_Misc_Type): Add new enumerations Lisp_Misc_Intfwd,
Karl Heuer <kwzh@gnu.org>
parents: 9435
diff changeset
1184 This is allowed only in the value cell of a symbol,
3601bf7327b2 (enum Lisp_Misc_Type): Add new enumerations Lisp_Misc_Intfwd,
Karl Heuer <kwzh@gnu.org>
parents: 9435
diff changeset
1185 and it means that the symbol's value really lives in the
3601bf7327b2 (enum Lisp_Misc_Type): Add new enumerations Lisp_Misc_Intfwd,
Karl Heuer <kwzh@gnu.org>
parents: 9435
diff changeset
1186 specified int variable. */
3601bf7327b2 (enum Lisp_Misc_Type): Add new enumerations Lisp_Misc_Intfwd,
Karl Heuer <kwzh@gnu.org>
parents: 9435
diff changeset
1187 struct Lisp_Intfwd
3601bf7327b2 (enum Lisp_Misc_Type): Add new enumerations Lisp_Misc_Intfwd,
Karl Heuer <kwzh@gnu.org>
parents: 9435
diff changeset
1188 {
10387
40988c371fca (struct Lisp_Free, struct Lisp_Marker, etc.):
Richard M. Stallman <rms@gnu.org>
parents: 10339
diff changeset
1189 int type : 16; /* = Lisp_Misc_Intfwd */
51657
7fb427e8d984 (struct interval, struct Lisp_Symbol, struct Lisp_Free)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51167
diff changeset
1190 unsigned gcmarkbit : 1;
7fb427e8d984 (struct interval, struct Lisp_Symbol, struct Lisp_Free)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51167
diff changeset
1191 int spacer : 15;
43713
f92c4d87863a Change defvar_int def and vars to use EMACS_INT instead of just int.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43699
diff changeset
1192 EMACS_INT *intvar;
9462
3601bf7327b2 (enum Lisp_Misc_Type): Add new enumerations Lisp_Misc_Intfwd,
Karl Heuer <kwzh@gnu.org>
parents: 9435
diff changeset
1193 };
3601bf7327b2 (enum Lisp_Misc_Type): Add new enumerations Lisp_Misc_Intfwd,
Karl Heuer <kwzh@gnu.org>
parents: 9435
diff changeset
1194
3601bf7327b2 (enum Lisp_Misc_Type): Add new enumerations Lisp_Misc_Intfwd,
Karl Heuer <kwzh@gnu.org>
parents: 9435
diff changeset
1195 /* Boolean forwarding pointer to an int variable.
3601bf7327b2 (enum Lisp_Misc_Type): Add new enumerations Lisp_Misc_Intfwd,
Karl Heuer <kwzh@gnu.org>
parents: 9435
diff changeset
1196 This is like Lisp_Intfwd except that the ostensible
3601bf7327b2 (enum Lisp_Misc_Type): Add new enumerations Lisp_Misc_Intfwd,
Karl Heuer <kwzh@gnu.org>
parents: 9435
diff changeset
1197 "value" of the symbol is t if the int variable is nonzero,
3601bf7327b2 (enum Lisp_Misc_Type): Add new enumerations Lisp_Misc_Intfwd,
Karl Heuer <kwzh@gnu.org>
parents: 9435
diff changeset
1198 nil if it is zero. */
3601bf7327b2 (enum Lisp_Misc_Type): Add new enumerations Lisp_Misc_Intfwd,
Karl Heuer <kwzh@gnu.org>
parents: 9435
diff changeset
1199 struct Lisp_Boolfwd
9435
3a157cdf395c (Lisp_Misc): new type code, replacing Lisp_Marker (and soon to replace other
Karl Heuer <kwzh@gnu.org>
parents: 9392
diff changeset
1200 {
10387
40988c371fca (struct Lisp_Free, struct Lisp_Marker, etc.):
Richard M. Stallman <rms@gnu.org>
parents: 10339
diff changeset
1201 int type : 16; /* = Lisp_Misc_Boolfwd */
51657
7fb427e8d984 (struct interval, struct Lisp_Symbol, struct Lisp_Free)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51167
diff changeset
1202 unsigned gcmarkbit : 1;
7fb427e8d984 (struct interval, struct Lisp_Symbol, struct Lisp_Free)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51167
diff changeset
1203 int spacer : 15;
9462
3601bf7327b2 (enum Lisp_Misc_Type): Add new enumerations Lisp_Misc_Intfwd,
Karl Heuer <kwzh@gnu.org>
parents: 9435
diff changeset
1204 int *boolvar;
3601bf7327b2 (enum Lisp_Misc_Type): Add new enumerations Lisp_Misc_Intfwd,
Karl Heuer <kwzh@gnu.org>
parents: 9435
diff changeset
1205 };
3601bf7327b2 (enum Lisp_Misc_Type): Add new enumerations Lisp_Misc_Intfwd,
Karl Heuer <kwzh@gnu.org>
parents: 9435
diff changeset
1206
3601bf7327b2 (enum Lisp_Misc_Type): Add new enumerations Lisp_Misc_Intfwd,
Karl Heuer <kwzh@gnu.org>
parents: 9435
diff changeset
1207 /* Forwarding pointer to a Lisp_Object variable.
3601bf7327b2 (enum Lisp_Misc_Type): Add new enumerations Lisp_Misc_Intfwd,
Karl Heuer <kwzh@gnu.org>
parents: 9435
diff changeset
1208 This is allowed only in the value cell of a symbol,
3601bf7327b2 (enum Lisp_Misc_Type): Add new enumerations Lisp_Misc_Intfwd,
Karl Heuer <kwzh@gnu.org>
parents: 9435
diff changeset
1209 and it means that the symbol's value really lives in the
3601bf7327b2 (enum Lisp_Misc_Type): Add new enumerations Lisp_Misc_Intfwd,
Karl Heuer <kwzh@gnu.org>
parents: 9435
diff changeset
1210 specified variable. */
3601bf7327b2 (enum Lisp_Misc_Type): Add new enumerations Lisp_Misc_Intfwd,
Karl Heuer <kwzh@gnu.org>
parents: 9435
diff changeset
1211 struct Lisp_Objfwd
3601bf7327b2 (enum Lisp_Misc_Type): Add new enumerations Lisp_Misc_Intfwd,
Karl Heuer <kwzh@gnu.org>
parents: 9435
diff changeset
1212 {
10387
40988c371fca (struct Lisp_Free, struct Lisp_Marker, etc.):
Richard M. Stallman <rms@gnu.org>
parents: 10339
diff changeset
1213 int type : 16; /* = Lisp_Misc_Objfwd */
51657
7fb427e8d984 (struct interval, struct Lisp_Symbol, struct Lisp_Free)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51167
diff changeset
1214 unsigned gcmarkbit : 1;
7fb427e8d984 (struct interval, struct Lisp_Symbol, struct Lisp_Free)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51167
diff changeset
1215 int spacer : 15;
9462
3601bf7327b2 (enum Lisp_Misc_Type): Add new enumerations Lisp_Misc_Intfwd,
Karl Heuer <kwzh@gnu.org>
parents: 9435
diff changeset
1216 Lisp_Object *objvar;
3601bf7327b2 (enum Lisp_Misc_Type): Add new enumerations Lisp_Misc_Intfwd,
Karl Heuer <kwzh@gnu.org>
parents: 9435
diff changeset
1217 };
3601bf7327b2 (enum Lisp_Misc_Type): Add new enumerations Lisp_Misc_Intfwd,
Karl Heuer <kwzh@gnu.org>
parents: 9435
diff changeset
1218
3601bf7327b2 (enum Lisp_Misc_Type): Add new enumerations Lisp_Misc_Intfwd,
Karl Heuer <kwzh@gnu.org>
parents: 9435
diff changeset
1219 /* Like Lisp_Objfwd except that value lives in a slot in the
3601bf7327b2 (enum Lisp_Misc_Type): Add new enumerations Lisp_Misc_Intfwd,
Karl Heuer <kwzh@gnu.org>
parents: 9435
diff changeset
1220 current buffer. Value is byte index of slot within buffer. */
3601bf7327b2 (enum Lisp_Misc_Type): Add new enumerations Lisp_Misc_Intfwd,
Karl Heuer <kwzh@gnu.org>
parents: 9435
diff changeset
1221 struct Lisp_Buffer_Objfwd
3601bf7327b2 (enum Lisp_Misc_Type): Add new enumerations Lisp_Misc_Intfwd,
Karl Heuer <kwzh@gnu.org>
parents: 9435
diff changeset
1222 {
10387
40988c371fca (struct Lisp_Free, struct Lisp_Marker, etc.):
Richard M. Stallman <rms@gnu.org>
parents: 10339
diff changeset
1223 int type : 16; /* = Lisp_Misc_Buffer_Objfwd */
51657
7fb427e8d984 (struct interval, struct Lisp_Symbol, struct Lisp_Free)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51167
diff changeset
1224 unsigned gcmarkbit : 1;
7fb427e8d984 (struct interval, struct Lisp_Symbol, struct Lisp_Free)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51167
diff changeset
1225 int spacer : 15;
86285
59344cb482f3 * lisp.h (struct Lisp_Buffer_Objfwd): Add a `slottype' field.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 86163
diff changeset
1226 Lisp_Object slottype; /* Qnil, Lisp_Int, Lisp_Symbol, or Lisp_String. */
9462
3601bf7327b2 (enum Lisp_Misc_Type): Add new enumerations Lisp_Misc_Intfwd,
Karl Heuer <kwzh@gnu.org>
parents: 9435
diff changeset
1227 int offset;
9435
3a157cdf395c (Lisp_Misc): new type code, replacing Lisp_Marker (and soon to replace other
Karl Heuer <kwzh@gnu.org>
parents: 9392
diff changeset
1228 };
3a157cdf395c (Lisp_Misc): new type code, replacing Lisp_Marker (and soon to replace other
Karl Heuer <kwzh@gnu.org>
parents: 9392
diff changeset
1229
27779
ed42dbf64a61 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 27741
diff changeset
1230 /* struct Lisp_Buffer_Local_Value is used in a symbol value cell when
ed42dbf64a61 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 27741
diff changeset
1231 the symbol has buffer-local or frame-local bindings. (Exception:
ed42dbf64a61 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 27741
diff changeset
1232 some buffer-local variables are built-in, with their values stored
ed42dbf64a61 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 27741
diff changeset
1233 in the buffer structure itself. They are handled differently,
ed42dbf64a61 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 27741
diff changeset
1234 using struct Lisp_Buffer_Objfwd.)
ed42dbf64a61 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 27741
diff changeset
1235
ed42dbf64a61 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 27741
diff changeset
1236 The `realvalue' slot holds the variable's current value, or a
ed42dbf64a61 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 27741
diff changeset
1237 forwarding pointer to where that value is kept. This value is the
ed42dbf64a61 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 27741
diff changeset
1238 one that corresponds to the loaded binding. To read or set the
ed42dbf64a61 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 27741
diff changeset
1239 variable, you must first make sure the right binding is loaded;
ed42dbf64a61 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 27741
diff changeset
1240 then you can access the value in (or through) `realvalue'.
45623
0e92d219e195 (current_column): Now returns float.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 45545
diff changeset
1241
27779
ed42dbf64a61 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 27741
diff changeset
1242 `buffer' and `frame' are the buffer and frame for which the loaded
ed42dbf64a61 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 27741
diff changeset
1243 binding was found. If those have changed, to make sure the right
ed42dbf64a61 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 27741
diff changeset
1244 binding is loaded it is necessary to find which binding goes with
ed42dbf64a61 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 27741
diff changeset
1245 the current buffer and selected frame, then load it. To load it,
ed42dbf64a61 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 27741
diff changeset
1246 first unload the previous binding, then copy the value of the new
ed42dbf64a61 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 27741
diff changeset
1247 binding into `realvalue' (or through it). Also update
ed42dbf64a61 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 27741
diff changeset
1248 LOADED-BINDING to point to the newly loaded binding.
9891
f4a53f86853d (enum Lisp_Misc_Type): Add new enumerations Lisp_Misc_Buffer_Local_Value and
Karl Heuer <kwzh@gnu.org>
parents: 9885
diff changeset
1249
85328
d0d527210b0c * lisp.h (enum Lisp_Misc_Type): Del Lisp_Misc_Some_Buffer_Local_Value.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85250
diff changeset
1250 `local_if_set' indicates that merely setting the variable creates a local
d0d527210b0c * lisp.h (enum Lisp_Misc_Type): Del Lisp_Misc_Some_Buffer_Local_Value.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85250
diff changeset
1251 binding for the current buffer. Otherwise the latter, setting the
d0d527210b0c * lisp.h (enum Lisp_Misc_Type): Del Lisp_Misc_Some_Buffer_Local_Value.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85250
diff changeset
1252 variable does not do that; only make-local-variable does that. */
27779
ed42dbf64a61 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 27741
diff changeset
1253
9891
f4a53f86853d (enum Lisp_Misc_Type): Add new enumerations Lisp_Misc_Buffer_Local_Value and
Karl Heuer <kwzh@gnu.org>
parents: 9885
diff changeset
1254 struct Lisp_Buffer_Local_Value
f4a53f86853d (enum Lisp_Misc_Type): Add new enumerations Lisp_Misc_Buffer_Local_Value and
Karl Heuer <kwzh@gnu.org>
parents: 9885
diff changeset
1255 {
85328
d0d527210b0c * lisp.h (enum Lisp_Misc_Type): Del Lisp_Misc_Some_Buffer_Local_Value.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85250
diff changeset
1256 int type : 16; /* = Lisp_Misc_Buffer_Local_Value */
51657
7fb427e8d984 (struct interval, struct Lisp_Symbol, struct Lisp_Free)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51167
diff changeset
1257 unsigned gcmarkbit : 1;
85328
d0d527210b0c * lisp.h (enum Lisp_Misc_Type): Del Lisp_Misc_Some_Buffer_Local_Value.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85250
diff changeset
1258 int spacer : 11;
d0d527210b0c * lisp.h (enum Lisp_Misc_Type): Del Lisp_Misc_Some_Buffer_Local_Value.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85250
diff changeset
1259
d0d527210b0c * lisp.h (enum Lisp_Misc_Type): Del Lisp_Misc_Some_Buffer_Local_Value.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85250
diff changeset
1260 /* 1 means that merely setting the variable creates a local
d0d527210b0c * lisp.h (enum Lisp_Misc_Type): Del Lisp_Misc_Some_Buffer_Local_Value.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85250
diff changeset
1261 binding for the current buffer */
d0d527210b0c * lisp.h (enum Lisp_Misc_Type): Del Lisp_Misc_Some_Buffer_Local_Value.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85250
diff changeset
1262 unsigned int local_if_set : 1;
27779
ed42dbf64a61 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 27741
diff changeset
1263 /* 1 means this variable is allowed to have frame-local bindings,
ed42dbf64a61 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 27741
diff changeset
1264 so check for them when looking for the proper binding. */
21147
81b02a3ea5e0 (struct Lisp_Buffer_Local_Value):
Richard M. Stallman <rms@gnu.org>
parents: 21038
diff changeset
1265 unsigned int check_frame : 1;
27779
ed42dbf64a61 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 27741
diff changeset
1266 /* 1 means that the binding now loaded was found
ed42dbf64a61 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 27741
diff changeset
1267 as a local binding for the buffer in the `buffer' slot. */
21147
81b02a3ea5e0 (struct Lisp_Buffer_Local_Value):
Richard M. Stallman <rms@gnu.org>
parents: 21038
diff changeset
1268 unsigned int found_for_buffer : 1;
27779
ed42dbf64a61 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 27741
diff changeset
1269 /* 1 means that the binding now loaded was found
ed42dbf64a61 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 27741
diff changeset
1270 as a local binding for the frame in the `frame' slot. */
21147
81b02a3ea5e0 (struct Lisp_Buffer_Local_Value):
Richard M. Stallman <rms@gnu.org>
parents: 21038
diff changeset
1271 unsigned int found_for_frame : 1;
81b02a3ea5e0 (struct Lisp_Buffer_Local_Value):
Richard M. Stallman <rms@gnu.org>
parents: 21038
diff changeset
1272 Lisp_Object realvalue;
27779
ed42dbf64a61 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 27741
diff changeset
1273 /* The buffer and frame for which the loaded binding was found. */
85011
1d35aa875508 * buffer.c (syms_of_buffer) <local-abbrev-table>: Move from abbrev.c.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 84979
diff changeset
1274 /* Having both is only needed if we want to allow variables that are
1d35aa875508 * buffer.c (syms_of_buffer) <local-abbrev-table>: Move from abbrev.c.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 84979
diff changeset
1275 both buffer local and frame local (in which case, we currently give
1d35aa875508 * buffer.c (syms_of_buffer) <local-abbrev-table>: Move from abbrev.c.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 84979
diff changeset
1276 precedence to the buffer-local binding). I don't think such
1d35aa875508 * buffer.c (syms_of_buffer) <local-abbrev-table>: Move from abbrev.c.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 84979
diff changeset
1277 a combination is desirable. --Stef */
21147
81b02a3ea5e0 (struct Lisp_Buffer_Local_Value):
Richard M. Stallman <rms@gnu.org>
parents: 21038
diff changeset
1278 Lisp_Object buffer, frame;
27779
ed42dbf64a61 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 27741
diff changeset
1279
ed42dbf64a61 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 27741
diff changeset
1280 /* A cons cell, (LOADED-BINDING . DEFAULT-VALUE).
ed42dbf64a61 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 27741
diff changeset
1281
ed42dbf64a61 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 27741
diff changeset
1282 LOADED-BINDING is the binding now loaded. It is a cons cell
ed42dbf64a61 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 27741
diff changeset
1283 whose cdr is the binding's value. The cons cell may be an
ed42dbf64a61 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 27741
diff changeset
1284 element of a buffer's local-variable alist, or an element of a
ed42dbf64a61 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 27741
diff changeset
1285 frame's parameter alist, or it may be this cons cell.
ed42dbf64a61 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 27741
diff changeset
1286
ed42dbf64a61 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 27741
diff changeset
1287 DEFAULT-VALUE is the variable's default value, seen when the
ed42dbf64a61 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 27741
diff changeset
1288 current buffer and selected frame do not have their own
ed42dbf64a61 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 27741
diff changeset
1289 bindings for the variable. When the default binding is loaded,
ed42dbf64a61 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 27741
diff changeset
1290 LOADED-BINDING is actually this very cons cell; thus, its car
ed42dbf64a61 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 27741
diff changeset
1291 points to itself. */
21147
81b02a3ea5e0 (struct Lisp_Buffer_Local_Value):
Richard M. Stallman <rms@gnu.org>
parents: 21038
diff changeset
1292 Lisp_Object cdr;
9891
f4a53f86853d (enum Lisp_Misc_Type): Add new enumerations Lisp_Misc_Buffer_Local_Value and
Karl Heuer <kwzh@gnu.org>
parents: 9885
diff changeset
1293 };
f4a53f86853d (enum Lisp_Misc_Type): Add new enumerations Lisp_Misc_Buffer_Local_Value and
Karl Heuer <kwzh@gnu.org>
parents: 9885
diff changeset
1294
51858
bf6232373c39 (VALBITS): Define in terms of GCTYPEBITS.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51833
diff changeset
1295 /* START and END are markers in the overlay's buffer, and
9924
594e838f4567 (enum Lisp_Misc_Type): Add new enumeration Lisp_Misc_Overlay.
Karl Heuer <kwzh@gnu.org>
parents: 9904
diff changeset
1296 PLIST is the overlay's property list. */
594e838f4567 (enum Lisp_Misc_Type): Add new enumeration Lisp_Misc_Overlay.
Karl Heuer <kwzh@gnu.org>
parents: 9904
diff changeset
1297 struct Lisp_Overlay
594e838f4567 (enum Lisp_Misc_Type): Add new enumeration Lisp_Misc_Overlay.
Karl Heuer <kwzh@gnu.org>
parents: 9904
diff changeset
1298 {
91727
b2df1fe6ce6d (struct Lisp_Misc_Any, struct Lisp_Marker)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 91720
diff changeset
1299 enum Lisp_Misc_Type type : 16; /* = Lisp_Misc_Overlay */
51657
7fb427e8d984 (struct interval, struct Lisp_Symbol, struct Lisp_Free)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51167
diff changeset
1300 unsigned gcmarkbit : 1;
7fb427e8d984 (struct interval, struct Lisp_Symbol, struct Lisp_Free)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51167
diff changeset
1301 int spacer : 15;
51833
a52679a2aae5 (struct Lisp_Overlay): New field `next'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51772
diff changeset
1302 struct Lisp_Overlay *next;
9924
594e838f4567 (enum Lisp_Misc_Type): Add new enumeration Lisp_Misc_Overlay.
Karl Heuer <kwzh@gnu.org>
parents: 9904
diff changeset
1303 Lisp_Object start, end, plist;
594e838f4567 (enum Lisp_Misc_Type): Add new enumeration Lisp_Misc_Overlay.
Karl Heuer <kwzh@gnu.org>
parents: 9904
diff changeset
1304 };
10387
40988c371fca (struct Lisp_Free, struct Lisp_Marker, etc.):
Richard M. Stallman <rms@gnu.org>
parents: 10339
diff changeset
1305
10580
09fcb080e537 (enum Lisp_Misc_Type): New enumeration Lisp_Misc_Display_Local.
Karl Heuer <kwzh@gnu.org>
parents: 10578
diff changeset
1306 /* Like Lisp_Objfwd except that value lives in a slot in the
11012
31d88266ed12 (struct KBOARD, MULTI_KBOARD, current_kboard, all_kboards,
Karl Heuer <kwzh@gnu.org>
parents: 10944
diff changeset
1307 current kboard. */
31d88266ed12 (struct KBOARD, MULTI_KBOARD, current_kboard, all_kboards,
Karl Heuer <kwzh@gnu.org>
parents: 10944
diff changeset
1308 struct Lisp_Kboard_Objfwd
10580
09fcb080e537 (enum Lisp_Misc_Type): New enumeration Lisp_Misc_Display_Local.
Karl Heuer <kwzh@gnu.org>
parents: 10578
diff changeset
1309 {
91727
b2df1fe6ce6d (struct Lisp_Misc_Any, struct Lisp_Marker)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 91720
diff changeset
1310 enum Lisp_Misc_Type type : 16; /* = Lisp_Misc_Kboard_Objfwd */
51657
7fb427e8d984 (struct interval, struct Lisp_Symbol, struct Lisp_Free)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51167
diff changeset
1311 unsigned gcmarkbit : 1;
7fb427e8d984 (struct interval, struct Lisp_Symbol, struct Lisp_Free)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51167
diff changeset
1312 int spacer : 15;
10580
09fcb080e537 (enum Lisp_Misc_Type): New enumeration Lisp_Misc_Display_Local.
Karl Heuer <kwzh@gnu.org>
parents: 10578
diff changeset
1313 int offset;
09fcb080e537 (enum Lisp_Misc_Type): New enumeration Lisp_Misc_Display_Local.
Karl Heuer <kwzh@gnu.org>
parents: 10578
diff changeset
1314 };
09fcb080e537 (enum Lisp_Misc_Type): New enumeration Lisp_Misc_Display_Local.
Karl Heuer <kwzh@gnu.org>
parents: 10578
diff changeset
1315
49056
88f14a14e005 New misc type Lisp_Save_Value.
Richard M. Stallman <rms@gnu.org>
parents: 48540
diff changeset
1316 /* Hold a C pointer for later use.
88f14a14e005 New misc type Lisp_Save_Value.
Richard M. Stallman <rms@gnu.org>
parents: 48540
diff changeset
1317 This type of object is used in the arg to record_unwind_protect. */
88f14a14e005 New misc type Lisp_Save_Value.
Richard M. Stallman <rms@gnu.org>
parents: 48540
diff changeset
1318 struct Lisp_Save_Value
88f14a14e005 New misc type Lisp_Save_Value.
Richard M. Stallman <rms@gnu.org>
parents: 48540
diff changeset
1319 {
91727
b2df1fe6ce6d (struct Lisp_Misc_Any, struct Lisp_Marker)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 91720
diff changeset
1320 enum Lisp_Misc_Type type : 16; /* = Lisp_Misc_Save_Value */
51657
7fb427e8d984 (struct interval, struct Lisp_Symbol, struct Lisp_Free)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51167
diff changeset
1321 unsigned gcmarkbit : 1;
56204
d79e58a67b48 (struct Lisp_Save_Value): New member dogc.
Kim F. Storm <storm@cua.dk>
parents: 56198
diff changeset
1322 int spacer : 14;
d79e58a67b48 (struct Lisp_Save_Value): New member dogc.
Kim F. Storm <storm@cua.dk>
parents: 56198
diff changeset
1323 /* If DOGC is set, POINTER is the address of a memory
d79e58a67b48 (struct Lisp_Save_Value): New member dogc.
Kim F. Storm <storm@cua.dk>
parents: 56198
diff changeset
1324 area containing INTEGER potential Lisp_Objects. */
d79e58a67b48 (struct Lisp_Save_Value): New member dogc.
Kim F. Storm <storm@cua.dk>
parents: 56198
diff changeset
1325 unsigned int dogc : 1;
49056
88f14a14e005 New misc type Lisp_Save_Value.
Richard M. Stallman <rms@gnu.org>
parents: 48540
diff changeset
1326 void *pointer;
88f14a14e005 New misc type Lisp_Save_Value.
Richard M. Stallman <rms@gnu.org>
parents: 48540
diff changeset
1327 int integer;
88f14a14e005 New misc type Lisp_Save_Value.
Richard M. Stallman <rms@gnu.org>
parents: 48540
diff changeset
1328 };
88f14a14e005 New misc type Lisp_Save_Value.
Richard M. Stallman <rms@gnu.org>
parents: 48540
diff changeset
1329
10387
40988c371fca (struct Lisp_Free, struct Lisp_Marker, etc.):
Richard M. Stallman <rms@gnu.org>
parents: 10339
diff changeset
1330
53088
63a8b584e971 (VALMASK): Only define for non-union type.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53001
diff changeset
1331 /* A miscellaneous object, when it's on the free list. */
63a8b584e971 (VALMASK): Only define for non-union type.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53001
diff changeset
1332 struct Lisp_Free
63a8b584e971 (VALMASK): Only define for non-union type.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53001
diff changeset
1333 {
91727
b2df1fe6ce6d (struct Lisp_Misc_Any, struct Lisp_Marker)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 91720
diff changeset
1334 enum Lisp_Misc_Type type : 16; /* = Lisp_Misc_Free */
53088
63a8b584e971 (VALMASK): Only define for non-union type.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53001
diff changeset
1335 unsigned gcmarkbit : 1;
63a8b584e971 (VALMASK): Only define for non-union type.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53001
diff changeset
1336 int spacer : 15;
63a8b584e971 (VALMASK): Only define for non-union type.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53001
diff changeset
1337 union Lisp_Misc *chain;
53654
8dc805af6250 [USE_LSB_TAG]: Add definitions for Lisp_Object value
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53653
diff changeset
1338 #ifdef USE_LSB_TAG
8dc805af6250 [USE_LSB_TAG]: Add definitions for Lisp_Object value
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53653
diff changeset
1339 /* Try to make sure that sizeof(Lisp_Misc) preserves TYPEBITS-alignment.
8dc805af6250 [USE_LSB_TAG]: Add definitions for Lisp_Object value
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53653
diff changeset
1340 This assumes that Lisp_Marker is the largest of the alternatives and
8dc805af6250 [USE_LSB_TAG]: Add definitions for Lisp_Object value
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53653
diff changeset
1341 that Lisp_Intfwd has the same size as "Lisp_Free w/o padding". */
8dc805af6250 [USE_LSB_TAG]: Add definitions for Lisp_Object value
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53653
diff changeset
1342 char padding[((((sizeof (struct Lisp_Marker) - 1) >> GCTYPEBITS) + 1)
8dc805af6250 [USE_LSB_TAG]: Add definitions for Lisp_Object value
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53653
diff changeset
1343 << GCTYPEBITS) - sizeof (struct Lisp_Intfwd)];
8dc805af6250 [USE_LSB_TAG]: Add definitions for Lisp_Object value
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53653
diff changeset
1344 #endif
53088
63a8b584e971 (VALMASK): Only define for non-union type.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53001
diff changeset
1345 };
63a8b584e971 (VALMASK): Only define for non-union type.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53001
diff changeset
1346
11335
78eda0ee4cba (XMISCTYPE): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 11204
diff changeset
1347 /* To get the type field of a union Lisp_Misc, use XMISCTYPE.
78eda0ee4cba (XMISCTYPE): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 11204
diff changeset
1348 It uses one of these struct subtypes to get the type field. */
78eda0ee4cba (XMISCTYPE): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 11204
diff changeset
1349
9435
3a157cdf395c (Lisp_Misc): new type code, replacing Lisp_Marker (and soon to replace other
Karl Heuer <kwzh@gnu.org>
parents: 9392
diff changeset
1350 union Lisp_Misc
3a157cdf395c (Lisp_Misc): new type code, replacing Lisp_Marker (and soon to replace other
Karl Heuer <kwzh@gnu.org>
parents: 9392
diff changeset
1351 {
85328
d0d527210b0c * lisp.h (enum Lisp_Misc_Type): Del Lisp_Misc_Some_Buffer_Local_Value.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85250
diff changeset
1352 struct Lisp_Misc_Any u_any; /* Supertype of all Misc types. */
d0d527210b0c * lisp.h (enum Lisp_Misc_Type): Del Lisp_Misc_Some_Buffer_Local_Value.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85250
diff changeset
1353 struct Lisp_Free u_free; /* Includes padding to force alignment. */
9435
3a157cdf395c (Lisp_Misc): new type code, replacing Lisp_Marker (and soon to replace other
Karl Heuer <kwzh@gnu.org>
parents: 9392
diff changeset
1354 struct Lisp_Marker u_marker;
9462
3601bf7327b2 (enum Lisp_Misc_Type): Add new enumerations Lisp_Misc_Intfwd,
Karl Heuer <kwzh@gnu.org>
parents: 9435
diff changeset
1355 struct Lisp_Intfwd u_intfwd;
3601bf7327b2 (enum Lisp_Misc_Type): Add new enumerations Lisp_Misc_Intfwd,
Karl Heuer <kwzh@gnu.org>
parents: 9435
diff changeset
1356 struct Lisp_Boolfwd u_boolfwd;
3601bf7327b2 (enum Lisp_Misc_Type): Add new enumerations Lisp_Misc_Intfwd,
Karl Heuer <kwzh@gnu.org>
parents: 9435
diff changeset
1357 struct Lisp_Objfwd u_objfwd;
3601bf7327b2 (enum Lisp_Misc_Type): Add new enumerations Lisp_Misc_Intfwd,
Karl Heuer <kwzh@gnu.org>
parents: 9435
diff changeset
1358 struct Lisp_Buffer_Objfwd u_buffer_objfwd;
9891
f4a53f86853d (enum Lisp_Misc_Type): Add new enumerations Lisp_Misc_Buffer_Local_Value and
Karl Heuer <kwzh@gnu.org>
parents: 9885
diff changeset
1359 struct Lisp_Buffer_Local_Value u_buffer_local_value;
9924
594e838f4567 (enum Lisp_Misc_Type): Add new enumeration Lisp_Misc_Overlay.
Karl Heuer <kwzh@gnu.org>
parents: 9904
diff changeset
1360 struct Lisp_Overlay u_overlay;
11012
31d88266ed12 (struct KBOARD, MULTI_KBOARD, current_kboard, all_kboards,
Karl Heuer <kwzh@gnu.org>
parents: 10944
diff changeset
1361 struct Lisp_Kboard_Objfwd u_kboard_objfwd;
49056
88f14a14e005 New misc type Lisp_Save_Value.
Richard M. Stallman <rms@gnu.org>
parents: 48540
diff changeset
1362 struct Lisp_Save_Value u_save_value;
9435
3a157cdf395c (Lisp_Misc): new type code, replacing Lisp_Marker (and soon to replace other
Karl Heuer <kwzh@gnu.org>
parents: 9392
diff changeset
1363 };
10292
c467ec24a6bd (VALBITS): Default now 28.
Richard M. Stallman <rms@gnu.org>
parents: 10247
diff changeset
1364
27727
9400865ec7cf Remove `LISP_FLOAT_TYPE' and `standalone'.
Gerd Moellmann <gerd@gnu.org>
parents: 27427
diff changeset
1365 /* Lisp floating point type */
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1366 struct Lisp_Float
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1367 {
66888
b991cdef1a8d (struct Lisp_Cons): Make cdr a union.
Andreas Schwab <schwab@suse.de>
parents: 66778
diff changeset
1368 union
b991cdef1a8d (struct Lisp_Cons): Make cdr a union.
Andreas Schwab <schwab@suse.de>
parents: 66778
diff changeset
1369 {
25421
65a7e9c02d4f (struct Lisp_Cons, XCAR, XCDR, struct Lisp_Float): Change names of structure
Ken Raeburn <raeburn@raeburn.org>
parents: 25392
diff changeset
1370 #ifdef HIDE_LISP_IMPLEMENTATION
66888
b991cdef1a8d (struct Lisp_Cons): Make cdr a union.
Andreas Schwab <schwab@suse.de>
parents: 66778
diff changeset
1371 double data_;
25421
65a7e9c02d4f (struct Lisp_Cons, XCAR, XCDR, struct Lisp_Float): Change names of structure
Ken Raeburn <raeburn@raeburn.org>
parents: 25392
diff changeset
1372 #else
66888
b991cdef1a8d (struct Lisp_Cons): Make cdr a union.
Andreas Schwab <schwab@suse.de>
parents: 66778
diff changeset
1373 double data;
25421
65a7e9c02d4f (struct Lisp_Cons, XCAR, XCDR, struct Lisp_Float): Change names of structure
Ken Raeburn <raeburn@raeburn.org>
parents: 25392
diff changeset
1374 #endif
66888
b991cdef1a8d (struct Lisp_Cons): Make cdr a union.
Andreas Schwab <schwab@suse.de>
parents: 66778
diff changeset
1375 struct Lisp_Float *chain;
b991cdef1a8d (struct Lisp_Cons): Make cdr a union.
Andreas Schwab <schwab@suse.de>
parents: 66778
diff changeset
1376 } u;
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1377 };
25421
65a7e9c02d4f (struct Lisp_Cons, XCAR, XCDR, struct Lisp_Float): Change names of structure
Ken Raeburn <raeburn@raeburn.org>
parents: 25392
diff changeset
1378
65a7e9c02d4f (struct Lisp_Cons, XCAR, XCDR, struct Lisp_Float): Change names of structure
Ken Raeburn <raeburn@raeburn.org>
parents: 25392
diff changeset
1379 #ifdef HIDE_LISP_IMPLEMENTATION
66888
b991cdef1a8d (struct Lisp_Cons): Make cdr a union.
Andreas Schwab <schwab@suse.de>
parents: 66778
diff changeset
1380 #define XFLOAT_DATA(f) (XFLOAT (f)->u.data_)
25421
65a7e9c02d4f (struct Lisp_Cons, XCAR, XCDR, struct Lisp_Float): Change names of structure
Ken Raeburn <raeburn@raeburn.org>
parents: 25392
diff changeset
1381 #else
66888
b991cdef1a8d (struct Lisp_Cons): Make cdr a union.
Andreas Schwab <schwab@suse.de>
parents: 66778
diff changeset
1382 #define XFLOAT_DATA(f) (XFLOAT (f)->u.data)
25421
65a7e9c02d4f (struct Lisp_Cons, XCAR, XCDR, struct Lisp_Float): Change names of structure
Ken Raeburn <raeburn@raeburn.org>
parents: 25392
diff changeset
1383 #endif
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1384
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1385 /* A character, declared with the following typedef, is a member
10316
272f15eddaca (enum Lisp_Type): Delete Lisp_Buffer.
Richard M. Stallman <rms@gnu.org>
parents: 10292
diff changeset
1386 of some character set associated with the current buffer. */
3324
b0e1cf2177fc (UCHAR): Don't define if _UCHAR_T.
Richard M. Stallman <rms@gnu.org>
parents: 2979
diff changeset
1387 #ifndef _UCHAR_T /* Protect against something in ctab.h on AIX. */
b0e1cf2177fc (UCHAR): Don't define if _UCHAR_T.
Richard M. Stallman <rms@gnu.org>
parents: 2979
diff changeset
1388 #define _UCHAR_T
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1389 typedef unsigned char UCHAR;
3324
b0e1cf2177fc (UCHAR): Don't define if _UCHAR_T.
Richard M. Stallman <rms@gnu.org>
parents: 2979
diff changeset
1390 #endif
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1391
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1392 /* Meanings of slots in a Lisp_Compiled: */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1393
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1394 #define COMPILED_ARGLIST 0
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1395 #define COMPILED_BYTECODE 1
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1396 #define COMPILED_CONSTANTS 2
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1397 #define COMPILED_STACK_DEPTH 3
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1398 #define COMPILED_DOC_STRING 4
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1399 #define COMPILED_INTERACTIVE 5
2014
637d9ebe3f50 (CHAR_META, CHAR_SHIFT, CHAR_CTL): New macros.
Richard M. Stallman <rms@gnu.org>
parents: 1990
diff changeset
1400
2662
5b92bdfb7fbb * lisp.h (CHAR_ALT, CHAR_SUPER, CHAR_HYPER, CHAR_SHIFT, CHAR_CTL,
Jim Blandy <jimb@redhat.com>
parents: 2653
diff changeset
1401 /* Flag bits in a character. These also get used in termhooks.h.
5b92bdfb7fbb * lisp.h (CHAR_ALT, CHAR_SUPER, CHAR_HYPER, CHAR_SHIFT, CHAR_CTL,
Jim Blandy <jimb@redhat.com>
parents: 2653
diff changeset
1402 Richard Stallman <rms@gnu.ai.mit.edu> thinks that MULE
10292
c467ec24a6bd (VALBITS): Default now 28.
Richard M. Stallman <rms@gnu.org>
parents: 10247
diff changeset
1403 (MUlti-Lingual Emacs) might need 22 bits for the character value
c467ec24a6bd (VALBITS): Default now 28.
Richard M. Stallman <rms@gnu.org>
parents: 10247
diff changeset
1404 itself, so we probably shouldn't use any bits lower than 0x0400000. */
c467ec24a6bd (VALBITS): Default now 28.
Richard M. Stallman <rms@gnu.org>
parents: 10247
diff changeset
1405 #define CHAR_ALT (0x0400000)
c467ec24a6bd (VALBITS): Default now 28.
Richard M. Stallman <rms@gnu.org>
parents: 10247
diff changeset
1406 #define CHAR_SUPER (0x0800000)
c467ec24a6bd (VALBITS): Default now 28.
Richard M. Stallman <rms@gnu.org>
parents: 10247
diff changeset
1407 #define CHAR_HYPER (0x1000000)
c467ec24a6bd (VALBITS): Default now 28.
Richard M. Stallman <rms@gnu.org>
parents: 10247
diff changeset
1408 #define CHAR_SHIFT (0x2000000)
c467ec24a6bd (VALBITS): Default now 28.
Richard M. Stallman <rms@gnu.org>
parents: 10247
diff changeset
1409 #define CHAR_CTL (0x4000000)
c467ec24a6bd (VALBITS): Default now 28.
Richard M. Stallman <rms@gnu.org>
parents: 10247
diff changeset
1410 #define CHAR_META (0x8000000)
2728
93c9529b2b69 * config.h.in: Remove mention of GLYPH datatype; that shouldn't be
Jim Blandy <jimb@redhat.com>
parents: 2662
diff changeset
1411
25252
fc1b2b29e66d (CHAR_MODIFIER_MASK): New macro.
Kenichi Handa <handa@m17n.org>
parents: 25017
diff changeset
1412 #define CHAR_MODIFIER_MASK \
fc1b2b29e66d (CHAR_MODIFIER_MASK): New macro.
Kenichi Handa <handa@m17n.org>
parents: 25017
diff changeset
1413 (CHAR_ALT | CHAR_SUPER | CHAR_HYPER | CHAR_SHIFT | CHAR_CTL | CHAR_META)
fc1b2b29e66d (CHAR_MODIFIER_MASK): New macro.
Kenichi Handa <handa@m17n.org>
parents: 25017
diff changeset
1414
fc1b2b29e66d (CHAR_MODIFIER_MASK): New macro.
Kenichi Handa <handa@m17n.org>
parents: 25017
diff changeset
1415
88382
5e3e1d9d514f (enum pvec_type): New member PVEC_SUB_CHAR_TABLE.
Kenichi Handa <handa@m17n.org>
parents: 43176
diff changeset
1416 /* Actually, the current Emacs uses 22 bits for the character value
17037
af637c0168ad (CHARACTERBITS, GLYPH_MASK_REV_DIR): New macros.
Karl Heuer <kwzh@gnu.org>
parents: 16913
diff changeset
1417 itself. */
89688
0d74a1b6efa9 (CHARACTERBITS): Define as 22.
Kenichi Handa <handa@m17n.org>
parents: 89668
diff changeset
1418 #define CHARACTERBITS 22
17037
af637c0168ad (CHARACTERBITS, GLYPH_MASK_REV_DIR): New macros.
Karl Heuer <kwzh@gnu.org>
parents: 16913
diff changeset
1419
26479
cf75e5b634ec (KEY_DESCRIPTION_SIZE): New macro.
Kenichi Handa <handa@m17n.org>
parents: 26404
diff changeset
1420 /* The maximum byte size consumed by push_key_description.
cf75e5b634ec (KEY_DESCRIPTION_SIZE): New macro.
Kenichi Handa <handa@m17n.org>
parents: 26404
diff changeset
1421 All callers should assure that at least this size of memory is
cf75e5b634ec (KEY_DESCRIPTION_SIZE): New macro.
Kenichi Handa <handa@m17n.org>
parents: 26404
diff changeset
1422 allocated at the place pointed by the second argument.
cf75e5b634ec (KEY_DESCRIPTION_SIZE): New macro.
Kenichi Handa <handa@m17n.org>
parents: 26404
diff changeset
1423
87741
36b8a740ef66 Fix typo in src/lisp.h
Michael Olson <mwolson@gnu.org>
parents: 87649
diff changeset
1424 There are 6 modifiers, each consumes 2 chars.
26479
cf75e5b634ec (KEY_DESCRIPTION_SIZE): New macro.
Kenichi Handa <handa@m17n.org>
parents: 26404
diff changeset
1425 The octal form of a character code consumes
cf75e5b634ec (KEY_DESCRIPTION_SIZE): New macro.
Kenichi Handa <handa@m17n.org>
parents: 26404
diff changeset
1426 (1 + CHARACTERBITS / 3 + 1) chars (including backslash at the head).
cf75e5b634ec (KEY_DESCRIPTION_SIZE): New macro.
Kenichi Handa <handa@m17n.org>
parents: 26404
diff changeset
1427 We need one more byte for string terminator `\0'. */
cf75e5b634ec (KEY_DESCRIPTION_SIZE): New macro.
Kenichi Handa <handa@m17n.org>
parents: 26404
diff changeset
1428 #define KEY_DESCRIPTION_SIZE ((2 * 6) + 1 + (CHARACTERBITS / 3) + 1 + 1)
cf75e5b634ec (KEY_DESCRIPTION_SIZE): New macro.
Kenichi Handa <handa@m17n.org>
parents: 26404
diff changeset
1429
2728
93c9529b2b69 * config.h.in: Remove mention of GLYPH datatype; that shouldn't be
Jim Blandy <jimb@redhat.com>
parents: 2662
diff changeset
1430
92279
14182a83bd23 (GLYPH): Change type from int to struct with separate char
Kim F. Storm <storm@cua.dk>
parents: 92108
diff changeset
1431 /* The glyph datatype, used to represent characters on the display.
14182a83bd23 (GLYPH): Change type from int to struct with separate char
Kim F. Storm <storm@cua.dk>
parents: 92108
diff changeset
1432 It consists of a char code and a face id. */
14182a83bd23 (GLYPH): Change type from int to struct with separate char
Kim F. Storm <storm@cua.dk>
parents: 92108
diff changeset
1433
14182a83bd23 (GLYPH): Change type from int to struct with separate char
Kim F. Storm <storm@cua.dk>
parents: 92108
diff changeset
1434 typedef struct {
14182a83bd23 (GLYPH): Change type from int to struct with separate char
Kim F. Storm <storm@cua.dk>
parents: 92108
diff changeset
1435 int ch;
14182a83bd23 (GLYPH): Change type from int to struct with separate char
Kim F. Storm <storm@cua.dk>
parents: 92108
diff changeset
1436 int face_id;
14182a83bd23 (GLYPH): Change type from int to struct with separate char
Kim F. Storm <storm@cua.dk>
parents: 92108
diff changeset
1437 } GLYPH;
2728
93c9529b2b69 * config.h.in: Remove mention of GLYPH datatype; that shouldn't be
Jim Blandy <jimb@redhat.com>
parents: 2662
diff changeset
1438
93c9529b2b69 * config.h.in: Remove mention of GLYPH datatype; that shouldn't be
Jim Blandy <jimb@redhat.com>
parents: 2662
diff changeset
1439 /* Return a glyph's character code. */
92279
14182a83bd23 (GLYPH): Change type from int to struct with separate char
Kim F. Storm <storm@cua.dk>
parents: 92108
diff changeset
1440 #define GLYPH_CHAR(glyph) ((glyph).ch)
2728
93c9529b2b69 * config.h.in: Remove mention of GLYPH datatype; that shouldn't be
Jim Blandy <jimb@redhat.com>
parents: 2662
diff changeset
1441
93c9529b2b69 * config.h.in: Remove mention of GLYPH datatype; that shouldn't be
Jim Blandy <jimb@redhat.com>
parents: 2662
diff changeset
1442 /* Return a glyph's face ID. */
92279
14182a83bd23 (GLYPH): Change type from int to struct with separate char
Kim F. Storm <storm@cua.dk>
parents: 92108
diff changeset
1443 #define GLYPH_FACE(glyph) ((glyph).face_id)
14182a83bd23 (GLYPH): Change type from int to struct with separate char
Kim F. Storm <storm@cua.dk>
parents: 92108
diff changeset
1444
14182a83bd23 (GLYPH): Change type from int to struct with separate char
Kim F. Storm <storm@cua.dk>
parents: 92108
diff changeset
1445 #define SET_GLYPH_CHAR(glyph, char) ((glyph).ch = (char))
14182a83bd23 (GLYPH): Change type from int to struct with separate char
Kim F. Storm <storm@cua.dk>
parents: 92108
diff changeset
1446 #define SET_GLYPH_FACE(glyph, face) ((glyph).face_id = (face))
14182a83bd23 (GLYPH): Change type from int to struct with separate char
Kim F. Storm <storm@cua.dk>
parents: 92108
diff changeset
1447 #define SET_GLYPH(glyph, char, face) ((glyph).ch = (char), (glyph).face_id = (face))
2728
93c9529b2b69 * config.h.in: Remove mention of GLYPH datatype; that shouldn't be
Jim Blandy <jimb@redhat.com>
parents: 2662
diff changeset
1448
78501
1677cf1c2509 Replace `iff' in comments.
Glenn Morris <rgm@gnu.org>
parents: 78260
diff changeset
1449 /* Return 1 if GLYPH contains valid character code. */
92279
14182a83bd23 (GLYPH): Change type from int to struct with separate char
Kim F. Storm <storm@cua.dk>
parents: 92108
diff changeset
1450 #define GLYPH_CHAR_VALID_P(glyph) CHAR_VALID_P (GLYPH_CHAR (glyph), 1)
14182a83bd23 (GLYPH): Change type from int to struct with separate char
Kim F. Storm <storm@cua.dk>
parents: 92108
diff changeset
1451
14182a83bd23 (GLYPH): Change type from int to struct with separate char
Kim F. Storm <storm@cua.dk>
parents: 92108
diff changeset
1452
14182a83bd23 (GLYPH): Change type from int to struct with separate char
Kim F. Storm <storm@cua.dk>
parents: 92108
diff changeset
1453 /* Glyph Code from a display vector may either be an integer which
14182a83bd23 (GLYPH): Change type from int to struct with separate char
Kim F. Storm <storm@cua.dk>
parents: 92108
diff changeset
1454 encodes a char code in the lower CHARACTERBITS bits and a (very small)
14182a83bd23 (GLYPH): Change type from int to struct with separate char
Kim F. Storm <storm@cua.dk>
parents: 92108
diff changeset
1455 face-id in the upper bits, or it may be a cons (CHAR . FACE-ID). */
14182a83bd23 (GLYPH): Change type from int to struct with separate char
Kim F. Storm <storm@cua.dk>
parents: 92108
diff changeset
1456
14182a83bd23 (GLYPH): Change type from int to struct with separate char
Kim F. Storm <storm@cua.dk>
parents: 92108
diff changeset
1457 #define GLYPH_CODE_CHAR(gc) \
14182a83bd23 (GLYPH): Change type from int to struct with separate char
Kim F. Storm <storm@cua.dk>
parents: 92108
diff changeset
1458 (CONSP (gc) ? XINT (XCAR (gc)) : INTEGERP (gc) ? (XINT (gc) & ((1 << CHARACTERBITS)-1)) : 0)
14182a83bd23 (GLYPH): Change type from int to struct with separate char
Kim F. Storm <storm@cua.dk>
parents: 92108
diff changeset
1459
14182a83bd23 (GLYPH): Change type from int to struct with separate char
Kim F. Storm <storm@cua.dk>
parents: 92108
diff changeset
1460 #define GLYPH_CODE_FACE(gc) \
14182a83bd23 (GLYPH): Change type from int to struct with separate char
Kim F. Storm <storm@cua.dk>
parents: 92108
diff changeset
1461 (CONSP (gc) ? XINT (XCDR (gc)) : INTEGERP (gc) ? (XINT (gc) >> CHARACTERBITS) : DEFAULT_FACE_ID)
14182a83bd23 (GLYPH): Change type from int to struct with separate char
Kim F. Storm <storm@cua.dk>
parents: 92108
diff changeset
1462
14182a83bd23 (GLYPH): Change type from int to struct with separate char
Kim F. Storm <storm@cua.dk>
parents: 92108
diff changeset
1463 /* Return 1 if glyph code from display vector contains valid character code. */
14182a83bd23 (GLYPH): Change type from int to struct with separate char
Kim F. Storm <storm@cua.dk>
parents: 92108
diff changeset
1464 #define GLYPH_CODE_CHAR_VALID_P(gc) CHAR_VALID_P (GLYPH_CODE_CHAR (gc), 1)
14182a83bd23 (GLYPH): Change type from int to struct with separate char
Kim F. Storm <storm@cua.dk>
parents: 92108
diff changeset
1465
14182a83bd23 (GLYPH): Change type from int to struct with separate char
Kim F. Storm <storm@cua.dk>
parents: 92108
diff changeset
1466 #define GLYPH_CODE_P(gc) ((CONSP (gc) && INTEGERP (XCAR (gc)) && INTEGERP (XCDR (gc))) || INTEGERP (gc))
14182a83bd23 (GLYPH): Change type from int to struct with separate char
Kim F. Storm <storm@cua.dk>
parents: 92108
diff changeset
1467
14182a83bd23 (GLYPH): Change type from int to struct with separate char
Kim F. Storm <storm@cua.dk>
parents: 92108
diff changeset
1468 /* Only called when GLYPH_CODE_P (gc) is true. */
14182a83bd23 (GLYPH): Change type from int to struct with separate char
Kim F. Storm <storm@cua.dk>
parents: 92108
diff changeset
1469 #define SET_GLYPH_FROM_GLYPH_CODE(glyph, gc) \
14182a83bd23 (GLYPH): Change type from int to struct with separate char
Kim F. Storm <storm@cua.dk>
parents: 92108
diff changeset
1470 do \
14182a83bd23 (GLYPH): Change type from int to struct with separate char
Kim F. Storm <storm@cua.dk>
parents: 92108
diff changeset
1471 { \
14182a83bd23 (GLYPH): Change type from int to struct with separate char
Kim F. Storm <storm@cua.dk>
parents: 92108
diff changeset
1472 if (CONSP (gc)) \
14182a83bd23 (GLYPH): Change type from int to struct with separate char
Kim F. Storm <storm@cua.dk>
parents: 92108
diff changeset
1473 SET_GLYPH (glyph, XINT (XCAR (gc)), XINT (XCDR (gc))); \
14182a83bd23 (GLYPH): Change type from int to struct with separate char
Kim F. Storm <storm@cua.dk>
parents: 92108
diff changeset
1474 else \
14182a83bd23 (GLYPH): Change type from int to struct with separate char
Kim F. Storm <storm@cua.dk>
parents: 92108
diff changeset
1475 SET_GLYPH (glyph, (XINT (gc) & ((1 << CHARACTERBITS)-1)), \
14182a83bd23 (GLYPH): Change type from int to struct with separate char
Kim F. Storm <storm@cua.dk>
parents: 92108
diff changeset
1476 (XINT (gc) >> CHARACTERBITS)); \
14182a83bd23 (GLYPH): Change type from int to struct with separate char
Kim F. Storm <storm@cua.dk>
parents: 92108
diff changeset
1477 } \
14182a83bd23 (GLYPH): Change type from int to struct with separate char
Kim F. Storm <storm@cua.dk>
parents: 92108
diff changeset
1478 while (0)
17188
e38cc84db8ab (CHAR_TABLE_ORDINARY_SLOTS): Change to 384 (== 256 + 128).
Kenichi Handa <handa@m17n.org>
parents: 17141
diff changeset
1479
6277
444351051761 (GLYPH_MODE_LINE_FACE): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 6243
diff changeset
1480 /* The ID of the mode line highlighting face. */
444351051761 (GLYPH_MODE_LINE_FACE): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 6243
diff changeset
1481 #define GLYPH_MODE_LINE_FACE 1
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1482
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1483 /* Data type checking */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1484
58264
e8156cc4a58f (NILP): Use EQ rather than XFASTINT.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 58238
diff changeset
1485 #define NILP(x) EQ (x, Qnil)
621
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 516
diff changeset
1486
9150
642bbaf7c3fc (BOOLFWDP, INTERNALP, INTFWDP, OBJFWDP, INTERNAL_STREAMP, BUFFER_LOCAL_VALUEP,
Karl Heuer <kwzh@gnu.org>
parents: 9099
diff changeset
1487 #define NUMBERP(x) (INTEGERP (x) || FLOATP (x))
9943
4e6e0478baef (NATNUMP): New macro.
Karl Heuer <kwzh@gnu.org>
parents: 9924
diff changeset
1488 #define NATNUMP(x) (INTEGERP (x) && XINT (x) >= 0)
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1489
2187
12b50e8d3b1c (INTEGERP, SYMBOLP, MARKERP, STRINGP, VECTORP): New macros.
Richard M. Stallman <rms@gnu.org>
parents: 2155
diff changeset
1490 #define INTEGERP(x) (XTYPE ((x)) == Lisp_Int)
12b50e8d3b1c (INTEGERP, SYMBOLP, MARKERP, STRINGP, VECTORP): New macros.
Richard M. Stallman <rms@gnu.org>
parents: 2155
diff changeset
1491 #define SYMBOLP(x) (XTYPE ((x)) == Lisp_Symbol)
9435
3a157cdf395c (Lisp_Misc): new type code, replacing Lisp_Marker (and soon to replace other
Karl Heuer <kwzh@gnu.org>
parents: 9392
diff changeset
1492 #define MISCP(x) (XTYPE ((x)) == Lisp_Misc)
10010
67375493afa2 (enum Lisp_Misc_Type): Rename Lisp_Vector to Lisp_Vectorlike. Mark
Karl Heuer <kwzh@gnu.org>
parents: 10003
diff changeset
1493 #define VECTORLIKEP(x) (XTYPE ((x)) == Lisp_Vectorlike)
2187
12b50e8d3b1c (INTEGERP, SYMBOLP, MARKERP, STRINGP, VECTORP): New macros.
Richard M. Stallman <rms@gnu.org>
parents: 2155
diff changeset
1494 #define STRINGP(x) (XTYPE ((x)) == Lisp_String)
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1495 #define CONSP(x) (XTYPE ((x)) == Lisp_Cons)
10292
c467ec24a6bd (VALBITS): Default now 28.
Richard M. Stallman <rms@gnu.org>
parents: 10247
diff changeset
1496
2187
12b50e8d3b1c (INTEGERP, SYMBOLP, MARKERP, STRINGP, VECTORP): New macros.
Richard M. Stallman <rms@gnu.org>
parents: 2155
diff changeset
1497 #define FLOATP(x) (XTYPE ((x)) == Lisp_Float)
90971
2acda4a4ac92 (XGCTYPE, GC_HASH_TABLE_P, GC_NILP, GC_NUMBERP, GC_NATNUMP)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 90918
diff changeset
1498 #define VECTORP(x) (VECTORLIKEP (x) && !(XVECTOR (x)->size & PSEUDOVECTOR_FLAG))
11335
78eda0ee4cba (XMISCTYPE): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 11204
diff changeset
1499 #define OVERLAYP(x) (MISCP (x) && XMISCTYPE (x) == Lisp_Misc_Overlay)
78eda0ee4cba (XMISCTYPE): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 11204
diff changeset
1500 #define MARKERP(x) (MISCP (x) && XMISCTYPE (x) == Lisp_Misc_Marker)
78eda0ee4cba (XMISCTYPE): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 11204
diff changeset
1501 #define INTFWDP(x) (MISCP (x) && XMISCTYPE (x) == Lisp_Misc_Intfwd)
78eda0ee4cba (XMISCTYPE): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 11204
diff changeset
1502 #define BOOLFWDP(x) (MISCP (x) && XMISCTYPE (x) == Lisp_Misc_Boolfwd)
78eda0ee4cba (XMISCTYPE): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 11204
diff changeset
1503 #define OBJFWDP(x) (MISCP (x) && XMISCTYPE (x) == Lisp_Misc_Objfwd)
78eda0ee4cba (XMISCTYPE): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 11204
diff changeset
1504 #define BUFFER_OBJFWDP(x) (MISCP (x) && XMISCTYPE (x) == Lisp_Misc_Buffer_Objfwd)
78eda0ee4cba (XMISCTYPE): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 11204
diff changeset
1505 #define BUFFER_LOCAL_VALUEP(x) (MISCP (x) && XMISCTYPE (x) == Lisp_Misc_Buffer_Local_Value)
78eda0ee4cba (XMISCTYPE): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 11204
diff changeset
1506 #define SOME_BUFFER_LOCAL_VALUEP(x) (MISCP (x) && XMISCTYPE (x) == Lisp_Misc_Some_Buffer_Local_Value)
78eda0ee4cba (XMISCTYPE): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 11204
diff changeset
1507 #define KBOARD_OBJFWDP(x) (MISCP (x) && XMISCTYPE (x) == Lisp_Misc_Kboard_Objfwd)
85345
35d2f0abc597 (XMISCANY, XMARKER, XINTFWD, XBOOLFWD, XOBJFWD, XOVERLAY, XBUFFER_OBJFWD)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85328
diff changeset
1508 #define SAVE_VALUEP(x) (MISCP (x) && XMISCTYPE (x) == Lisp_Misc_Save_Value)
2187
12b50e8d3b1c (INTEGERP, SYMBOLP, MARKERP, STRINGP, VECTORP): New macros.
Richard M. Stallman <rms@gnu.org>
parents: 2155
diff changeset
1509
10292
c467ec24a6bd (VALBITS): Default now 28.
Richard M. Stallman <rms@gnu.org>
parents: 10247
diff changeset
1510
10322
c1c2ec3aeefa Use consistent spelling in comments.
Karl Heuer <kwzh@gnu.org>
parents: 10321
diff changeset
1511 /* True if object X is a pseudovector whose code is CODE. */
10292
c467ec24a6bd (VALBITS): Default now 28.
Richard M. Stallman <rms@gnu.org>
parents: 10247
diff changeset
1512 #define PSEUDOVECTORP(x, code) \
c467ec24a6bd (VALBITS): Default now 28.
Richard M. Stallman <rms@gnu.org>
parents: 10247
diff changeset
1513 (VECTORLIKEP (x) \
c467ec24a6bd (VALBITS): Default now 28.
Richard M. Stallman <rms@gnu.org>
parents: 10247
diff changeset
1514 && (((XVECTOR (x)->size & (PSEUDOVECTOR_FLAG | (code)))) \
c467ec24a6bd (VALBITS): Default now 28.
Richard M. Stallman <rms@gnu.org>
parents: 10247
diff changeset
1515 == (PSEUDOVECTOR_FLAG | (code))))
c467ec24a6bd (VALBITS): Default now 28.
Richard M. Stallman <rms@gnu.org>
parents: 10247
diff changeset
1516
c467ec24a6bd (VALBITS): Default now 28.
Richard M. Stallman <rms@gnu.org>
parents: 10247
diff changeset
1517 /* Test for specific pseudovector types. */
c467ec24a6bd (VALBITS): Default now 28.
Richard M. Stallman <rms@gnu.org>
parents: 10247
diff changeset
1518 #define WINDOW_CONFIGURATIONP(x) PSEUDOVECTORP (x, PVEC_WINDOW_CONFIGURATION)
c467ec24a6bd (VALBITS): Default now 28.
Richard M. Stallman <rms@gnu.org>
parents: 10247
diff changeset
1519 #define PROCESSP(x) PSEUDOVECTORP (x, PVEC_PROCESS)
c467ec24a6bd (VALBITS): Default now 28.
Richard M. Stallman <rms@gnu.org>
parents: 10247
diff changeset
1520 #define WINDOWP(x) PSEUDOVECTORP (x, PVEC_WINDOW)
84689
73c717fa7866 (enum pvec_type): New `terminal' pseudovector.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 84434
diff changeset
1521 #define TERMINALP(x) PSEUDOVECTORP (x, PVEC_TERMINAL)
10292
c467ec24a6bd (VALBITS): Default now 28.
Richard M. Stallman <rms@gnu.org>
parents: 10247
diff changeset
1522 #define SUBRP(x) PSEUDOVECTORP (x, PVEC_SUBR)
c467ec24a6bd (VALBITS): Default now 28.
Richard M. Stallman <rms@gnu.org>
parents: 10247
diff changeset
1523 #define COMPILEDP(x) PSEUDOVECTORP (x, PVEC_COMPILED)
10316
272f15eddaca (enum Lisp_Type): Delete Lisp_Buffer.
Richard M. Stallman <rms@gnu.org>
parents: 10292
diff changeset
1524 #define BUFFERP(x) PSEUDOVECTORP (x, PVEC_BUFFER)
13149
b1dcc3e87ffb (struct Lisp_Boolvector): New data type.
Richard M. Stallman <rms@gnu.org>
parents: 12890
diff changeset
1525 #define CHAR_TABLE_P(x) PSEUDOVECTORP (x, PVEC_CHAR_TABLE)
88382
5e3e1d9d514f (enum pvec_type): New member PVEC_SUB_CHAR_TABLE.
Kenichi Handa <handa@m17n.org>
parents: 43176
diff changeset
1526 #define SUB_CHAR_TABLE_P(x) PSEUDOVECTORP (x, PVEC_SUB_CHAR_TABLE)
13149
b1dcc3e87ffb (struct Lisp_Boolvector): New data type.
Richard M. Stallman <rms@gnu.org>
parents: 12890
diff changeset
1527 #define BOOL_VECTOR_P(x) PSEUDOVECTORP (x, PVEC_BOOL_VECTOR)
10292
c467ec24a6bd (VALBITS): Default now 28.
Richard M. Stallman <rms@gnu.org>
parents: 10247
diff changeset
1528 #define FRAMEP(x) PSEUDOVECTORP (x, PVEC_FRAME)
53331
db670c1b5944 (IMAGEP): New macro to test for image object type.
Kim F. Storm <storm@cua.dk>
parents: 53111
diff changeset
1529
db670c1b5944 (IMAGEP): New macro to test for image object type.
Kim F. Storm <storm@cua.dk>
parents: 53111
diff changeset
1530 /* Test for image (image . spec) */
db670c1b5944 (IMAGEP): New macro to test for image object type.
Kim F. Storm <storm@cua.dk>
parents: 53111
diff changeset
1531 #define IMAGEP(x) (CONSP (x) && EQ (XCAR (x), Qimage))
db670c1b5944 (IMAGEP): New macro to test for image object type.
Kim F. Storm <storm@cua.dk>
parents: 53111
diff changeset
1532
71822
7b7a32c8c767 (CHECK_TYPE): New macro for generic type checking.
Kim F. Storm <storm@cua.dk>
parents: 71796
diff changeset
1533 /* Array types. */
7b7a32c8c767 (CHECK_TYPE): New macro for generic type checking.
Kim F. Storm <storm@cua.dk>
parents: 71796
diff changeset
1534
7b7a32c8c767 (CHECK_TYPE): New macro for generic type checking.
Kim F. Storm <storm@cua.dk>
parents: 71796
diff changeset
1535 #define ARRAYP(x) \
7b7a32c8c767 (CHECK_TYPE): New macro for generic type checking.
Kim F. Storm <storm@cua.dk>
parents: 71796
diff changeset
1536 (VECTORP (x) || STRINGP (x) || CHAR_TABLE_P (x) || BOOL_VECTOR_P (x))
10292
c467ec24a6bd (VALBITS): Default now 28.
Richard M. Stallman <rms@gnu.org>
parents: 10247
diff changeset
1537
40653
6c48a4da1da5 (CHECK_STRING_OR_BUFFER, CHECK_HASH_TABLE, CHECK_LIST, CHECK_STRING,
Pavel Janík <Pavel@Janik.cz>
parents: 40536
diff changeset
1538 #define CHECK_LIST(x) \
71822
7b7a32c8c767 (CHECK_TYPE): New macro for generic type checking.
Kim F. Storm <storm@cua.dk>
parents: 71796
diff changeset
1539 CHECK_TYPE (CONSP (x) || NILP (x), Qlistp, x)
7b7a32c8c767 (CHECK_TYPE): New macro for generic type checking.
Kim F. Storm <storm@cua.dk>
parents: 71796
diff changeset
1540
7b7a32c8c767 (CHECK_TYPE): New macro for generic type checking.
Kim F. Storm <storm@cua.dk>
parents: 71796
diff changeset
1541 #define CHECK_LIST_CONS(x, y) \
7b7a32c8c767 (CHECK_TYPE): New macro for generic type checking.
Kim F. Storm <storm@cua.dk>
parents: 71796
diff changeset
1542 CHECK_TYPE (CONSP (x), Qlistp, y)
7b7a32c8c767 (CHECK_TYPE): New macro for generic type checking.
Kim F. Storm <storm@cua.dk>
parents: 71796
diff changeset
1543
7b7a32c8c767 (CHECK_TYPE): New macro for generic type checking.
Kim F. Storm <storm@cua.dk>
parents: 71796
diff changeset
1544 #define CHECK_LIST_END(x, y) \
7b7a32c8c767 (CHECK_TYPE): New macro for generic type checking.
Kim F. Storm <storm@cua.dk>
parents: 71796
diff changeset
1545 CHECK_TYPE (NILP (x), Qlistp, y)
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1546
40653
6c48a4da1da5 (CHECK_STRING_OR_BUFFER, CHECK_HASH_TABLE, CHECK_LIST, CHECK_STRING,
Pavel Janík <Pavel@Janik.cz>
parents: 40536
diff changeset
1547 #define CHECK_STRING(x) \
71822
7b7a32c8c767 (CHECK_TYPE): New macro for generic type checking.
Kim F. Storm <storm@cua.dk>
parents: 71796
diff changeset
1548 CHECK_TYPE (STRINGP (x), Qstringp, x)
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1549
40689
1e79b0de40a1 (CHECK_STRING_CAR): New macro.
Ken Raeburn <raeburn@raeburn.org>
parents: 40653
diff changeset
1550 #define CHECK_STRING_CAR(x) \
71822
7b7a32c8c767 (CHECK_TYPE): New macro for generic type checking.
Kim F. Storm <storm@cua.dk>
parents: 71796
diff changeset
1551 CHECK_TYPE (STRINGP (XCAR (x)), Qstringp, XCAR (x))
40689
1e79b0de40a1 (CHECK_STRING_CAR): New macro.
Ken Raeburn <raeburn@raeburn.org>
parents: 40653
diff changeset
1552
40653
6c48a4da1da5 (CHECK_STRING_OR_BUFFER, CHECK_HASH_TABLE, CHECK_LIST, CHECK_STRING,
Pavel Janík <Pavel@Janik.cz>
parents: 40536
diff changeset
1553 #define CHECK_CONS(x) \
71822
7b7a32c8c767 (CHECK_TYPE): New macro for generic type checking.
Kim F. Storm <storm@cua.dk>
parents: 71796
diff changeset
1554 CHECK_TYPE (CONSP (x), Qconsp, x)
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1555
40653
6c48a4da1da5 (CHECK_STRING_OR_BUFFER, CHECK_HASH_TABLE, CHECK_LIST, CHECK_STRING,
Pavel Janík <Pavel@Janik.cz>
parents: 40536
diff changeset
1556 #define CHECK_SYMBOL(x) \
71822
7b7a32c8c767 (CHECK_TYPE): New macro for generic type checking.
Kim F. Storm <storm@cua.dk>
parents: 71796
diff changeset
1557 CHECK_TYPE (SYMBOLP (x), Qsymbolp, x)
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1558
40653
6c48a4da1da5 (CHECK_STRING_OR_BUFFER, CHECK_HASH_TABLE, CHECK_LIST, CHECK_STRING,
Pavel Janík <Pavel@Janik.cz>
parents: 40536
diff changeset
1559 #define CHECK_CHAR_TABLE(x) \
71822
7b7a32c8c767 (CHECK_TYPE): New macro for generic type checking.
Kim F. Storm <storm@cua.dk>
parents: 71796
diff changeset
1560 CHECK_TYPE (CHAR_TABLE_P (x), Qchar_table_p, x)
13149
b1dcc3e87ffb (struct Lisp_Boolvector): New data type.
Richard M. Stallman <rms@gnu.org>
parents: 12890
diff changeset
1561
40653
6c48a4da1da5 (CHECK_STRING_OR_BUFFER, CHECK_HASH_TABLE, CHECK_LIST, CHECK_STRING,
Pavel Janík <Pavel@Janik.cz>
parents: 40536
diff changeset
1562 #define CHECK_VECTOR(x) \
71822
7b7a32c8c767 (CHECK_TYPE): New macro for generic type checking.
Kim F. Storm <storm@cua.dk>
parents: 71796
diff changeset
1563 CHECK_TYPE (VECTORP (x), Qvectorp, x)
7b7a32c8c767 (CHECK_TYPE): New macro for generic type checking.
Kim F. Storm <storm@cua.dk>
parents: 71796
diff changeset
1564
7b7a32c8c767 (CHECK_TYPE): New macro for generic type checking.
Kim F. Storm <storm@cua.dk>
parents: 71796
diff changeset
1565 #define CHECK_VECTOR_OR_STRING(x) \
7b7a32c8c767 (CHECK_TYPE): New macro for generic type checking.
Kim F. Storm <storm@cua.dk>
parents: 71796
diff changeset
1566 CHECK_TYPE (VECTORP (x) || STRINGP (x), Qarrayp, x)
7b7a32c8c767 (CHECK_TYPE): New macro for generic type checking.
Kim F. Storm <storm@cua.dk>
parents: 71796
diff changeset
1567
7b7a32c8c767 (CHECK_TYPE): New macro for generic type checking.
Kim F. Storm <storm@cua.dk>
parents: 71796
diff changeset
1568 #define CHECK_ARRAY(x, Qxxxp) \
7b7a32c8c767 (CHECK_TYPE): New macro for generic type checking.
Kim F. Storm <storm@cua.dk>
parents: 71796
diff changeset
1569 CHECK_TYPE (ARRAYP (x), Qxxxp, x)
7b7a32c8c767 (CHECK_TYPE): New macro for generic type checking.
Kim F. Storm <storm@cua.dk>
parents: 71796
diff changeset
1570
7b7a32c8c767 (CHECK_TYPE): New macro for generic type checking.
Kim F. Storm <storm@cua.dk>
parents: 71796
diff changeset
1571 #define CHECK_VECTOR_OR_CHAR_TABLE(x) \
7b7a32c8c767 (CHECK_TYPE): New macro for generic type checking.
Kim F. Storm <storm@cua.dk>
parents: 71796
diff changeset
1572 CHECK_TYPE (VECTORP (x) || CHAR_TABLE_P (x), Qvector_or_char_table_p, x)
13202
b307cd5c259f (struct Lisp_Char_Table): New slot `purpose'.
Richard M. Stallman <rms@gnu.org>
parents: 13149
diff changeset
1573
40653
6c48a4da1da5 (CHECK_STRING_OR_BUFFER, CHECK_HASH_TABLE, CHECK_LIST, CHECK_STRING,
Pavel Janík <Pavel@Janik.cz>
parents: 40536
diff changeset
1574 #define CHECK_BUFFER(x) \
71822
7b7a32c8c767 (CHECK_TYPE): New macro for generic type checking.
Kim F. Storm <storm@cua.dk>
parents: 71796
diff changeset
1575 CHECK_TYPE (BUFFERP (x), Qbufferp, x)
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1576
40653
6c48a4da1da5 (CHECK_STRING_OR_BUFFER, CHECK_HASH_TABLE, CHECK_LIST, CHECK_STRING,
Pavel Janík <Pavel@Janik.cz>
parents: 40536
diff changeset
1577 #define CHECK_WINDOW(x) \
71822
7b7a32c8c767 (CHECK_TYPE): New macro for generic type checking.
Kim F. Storm <storm@cua.dk>
parents: 71796
diff changeset
1578 CHECK_TYPE (WINDOWP (x), Qwindowp, x)
7b7a32c8c767 (CHECK_TYPE): New macro for generic type checking.
Kim F. Storm <storm@cua.dk>
parents: 71796
diff changeset
1579
7b7a32c8c767 (CHECK_TYPE): New macro for generic type checking.
Kim F. Storm <storm@cua.dk>
parents: 71796
diff changeset
1580 #define CHECK_WINDOW_CONFIGURATION(x) \
7b7a32c8c767 (CHECK_TYPE): New macro for generic type checking.
Kim F. Storm <storm@cua.dk>
parents: 71796
diff changeset
1581 CHECK_TYPE (WINDOW_CONFIGURATIONP (x), Qwindow_configuration_p, x)
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1582
1442
89ac471c745c * lisp.h (CHECK_LIVE_WINDOW): New predicate.
Jim Blandy <jimb@redhat.com>
parents: 1306
diff changeset
1583 /* This macro rejects windows on the interior of the window tree as
17404
73012b195cf3 (DOWNCASE): Return int, not Lisp_Object.
Karl Heuer <kwzh@gnu.org>
parents: 17326
diff changeset
1584 "dead", which is what we want; this is an argument-checking macro, and
1442
89ac471c745c * lisp.h (CHECK_LIVE_WINDOW): New predicate.
Jim Blandy <jimb@redhat.com>
parents: 1306
diff changeset
1585 the user should never get access to interior windows.
89ac471c745c * lisp.h (CHECK_LIVE_WINDOW): New predicate.
Jim Blandy <jimb@redhat.com>
parents: 1306
diff changeset
1586
78501
1677cf1c2509 Replace `iff' in comments.
Glenn Morris <rgm@gnu.org>
parents: 78260
diff changeset
1587 A window of any sort, leaf or interior, is dead if the buffer,
1442
89ac471c745c * lisp.h (CHECK_LIVE_WINDOW): New predicate.
Jim Blandy <jimb@redhat.com>
parents: 1306
diff changeset
1588 vchild, and hchild members are all nil. */
89ac471c745c * lisp.h (CHECK_LIVE_WINDOW): New predicate.
Jim Blandy <jimb@redhat.com>
parents: 1306
diff changeset
1589
71822
7b7a32c8c767 (CHECK_TYPE): New macro for generic type checking.
Kim F. Storm <storm@cua.dk>
parents: 71796
diff changeset
1590 #define CHECK_LIVE_WINDOW(x) \
7b7a32c8c767 (CHECK_TYPE): New macro for generic type checking.
Kim F. Storm <storm@cua.dk>
parents: 71796
diff changeset
1591 CHECK_TYPE (WINDOWP (x) && !NILP (XWINDOW (x)->buffer), Qwindow_live_p, x)
1442
89ac471c745c * lisp.h (CHECK_LIVE_WINDOW): New predicate.
Jim Blandy <jimb@redhat.com>
parents: 1306
diff changeset
1592
40653
6c48a4da1da5 (CHECK_STRING_OR_BUFFER, CHECK_HASH_TABLE, CHECK_LIST, CHECK_STRING,
Pavel Janík <Pavel@Janik.cz>
parents: 40536
diff changeset
1593 #define CHECK_PROCESS(x) \
71822
7b7a32c8c767 (CHECK_TYPE): New macro for generic type checking.
Kim F. Storm <storm@cua.dk>
parents: 71796
diff changeset
1594 CHECK_TYPE (PROCESSP (x), Qprocessp, x)
7b7a32c8c767 (CHECK_TYPE): New macro for generic type checking.
Kim F. Storm <storm@cua.dk>
parents: 71796
diff changeset
1595
7b7a32c8c767 (CHECK_TYPE): New macro for generic type checking.
Kim F. Storm <storm@cua.dk>
parents: 71796
diff changeset
1596 #define CHECK_SUBR(x) \
7b7a32c8c767 (CHECK_TYPE): New macro for generic type checking.
Kim F. Storm <storm@cua.dk>
parents: 71796
diff changeset
1597 CHECK_TYPE (SUBRP (x), Qsubrp, x)
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1598
40653
6c48a4da1da5 (CHECK_STRING_OR_BUFFER, CHECK_HASH_TABLE, CHECK_LIST, CHECK_STRING,
Pavel Janík <Pavel@Janik.cz>
parents: 40536
diff changeset
1599 #define CHECK_NUMBER(x) \
71822
7b7a32c8c767 (CHECK_TYPE): New macro for generic type checking.
Kim F. Storm <storm@cua.dk>
parents: 71796
diff changeset
1600 CHECK_TYPE (INTEGERP (x), Qintegerp, x)
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1601
40653
6c48a4da1da5 (CHECK_STRING_OR_BUFFER, CHECK_HASH_TABLE, CHECK_LIST, CHECK_STRING,
Pavel Janík <Pavel@Janik.cz>
parents: 40536
diff changeset
1602 #define CHECK_NATNUM(x) \
71822
7b7a32c8c767 (CHECK_TYPE): New macro for generic type checking.
Kim F. Storm <storm@cua.dk>
parents: 71796
diff changeset
1603 CHECK_TYPE (NATNUMP (x), Qwholenump, x)
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1604
40653
6c48a4da1da5 (CHECK_STRING_OR_BUFFER, CHECK_HASH_TABLE, CHECK_LIST, CHECK_STRING,
Pavel Janík <Pavel@Janik.cz>
parents: 40536
diff changeset
1605 #define CHECK_MARKER(x) \
71822
7b7a32c8c767 (CHECK_TYPE): New macro for generic type checking.
Kim F. Storm <storm@cua.dk>
parents: 71796
diff changeset
1606 CHECK_TYPE (MARKERP (x), Qmarkerp, x)
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1607
40653
6c48a4da1da5 (CHECK_STRING_OR_BUFFER, CHECK_HASH_TABLE, CHECK_LIST, CHECK_STRING,
Pavel Janík <Pavel@Janik.cz>
parents: 40536
diff changeset
1608 #define CHECK_NUMBER_COERCE_MARKER(x) \
9292
ec707cca800a (XSETFASTINT): New macro.
Karl Heuer <kwzh@gnu.org>
parents: 9287
diff changeset
1609 do { if (MARKERP ((x))) XSETFASTINT (x, marker_position (x)); \
71822
7b7a32c8c767 (CHECK_TYPE): New macro for generic type checking.
Kim F. Storm <storm@cua.dk>
parents: 71796
diff changeset
1610 else CHECK_TYPE (INTEGERP (x), Qinteger_or_marker_p, x); } while (0)
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1611
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1612 #define XFLOATINT(n) extract_float((n))
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1613
40653
6c48a4da1da5 (CHECK_STRING_OR_BUFFER, CHECK_HASH_TABLE, CHECK_LIST, CHECK_STRING,
Pavel Janík <Pavel@Janik.cz>
parents: 40536
diff changeset
1614 #define CHECK_FLOAT(x) \
71822
7b7a32c8c767 (CHECK_TYPE): New macro for generic type checking.
Kim F. Storm <storm@cua.dk>
parents: 71796
diff changeset
1615 CHECK_TYPE (FLOATP (x), Qfloatp, x)
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1616
40653
6c48a4da1da5 (CHECK_STRING_OR_BUFFER, CHECK_HASH_TABLE, CHECK_LIST, CHECK_STRING,
Pavel Janík <Pavel@Janik.cz>
parents: 40536
diff changeset
1617 #define CHECK_NUMBER_OR_FLOAT(x) \
71822
7b7a32c8c767 (CHECK_TYPE): New macro for generic type checking.
Kim F. Storm <storm@cua.dk>
parents: 71796
diff changeset
1618 CHECK_TYPE (FLOATP (x) || INTEGERP (x), Qnumberp, x)
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1619
40653
6c48a4da1da5 (CHECK_STRING_OR_BUFFER, CHECK_HASH_TABLE, CHECK_LIST, CHECK_STRING,
Pavel Janík <Pavel@Janik.cz>
parents: 40536
diff changeset
1620 #define CHECK_NUMBER_OR_FLOAT_COERCE_MARKER(x) \
9292
ec707cca800a (XSETFASTINT): New macro.
Karl Heuer <kwzh@gnu.org>
parents: 9287
diff changeset
1621 do { if (MARKERP (x)) XSETFASTINT (x, marker_position (x)); \
71822
7b7a32c8c767 (CHECK_TYPE): New macro for generic type checking.
Kim F. Storm <storm@cua.dk>
parents: 71796
diff changeset
1622 else CHECK_TYPE (INTEGERP (x) || FLOATP (x), Qnumber_or_marker_p, x); } while (0)
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1623
40653
6c48a4da1da5 (CHECK_STRING_OR_BUFFER, CHECK_HASH_TABLE, CHECK_LIST, CHECK_STRING,
Pavel Janík <Pavel@Janik.cz>
parents: 40536
diff changeset
1624 #define CHECK_OVERLAY(x) \
71822
7b7a32c8c767 (CHECK_TYPE): New macro for generic type checking.
Kim F. Storm <storm@cua.dk>
parents: 71796
diff changeset
1625 CHECK_TYPE (OVERLAYP (x), Qoverlayp, x)
2780
cfe7659bbc05 * lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents: 2728
diff changeset
1626
39973
579177964efa Avoid (most) uses of XCAR/XCDR as lvalues, for flexibility in experimenting
Ken Raeburn <raeburn@raeburn.org>
parents: 39924
diff changeset
1627 /* Since we can't assign directly to the CAR or CDR fields of a cons
579177964efa Avoid (most) uses of XCAR/XCDR as lvalues, for flexibility in experimenting
Ken Raeburn <raeburn@raeburn.org>
parents: 39924
diff changeset
1628 cell, use these when checking that those fields contain numbers. */
40653
6c48a4da1da5 (CHECK_STRING_OR_BUFFER, CHECK_HASH_TABLE, CHECK_LIST, CHECK_STRING,
Pavel Janík <Pavel@Janik.cz>
parents: 40536
diff changeset
1629 #define CHECK_NUMBER_CAR(x) \
39973
579177964efa Avoid (most) uses of XCAR/XCDR as lvalues, for flexibility in experimenting
Ken Raeburn <raeburn@raeburn.org>
parents: 39924
diff changeset
1630 do { \
579177964efa Avoid (most) uses of XCAR/XCDR as lvalues, for flexibility in experimenting
Ken Raeburn <raeburn@raeburn.org>
parents: 39924
diff changeset
1631 Lisp_Object tmp = XCAR (x); \
40653
6c48a4da1da5 (CHECK_STRING_OR_BUFFER, CHECK_HASH_TABLE, CHECK_LIST, CHECK_STRING,
Pavel Janík <Pavel@Janik.cz>
parents: 40536
diff changeset
1632 CHECK_NUMBER (tmp); \
39973
579177964efa Avoid (most) uses of XCAR/XCDR as lvalues, for flexibility in experimenting
Ken Raeburn <raeburn@raeburn.org>
parents: 39924
diff changeset
1633 XSETCAR ((x), tmp); \
579177964efa Avoid (most) uses of XCAR/XCDR as lvalues, for flexibility in experimenting
Ken Raeburn <raeburn@raeburn.org>
parents: 39924
diff changeset
1634 } while (0)
579177964efa Avoid (most) uses of XCAR/XCDR as lvalues, for flexibility in experimenting
Ken Raeburn <raeburn@raeburn.org>
parents: 39924
diff changeset
1635
40653
6c48a4da1da5 (CHECK_STRING_OR_BUFFER, CHECK_HASH_TABLE, CHECK_LIST, CHECK_STRING,
Pavel Janík <Pavel@Janik.cz>
parents: 40536
diff changeset
1636 #define CHECK_NUMBER_CDR(x) \
39973
579177964efa Avoid (most) uses of XCAR/XCDR as lvalues, for flexibility in experimenting
Ken Raeburn <raeburn@raeburn.org>
parents: 39924
diff changeset
1637 do { \
579177964efa Avoid (most) uses of XCAR/XCDR as lvalues, for flexibility in experimenting
Ken Raeburn <raeburn@raeburn.org>
parents: 39924
diff changeset
1638 Lisp_Object tmp = XCDR (x); \
40653
6c48a4da1da5 (CHECK_STRING_OR_BUFFER, CHECK_HASH_TABLE, CHECK_LIST, CHECK_STRING,
Pavel Janík <Pavel@Janik.cz>
parents: 40536
diff changeset
1639 CHECK_NUMBER (tmp); \
39973
579177964efa Avoid (most) uses of XCAR/XCDR as lvalues, for flexibility in experimenting
Ken Raeburn <raeburn@raeburn.org>
parents: 39924
diff changeset
1640 XSETCDR ((x), tmp); \
579177964efa Avoid (most) uses of XCAR/XCDR as lvalues, for flexibility in experimenting
Ken Raeburn <raeburn@raeburn.org>
parents: 39924
diff changeset
1641 } while (0)
579177964efa Avoid (most) uses of XCAR/XCDR as lvalues, for flexibility in experimenting
Ken Raeburn <raeburn@raeburn.org>
parents: 39924
diff changeset
1642
89483
2f877ed80fa6 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 88123 89439
diff changeset
1643 #define CHECK_NATNUM_CAR(x) \
2f877ed80fa6 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 88123 89439
diff changeset
1644 do { \
2f877ed80fa6 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 88123 89439
diff changeset
1645 Lisp_Object tmp = XCAR (x); \
2f877ed80fa6 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 88123 89439
diff changeset
1646 CHECK_NATNUM (tmp); \
2f877ed80fa6 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 88123 89439
diff changeset
1647 XSETCAR ((x), tmp); \
2f877ed80fa6 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 88123 89439
diff changeset
1648 } while (0)
2f877ed80fa6 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 88123 89439
diff changeset
1649
2f877ed80fa6 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 88123 89439
diff changeset
1650 #define CHECK_NATNUM_CDR(x) \
2f877ed80fa6 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 88123 89439
diff changeset
1651 do { \
2f877ed80fa6 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 88123 89439
diff changeset
1652 Lisp_Object tmp = XCDR (x); \
2f877ed80fa6 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 88123 89439
diff changeset
1653 CHECK_NATNUM (tmp); \
2f877ed80fa6 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 88123 89439
diff changeset
1654 XSETCDR ((x), tmp); \
2f877ed80fa6 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 88123 89439
diff changeset
1655 } while (0)
2f877ed80fa6 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 88123 89439
diff changeset
1656
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1657 /* Cast pointers to this type to compare them. Some machines want int. */
26088
b7aa6ac26872 Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents: 25818
diff changeset
1658 #define PNTR_COMPARISON_TYPE EMACS_UINT
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1659
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1660 /* Define a built-in function for calling from Lisp.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1661 `lname' should be the name to give the function in Lisp,
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1662 as a null-terminated C string.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1663 `fnname' should be the name of the function in C.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1664 By convention, it starts with F.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1665 `sname' should be the name for the C constant structure
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1666 that records information on this function for internal use.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1667 By convention, it should be the same as `fnname' but with S instead of F.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1668 It's too bad that C macros can't compute this from `fnname'.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1669 `minargs' should be a number, the minimum number of arguments allowed.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1670 `maxargs' should be a number, the maximum number of arguments allowed,
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1671 or else MANY or UNEVALLED.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1672 MANY means pass a vector of evaluated arguments,
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1673 in the form of an integer number-of-arguments
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1674 followed by the address of a vector of Lisp_Objects
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1675 which contains the argument values.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1676 UNEVALLED means pass the list of unevaluated arguments
84434
83ebc6baeac5 (struct Lisp_Subr): Rename `prompt' field to `intspec'.
Michaël Cadilhac <michael.cadilhac@lrde.org>
parents: 83766
diff changeset
1677 `intspec' says how interactive arguments are to be fetched.
83ebc6baeac5 (struct Lisp_Subr): Rename `prompt' field to `intspec'.
Michaël Cadilhac <michael.cadilhac@lrde.org>
parents: 83766
diff changeset
1678 If the string starts with a `(', `intspec' is evaluated and the resulting
83ebc6baeac5 (struct Lisp_Subr): Rename `prompt' field to `intspec'.
Michaël Cadilhac <michael.cadilhac@lrde.org>
parents: 83766
diff changeset
1679 list is the list of arguments.
83ebc6baeac5 (struct Lisp_Subr): Rename `prompt' field to `intspec'.
Michaël Cadilhac <michael.cadilhac@lrde.org>
parents: 83766
diff changeset
1680 If it's a string that doesn't start with `(', the value should follow
83ebc6baeac5 (struct Lisp_Subr): Rename `prompt' field to `intspec'.
Michaël Cadilhac <michael.cadilhac@lrde.org>
parents: 83766
diff changeset
1681 the one of the doc string for `interactive'.
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1682 A null string means call interactively with no arguments.
9904
031eb10a9346 Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 9891
diff changeset
1683 `doc' is documentation for the user. */
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1684
91702
b7a5a89054dc * configure.in (LIBX11_MACHINE, HAVE_XFREE386): Remove code
Dan Nicolaescu <dann@ics.uci.edu>
parents: 91367
diff changeset
1685 #if (!defined (__STDC__) && !defined (PROTOTYPES))
39898
bc20a5e30bfd (DEFUN, DEFVAR_LISP, ...) [DOC_STRINGS_IN_COMMENTS]:
Gerd Moellmann <gerd@gnu.org>
parents: 39861
diff changeset
1686
84434
83ebc6baeac5 (struct Lisp_Subr): Rename `prompt' field to `intspec'.
Michaël Cadilhac <michael.cadilhac@lrde.org>
parents: 83766
diff changeset
1687 #define DEFUN(lname, fnname, sname, minargs, maxargs, intspec, doc) \
39898
bc20a5e30bfd (DEFUN, DEFVAR_LISP, ...) [DOC_STRINGS_IN_COMMENTS]:
Gerd Moellmann <gerd@gnu.org>
parents: 39861
diff changeset
1688 Lisp_Object fnname (); \
53654
8dc805af6250 [USE_LSB_TAG]: Add definitions for Lisp_Object value
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53653
diff changeset
1689 DECL_ALIGN (struct Lisp_Subr, sname) = \
39898
bc20a5e30bfd (DEFUN, DEFVAR_LISP, ...) [DOC_STRINGS_IN_COMMENTS]:
Gerd Moellmann <gerd@gnu.org>
parents: 39861
diff changeset
1690 { PVEC_SUBR | (sizeof (struct Lisp_Subr) / sizeof (EMACS_INT)), \
84434
83ebc6baeac5 (struct Lisp_Subr): Rename `prompt' field to `intspec'.
Michaël Cadilhac <michael.cadilhac@lrde.org>
parents: 83766
diff changeset
1691 fnname, minargs, maxargs, lname, intspec, 0}; \
44065
fca68830d4e0 (DEFUN) [USE_NONANSI_DEFUN]: The 2001-10-17 patch
Kim F. Storm <storm@cua.dk>
parents: 44009
diff changeset
1692 Lisp_Object fnname
39898
bc20a5e30bfd (DEFUN, DEFVAR_LISP, ...) [DOC_STRINGS_IN_COMMENTS]:
Gerd Moellmann <gerd@gnu.org>
parents: 39861
diff changeset
1693
5241
1536c6b80ff6 Use WORDS_BIG_ENDIAN, not BIG_ENDIAN.
Richard M. Stallman <rms@gnu.org>
parents: 5128
diff changeset
1694 #else
1536c6b80ff6 Use WORDS_BIG_ENDIAN, not BIG_ENDIAN.
Richard M. Stallman <rms@gnu.org>
parents: 5128
diff changeset
1695
1536c6b80ff6 Use WORDS_BIG_ENDIAN, not BIG_ENDIAN.
Richard M. Stallman <rms@gnu.org>
parents: 5128
diff changeset
1696 /* This version of DEFUN declares a function prototype with the right
10316
272f15eddaca (enum Lisp_Type): Delete Lisp_Buffer.
Richard M. Stallman <rms@gnu.org>
parents: 10292
diff changeset
1697 arguments, so we can catch errors with maxargs at compile-time. */
84434
83ebc6baeac5 (struct Lisp_Subr): Rename `prompt' field to `intspec'.
Michaël Cadilhac <michael.cadilhac@lrde.org>
parents: 83766
diff changeset
1698 #define DEFUN(lname, fnname, sname, minargs, maxargs, intspec, doc) \
10292
c467ec24a6bd (VALBITS): Default now 28.
Richard M. Stallman <rms@gnu.org>
parents: 10247
diff changeset
1699 Lisp_Object fnname DEFUN_ARGS_ ## maxargs ; \
53654
8dc805af6250 [USE_LSB_TAG]: Add definitions for Lisp_Object value
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53653
diff changeset
1700 DECL_ALIGN (struct Lisp_Subr, sname) = \
10292
c467ec24a6bd (VALBITS): Default now 28.
Richard M. Stallman <rms@gnu.org>
parents: 10247
diff changeset
1701 { PVEC_SUBR | (sizeof (struct Lisp_Subr) / sizeof (EMACS_INT)), \
84434
83ebc6baeac5 (struct Lisp_Subr): Rename `prompt' field to `intspec'.
Michaël Cadilhac <michael.cadilhac@lrde.org>
parents: 83766
diff changeset
1702 fnname, minargs, maxargs, lname, intspec, 0}; \
5241
1536c6b80ff6 Use WORDS_BIG_ENDIAN, not BIG_ENDIAN.
Richard M. Stallman <rms@gnu.org>
parents: 5128
diff changeset
1703 Lisp_Object fnname
1536c6b80ff6 Use WORDS_BIG_ENDIAN, not BIG_ENDIAN.
Richard M. Stallman <rms@gnu.org>
parents: 5128
diff changeset
1704
1536c6b80ff6 Use WORDS_BIG_ENDIAN, not BIG_ENDIAN.
Richard M. Stallman <rms@gnu.org>
parents: 5128
diff changeset
1705 /* Note that the weird token-substitution semantics of ANSI C makes
10316
272f15eddaca (enum Lisp_Type): Delete Lisp_Buffer.
Richard M. Stallman <rms@gnu.org>
parents: 10292
diff changeset
1706 this work for MANY and UNEVALLED. */
5241
1536c6b80ff6 Use WORDS_BIG_ENDIAN, not BIG_ENDIAN.
Richard M. Stallman <rms@gnu.org>
parents: 5128
diff changeset
1707 #define DEFUN_ARGS_MANY (int, Lisp_Object *)
1536c6b80ff6 Use WORDS_BIG_ENDIAN, not BIG_ENDIAN.
Richard M. Stallman <rms@gnu.org>
parents: 5128
diff changeset
1708 #define DEFUN_ARGS_UNEVALLED (Lisp_Object)
1536c6b80ff6 Use WORDS_BIG_ENDIAN, not BIG_ENDIAN.
Richard M. Stallman <rms@gnu.org>
parents: 5128
diff changeset
1709 #define DEFUN_ARGS_0 (void)
1536c6b80ff6 Use WORDS_BIG_ENDIAN, not BIG_ENDIAN.
Richard M. Stallman <rms@gnu.org>
parents: 5128
diff changeset
1710 #define DEFUN_ARGS_1 (Lisp_Object)
1536c6b80ff6 Use WORDS_BIG_ENDIAN, not BIG_ENDIAN.
Richard M. Stallman <rms@gnu.org>
parents: 5128
diff changeset
1711 #define DEFUN_ARGS_2 (Lisp_Object, Lisp_Object)
1536c6b80ff6 Use WORDS_BIG_ENDIAN, not BIG_ENDIAN.
Richard M. Stallman <rms@gnu.org>
parents: 5128
diff changeset
1712 #define DEFUN_ARGS_3 (Lisp_Object, Lisp_Object, Lisp_Object)
1536c6b80ff6 Use WORDS_BIG_ENDIAN, not BIG_ENDIAN.
Richard M. Stallman <rms@gnu.org>
parents: 5128
diff changeset
1713 #define DEFUN_ARGS_4 (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object)
1536c6b80ff6 Use WORDS_BIG_ENDIAN, not BIG_ENDIAN.
Richard M. Stallman <rms@gnu.org>
parents: 5128
diff changeset
1714 #define DEFUN_ARGS_5 (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, \
1536c6b80ff6 Use WORDS_BIG_ENDIAN, not BIG_ENDIAN.
Richard M. Stallman <rms@gnu.org>
parents: 5128
diff changeset
1715 Lisp_Object)
1536c6b80ff6 Use WORDS_BIG_ENDIAN, not BIG_ENDIAN.
Richard M. Stallman <rms@gnu.org>
parents: 5128
diff changeset
1716 #define DEFUN_ARGS_6 (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, \
1536c6b80ff6 Use WORDS_BIG_ENDIAN, not BIG_ENDIAN.
Richard M. Stallman <rms@gnu.org>
parents: 5128
diff changeset
1717 Lisp_Object, Lisp_Object)
1536c6b80ff6 Use WORDS_BIG_ENDIAN, not BIG_ENDIAN.
Richard M. Stallman <rms@gnu.org>
parents: 5128
diff changeset
1718 #define DEFUN_ARGS_7 (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, \
1536c6b80ff6 Use WORDS_BIG_ENDIAN, not BIG_ENDIAN.
Richard M. Stallman <rms@gnu.org>
parents: 5128
diff changeset
1719 Lisp_Object, Lisp_Object, Lisp_Object)
19547
70d930b49bb4 (DEFUN_ARGS_8): New macro.
Kenichi Handa <handa@m17n.org>
parents: 19224
diff changeset
1720 #define DEFUN_ARGS_8 (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, \
70d930b49bb4 (DEFUN_ARGS_8): New macro.
Kenichi Handa <handa@m17n.org>
parents: 19224
diff changeset
1721 Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object)
5241
1536c6b80ff6 Use WORDS_BIG_ENDIAN, not BIG_ENDIAN.
Richard M. Stallman <rms@gnu.org>
parents: 5128
diff changeset
1722 #endif
1536c6b80ff6 Use WORDS_BIG_ENDIAN, not BIG_ENDIAN.
Richard M. Stallman <rms@gnu.org>
parents: 5128
diff changeset
1723
30218
70f3583c5da1 (FUNCTIONP): New macro.
Gerd Moellmann <gerd@gnu.org>
parents: 30201
diff changeset
1724 /* Non-zero if OBJ is a Lisp function. */
70f3583c5da1 (FUNCTIONP): New macro.
Gerd Moellmann <gerd@gnu.org>
parents: 30201
diff changeset
1725
70f3583c5da1 (FUNCTIONP): New macro.
Gerd Moellmann <gerd@gnu.org>
parents: 30201
diff changeset
1726 #define FUNCTIONP(OBJ) \
70f3583c5da1 (FUNCTIONP): New macro.
Gerd Moellmann <gerd@gnu.org>
parents: 30201
diff changeset
1727 ((CONSP (OBJ) && EQ (XCAR (OBJ), Qlambda)) \
70f3583c5da1 (FUNCTIONP): New macro.
Gerd Moellmann <gerd@gnu.org>
parents: 30201
diff changeset
1728 || (SYMBOLP (OBJ) && !NILP (Ffboundp (OBJ))) \
70f3583c5da1 (FUNCTIONP): New macro.
Gerd Moellmann <gerd@gnu.org>
parents: 30201
diff changeset
1729 || COMPILEDP (OBJ) \
70f3583c5da1 (FUNCTIONP): New macro.
Gerd Moellmann <gerd@gnu.org>
parents: 30201
diff changeset
1730 || SUBRP (OBJ))
45623
0e92d219e195 (current_column): Now returns float.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 45545
diff changeset
1731
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1732 /* defsubr (Sname);
41080
bbe0b9b4164b Comment fix.
Pavel Janík <Pavel@Janik.cz>
parents: 41067
diff changeset
1733 is how we define the symbol for function `name' at start-up time. */
20297
bf0a54297d95 Add more prototypes and declarations. Forward declare
Andreas Schwab <schwab@suse.de>
parents: 20123
diff changeset
1734 extern void defsubr P_ ((struct Lisp_Subr *));
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1735
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1736 #define MANY -2
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1737 #define UNEVALLED -1
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1738
20297
bf0a54297d95 Add more prototypes and declarations. Forward declare
Andreas Schwab <schwab@suse.de>
parents: 20123
diff changeset
1739 extern void defvar_lisp P_ ((char *, Lisp_Object *));
bf0a54297d95 Add more prototypes and declarations. Forward declare
Andreas Schwab <schwab@suse.de>
parents: 20123
diff changeset
1740 extern void defvar_lisp_nopro P_ ((char *, Lisp_Object *));
bf0a54297d95 Add more prototypes and declarations. Forward declare
Andreas Schwab <schwab@suse.de>
parents: 20123
diff changeset
1741 extern void defvar_bool P_ ((char *, int *));
43713
f92c4d87863a Change defvar_int def and vars to use EMACS_INT instead of just int.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43699
diff changeset
1742 extern void defvar_int P_ ((char *, EMACS_INT *));
20297
bf0a54297d95 Add more prototypes and declarations. Forward declare
Andreas Schwab <schwab@suse.de>
parents: 20123
diff changeset
1743 extern void defvar_kboard P_ ((char *, int));
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1744
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1745 /* Macros we use to define forwarded Lisp variables.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1746 These are used in the syms_of_FILENAME functions. */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1747
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1748 #define DEFVAR_LISP(lname, vname, doc) defvar_lisp (lname, vname)
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1749 #define DEFVAR_LISP_NOPRO(lname, vname, doc) defvar_lisp_nopro (lname, vname)
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1750 #define DEFVAR_BOOL(lname, vname, doc) defvar_bool (lname, vname)
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1751 #define DEFVAR_INT(lname, vname, doc) defvar_int (lname, vname)
59111
a9827c6a7e4e Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 59070
diff changeset
1752
11012
31d88266ed12 (struct KBOARD, MULTI_KBOARD, current_kboard, all_kboards,
Karl Heuer <kwzh@gnu.org>
parents: 10944
diff changeset
1753 #define DEFVAR_KBOARD(lname, vname, doc) \
31d88266ed12 (struct KBOARD, MULTI_KBOARD, current_kboard, all_kboards,
Karl Heuer <kwzh@gnu.org>
parents: 10944
diff changeset
1754 defvar_kboard (lname, \
31d88266ed12 (struct KBOARD, MULTI_KBOARD, current_kboard, all_kboards,
Karl Heuer <kwzh@gnu.org>
parents: 10944
diff changeset
1755 (int)((char *)(&current_kboard->vname) \
31d88266ed12 (struct KBOARD, MULTI_KBOARD, current_kboard, all_kboards,
Karl Heuer <kwzh@gnu.org>
parents: 10944
diff changeset
1756 - (char *)current_kboard))
39898
bc20a5e30bfd (DEFUN, DEFVAR_LISP, ...) [DOC_STRINGS_IN_COMMENTS]:
Gerd Moellmann <gerd@gnu.org>
parents: 39861
diff changeset
1757
bc20a5e30bfd (DEFUN, DEFVAR_LISP, ...) [DOC_STRINGS_IN_COMMENTS]:
Gerd Moellmann <gerd@gnu.org>
parents: 39861
diff changeset
1758
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1759
1197
4eee4dc734bb * lisp.h (struct handler): Remove the poll_suppress_count member
Jim Blandy <jimb@redhat.com>
parents: 1184
diff changeset
1760 /* Structure for recording Lisp call stack for backtrace purposes. */
4eee4dc734bb * lisp.h (struct handler): Remove the poll_suppress_count member
Jim Blandy <jimb@redhat.com>
parents: 1184
diff changeset
1761
4eee4dc734bb * lisp.h (struct handler): Remove the poll_suppress_count member
Jim Blandy <jimb@redhat.com>
parents: 1184
diff changeset
1762 /* The special binding stack holds the outer values of variables while
4eee4dc734bb * lisp.h (struct handler): Remove the poll_suppress_count member
Jim Blandy <jimb@redhat.com>
parents: 1184
diff changeset
1763 they are bound by a function application or a let form, stores the
4eee4dc734bb * lisp.h (struct handler): Remove the poll_suppress_count member
Jim Blandy <jimb@redhat.com>
parents: 1184
diff changeset
1764 code to be executed for Lisp unwind-protect forms, and stores the C
4eee4dc734bb * lisp.h (struct handler): Remove the poll_suppress_count member
Jim Blandy <jimb@redhat.com>
parents: 1184
diff changeset
1765 functions to be called for record_unwind_protect.
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1766
1197
4eee4dc734bb * lisp.h (struct handler): Remove the poll_suppress_count member
Jim Blandy <jimb@redhat.com>
parents: 1184
diff changeset
1767 If func is non-zero, undoing this binding applies func to old_value;
4eee4dc734bb * lisp.h (struct handler): Remove the poll_suppress_count member
Jim Blandy <jimb@redhat.com>
parents: 1184
diff changeset
1768 This implements record_unwind_protect.
27292
d0aba668c5af (set_internal): Enter the new arg.
Richard M. Stallman <rms@gnu.org>
parents: 27141
diff changeset
1769
d0aba668c5af (set_internal): Enter the new arg.
Richard M. Stallman <rms@gnu.org>
parents: 27141
diff changeset
1770 Otherwise, the element is a variable binding.
45623
0e92d219e195 (current_column): Now returns float.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 45545
diff changeset
1771
27292
d0aba668c5af (set_internal): Enter the new arg.
Richard M. Stallman <rms@gnu.org>
parents: 27141
diff changeset
1772 If the symbol field is a symbol, it is an ordinary variable binding.
45623
0e92d219e195 (current_column): Now returns float.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 45545
diff changeset
1773
38289
a35885785077 Change comment.
Gerd Moellmann <gerd@gnu.org>
parents: 38275
diff changeset
1774 Otherwise, it should be a structure (SYMBOL WHERE
a35885785077 Change comment.
Gerd Moellmann <gerd@gnu.org>
parents: 38275
diff changeset
1775 . CURRENT-BUFFER), which means having bound a local value while
a35885785077 Change comment.
Gerd Moellmann <gerd@gnu.org>
parents: 38275
diff changeset
1776 CURRENT-BUFFER was active. If WHERE is nil this means we saw the
38275
7ea4cdf2b1dc Improve comment.
Gerd Moellmann <gerd@gnu.org>
parents: 37643
diff changeset
1777 default value when binding SYMBOL. WHERE being a buffer or frame
38289
a35885785077 Change comment.
Gerd Moellmann <gerd@gnu.org>
parents: 38275
diff changeset
1778 means we saw a buffer-local or frame-local value. Other values of
a35885785077 Change comment.
Gerd Moellmann <gerd@gnu.org>
parents: 38275
diff changeset
1779 WHERE mean an internal error. */
27292
d0aba668c5af (set_internal): Enter the new arg.
Richard M. Stallman <rms@gnu.org>
parents: 27141
diff changeset
1780
51035
b17fe74b2af3 (specbinding_func): New typedef.
Richard M. Stallman <rms@gnu.org>
parents: 50996
diff changeset
1781 typedef Lisp_Object (*specbinding_func) P_ ((Lisp_Object));
b17fe74b2af3 (specbinding_func): New typedef.
Richard M. Stallman <rms@gnu.org>
parents: 50996
diff changeset
1782
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1783 struct specbinding
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1784 {
69157
76d55cdb7481 (struct specbinding, specpdl_ptr): Remove the volatile qualifier which was
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 68758
diff changeset
1785 Lisp_Object symbol, old_value;
76d55cdb7481 (struct specbinding, specpdl_ptr): Remove the volatile qualifier which was
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 68758
diff changeset
1786 specbinding_func func;
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1787 Lisp_Object unused; /* Dividing by 16 is faster than by 12 */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1788 };
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1789
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1790 extern struct specbinding *specpdl;
69157
76d55cdb7481 (struct specbinding, specpdl_ptr): Remove the volatile qualifier which was
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 68758
diff changeset
1791 extern struct specbinding *specpdl_ptr;
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1792 extern int specpdl_size;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1793
43713
f92c4d87863a Change defvar_int def and vars to use EMACS_INT instead of just int.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43699
diff changeset
1794 extern EMACS_INT max_specpdl_size;
42415
cdbdb10cfbe6 (max_specpdl_size): Add declaration.
Richard M. Stallman <rms@gnu.org>
parents: 42278
diff changeset
1795
46284
36c70758a8d7 (SPECPDL_INDEX): Rename from BINDING_STACK_SIZE. All callers updated.
Juanma Barranquero <lekktu@gmail.com>
parents: 46220
diff changeset
1796 #define SPECPDL_INDEX() (specpdl_ptr - specpdl)
33508
027d4bc2e846 (BINDING_STACK_SIZE): New macro.
Gerd Moellmann <gerd@gnu.org>
parents: 33461
diff changeset
1797
1197
4eee4dc734bb * lisp.h (struct handler): Remove the poll_suppress_count member
Jim Blandy <jimb@redhat.com>
parents: 1184
diff changeset
1798 /* Everything needed to describe an active condition case. */
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1799 struct handler
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1800 {
1197
4eee4dc734bb * lisp.h (struct handler): Remove the poll_suppress_count member
Jim Blandy <jimb@redhat.com>
parents: 1184
diff changeset
1801 /* The handler clauses and variable from the condition-case form. */
46866
34ee31960675 Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 46650
diff changeset
1802 /* For a handler set up in Lisp code, this is always a list.
34ee31960675 Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 46650
diff changeset
1803 For an internal handler set up by internal_condition_case*,
34ee31960675 Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 46650
diff changeset
1804 this can instead be the symbol t or `error'.
34ee31960675 Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 46650
diff changeset
1805 t: handle all conditions.
34ee31960675 Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 46650
diff changeset
1806 error: handle all conditions, and errors can run the debugger
34ee31960675 Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 46650
diff changeset
1807 or display a backtrace. */
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1808 Lisp_Object handler;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1809 Lisp_Object var;
6131
854e14ecfa93 (struct handler): New field chosen_clause.
Richard M. Stallman <rms@gnu.org>
parents: 6094
diff changeset
1810 /* Fsignal stores here the condition-case clause that applies,
854e14ecfa93 (struct handler): New field chosen_clause.
Richard M. Stallman <rms@gnu.org>
parents: 6094
diff changeset
1811 and Fcondition_case thus knows which clause to run. */
854e14ecfa93 (struct handler): New field chosen_clause.
Richard M. Stallman <rms@gnu.org>
parents: 6094
diff changeset
1812 Lisp_Object chosen_clause;
1197
4eee4dc734bb * lisp.h (struct handler): Remove the poll_suppress_count member
Jim Blandy <jimb@redhat.com>
parents: 1184
diff changeset
1813
4eee4dc734bb * lisp.h (struct handler): Remove the poll_suppress_count member
Jim Blandy <jimb@redhat.com>
parents: 1184
diff changeset
1814 /* Used to effect the longjump out to the handler. */
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1815 struct catchtag *tag;
1197
4eee4dc734bb * lisp.h (struct handler): Remove the poll_suppress_count member
Jim Blandy <jimb@redhat.com>
parents: 1184
diff changeset
1816
4eee4dc734bb * lisp.h (struct handler): Remove the poll_suppress_count member
Jim Blandy <jimb@redhat.com>
parents: 1184
diff changeset
1817 /* The next enclosing handler. */
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1818 struct handler *next;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1819 };
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1820
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1821 extern struct handler *handlerlist;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1822
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1823 extern struct catchtag *catchlist;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1824 extern struct backtrace *backtrace_list;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1825
6131
854e14ecfa93 (struct handler): New field chosen_clause.
Richard M. Stallman <rms@gnu.org>
parents: 6094
diff changeset
1826 extern Lisp_Object memory_signal_data;
854e14ecfa93 (struct handler): New field chosen_clause.
Richard M. Stallman <rms@gnu.org>
parents: 6094
diff changeset
1827
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1828 /* An address near the bottom of the stack.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1829 Tells GC how to save a copy of the stack. */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1830 extern char *stack_bottom;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1831
26296
e5c745f5a9fc (struct gcpro) [DEBUG_GCPRO]: New field `level'.
Richard M. Stallman <rms@gnu.org>
parents: 26275
diff changeset
1832 /* Check quit-flag and quit if it is non-nil.
e5c745f5a9fc (struct gcpro) [DEBUG_GCPRO]: New field `level'.
Richard M. Stallman <rms@gnu.org>
parents: 26275
diff changeset
1833 Typing C-g does not directly cause a quit; it only sets Vquit_flag.
e5c745f5a9fc (struct gcpro) [DEBUG_GCPRO]: New field `level'.
Richard M. Stallman <rms@gnu.org>
parents: 26275
diff changeset
1834 So the program needs to do QUIT at times when it is safe to quit.
e5c745f5a9fc (struct gcpro) [DEBUG_GCPRO]: New field `level'.
Richard M. Stallman <rms@gnu.org>
parents: 26275
diff changeset
1835 Every loop that might run for a long time or might not exit
e5c745f5a9fc (struct gcpro) [DEBUG_GCPRO]: New field `level'.
Richard M. Stallman <rms@gnu.org>
parents: 26275
diff changeset
1836 ought to do QUIT at least once, at a safe place.
e5c745f5a9fc (struct gcpro) [DEBUG_GCPRO]: New field `level'.
Richard M. Stallman <rms@gnu.org>
parents: 26275
diff changeset
1837 Unless that is impossible, of course.
e5c745f5a9fc (struct gcpro) [DEBUG_GCPRO]: New field `level'.
Richard M. Stallman <rms@gnu.org>
parents: 26275
diff changeset
1838 But it is very desirable to avoid creating loops where QUIT is impossible.
e5c745f5a9fc (struct gcpro) [DEBUG_GCPRO]: New field `level'.
Richard M. Stallman <rms@gnu.org>
parents: 26275
diff changeset
1839
e5c745f5a9fc (struct gcpro) [DEBUG_GCPRO]: New field `level'.
Richard M. Stallman <rms@gnu.org>
parents: 26275
diff changeset
1840 Exception: if you set immediate_quit to nonzero,
e5c745f5a9fc (struct gcpro) [DEBUG_GCPRO]: New field `level'.
Richard M. Stallman <rms@gnu.org>
parents: 26275
diff changeset
1841 then the handler that responds to the C-g does the quit itself.
e5c745f5a9fc (struct gcpro) [DEBUG_GCPRO]: New field `level'.
Richard M. Stallman <rms@gnu.org>
parents: 26275
diff changeset
1842 This is a good thing to do around a loop that has no side effects
e5c745f5a9fc (struct gcpro) [DEBUG_GCPRO]: New field `level'.
Richard M. Stallman <rms@gnu.org>
parents: 26275
diff changeset
1843 and (in particular) cannot call arbitrary Lisp code. */
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1844
53658
c6460069583e (QUIT) [SYNC_INPUT]: Check interrupt_input_pending as well.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53654
diff changeset
1845 #ifdef SYNC_INPUT
c6460069583e (QUIT) [SYNC_INPUT]: Check interrupt_input_pending as well.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53654
diff changeset
1846 extern void handle_async_input P_ ((void));
c6460069583e (QUIT) [SYNC_INPUT]: Check interrupt_input_pending as well.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53654
diff changeset
1847 extern int interrupt_input_pending;
58932
ce2e33a2adae (QUIT): Check for Vthrow_on_input.
Richard M. Stallman <rms@gnu.org>
parents: 58818
diff changeset
1848
53658
c6460069583e (QUIT) [SYNC_INPUT]: Check interrupt_input_pending as well.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53654
diff changeset
1849 #define QUIT \
c6460069583e (QUIT) [SYNC_INPUT]: Check interrupt_input_pending as well.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53654
diff changeset
1850 do { \
c6460069583e (QUIT) [SYNC_INPUT]: Check interrupt_input_pending as well.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53654
diff changeset
1851 if (!NILP (Vquit_flag) && NILP (Vinhibit_quit)) \
c6460069583e (QUIT) [SYNC_INPUT]: Check interrupt_input_pending as well.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53654
diff changeset
1852 { \
58932
ce2e33a2adae (QUIT): Check for Vthrow_on_input.
Richard M. Stallman <rms@gnu.org>
parents: 58818
diff changeset
1853 Lisp_Object flag = Vquit_flag; \
53658
c6460069583e (QUIT) [SYNC_INPUT]: Check interrupt_input_pending as well.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53654
diff changeset
1854 Vquit_flag = Qnil; \
58932
ce2e33a2adae (QUIT): Check for Vthrow_on_input.
Richard M. Stallman <rms@gnu.org>
parents: 58818
diff changeset
1855 if (EQ (Vthrow_on_input, flag)) \
64847
ac757cf8a328 (QUIT): Throw t to Vthrow_on_input.
Richard M. Stallman <rms@gnu.org>
parents: 64770
diff changeset
1856 Fthrow (Vthrow_on_input, Qt); \
53658
c6460069583e (QUIT) [SYNC_INPUT]: Check interrupt_input_pending as well.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53654
diff changeset
1857 Fsignal (Qquit, Qnil); \
c6460069583e (QUIT) [SYNC_INPUT]: Check interrupt_input_pending as well.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53654
diff changeset
1858 } \
c6460069583e (QUIT) [SYNC_INPUT]: Check interrupt_input_pending as well.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53654
diff changeset
1859 else if (interrupt_input_pending) \
c6460069583e (QUIT) [SYNC_INPUT]: Check interrupt_input_pending as well.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53654
diff changeset
1860 handle_async_input (); \
c6460069583e (QUIT) [SYNC_INPUT]: Check interrupt_input_pending as well.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53654
diff changeset
1861 } while (0)
c6460069583e (QUIT) [SYNC_INPUT]: Check interrupt_input_pending as well.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53654
diff changeset
1862
c6460069583e (QUIT) [SYNC_INPUT]: Check interrupt_input_pending as well.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53654
diff changeset
1863 #else /* not SYNC_INPUT */
c6460069583e (QUIT) [SYNC_INPUT]: Check interrupt_input_pending as well.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53654
diff changeset
1864
26309
8817f3f80755 (QUIT): Give it statement form.
Gerd Moellmann <gerd@gnu.org>
parents: 26296
diff changeset
1865 #define QUIT \
8817f3f80755 (QUIT): Give it statement form.
Gerd Moellmann <gerd@gnu.org>
parents: 26296
diff changeset
1866 do { \
8817f3f80755 (QUIT): Give it statement form.
Gerd Moellmann <gerd@gnu.org>
parents: 26296
diff changeset
1867 if (!NILP (Vquit_flag) && NILP (Vinhibit_quit)) \
8817f3f80755 (QUIT): Give it statement form.
Gerd Moellmann <gerd@gnu.org>
parents: 26296
diff changeset
1868 { \
58932
ce2e33a2adae (QUIT): Check for Vthrow_on_input.
Richard M. Stallman <rms@gnu.org>
parents: 58818
diff changeset
1869 Lisp_Object flag = Vquit_flag; \
26309
8817f3f80755 (QUIT): Give it statement form.
Gerd Moellmann <gerd@gnu.org>
parents: 26296
diff changeset
1870 Vquit_flag = Qnil; \
58932
ce2e33a2adae (QUIT): Check for Vthrow_on_input.
Richard M. Stallman <rms@gnu.org>
parents: 58818
diff changeset
1871 if (EQ (Vthrow_on_input, flag)) \
64981
62ba4ebf9352 (QUIT) [!SYNC_INPUT]: Throw t to Vthrow_on_input.
Kim F. Storm <storm@cua.dk>
parents: 64978
diff changeset
1872 Fthrow (Vthrow_on_input, Qt); \
26309
8817f3f80755 (QUIT): Give it statement form.
Gerd Moellmann <gerd@gnu.org>
parents: 26296
diff changeset
1873 Fsignal (Qquit, Qnil); \
8817f3f80755 (QUIT): Give it statement form.
Gerd Moellmann <gerd@gnu.org>
parents: 26296
diff changeset
1874 } \
8817f3f80755 (QUIT): Give it statement form.
Gerd Moellmann <gerd@gnu.org>
parents: 26296
diff changeset
1875 } while (0)
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1876
53658
c6460069583e (QUIT) [SYNC_INPUT]: Check interrupt_input_pending as well.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53654
diff changeset
1877 #endif /* not SYNC_INPUT */
c6460069583e (QUIT) [SYNC_INPUT]: Check interrupt_input_pending as well.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53654
diff changeset
1878
c6460069583e (QUIT) [SYNC_INPUT]: Check interrupt_input_pending as well.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53654
diff changeset
1879
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1880 /* Nonzero if ought to quit now. */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1881
493
8b101799ff37 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 439
diff changeset
1882 #define QUITP (!NILP (Vquit_flag) && NILP (Vinhibit_quit))
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1883
18006
d29a9b467ac9 (CHAR_TABLE_REF): Do not check validity of CT.
Kenichi Handa <handa@m17n.org>
parents: 17871
diff changeset
1884 /* Variables used locally in the following case handling macros. */
18613
614b916ff5bf Fix bugs with inappropriate mixing of Lisp_Object with int.
Richard M. Stallman <rms@gnu.org>
parents: 18115
diff changeset
1885 extern int case_temp1;
614b916ff5bf Fix bugs with inappropriate mixing of Lisp_Object with int.
Richard M. Stallman <rms@gnu.org>
parents: 18115
diff changeset
1886 extern Lisp_Object case_temp2;
18006
d29a9b467ac9 (CHAR_TABLE_REF): Do not check validity of CT.
Kenichi Handa <handa@m17n.org>
parents: 17871
diff changeset
1887
17404
73012b195cf3 (DOWNCASE): Return int, not Lisp_Object.
Karl Heuer <kwzh@gnu.org>
parents: 17326
diff changeset
1888 /* Current buffer's map from characters to lower-case characters. */
73012b195cf3 (DOWNCASE): Return int, not Lisp_Object.
Karl Heuer <kwzh@gnu.org>
parents: 17326
diff changeset
1889
18006
d29a9b467ac9 (CHAR_TABLE_REF): Do not check validity of CT.
Kenichi Handa <handa@m17n.org>
parents: 17871
diff changeset
1890 #define DOWNCASE_TABLE current_buffer->downcase_table
17404
73012b195cf3 (DOWNCASE): Return int, not Lisp_Object.
Karl Heuer <kwzh@gnu.org>
parents: 17326
diff changeset
1891
73012b195cf3 (DOWNCASE): Return int, not Lisp_Object.
Karl Heuer <kwzh@gnu.org>
parents: 17326
diff changeset
1892 /* Current buffer's map from characters to upper-case characters. */
73012b195cf3 (DOWNCASE): Return int, not Lisp_Object.
Karl Heuer <kwzh@gnu.org>
parents: 17326
diff changeset
1893
18006
d29a9b467ac9 (CHAR_TABLE_REF): Do not check validity of CT.
Kenichi Handa <handa@m17n.org>
parents: 17871
diff changeset
1894 #define UPCASE_TABLE current_buffer->upcase_table
17404
73012b195cf3 (DOWNCASE): Return int, not Lisp_Object.
Karl Heuer <kwzh@gnu.org>
parents: 17326
diff changeset
1895
73012b195cf3 (DOWNCASE): Return int, not Lisp_Object.
Karl Heuer <kwzh@gnu.org>
parents: 17326
diff changeset
1896 /* Downcase a character, or make no change if that cannot be done. */
73012b195cf3 (DOWNCASE): Return int, not Lisp_Object.
Karl Heuer <kwzh@gnu.org>
parents: 17326
diff changeset
1897
18006
d29a9b467ac9 (CHAR_TABLE_REF): Do not check validity of CT.
Kenichi Handa <handa@m17n.org>
parents: 17871
diff changeset
1898 #define DOWNCASE(CH) \
d29a9b467ac9 (CHAR_TABLE_REF): Do not check validity of CT.
Kenichi Handa <handa@m17n.org>
parents: 17871
diff changeset
1899 ((case_temp1 = (CH), \
d29a9b467ac9 (CHAR_TABLE_REF): Do not check validity of CT.
Kenichi Handa <handa@m17n.org>
parents: 17871
diff changeset
1900 case_temp2 = CHAR_TABLE_REF (DOWNCASE_TABLE, case_temp1), \
d29a9b467ac9 (CHAR_TABLE_REF): Do not check validity of CT.
Kenichi Handa <handa@m17n.org>
parents: 17871
diff changeset
1901 NATNUMP (case_temp2)) \
d29a9b467ac9 (CHAR_TABLE_REF): Do not check validity of CT.
Kenichi Handa <handa@m17n.org>
parents: 17871
diff changeset
1902 ? XFASTINT (case_temp2) : case_temp1)
17404
73012b195cf3 (DOWNCASE): Return int, not Lisp_Object.
Karl Heuer <kwzh@gnu.org>
parents: 17326
diff changeset
1903
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1904 /* 1 if CH is upper case. */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1905
18111
4bd5e5e3db42 (concat3, get_truename_buffer): Declare them.
Richard M. Stallman <rms@gnu.org>
parents: 18006
diff changeset
1906 #define UPPERCASEP(CH) (DOWNCASE (CH) != (CH))
17404
73012b195cf3 (DOWNCASE): Return int, not Lisp_Object.
Karl Heuer <kwzh@gnu.org>
parents: 17326
diff changeset
1907
73012b195cf3 (DOWNCASE): Return int, not Lisp_Object.
Karl Heuer <kwzh@gnu.org>
parents: 17326
diff changeset
1908 /* 1 if CH is neither upper nor lower case. */
73012b195cf3 (DOWNCASE): Return int, not Lisp_Object.
Karl Heuer <kwzh@gnu.org>
parents: 17326
diff changeset
1909
18006
d29a9b467ac9 (CHAR_TABLE_REF): Do not check validity of CT.
Kenichi Handa <handa@m17n.org>
parents: 17871
diff changeset
1910 #define NOCASEP(CH) (UPCASE1 (CH) == (CH))
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1911
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1912 /* 1 if CH is lower case. */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1913
17289
83cc6a193391 (CHAR_TABLE_REF): Fix syntax error.
Karl Heuer <kwzh@gnu.org>
parents: 17188
diff changeset
1914 #define LOWERCASEP(CH) (!UPPERCASEP (CH) && !NOCASEP(CH))
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1915
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1916 /* Upcase a character, or make no change if that cannot be done. */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1917
17289
83cc6a193391 (CHAR_TABLE_REF): Fix syntax error.
Karl Heuer <kwzh@gnu.org>
parents: 17188
diff changeset
1918 #define UPCASE(CH) (!UPPERCASEP (CH) ? UPCASE1 (CH) : (CH))
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1919
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1920 /* Upcase a character known to be not upper case. */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1921
18006
d29a9b467ac9 (CHAR_TABLE_REF): Do not check validity of CT.
Kenichi Handa <handa@m17n.org>
parents: 17871
diff changeset
1922 #define UPCASE1(CH) \
d29a9b467ac9 (CHAR_TABLE_REF): Do not check validity of CT.
Kenichi Handa <handa@m17n.org>
parents: 17871
diff changeset
1923 ((case_temp1 = (CH), \
d29a9b467ac9 (CHAR_TABLE_REF): Do not check validity of CT.
Kenichi Handa <handa@m17n.org>
parents: 17871
diff changeset
1924 case_temp2 = CHAR_TABLE_REF (UPCASE_TABLE, case_temp1), \
d29a9b467ac9 (CHAR_TABLE_REF): Do not check validity of CT.
Kenichi Handa <handa@m17n.org>
parents: 17871
diff changeset
1925 NATNUMP (case_temp2)) \
d29a9b467ac9 (CHAR_TABLE_REF): Do not check validity of CT.
Kenichi Handa <handa@m17n.org>
parents: 17871
diff changeset
1926 ? XFASTINT (case_temp2) : case_temp1)
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1927
61187
4d082fa849ea (Vascii_upcase_table, Vascii_canon_table,
Kenichi Handa <handa@m17n.org>
parents: 60897
diff changeset
1928 extern Lisp_Object Vascii_downcase_table, Vascii_upcase_table;
4d082fa849ea (Vascii_upcase_table, Vascii_canon_table,
Kenichi Handa <handa@m17n.org>
parents: 60897
diff changeset
1929 extern Lisp_Object Vascii_canon_table, Vascii_eqv_table;
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1930
10316
272f15eddaca (enum Lisp_Type): Delete Lisp_Buffer.
Richard M. Stallman <rms@gnu.org>
parents: 10292
diff changeset
1931 /* Number of bytes of structure consed since last GC. */
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1932
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1933 extern int consing_since_gc;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1934
64612
6926a2764ae6 (gc_cons_threshold, gc_relative_threshold): Declared.
Richard M. Stallman <rms@gnu.org>
parents: 64272
diff changeset
1935 /* Thresholds for doing another gc. */
6926a2764ae6 (gc_cons_threshold, gc_relative_threshold): Declared.
Richard M. Stallman <rms@gnu.org>
parents: 64272
diff changeset
1936
6926a2764ae6 (gc_cons_threshold, gc_relative_threshold): Declared.
Richard M. Stallman <rms@gnu.org>
parents: 64272
diff changeset
1937 extern EMACS_INT gc_cons_threshold;
6926a2764ae6 (gc_cons_threshold, gc_relative_threshold): Declared.
Richard M. Stallman <rms@gnu.org>
parents: 64272
diff changeset
1938
6926a2764ae6 (gc_cons_threshold, gc_relative_threshold): Declared.
Richard M. Stallman <rms@gnu.org>
parents: 64272
diff changeset
1939 extern EMACS_INT gc_relative_threshold;
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1940
66531
8d5d518bafa5 (memory_full_cons_threshold): Declared.
Richard M. Stallman <rms@gnu.org>
parents: 65795
diff changeset
1941 extern EMACS_INT memory_full_cons_threshold;
8d5d518bafa5 (memory_full_cons_threshold): Declared.
Richard M. Stallman <rms@gnu.org>
parents: 65795
diff changeset
1942
10316
272f15eddaca (enum Lisp_Type): Delete Lisp_Buffer.
Richard M. Stallman <rms@gnu.org>
parents: 10292
diff changeset
1943 /* Structure for recording stack slots that need marking. */
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1944
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1945 /* This is a chain of structures, each of which points at a Lisp_Object variable
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1946 whose value should be marked in garbage collection.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1947 Normally every link of the chain is an automatic variable of a function,
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1948 and its `val' points to some argument or local variable of the function.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1949 On exit to the function, the chain is set back to the value it had on entry.
4826
033bdae6b9f9 Format comment.
Brian Fox <bfox@gnu.org>
parents: 4528
diff changeset
1950 This way, no link remains in the chain when the stack frame containing the
033bdae6b9f9 Format comment.
Brian Fox <bfox@gnu.org>
parents: 4528
diff changeset
1951 link disappears.
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1952
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1953 Every function that can call Feval must protect in this fashion all
10316
272f15eddaca (enum Lisp_Type): Delete Lisp_Buffer.
Richard M. Stallman <rms@gnu.org>
parents: 10292
diff changeset
1954 Lisp_Object variables whose contents will be used again. */
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1955
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1956 extern struct gcpro *gcprolist;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1957
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1958 struct gcpro
32065
4f8ce7eb45a5 (wrong_type_argument): Remove NO_RETURN, the function can
Gerd Moellmann <gerd@gnu.org>
parents: 31991
diff changeset
1959 {
4f8ce7eb45a5 (wrong_type_argument): Remove NO_RETURN, the function can
Gerd Moellmann <gerd@gnu.org>
parents: 31991
diff changeset
1960 struct gcpro *next;
45623
0e92d219e195 (current_column): Now returns float.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 45545
diff changeset
1961
32065
4f8ce7eb45a5 (wrong_type_argument): Remove NO_RETURN, the function can
Gerd Moellmann <gerd@gnu.org>
parents: 31991
diff changeset
1962 /* Address of first protected variable. */
4f8ce7eb45a5 (wrong_type_argument): Remove NO_RETURN, the function can
Gerd Moellmann <gerd@gnu.org>
parents: 31991
diff changeset
1963 volatile Lisp_Object *var;
45623
0e92d219e195 (current_column): Now returns float.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 45545
diff changeset
1964
32065
4f8ce7eb45a5 (wrong_type_argument): Remove NO_RETURN, the function can
Gerd Moellmann <gerd@gnu.org>
parents: 31991
diff changeset
1965 /* Number of consecutive protected variables. */
4f8ce7eb45a5 (wrong_type_argument): Remove NO_RETURN, the function can
Gerd Moellmann <gerd@gnu.org>
parents: 31991
diff changeset
1966 int nvars;
45623
0e92d219e195 (current_column): Now returns float.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 45545
diff changeset
1967
26296
e5c745f5a9fc (struct gcpro) [DEBUG_GCPRO]: New field `level'.
Richard M. Stallman <rms@gnu.org>
parents: 26275
diff changeset
1968 #ifdef DEBUG_GCPRO
32065
4f8ce7eb45a5 (wrong_type_argument): Remove NO_RETURN, the function can
Gerd Moellmann <gerd@gnu.org>
parents: 31991
diff changeset
1969 int level;
26296
e5c745f5a9fc (struct gcpro) [DEBUG_GCPRO]: New field `level'.
Richard M. Stallman <rms@gnu.org>
parents: 26275
diff changeset
1970 #endif
32065
4f8ce7eb45a5 (wrong_type_argument): Remove NO_RETURN, the function can
Gerd Moellmann <gerd@gnu.org>
parents: 31991
diff changeset
1971 };
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1972
27741
ef732a190ead (GC_USE_GCPROS_AS_BEFORE, GC_MAKE_GCPROS_NOOPS)
Gerd Moellmann <gerd@gnu.org>
parents: 27727
diff changeset
1973 /* Values of GC_MARK_STACK during compilation:
ef732a190ead (GC_USE_GCPROS_AS_BEFORE, GC_MAKE_GCPROS_NOOPS)
Gerd Moellmann <gerd@gnu.org>
parents: 27727
diff changeset
1974
ef732a190ead (GC_USE_GCPROS_AS_BEFORE, GC_MAKE_GCPROS_NOOPS)
Gerd Moellmann <gerd@gnu.org>
parents: 27727
diff changeset
1975 0 Use GCPRO as before
ef732a190ead (GC_USE_GCPROS_AS_BEFORE, GC_MAKE_GCPROS_NOOPS)
Gerd Moellmann <gerd@gnu.org>
parents: 27727
diff changeset
1976 1 Do the real thing, make GCPROs and UNGCPRO no-ops.
ef732a190ead (GC_USE_GCPROS_AS_BEFORE, GC_MAKE_GCPROS_NOOPS)
Gerd Moellmann <gerd@gnu.org>
parents: 27727
diff changeset
1977 2 Mark the stack, and check that everything GCPRO'd is
ef732a190ead (GC_USE_GCPROS_AS_BEFORE, GC_MAKE_GCPROS_NOOPS)
Gerd Moellmann <gerd@gnu.org>
parents: 27727
diff changeset
1978 marked.
ef732a190ead (GC_USE_GCPROS_AS_BEFORE, GC_MAKE_GCPROS_NOOPS)
Gerd Moellmann <gerd@gnu.org>
parents: 27727
diff changeset
1979 3 Mark using GCPRO's, mark stack last, and count how many
ef732a190ead (GC_USE_GCPROS_AS_BEFORE, GC_MAKE_GCPROS_NOOPS)
Gerd Moellmann <gerd@gnu.org>
parents: 27727
diff changeset
1980 dead objects are kept alive. */
ef732a190ead (GC_USE_GCPROS_AS_BEFORE, GC_MAKE_GCPROS_NOOPS)
Gerd Moellmann <gerd@gnu.org>
parents: 27727
diff changeset
1981
ef732a190ead (GC_USE_GCPROS_AS_BEFORE, GC_MAKE_GCPROS_NOOPS)
Gerd Moellmann <gerd@gnu.org>
parents: 27727
diff changeset
1982
ef732a190ead (GC_USE_GCPROS_AS_BEFORE, GC_MAKE_GCPROS_NOOPS)
Gerd Moellmann <gerd@gnu.org>
parents: 27727
diff changeset
1983 #define GC_USE_GCPROS_AS_BEFORE 0
ef732a190ead (GC_USE_GCPROS_AS_BEFORE, GC_MAKE_GCPROS_NOOPS)
Gerd Moellmann <gerd@gnu.org>
parents: 27727
diff changeset
1984 #define GC_MAKE_GCPROS_NOOPS 1
ef732a190ead (GC_USE_GCPROS_AS_BEFORE, GC_MAKE_GCPROS_NOOPS)
Gerd Moellmann <gerd@gnu.org>
parents: 27727
diff changeset
1985 #define GC_MARK_STACK_CHECK_GCPROS 2
ef732a190ead (GC_USE_GCPROS_AS_BEFORE, GC_MAKE_GCPROS_NOOPS)
Gerd Moellmann <gerd@gnu.org>
parents: 27727
diff changeset
1986 #define GC_USE_GCPROS_CHECK_ZOMBIES 3
ef732a190ead (GC_USE_GCPROS_AS_BEFORE, GC_MAKE_GCPROS_NOOPS)
Gerd Moellmann <gerd@gnu.org>
parents: 27727
diff changeset
1987
ef732a190ead (GC_USE_GCPROS_AS_BEFORE, GC_MAKE_GCPROS_NOOPS)
Gerd Moellmann <gerd@gnu.org>
parents: 27727
diff changeset
1988 #ifndef GC_MARK_STACK
ef732a190ead (GC_USE_GCPROS_AS_BEFORE, GC_MAKE_GCPROS_NOOPS)
Gerd Moellmann <gerd@gnu.org>
parents: 27727
diff changeset
1989 #define GC_MARK_STACK GC_USE_GCPROS_AS_BEFORE
ef732a190ead (GC_USE_GCPROS_AS_BEFORE, GC_MAKE_GCPROS_NOOPS)
Gerd Moellmann <gerd@gnu.org>
parents: 27727
diff changeset
1990 #endif
ef732a190ead (GC_USE_GCPROS_AS_BEFORE, GC_MAKE_GCPROS_NOOPS)
Gerd Moellmann <gerd@gnu.org>
parents: 27727
diff changeset
1991
ef732a190ead (GC_USE_GCPROS_AS_BEFORE, GC_MAKE_GCPROS_NOOPS)
Gerd Moellmann <gerd@gnu.org>
parents: 27727
diff changeset
1992 #if GC_MARK_STACK == GC_MAKE_GCPROS_NOOPS
ef732a190ead (GC_USE_GCPROS_AS_BEFORE, GC_MAKE_GCPROS_NOOPS)
Gerd Moellmann <gerd@gnu.org>
parents: 27727
diff changeset
1993
41659
e37febff5532 (GCPRO1, GCPRO2, GCPRO3, GCPRO4, GCPRO5):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 41615
diff changeset
1994 /* Do something silly with gcproN vars just so gcc shuts up. */
48540
283a6d8bdf2b Comment.
Dave Love <fx@gnu.org>
parents: 48322
diff changeset
1995 /* You get warnings from MIPSPro... */
41659
e37febff5532 (GCPRO1, GCPRO2, GCPRO3, GCPRO4, GCPRO5):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 41615
diff changeset
1996
e37febff5532 (GCPRO1, GCPRO2, GCPRO3, GCPRO4, GCPRO5):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 41615
diff changeset
1997 #define GCPRO1(varname) ((void) gcpro1)
45623
0e92d219e195 (current_column): Now returns float.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 45545
diff changeset
1998 #define GCPRO2(varname1, varname2)(((void) gcpro2, (void) gcpro1))
41659
e37febff5532 (GCPRO1, GCPRO2, GCPRO3, GCPRO4, GCPRO5):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 41615
diff changeset
1999 #define GCPRO3(varname1, varname2, varname3) \
e37febff5532 (GCPRO1, GCPRO2, GCPRO3, GCPRO4, GCPRO5):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 41615
diff changeset
2000 (((void) gcpro3, (void) gcpro2, (void) gcpro1))
e37febff5532 (GCPRO1, GCPRO2, GCPRO3, GCPRO4, GCPRO5):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 41615
diff changeset
2001 #define GCPRO4(varname1, varname2, varname3, varname4) \
e37febff5532 (GCPRO1, GCPRO2, GCPRO3, GCPRO4, GCPRO5):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 41615
diff changeset
2002 (((void) gcpro4, (void) gcpro3, (void) gcpro2, (void) gcpro1))
e37febff5532 (GCPRO1, GCPRO2, GCPRO3, GCPRO4, GCPRO5):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 41615
diff changeset
2003 #define GCPRO5(varname1, varname2, varname3, varname4, varname5) \
e37febff5532 (GCPRO1, GCPRO2, GCPRO3, GCPRO4, GCPRO5):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 41615
diff changeset
2004 (((void) gcpro5, (void) gcpro4, (void) gcpro3, (void) gcpro2, (void) gcpro1))
43616
8da8a9d6b0ac (GCPRO6): New macro.
Kim F. Storm <storm@cua.dk>
parents: 43176
diff changeset
2005 #define GCPRO6(varname1, varname2, varname3, varname4, varname5, varname6) \
8da8a9d6b0ac (GCPRO6): New macro.
Kim F. Storm <storm@cua.dk>
parents: 43176
diff changeset
2006 (((void) gcpro6, (void) gcpro5, (void) gcpro4, (void) gcpro3, (void) gcpro2, (void) gcpro1))
27741
ef732a190ead (GC_USE_GCPROS_AS_BEFORE, GC_MAKE_GCPROS_NOOPS)
Gerd Moellmann <gerd@gnu.org>
parents: 27727
diff changeset
2007 #define UNGCPRO ((void) 0)
ef732a190ead (GC_USE_GCPROS_AS_BEFORE, GC_MAKE_GCPROS_NOOPS)
Gerd Moellmann <gerd@gnu.org>
parents: 27727
diff changeset
2008
ef732a190ead (GC_USE_GCPROS_AS_BEFORE, GC_MAKE_GCPROS_NOOPS)
Gerd Moellmann <gerd@gnu.org>
parents: 27727
diff changeset
2009 #else /* GC_MARK_STACK != GC_MAKE_GCPROS_NOOPS */
ef732a190ead (GC_USE_GCPROS_AS_BEFORE, GC_MAKE_GCPROS_NOOPS)
Gerd Moellmann <gerd@gnu.org>
parents: 27727
diff changeset
2010
26296
e5c745f5a9fc (struct gcpro) [DEBUG_GCPRO]: New field `level'.
Richard M. Stallman <rms@gnu.org>
parents: 26275
diff changeset
2011 #ifndef DEBUG_GCPRO
e5c745f5a9fc (struct gcpro) [DEBUG_GCPRO]: New field `level'.
Richard M. Stallman <rms@gnu.org>
parents: 26275
diff changeset
2012
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2013 #define GCPRO1(varname) \
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2014 {gcpro1.next = gcprolist; gcpro1.var = &varname; gcpro1.nvars = 1; \
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2015 gcprolist = &gcpro1; }
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2016
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2017 #define GCPRO2(varname1, varname2) \
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2018 {gcpro1.next = gcprolist; gcpro1.var = &varname1; gcpro1.nvars = 1; \
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2019 gcpro2.next = &gcpro1; gcpro2.var = &varname2; gcpro2.nvars = 1; \
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2020 gcprolist = &gcpro2; }
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2021
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2022 #define GCPRO3(varname1, varname2, varname3) \
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2023 {gcpro1.next = gcprolist; gcpro1.var = &varname1; gcpro1.nvars = 1; \
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2024 gcpro2.next = &gcpro1; gcpro2.var = &varname2; gcpro2.nvars = 1; \
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2025 gcpro3.next = &gcpro2; gcpro3.var = &varname3; gcpro3.nvars = 1; \
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2026 gcprolist = &gcpro3; }
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2027
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2028 #define GCPRO4(varname1, varname2, varname3, varname4) \
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2029 {gcpro1.next = gcprolist; gcpro1.var = &varname1; gcpro1.nvars = 1; \
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2030 gcpro2.next = &gcpro1; gcpro2.var = &varname2; gcpro2.nvars = 1; \
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2031 gcpro3.next = &gcpro2; gcpro3.var = &varname3; gcpro3.nvars = 1; \
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2032 gcpro4.next = &gcpro3; gcpro4.var = &varname4; gcpro4.nvars = 1; \
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2033 gcprolist = &gcpro4; }
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2034
8009
abbe65c17b55 (RETURN_UNGCPRO): Swallow semicolon.
Richard M. Stallman <rms@gnu.org>
parents: 7906
diff changeset
2035 #define GCPRO5(varname1, varname2, varname3, varname4, varname5) \
abbe65c17b55 (RETURN_UNGCPRO): Swallow semicolon.
Richard M. Stallman <rms@gnu.org>
parents: 7906
diff changeset
2036 {gcpro1.next = gcprolist; gcpro1.var = &varname1; gcpro1.nvars = 1; \
abbe65c17b55 (RETURN_UNGCPRO): Swallow semicolon.
Richard M. Stallman <rms@gnu.org>
parents: 7906
diff changeset
2037 gcpro2.next = &gcpro1; gcpro2.var = &varname2; gcpro2.nvars = 1; \
abbe65c17b55 (RETURN_UNGCPRO): Swallow semicolon.
Richard M. Stallman <rms@gnu.org>
parents: 7906
diff changeset
2038 gcpro3.next = &gcpro2; gcpro3.var = &varname3; gcpro3.nvars = 1; \
abbe65c17b55 (RETURN_UNGCPRO): Swallow semicolon.
Richard M. Stallman <rms@gnu.org>
parents: 7906
diff changeset
2039 gcpro4.next = &gcpro3; gcpro4.var = &varname4; gcpro4.nvars = 1; \
abbe65c17b55 (RETURN_UNGCPRO): Swallow semicolon.
Richard M. Stallman <rms@gnu.org>
parents: 7906
diff changeset
2040 gcpro5.next = &gcpro4; gcpro5.var = &varname5; gcpro5.nvars = 1; \
abbe65c17b55 (RETURN_UNGCPRO): Swallow semicolon.
Richard M. Stallman <rms@gnu.org>
parents: 7906
diff changeset
2041 gcprolist = &gcpro5; }
abbe65c17b55 (RETURN_UNGCPRO): Swallow semicolon.
Richard M. Stallman <rms@gnu.org>
parents: 7906
diff changeset
2042
43616
8da8a9d6b0ac (GCPRO6): New macro.
Kim F. Storm <storm@cua.dk>
parents: 43176
diff changeset
2043 #define GCPRO6(varname1, varname2, varname3, varname4, varname5, varname6) \
8da8a9d6b0ac (GCPRO6): New macro.
Kim F. Storm <storm@cua.dk>
parents: 43176
diff changeset
2044 {gcpro1.next = gcprolist; gcpro1.var = &varname1; gcpro1.nvars = 1; \
8da8a9d6b0ac (GCPRO6): New macro.
Kim F. Storm <storm@cua.dk>
parents: 43176
diff changeset
2045 gcpro2.next = &gcpro1; gcpro2.var = &varname2; gcpro2.nvars = 1; \
8da8a9d6b0ac (GCPRO6): New macro.
Kim F. Storm <storm@cua.dk>
parents: 43176
diff changeset
2046 gcpro3.next = &gcpro2; gcpro3.var = &varname3; gcpro3.nvars = 1; \
8da8a9d6b0ac (GCPRO6): New macro.
Kim F. Storm <storm@cua.dk>
parents: 43176
diff changeset
2047 gcpro4.next = &gcpro3; gcpro4.var = &varname4; gcpro4.nvars = 1; \
8da8a9d6b0ac (GCPRO6): New macro.
Kim F. Storm <storm@cua.dk>
parents: 43176
diff changeset
2048 gcpro5.next = &gcpro4; gcpro5.var = &varname5; gcpro5.nvars = 1; \
8da8a9d6b0ac (GCPRO6): New macro.
Kim F. Storm <storm@cua.dk>
parents: 43176
diff changeset
2049 gcpro6.next = &gcpro5; gcpro6.var = &varname6; gcpro6.nvars = 1; \
8da8a9d6b0ac (GCPRO6): New macro.
Kim F. Storm <storm@cua.dk>
parents: 43176
diff changeset
2050 gcprolist = &gcpro6; }
8da8a9d6b0ac (GCPRO6): New macro.
Kim F. Storm <storm@cua.dk>
parents: 43176
diff changeset
2051
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2052 #define UNGCPRO (gcprolist = gcpro1.next)
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2053
26296
e5c745f5a9fc (struct gcpro) [DEBUG_GCPRO]: New field `level'.
Richard M. Stallman <rms@gnu.org>
parents: 26275
diff changeset
2054 #else
e5c745f5a9fc (struct gcpro) [DEBUG_GCPRO]: New field `level'.
Richard M. Stallman <rms@gnu.org>
parents: 26275
diff changeset
2055
e5c745f5a9fc (struct gcpro) [DEBUG_GCPRO]: New field `level'.
Richard M. Stallman <rms@gnu.org>
parents: 26275
diff changeset
2056 extern int gcpro_level;
e5c745f5a9fc (struct gcpro) [DEBUG_GCPRO]: New field `level'.
Richard M. Stallman <rms@gnu.org>
parents: 26275
diff changeset
2057
e5c745f5a9fc (struct gcpro) [DEBUG_GCPRO]: New field `level'.
Richard M. Stallman <rms@gnu.org>
parents: 26275
diff changeset
2058 #define GCPRO1(varname) \
e5c745f5a9fc (struct gcpro) [DEBUG_GCPRO]: New field `level'.
Richard M. Stallman <rms@gnu.org>
parents: 26275
diff changeset
2059 {gcpro1.next = gcprolist; gcpro1.var = &varname; gcpro1.nvars = 1; \
e5c745f5a9fc (struct gcpro) [DEBUG_GCPRO]: New field `level'.
Richard M. Stallman <rms@gnu.org>
parents: 26275
diff changeset
2060 gcpro1.level = gcpro_level++; \
e5c745f5a9fc (struct gcpro) [DEBUG_GCPRO]: New field `level'.
Richard M. Stallman <rms@gnu.org>
parents: 26275
diff changeset
2061 gcprolist = &gcpro1; }
e5c745f5a9fc (struct gcpro) [DEBUG_GCPRO]: New field `level'.
Richard M. Stallman <rms@gnu.org>
parents: 26275
diff changeset
2062
e5c745f5a9fc (struct gcpro) [DEBUG_GCPRO]: New field `level'.
Richard M. Stallman <rms@gnu.org>
parents: 26275
diff changeset
2063 #define GCPRO2(varname1, varname2) \
e5c745f5a9fc (struct gcpro) [DEBUG_GCPRO]: New field `level'.
Richard M. Stallman <rms@gnu.org>
parents: 26275
diff changeset
2064 {gcpro1.next = gcprolist; gcpro1.var = &varname1; gcpro1.nvars = 1; \
e5c745f5a9fc (struct gcpro) [DEBUG_GCPRO]: New field `level'.
Richard M. Stallman <rms@gnu.org>
parents: 26275
diff changeset
2065 gcpro1.level = gcpro_level; \
e5c745f5a9fc (struct gcpro) [DEBUG_GCPRO]: New field `level'.
Richard M. Stallman <rms@gnu.org>
parents: 26275
diff changeset
2066 gcpro2.next = &gcpro1; gcpro2.var = &varname2; gcpro2.nvars = 1; \
e5c745f5a9fc (struct gcpro) [DEBUG_GCPRO]: New field `level'.
Richard M. Stallman <rms@gnu.org>
parents: 26275
diff changeset
2067 gcpro2.level = gcpro_level++; \
e5c745f5a9fc (struct gcpro) [DEBUG_GCPRO]: New field `level'.
Richard M. Stallman <rms@gnu.org>
parents: 26275
diff changeset
2068 gcprolist = &gcpro2; }
e5c745f5a9fc (struct gcpro) [DEBUG_GCPRO]: New field `level'.
Richard M. Stallman <rms@gnu.org>
parents: 26275
diff changeset
2069
e5c745f5a9fc (struct gcpro) [DEBUG_GCPRO]: New field `level'.
Richard M. Stallman <rms@gnu.org>
parents: 26275
diff changeset
2070 #define GCPRO3(varname1, varname2, varname3) \
e5c745f5a9fc (struct gcpro) [DEBUG_GCPRO]: New field `level'.
Richard M. Stallman <rms@gnu.org>
parents: 26275
diff changeset
2071 {gcpro1.next = gcprolist; gcpro1.var = &varname1; gcpro1.nvars = 1; \
e5c745f5a9fc (struct gcpro) [DEBUG_GCPRO]: New field `level'.
Richard M. Stallman <rms@gnu.org>
parents: 26275
diff changeset
2072 gcpro1.level = gcpro_level; \
e5c745f5a9fc (struct gcpro) [DEBUG_GCPRO]: New field `level'.
Richard M. Stallman <rms@gnu.org>
parents: 26275
diff changeset
2073 gcpro2.next = &gcpro1; gcpro2.var = &varname2; gcpro2.nvars = 1; \
e5c745f5a9fc (struct gcpro) [DEBUG_GCPRO]: New field `level'.
Richard M. Stallman <rms@gnu.org>
parents: 26275
diff changeset
2074 gcpro3.next = &gcpro2; gcpro3.var = &varname3; gcpro3.nvars = 1; \
e5c745f5a9fc (struct gcpro) [DEBUG_GCPRO]: New field `level'.
Richard M. Stallman <rms@gnu.org>
parents: 26275
diff changeset
2075 gcpro3.level = gcpro_level++; \
e5c745f5a9fc (struct gcpro) [DEBUG_GCPRO]: New field `level'.
Richard M. Stallman <rms@gnu.org>
parents: 26275
diff changeset
2076 gcprolist = &gcpro3; }
e5c745f5a9fc (struct gcpro) [DEBUG_GCPRO]: New field `level'.
Richard M. Stallman <rms@gnu.org>
parents: 26275
diff changeset
2077
e5c745f5a9fc (struct gcpro) [DEBUG_GCPRO]: New field `level'.
Richard M. Stallman <rms@gnu.org>
parents: 26275
diff changeset
2078 #define GCPRO4(varname1, varname2, varname3, varname4) \
e5c745f5a9fc (struct gcpro) [DEBUG_GCPRO]: New field `level'.
Richard M. Stallman <rms@gnu.org>
parents: 26275
diff changeset
2079 {gcpro1.next = gcprolist; gcpro1.var = &varname1; gcpro1.nvars = 1; \
e5c745f5a9fc (struct gcpro) [DEBUG_GCPRO]: New field `level'.
Richard M. Stallman <rms@gnu.org>
parents: 26275
diff changeset
2080 gcpro1.level = gcpro_level; \
e5c745f5a9fc (struct gcpro) [DEBUG_GCPRO]: New field `level'.
Richard M. Stallman <rms@gnu.org>
parents: 26275
diff changeset
2081 gcpro2.next = &gcpro1; gcpro2.var = &varname2; gcpro2.nvars = 1; \
e5c745f5a9fc (struct gcpro) [DEBUG_GCPRO]: New field `level'.
Richard M. Stallman <rms@gnu.org>
parents: 26275
diff changeset
2082 gcpro3.next = &gcpro2; gcpro3.var = &varname3; gcpro3.nvars = 1; \
e5c745f5a9fc (struct gcpro) [DEBUG_GCPRO]: New field `level'.
Richard M. Stallman <rms@gnu.org>
parents: 26275
diff changeset
2083 gcpro4.next = &gcpro3; gcpro4.var = &varname4; gcpro4.nvars = 1; \
e5c745f5a9fc (struct gcpro) [DEBUG_GCPRO]: New field `level'.
Richard M. Stallman <rms@gnu.org>
parents: 26275
diff changeset
2084 gcpro4.level = gcpro_level++; \
e5c745f5a9fc (struct gcpro) [DEBUG_GCPRO]: New field `level'.
Richard M. Stallman <rms@gnu.org>
parents: 26275
diff changeset
2085 gcprolist = &gcpro4; }
e5c745f5a9fc (struct gcpro) [DEBUG_GCPRO]: New field `level'.
Richard M. Stallman <rms@gnu.org>
parents: 26275
diff changeset
2086
e5c745f5a9fc (struct gcpro) [DEBUG_GCPRO]: New field `level'.
Richard M. Stallman <rms@gnu.org>
parents: 26275
diff changeset
2087 #define GCPRO5(varname1, varname2, varname3, varname4, varname5) \
e5c745f5a9fc (struct gcpro) [DEBUG_GCPRO]: New field `level'.
Richard M. Stallman <rms@gnu.org>
parents: 26275
diff changeset
2088 {gcpro1.next = gcprolist; gcpro1.var = &varname1; gcpro1.nvars = 1; \
e5c745f5a9fc (struct gcpro) [DEBUG_GCPRO]: New field `level'.
Richard M. Stallman <rms@gnu.org>
parents: 26275
diff changeset
2089 gcpro1.level = gcpro_level; \
e5c745f5a9fc (struct gcpro) [DEBUG_GCPRO]: New field `level'.
Richard M. Stallman <rms@gnu.org>
parents: 26275
diff changeset
2090 gcpro2.next = &gcpro1; gcpro2.var = &varname2; gcpro2.nvars = 1; \
e5c745f5a9fc (struct gcpro) [DEBUG_GCPRO]: New field `level'.
Richard M. Stallman <rms@gnu.org>
parents: 26275
diff changeset
2091 gcpro3.next = &gcpro2; gcpro3.var = &varname3; gcpro3.nvars = 1; \
e5c745f5a9fc (struct gcpro) [DEBUG_GCPRO]: New field `level'.
Richard M. Stallman <rms@gnu.org>
parents: 26275
diff changeset
2092 gcpro4.next = &gcpro3; gcpro4.var = &varname4; gcpro4.nvars = 1; \
e5c745f5a9fc (struct gcpro) [DEBUG_GCPRO]: New field `level'.
Richard M. Stallman <rms@gnu.org>
parents: 26275
diff changeset
2093 gcpro5.next = &gcpro4; gcpro5.var = &varname5; gcpro5.nvars = 1; \
e5c745f5a9fc (struct gcpro) [DEBUG_GCPRO]: New field `level'.
Richard M. Stallman <rms@gnu.org>
parents: 26275
diff changeset
2094 gcpro5.level = gcpro_level++; \
e5c745f5a9fc (struct gcpro) [DEBUG_GCPRO]: New field `level'.
Richard M. Stallman <rms@gnu.org>
parents: 26275
diff changeset
2095 gcprolist = &gcpro5; }
e5c745f5a9fc (struct gcpro) [DEBUG_GCPRO]: New field `level'.
Richard M. Stallman <rms@gnu.org>
parents: 26275
diff changeset
2096
43616
8da8a9d6b0ac (GCPRO6): New macro.
Kim F. Storm <storm@cua.dk>
parents: 43176
diff changeset
2097 #define GCPRO6(varname1, varname2, varname3, varname4, varname5, varname6) \
8da8a9d6b0ac (GCPRO6): New macro.
Kim F. Storm <storm@cua.dk>
parents: 43176
diff changeset
2098 {gcpro1.next = gcprolist; gcpro1.var = &varname1; gcpro1.nvars = 1; \
8da8a9d6b0ac (GCPRO6): New macro.
Kim F. Storm <storm@cua.dk>
parents: 43176
diff changeset
2099 gcpro1.level = gcpro_level; \
8da8a9d6b0ac (GCPRO6): New macro.
Kim F. Storm <storm@cua.dk>
parents: 43176
diff changeset
2100 gcpro2.next = &gcpro1; gcpro2.var = &varname2; gcpro2.nvars = 1; \
8da8a9d6b0ac (GCPRO6): New macro.
Kim F. Storm <storm@cua.dk>
parents: 43176
diff changeset
2101 gcpro3.next = &gcpro2; gcpro3.var = &varname3; gcpro3.nvars = 1; \
8da8a9d6b0ac (GCPRO6): New macro.
Kim F. Storm <storm@cua.dk>
parents: 43176
diff changeset
2102 gcpro4.next = &gcpro3; gcpro4.var = &varname4; gcpro4.nvars = 1; \
8da8a9d6b0ac (GCPRO6): New macro.
Kim F. Storm <storm@cua.dk>
parents: 43176
diff changeset
2103 gcpro5.next = &gcpro4; gcpro5.var = &varname5; gcpro5.nvars = 1; \
8da8a9d6b0ac (GCPRO6): New macro.
Kim F. Storm <storm@cua.dk>
parents: 43176
diff changeset
2104 gcpro6.next = &gcpro5; gcpro6.var = &varname6; gcpro6.nvars = 1; \
8da8a9d6b0ac (GCPRO6): New macro.
Kim F. Storm <storm@cua.dk>
parents: 43176
diff changeset
2105 gcpro6.level = gcpro_level++; \
8da8a9d6b0ac (GCPRO6): New macro.
Kim F. Storm <storm@cua.dk>
parents: 43176
diff changeset
2106 gcprolist = &gcpro6; }
8da8a9d6b0ac (GCPRO6): New macro.
Kim F. Storm <storm@cua.dk>
parents: 43176
diff changeset
2107
26296
e5c745f5a9fc (struct gcpro) [DEBUG_GCPRO]: New field `level'.
Richard M. Stallman <rms@gnu.org>
parents: 26275
diff changeset
2108 #define UNGCPRO \
e5c745f5a9fc (struct gcpro) [DEBUG_GCPRO]: New field `level'.
Richard M. Stallman <rms@gnu.org>
parents: 26275
diff changeset
2109 ((--gcpro_level != gcpro1.level) \
e5c745f5a9fc (struct gcpro) [DEBUG_GCPRO]: New field `level'.
Richard M. Stallman <rms@gnu.org>
parents: 26275
diff changeset
2110 ? (abort (), 0) \
e5c745f5a9fc (struct gcpro) [DEBUG_GCPRO]: New field `level'.
Richard M. Stallman <rms@gnu.org>
parents: 26275
diff changeset
2111 : ((gcprolist = gcpro1.next), 0))
e5c745f5a9fc (struct gcpro) [DEBUG_GCPRO]: New field `level'.
Richard M. Stallman <rms@gnu.org>
parents: 26275
diff changeset
2112
e5c745f5a9fc (struct gcpro) [DEBUG_GCPRO]: New field `level'.
Richard M. Stallman <rms@gnu.org>
parents: 26275
diff changeset
2113 #endif /* DEBUG_GCPRO */
27741
ef732a190ead (GC_USE_GCPROS_AS_BEFORE, GC_MAKE_GCPROS_NOOPS)
Gerd Moellmann <gerd@gnu.org>
parents: 27727
diff changeset
2114 #endif /* GC_MARK_STACK != GC_MAKE_GCPROS_NOOPS */
ef732a190ead (GC_USE_GCPROS_AS_BEFORE, GC_MAKE_GCPROS_NOOPS)
Gerd Moellmann <gerd@gnu.org>
parents: 27727
diff changeset
2115
26296
e5c745f5a9fc (struct gcpro) [DEBUG_GCPRO]: New field `level'.
Richard M. Stallman <rms@gnu.org>
parents: 26275
diff changeset
2116
8560
42b300c5ac5d Comment fix.
Richard M. Stallman <rms@gnu.org>
parents: 8009
diff changeset
2117 /* Evaluate expr, UNGCPRO, and then return the value of expr. */
8009
abbe65c17b55 (RETURN_UNGCPRO): Swallow semicolon.
Richard M. Stallman <rms@gnu.org>
parents: 7906
diff changeset
2118 #define RETURN_UNGCPRO(expr) \
25769
4399d55899d3 (RETURN_UNGCPRO): Use do-while (0) idiom.
Gerd Moellmann <gerd@gnu.org>
parents: 25765
diff changeset
2119 do \
8009
abbe65c17b55 (RETURN_UNGCPRO): Swallow semicolon.
Richard M. Stallman <rms@gnu.org>
parents: 7906
diff changeset
2120 { \
abbe65c17b55 (RETURN_UNGCPRO): Swallow semicolon.
Richard M. Stallman <rms@gnu.org>
parents: 7906
diff changeset
2121 Lisp_Object ret_ungc_val; \
abbe65c17b55 (RETURN_UNGCPRO): Swallow semicolon.
Richard M. Stallman <rms@gnu.org>
parents: 7906
diff changeset
2122 ret_ungc_val = (expr); \
abbe65c17b55 (RETURN_UNGCPRO): Swallow semicolon.
Richard M. Stallman <rms@gnu.org>
parents: 7906
diff changeset
2123 UNGCPRO; \
abbe65c17b55 (RETURN_UNGCPRO): Swallow semicolon.
Richard M. Stallman <rms@gnu.org>
parents: 7906
diff changeset
2124 return ret_ungc_val; \
abbe65c17b55 (RETURN_UNGCPRO): Swallow semicolon.
Richard M. Stallman <rms@gnu.org>
parents: 7906
diff changeset
2125 } \
25769
4399d55899d3 (RETURN_UNGCPRO): Use do-while (0) idiom.
Gerd Moellmann <gerd@gnu.org>
parents: 25765
diff changeset
2126 while (0)
26296
e5c745f5a9fc (struct gcpro) [DEBUG_GCPRO]: New field `level'.
Richard M. Stallman <rms@gnu.org>
parents: 26275
diff changeset
2127
e5c745f5a9fc (struct gcpro) [DEBUG_GCPRO]: New field `level'.
Richard M. Stallman <rms@gnu.org>
parents: 26275
diff changeset
2128 /* Call staticpro (&var) to protect static variable `var'. */
e5c745f5a9fc (struct gcpro) [DEBUG_GCPRO]: New field `level'.
Richard M. Stallman <rms@gnu.org>
parents: 26275
diff changeset
2129
e5c745f5a9fc (struct gcpro) [DEBUG_GCPRO]: New field `level'.
Richard M. Stallman <rms@gnu.org>
parents: 26275
diff changeset
2130 void staticpro P_ ((Lisp_Object *));
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2131
18732
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2132 /* Declare a Lisp-callable function. The MAXARGS parameter has the same
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2133 meaning as in the DEFUN macro, and is used to construct a prototype. */
91702
b7a5a89054dc * configure.in (LIBX11_MACHINE, HAVE_XFREE386): Remove code
Dan Nicolaescu <dann@ics.uci.edu>
parents: 91367
diff changeset
2134 #if (!defined (__STDC__) && !defined (PROTOTYPES))
18732
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2135 #define EXFUN(fnname, maxargs) \
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2136 extern Lisp_Object fnname ()
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2137 #else
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2138 /* We can use the same trick as in the DEFUN macro to generate the
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2139 appropriate prototype. */
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2140 #define EXFUN(fnname, maxargs) \
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2141 extern Lisp_Object fnname DEFUN_ARGS_ ## maxargs
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2142 #endif
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2143
20297
bf0a54297d95 Add more prototypes and declarations. Forward declare
Andreas Schwab <schwab@suse.de>
parents: 20123
diff changeset
2144 /* Forward declarations for prototypes. */
bf0a54297d95 Add more prototypes and declarations. Forward declare
Andreas Schwab <schwab@suse.de>
parents: 20123
diff changeset
2145 struct window;
bf0a54297d95 Add more prototypes and declarations. Forward declare
Andreas Schwab <schwab@suse.de>
parents: 20123
diff changeset
2146 struct frame;
18732
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2147
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2148 /* Defined in data.c */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2149 extern Lisp_Object Qnil, Qt, Qquote, Qlambda, Qsubr, Qunbound;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2150 extern Lisp_Object Qerror_conditions, Qerror_message, Qtop_level;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2151 extern Lisp_Object Qerror, Qquit, Qwrong_type_argument, Qargs_out_of_range;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2152 extern Lisp_Object Qvoid_variable, Qvoid_function;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2153 extern Lisp_Object Qsetting_constant, Qinvalid_read_syntax;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2154 extern Lisp_Object Qinvalid_function, Qwrong_number_of_arguments, Qno_catch;
53111
094f6b57ed09 (Qinteger): Added.
Lars Hansen <larsh@soem.dk>
parents: 53088
diff changeset
2155 extern Lisp_Object Qend_of_file, Qarith_error, Qmark_inactive;
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2156 extern Lisp_Object Qbeginning_of_buffer, Qend_of_buffer, Qbuffer_read_only;
53111
094f6b57ed09 (Qinteger): Added.
Lars Hansen <larsh@soem.dk>
parents: 53088
diff changeset
2157 extern Lisp_Object Qtext_read_only;
094f6b57ed09 (Qinteger): Added.
Lars Hansen <larsh@soem.dk>
parents: 53088
diff changeset
2158
094f6b57ed09 (Qinteger): Added.
Lars Hansen <larsh@soem.dk>
parents: 53088
diff changeset
2159 extern Lisp_Object Qintegerp, Qnatnump, Qwholenump, Qsymbolp, Qlistp, Qconsp;
094f6b57ed09 (Qinteger): Added.
Lars Hansen <larsh@soem.dk>
parents: 53088
diff changeset
2160 extern Lisp_Object Qstringp, Qarrayp, Qsequencep, Qbufferp;
094f6b57ed09 (Qinteger): Added.
Lars Hansen <larsh@soem.dk>
parents: 53088
diff changeset
2161 extern Lisp_Object Qchar_or_string_p, Qmarkerp, Qinteger_or_marker_p, Qvectorp;
094f6b57ed09 (Qinteger): Added.
Lars Hansen <larsh@soem.dk>
parents: 53088
diff changeset
2162 extern Lisp_Object Qbuffer_or_string_p;
094f6b57ed09 (Qinteger): Added.
Lars Hansen <larsh@soem.dk>
parents: 53088
diff changeset
2163 extern Lisp_Object Qboundp, Qfboundp;
094f6b57ed09 (Qinteger): Added.
Lars Hansen <larsh@soem.dk>
parents: 53088
diff changeset
2164 extern Lisp_Object Qchar_table_p, Qvector_or_char_table_p;
094f6b57ed09 (Qinteger): Added.
Lars Hansen <larsh@soem.dk>
parents: 53088
diff changeset
2165
094f6b57ed09 (Qinteger): Added.
Lars Hansen <larsh@soem.dk>
parents: 53088
diff changeset
2166 extern Lisp_Object Qcdr;
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2167
2653
d547e1a7eb9b * lisp.h (CHAR_ALT, CHAR_SUPER, CHAR_HYPER): New constants, in
Jim Blandy <jimb@redhat.com>
parents: 2605
diff changeset
2168 extern Lisp_Object Qrange_error, Qdomain_error, Qsingularity_error;
d547e1a7eb9b * lisp.h (CHAR_ALT, CHAR_SUPER, CHAR_HYPER): New constants, in
Jim Blandy <jimb@redhat.com>
parents: 2605
diff changeset
2169 extern Lisp_Object Qoverflow_error, Qunderflow_error;
2155
3ec142562a65 (Qrange_error, Qdomain_error, Qsingularity_error):
Richard M. Stallman <rms@gnu.org>
parents: 2014
diff changeset
2170
53111
094f6b57ed09 (Qinteger): Added.
Lars Hansen <larsh@soem.dk>
parents: 53088
diff changeset
2171 extern Lisp_Object Qfloatp;
094f6b57ed09 (Qinteger): Added.
Lars Hansen <larsh@soem.dk>
parents: 53088
diff changeset
2172 extern Lisp_Object Qnumberp, Qnumber_or_marker_p;
094f6b57ed09 (Qinteger): Added.
Lars Hansen <larsh@soem.dk>
parents: 53088
diff changeset
2173
094f6b57ed09 (Qinteger): Added.
Lars Hansen <larsh@soem.dk>
parents: 53088
diff changeset
2174 extern Lisp_Object Qinteger;
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2175
72005
da0099bc0ba4 * ebrowse.c (usage, version): Mark as NO_RETURN.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 71983
diff changeset
2176 extern void circular_list_error P_ ((Lisp_Object)) NO_RETURN;
54628
d0210728ec3f (Finteractive_form): Declare.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54555
diff changeset
2177 EXFUN (Finteractive_form, 1);
39766
2a0aa5b942d7 (circular_list_error): Add prototype.
Gerd Moellmann <gerd@gnu.org>
parents: 39710
diff changeset
2178
53111
094f6b57ed09 (Qinteger): Added.
Lars Hansen <larsh@soem.dk>
parents: 53088
diff changeset
2179 /* Defined in frame.c */
094f6b57ed09 (Qinteger): Added.
Lars Hansen <larsh@soem.dk>
parents: 53088
diff changeset
2180 extern Lisp_Object Qframep;
094f6b57ed09 (Qinteger): Added.
Lars Hansen <larsh@soem.dk>
parents: 53088
diff changeset
2181
18732
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2182 EXFUN (Feq, 2);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2183 EXFUN (Fnull, 1);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2184 EXFUN (Flistp, 1);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2185 EXFUN (Fconsp, 1);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2186 EXFUN (Fatom, 1);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2187 EXFUN (Fnlistp, 1);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2188 EXFUN (Fintegerp, 1);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2189 EXFUN (Fnatnump, 1);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2190 EXFUN (Fsymbolp, 1);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2191 EXFUN (Fvectorp, 1);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2192 EXFUN (Fstringp, 1);
20625
a9c4bf3f4e46 (STRING_MULTIBYTE): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20569
diff changeset
2193 EXFUN (Fmultibyte_string_p, 1);
18732
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2194 EXFUN (Farrayp, 1);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2195 EXFUN (Fsequencep, 1);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2196 EXFUN (Fbufferp, 1);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2197 EXFUN (Fmarkerp, 1);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2198 EXFUN (Fsubrp, 1);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2199 EXFUN (Fchar_or_string_p, 1);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2200 EXFUN (Finteger_or_marker_p, 1);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2201 EXFUN (Ffloatp, 1);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2202 EXFUN (Finteger_or_floatp, 1);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2203 EXFUN (Finteger_or_float_or_marker_p, 1);
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2204
18732
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2205 EXFUN (Fcar, 1);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2206 EXFUN (Fcar_safe, 1);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2207 EXFUN (Fcdr, 1);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2208 EXFUN (Fcdr_safe, 1);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2209 EXFUN (Fsetcar, 2);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2210 EXFUN (Fsetcdr, 2);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2211 EXFUN (Fboundp, 1);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2212 EXFUN (Ffboundp, 1);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2213 EXFUN (Fmakunbound, 1);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2214 EXFUN (Ffmakunbound, 1);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2215 EXFUN (Fsymbol_function, 1);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2216 EXFUN (Fsymbol_plist, 1);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2217 EXFUN (Fsymbol_name, 1);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2218 extern Lisp_Object indirect_function P_ ((Lisp_Object));
68758
13c1b7c5f555 * data.c (Findirect_function): Add NOERROR arg. All callers changed
Kim F. Storm <storm@cua.dk>
parents: 68651
diff changeset
2219 EXFUN (Findirect_function, 2);
18732
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2220 EXFUN (Ffset, 2);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2221 EXFUN (Fsetplist, 2);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2222 EXFUN (Fsymbol_value, 1);
19224
db9418ba5d32 (Flocal_variable_p, Ffind_operation_coding_system): Declared.
Richard M. Stallman <rms@gnu.org>
parents: 19119
diff changeset
2223 extern Lisp_Object find_symbol_value P_ ((Lisp_Object));
18732
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2224 EXFUN (Fset, 2);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2225 EXFUN (Fdefault_value, 1);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2226 EXFUN (Fset_default, 2);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2227 EXFUN (Fdefault_boundp, 1);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2228 EXFUN (Fmake_local_variable, 1);
19224
db9418ba5d32 (Flocal_variable_p, Ffind_operation_coding_system): Declared.
Richard M. Stallman <rms@gnu.org>
parents: 19119
diff changeset
2229 EXFUN (Flocal_variable_p, 2);
18732
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2230 EXFUN (Flocal_variable_if_set_p, 2);
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2231
18732
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2232 EXFUN (Faref, 2);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2233 EXFUN (Faset, 3);
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2234
18732
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2235 EXFUN (Fstring_to_number, 2);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2236 EXFUN (Fnumber_to_string, 1);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2237 EXFUN (Feqlsign, 2);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2238 EXFUN (Fgtr, 2);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2239 EXFUN (Flss, 2);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2240 EXFUN (Fgeq, 2);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2241 EXFUN (Fleq, 2);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2242 EXFUN (Fneq, 2);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2243 EXFUN (Fzerop, 1);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2244 EXFUN (Fplus, MANY);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2245 EXFUN (Fminus, MANY);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2246 EXFUN (Ftimes, MANY);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2247 EXFUN (Fquo, MANY);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2248 EXFUN (Frem, 2);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2249 EXFUN (Fmax, MANY);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2250 EXFUN (Fmin, MANY);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2251 EXFUN (Flogand, MANY);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2252 EXFUN (Flogior, MANY);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2253 EXFUN (Flogxor, MANY);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2254 EXFUN (Flognot, 1);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2255 EXFUN (Flsh, 2);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2256 EXFUN (Fash, 2);
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2257
18732
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2258 EXFUN (Fadd1, 1);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2259 EXFUN (Fsub1, 1);
34154
88440ae23652 (Fmake_variable_buffer_local, Fbuffer_file_name): Declare.
Ken Raeburn <raeburn@raeburn.org>
parents: 33508
diff changeset
2260 EXFUN (Fmake_variable_buffer_local, 1);
18732
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2261
95112
0835cb21d60e * lisp.h (indirect_variable):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94994
diff changeset
2262 extern struct Lisp_Symbol *indirect_variable (struct Lisp_Symbol *);
18732
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2263 extern Lisp_Object long_to_cons P_ ((unsigned long));
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2264 extern unsigned long cons_to_long P_ ((Lisp_Object));
69883
a21d00510558 * puresize.h (pure_write_error): Mark as NO_RETURN.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 69878
diff changeset
2265 extern void args_out_of_range P_ ((Lisp_Object, Lisp_Object)) NO_RETURN;
a21d00510558 * puresize.h (pure_write_error): Mark as NO_RETURN.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 69878
diff changeset
2266 extern void args_out_of_range_3 P_ ((Lisp_Object, Lisp_Object,
a21d00510558 * puresize.h (pure_write_error): Mark as NO_RETURN.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 69878
diff changeset
2267 Lisp_Object)) NO_RETURN;
69928
56d8e0539545 * lisp.h (wrong_type_argument): Mark as NO_RETURN.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 69896
diff changeset
2268 extern Lisp_Object wrong_type_argument P_ ((Lisp_Object, Lisp_Object)) NO_RETURN;
36816
f8cbdb29cbe6 (store_symval_forwarding): Change prototype.
Gerd Moellmann <gerd@gnu.org>
parents: 36807
diff changeset
2269 extern void store_symval_forwarding P_ ((Lisp_Object, Lisp_Object,
f8cbdb29cbe6 (store_symval_forwarding): Change prototype.
Gerd Moellmann <gerd@gnu.org>
parents: 36807
diff changeset
2270 Lisp_Object, struct buffer *));
18732
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2271 extern Lisp_Object do_symval_forwarding P_ ((Lisp_Object));
27292
d0aba668c5af (set_internal): Enter the new arg.
Richard M. Stallman <rms@gnu.org>
parents: 27141
diff changeset
2272 extern Lisp_Object set_internal P_ ((Lisp_Object, Lisp_Object, struct buffer *, int));
21931
b382905e065a Declare init functions.
Andreas Schwab <schwab@suse.de>
parents: 21842
diff changeset
2273 extern void syms_of_data P_ ((void));
b382905e065a Declare init functions.
Andreas Schwab <schwab@suse.de>
parents: 21842
diff changeset
2274 extern void init_data P_ ((void));
29925
2fdc619acc14 (swap_in_global_binding): Declare.
Dave Love <fx@gnu.org>
parents: 29785
diff changeset
2275 extern void swap_in_global_binding P_ ((Lisp_Object));
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2276
11934
4b82fb5bde27 (Foverlay_start, Foverlay_end): Declare these functions.
Karl Heuer <kwzh@gnu.org>
parents: 11913
diff changeset
2277 /* Defined in cmds.c */
18732
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2278 EXFUN (Fend_of_line, 1);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2279 EXFUN (Fforward_char, 1);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2280 EXFUN (Fforward_line, 1);
20297
bf0a54297d95 Add more prototypes and declarations. Forward declare
Andreas Schwab <schwab@suse.de>
parents: 20123
diff changeset
2281 extern int internal_self_insert P_ ((int, int));
21931
b382905e065a Declare init functions.
Andreas Schwab <schwab@suse.de>
parents: 21842
diff changeset
2282 extern void syms_of_cmds P_ ((void));
b382905e065a Declare init functions.
Andreas Schwab <schwab@suse.de>
parents: 21842
diff changeset
2283 extern void keys_of_cmds P_ ((void));
11934
4b82fb5bde27 (Foverlay_start, Foverlay_end): Declare these functions.
Karl Heuer <kwzh@gnu.org>
parents: 11913
diff changeset
2284
17037
af637c0168ad (CHARACTERBITS, GLYPH_MASK_REV_DIR): New macros.
Karl Heuer <kwzh@gnu.org>
parents: 16913
diff changeset
2285 /* Defined in coding.c */
18732
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2286 EXFUN (Fcoding_system_p, 1);
90156
26485da86a22 (Fcoding_system_base, Fcoding_system_eol_type)
Kenichi Handa <handa@m17n.org>
parents: 90147
diff changeset
2287 EXFUN (Fcoding_system_base, 1);
26485da86a22 (Fcoding_system_base, Fcoding_system_eol_type)
Kenichi Handa <handa@m17n.org>
parents: 90147
diff changeset
2288 EXFUN (Fcoding_system_eol_type, 1);
26485da86a22 (Fcoding_system_base, Fcoding_system_eol_type)
Kenichi Handa <handa@m17n.org>
parents: 90147
diff changeset
2289 EXFUN (Fcheck_coding_system, 1);
18732
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2290 EXFUN (Fcheck_coding_system, 1);
19757
328233592e3b (Fread_coding_system): Update decl.
Richard M. Stallman <rms@gnu.org>
parents: 19698
diff changeset
2291 EXFUN (Fread_coding_system, 2);
18732
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2292 EXFUN (Fread_non_nil_coding_system, 1);
19224
db9418ba5d32 (Flocal_variable_p, Ffind_operation_coding_system): Declared.
Richard M. Stallman <rms@gnu.org>
parents: 19119
diff changeset
2293 EXFUN (Ffind_operation_coding_system, MANY);
42756
711b64458618 (adjust_after_replace_noundo)
Pavel Janík <Pavel@Janik.cz>
parents: 42466
diff changeset
2294 EXFUN (Fupdate_coding_systems_internal, 0);
88382
5e3e1d9d514f (enum pvec_type): New member PVEC_SUB_CHAR_TABLE.
Kenichi Handa <handa@m17n.org>
parents: 43176
diff changeset
2295 EXFUN (Fencode_coding_string, 4);
5e3e1d9d514f (enum pvec_type): New member PVEC_SUB_CHAR_TABLE.
Kenichi Handa <handa@m17n.org>
parents: 43176
diff changeset
2296 EXFUN (Fdecode_coding_string, 4);
91807
507bcfb4342c * coding.c (coding_set_destination): Use BEG_BYTE rather than hardcoding 1.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 91727
diff changeset
2297 extern Lisp_Object detect_coding_system P_ ((const unsigned char *, EMACS_INT,
507bcfb4342c * coding.c (coding_set_destination): Use BEG_BYTE rather than hardcoding 1.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 91727
diff changeset
2298 EMACS_INT, int, int, Lisp_Object));
22791
c796882abd44 (init_coding): Extern it.
Kenichi Handa <handa@m17n.org>
parents: 22604
diff changeset
2299 extern void init_coding P_ ((void));
21931
b382905e065a Declare init functions.
Andreas Schwab <schwab@suse.de>
parents: 21842
diff changeset
2300 extern void init_coding_once P_ ((void));
b382905e065a Declare init functions.
Andreas Schwab <schwab@suse.de>
parents: 21842
diff changeset
2301 extern void syms_of_coding P_ ((void));
88382
5e3e1d9d514f (enum pvec_type): New member PVEC_SUB_CHAR_TABLE.
Kenichi Handa <handa@m17n.org>
parents: 43176
diff changeset
2302
5e3e1d9d514f (enum pvec_type): New member PVEC_SUB_CHAR_TABLE.
Kenichi Handa <handa@m17n.org>
parents: 43176
diff changeset
2303 /* Defined in character.c */
5e3e1d9d514f (enum pvec_type): New member PVEC_SUB_CHAR_TABLE.
Kenichi Handa <handa@m17n.org>
parents: 43176
diff changeset
2304 extern void init_character_once P_ ((void));
5e3e1d9d514f (enum pvec_type): New member PVEC_SUB_CHAR_TABLE.
Kenichi Handa <handa@m17n.org>
parents: 43176
diff changeset
2305 extern void syms_of_character P_ ((void));
89520
2c1ad8f1fe6f Add Funibyte_char_to_multibyte.
Dave Love <fx@gnu.org>
parents: 89483
diff changeset
2306 EXFUN (Funibyte_char_to_multibyte, 1);
17037
af637c0168ad (CHARACTERBITS, GLYPH_MASK_REV_DIR): New macros.
Karl Heuer <kwzh@gnu.org>
parents: 16913
diff changeset
2307
19574
b4533deef3b8 Declare Fchar_bytes.
Richard M. Stallman <rms@gnu.org>
parents: 19547
diff changeset
2308 /* Defined in charset.c */
b4533deef3b8 Declare Fchar_bytes.
Richard M. Stallman <rms@gnu.org>
parents: 19547
diff changeset
2309 EXFUN (Fchar_bytes, 1);
21515
fb4c986db0e2 Add more prototypes.
Andreas Schwab <schwab@suse.de>
parents: 21322
diff changeset
2310 EXFUN (Fchar_width, 1);
27885
07a468af713c Add a bunch of prototypes.
Dave Love <fx@gnu.org>
parents: 27858
diff changeset
2311 EXFUN (Fstring, MANY);
91807
507bcfb4342c * coding.c (coding_set_destination): Use BEG_BYTE rather than hardcoding 1.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 91727
diff changeset
2312 extern EMACS_INT chars_in_text P_ ((const unsigned char *, EMACS_INT));
507bcfb4342c * coding.c (coding_set_destination): Use BEG_BYTE rather than hardcoding 1.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 91727
diff changeset
2313 extern EMACS_INT multibyte_chars_in_text P_ ((const unsigned char *, EMACS_INT));
22928
db3229678ef9 (multibyte_char_to_unibyte): Extern it.
Kenichi Handa <handa@m17n.org>
parents: 22925
diff changeset
2314 extern int multibyte_char_to_unibyte P_ ((int, Lisp_Object));
90759
a5e47ab2fa2a (multibyte_char_to_unibyte_safe): Extern it.
Kenichi Handa <handa@m17n.org>
parents: 90737
diff changeset
2315 extern int multibyte_char_to_unibyte_safe P_ ((int));
21038
9b33c6a5b4dc (Vnonascii_translate_table, Qcharset): New variable decls.
Richard M. Stallman <rms@gnu.org>
parents: 20723
diff changeset
2316 extern Lisp_Object Qcharset;
88382
5e3e1d9d514f (enum pvec_type): New member PVEC_SUB_CHAR_TABLE.
Kenichi Handa <handa@m17n.org>
parents: 43176
diff changeset
2317 extern void init_charset P_ ((void));
21931
b382905e065a Declare init functions.
Andreas Schwab <schwab@suse.de>
parents: 21842
diff changeset
2318 extern void init_charset_once P_ ((void));
b382905e065a Declare init functions.
Andreas Schwab <schwab@suse.de>
parents: 21842
diff changeset
2319 extern void syms_of_charset P_ ((void));
89483
2f877ed80fa6 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 88123 89439
diff changeset
2320 /* Structure forward declarations. */
2f877ed80fa6 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 88123 89439
diff changeset
2321 struct charset;
19574
b4533deef3b8 Declare Fchar_bytes.
Richard M. Stallman <rms@gnu.org>
parents: 19547
diff changeset
2322
88382
5e3e1d9d514f (enum pvec_type): New member PVEC_SUB_CHAR_TABLE.
Kenichi Handa <handa@m17n.org>
parents: 43176
diff changeset
2323 /* Defined in composite.c */
5e3e1d9d514f (enum pvec_type): New member PVEC_SUB_CHAR_TABLE.
Kenichi Handa <handa@m17n.org>
parents: 43176
diff changeset
2324 extern void syms_of_composite P_ ((void));
19574
b4533deef3b8 Declare Fchar_bytes.
Richard M. Stallman <rms@gnu.org>
parents: 19547
diff changeset
2325
11934
4b82fb5bde27 (Foverlay_start, Foverlay_end): Declare these functions.
Karl Heuer <kwzh@gnu.org>
parents: 11913
diff changeset
2326 /* Defined in syntax.c */
18732
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2327 EXFUN (Fforward_word, 1);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2328 EXFUN (Fskip_chars_forward, 2);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2329 EXFUN (Fskip_chars_backward, 2);
20297
bf0a54297d95 Add more prototypes and declarations. Forward declare
Andreas Schwab <schwab@suse.de>
parents: 20123
diff changeset
2330 EXFUN (Fsyntax_table_p, 1);
bf0a54297d95 Add more prototypes and declarations. Forward declare
Andreas Schwab <schwab@suse.de>
parents: 20123
diff changeset
2331 EXFUN (Fsyntax_table, 0);
bf0a54297d95 Add more prototypes and declarations. Forward declare
Andreas Schwab <schwab@suse.de>
parents: 20123
diff changeset
2332 EXFUN (Fset_syntax_table, 1);
21931
b382905e065a Declare init functions.
Andreas Schwab <schwab@suse.de>
parents: 21842
diff changeset
2333 extern void init_syntax_once P_ ((void));
b382905e065a Declare init functions.
Andreas Schwab <schwab@suse.de>
parents: 21842
diff changeset
2334 extern void syms_of_syntax P_ ((void));
11934
4b82fb5bde27 (Foverlay_start, Foverlay_end): Declare these functions.
Karl Heuer <kwzh@gnu.org>
parents: 11913
diff changeset
2335
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2336 /* Defined in fns.c */
31015
0a24ffcc4061 (set_time_zone_rule): Add prototype.
Gerd Moellmann <gerd@gnu.org>
parents: 30943
diff changeset
2337 extern int use_dialog_box;
29978
4b651d582c5f (next_almost_prime): Add prototype.
Gerd Moellmann <gerd@gnu.org>
parents: 29940
diff changeset
2338 extern int next_almost_prime P_ ((int));
28480
cbe58003b232 (larger_vector): Add prototype.
Gerd Moellmann <gerd@gnu.org>
parents: 28430
diff changeset
2339 extern Lisp_Object larger_vector P_ ((Lisp_Object, int, Lisp_Object));
25765
416e6af8f06a Add prototype for shrink_regexp_cache,
Gerd Moellmann <gerd@gnu.org>
parents: 25759
diff changeset
2340 extern void sweep_weak_hash_tables P_ ((void));
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2341 extern Lisp_Object Qstring_lessp;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2342 extern Lisp_Object Vfeatures;
88382
5e3e1d9d514f (enum pvec_type): New member PVEC_SUB_CHAR_TABLE.
Kenichi Handa <handa@m17n.org>
parents: 43176
diff changeset
2343 extern Lisp_Object QCtest, QCweakness, Qequal, Qeq;
25017
4a142fb92f94 (P_): Moved to top of file.
Gerd Moellmann <gerd@gnu.org>
parents: 23984
diff changeset
2344 unsigned sxhash P_ ((Lisp_Object, int));
4a142fb92f94 (P_): Moved to top of file.
Gerd Moellmann <gerd@gnu.org>
parents: 23984
diff changeset
2345 Lisp_Object make_hash_table P_ ((Lisp_Object, Lisp_Object, Lisp_Object,
4a142fb92f94 (P_): Moved to top of file.
Gerd Moellmann <gerd@gnu.org>
parents: 23984
diff changeset
2346 Lisp_Object, Lisp_Object, Lisp_Object,
4a142fb92f94 (P_): Moved to top of file.
Gerd Moellmann <gerd@gnu.org>
parents: 23984
diff changeset
2347 Lisp_Object));
25366
78de9d041747 Add prototype for copy_hash_table and Fcopy_hash_table.
Gerd Moellmann <gerd@gnu.org>
parents: 25353
diff changeset
2348 Lisp_Object copy_hash_table P_ ((struct Lisp_Hash_Table *));
25017
4a142fb92f94 (P_): Moved to top of file.
Gerd Moellmann <gerd@gnu.org>
parents: 23984
diff changeset
2349 int hash_lookup P_ ((struct Lisp_Hash_Table *, Lisp_Object, unsigned *));
26865
87623e53b7c6 (QCtest, QCweakness, Qequal): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 26742
diff changeset
2350 int hash_put P_ ((struct Lisp_Hash_Table *, Lisp_Object, Lisp_Object,
87623e53b7c6 (QCtest, QCweakness, Qequal): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 26742
diff changeset
2351 unsigned));
25017
4a142fb92f94 (P_): Moved to top of file.
Gerd Moellmann <gerd@gnu.org>
parents: 23984
diff changeset
2352 void hash_clear P_ ((struct Lisp_Hash_Table *));
97232
5584d562a3b5 Fix erroneous last commit.
Eli Zaretskii <eliz@gnu.org>
parents: 97226
diff changeset
2353 void init_weak_hash_tables P_ ((void));
25748
6fddda6e635e Add prototype for uninterrupt_malloc, memory_warnings,
Gerd Moellmann <gerd@gnu.org>
parents: 25737
diff changeset
2354 extern void init_fns P_ ((void));
25017
4a142fb92f94 (P_): Moved to top of file.
Gerd Moellmann <gerd@gnu.org>
parents: 23984
diff changeset
2355 EXFUN (Fsxhash, 1);
4a142fb92f94 (P_): Moved to top of file.
Gerd Moellmann <gerd@gnu.org>
parents: 23984
diff changeset
2356 EXFUN (Fmake_hash_table, MANY);
88382
5e3e1d9d514f (enum pvec_type): New member PVEC_SUB_CHAR_TABLE.
Kenichi Handa <handa@m17n.org>
parents: 43176
diff changeset
2357 EXFUN (Fmakehash, 1);
25366
78de9d041747 Add prototype for copy_hash_table and Fcopy_hash_table.
Gerd Moellmann <gerd@gnu.org>
parents: 25353
diff changeset
2358 EXFUN (Fcopy_hash_table, 1);
25017
4a142fb92f94 (P_): Moved to top of file.
Gerd Moellmann <gerd@gnu.org>
parents: 23984
diff changeset
2359 EXFUN (Fhash_table_count, 1);
4a142fb92f94 (P_): Moved to top of file.
Gerd Moellmann <gerd@gnu.org>
parents: 23984
diff changeset
2360 EXFUN (Fhash_table_rehash_size, 1);
4a142fb92f94 (P_): Moved to top of file.
Gerd Moellmann <gerd@gnu.org>
parents: 23984
diff changeset
2361 EXFUN (Fhash_table_rehash_threshold, 1);
4a142fb92f94 (P_): Moved to top of file.
Gerd Moellmann <gerd@gnu.org>
parents: 23984
diff changeset
2362 EXFUN (Fhash_table_size, 1);
4a142fb92f94 (P_): Moved to top of file.
Gerd Moellmann <gerd@gnu.org>
parents: 23984
diff changeset
2363 EXFUN (Fhash_table_test, 1);
4a142fb92f94 (P_): Moved to top of file.
Gerd Moellmann <gerd@gnu.org>
parents: 23984
diff changeset
2364 EXFUN (Fhash_table_weak, 1);
4a142fb92f94 (P_): Moved to top of file.
Gerd Moellmann <gerd@gnu.org>
parents: 23984
diff changeset
2365 EXFUN (Fhash_table_p, 1);
4a142fb92f94 (P_): Moved to top of file.
Gerd Moellmann <gerd@gnu.org>
parents: 23984
diff changeset
2366 EXFUN (Fclrhash, 1);
4a142fb92f94 (P_): Moved to top of file.
Gerd Moellmann <gerd@gnu.org>
parents: 23984
diff changeset
2367 EXFUN (Fgethash, 3);
4a142fb92f94 (P_): Moved to top of file.
Gerd Moellmann <gerd@gnu.org>
parents: 23984
diff changeset
2368 EXFUN (Fputhash, 3);
4a142fb92f94 (P_): Moved to top of file.
Gerd Moellmann <gerd@gnu.org>
parents: 23984
diff changeset
2369 EXFUN (Fremhash, 2);
4a142fb92f94 (P_): Moved to top of file.
Gerd Moellmann <gerd@gnu.org>
parents: 23984
diff changeset
2370 EXFUN (Fmaphash, 2);
4a142fb92f94 (P_): Moved to top of file.
Gerd Moellmann <gerd@gnu.org>
parents: 23984
diff changeset
2371 EXFUN (Fdefine_hash_table_test, 3);
4a142fb92f94 (P_): Moved to top of file.
Gerd Moellmann <gerd@gnu.org>
parents: 23984
diff changeset
2372
18732
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2373 EXFUN (Fidentity, 1);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2374 EXFUN (Frandom, 1);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2375 EXFUN (Flength, 1);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2376 EXFUN (Fsafe_length, 1);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2377 EXFUN (Fappend, MANY);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2378 EXFUN (Fconcat, MANY);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2379 EXFUN (Fvconcat, MANY);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2380 EXFUN (Fcopy_sequence, 1);
21038
9b33c6a5b4dc (Vnonascii_translate_table, Qcharset): New variable decls.
Richard M. Stallman <rms@gnu.org>
parents: 20723
diff changeset
2381 EXFUN (Fstring_make_multibyte, 1);
9b33c6a5b4dc (Vnonascii_translate_table, Qcharset): New variable decls.
Richard M. Stallman <rms@gnu.org>
parents: 20723
diff changeset
2382 EXFUN (Fstring_make_unibyte, 1);
9b33c6a5b4dc (Vnonascii_translate_table, Qcharset): New variable decls.
Richard M. Stallman <rms@gnu.org>
parents: 20723
diff changeset
2383 EXFUN (Fstring_as_multibyte, 1);
9b33c6a5b4dc (Vnonascii_translate_table, Qcharset): New variable decls.
Richard M. Stallman <rms@gnu.org>
parents: 20723
diff changeset
2384 EXFUN (Fstring_as_unibyte, 1);
49866
c1513decc2e5 (Fcancel_kbd_macro_events, Fstring_to_multibyte): Add
Andreas Schwab <schwab@suse.de>
parents: 49665
diff changeset
2385 EXFUN (Fstring_to_multibyte, 1);
97232
5584d562a3b5 Fix erroneous last commit.
Eli Zaretskii <eliz@gnu.org>
parents: 97226
diff changeset
2386 EXFUN (Fstring_to_unibyte, 1);
18732
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2387 EXFUN (Fsubstring, 3);
20625
a9c4bf3f4e46 (STRING_MULTIBYTE): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20569
diff changeset
2388 extern Lisp_Object substring_both P_ ((Lisp_Object, int, int, int, int));
18732
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2389 EXFUN (Fnth, 2);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2390 EXFUN (Fnthcdr, 2);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2391 EXFUN (Fmemq, 2);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2392 EXFUN (Fassq, 2);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2393 EXFUN (Fassoc, 2);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2394 EXFUN (Felt, 2);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2395 EXFUN (Fmember, 2);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2396 EXFUN (Frassq, 2);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2397 EXFUN (Fdelq, 2);
58092
066860841caf (Fdelete): Add EXFUN.
Kim F. Storm <storm@cua.dk>
parents: 58013
diff changeset
2398 EXFUN (Fdelete, 2);
18732
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2399 EXFUN (Fsort, 2);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2400 EXFUN (Freverse, 1);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2401 EXFUN (Fnreverse, 1);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2402 EXFUN (Fget, 2);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2403 EXFUN (Fput, 3);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2404 EXFUN (Fequal, 2);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2405 EXFUN (Ffillarray, 2);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2406 EXFUN (Fnconc, MANY);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2407 EXFUN (Fmapcar, 2);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2408 EXFUN (Fmapconcat, 3);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2409 EXFUN (Fy_or_n_p, 1);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2410 extern Lisp_Object do_yes_or_no_p P_ ((Lisp_Object));
23772
afe440aabd55 (Frequire): Update declaration.
Kenichi Handa <handa@m17n.org>
parents: 23721
diff changeset
2411 EXFUN (Frequire, 3);
39860
32241ddd6e73 (Ffeaturep, Fprovide): Update prototype.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39810
diff changeset
2412 EXFUN (Fprovide, 2);
18732
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2413 extern Lisp_Object concat2 P_ ((Lisp_Object, Lisp_Object));
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2414 extern Lisp_Object concat3 P_ ((Lisp_Object, Lisp_Object, Lisp_Object));
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2415 extern Lisp_Object nconc2 P_ ((Lisp_Object, Lisp_Object));
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2416 extern Lisp_Object assq_no_quit P_ ((Lisp_Object, Lisp_Object));
90422
7190e43d6fde (assoc_no_quit): Extern it.
Kenichi Handa <handa@m17n.org>
parents: 90384
diff changeset
2417 extern Lisp_Object assoc_no_quit P_ ((Lisp_Object, Lisp_Object));
27885
07a468af713c Add a bunch of prototypes.
Dave Love <fx@gnu.org>
parents: 27858
diff changeset
2418 extern void clear_string_char_byte_cache P_ ((void));
91807
507bcfb4342c * coding.c (coding_set_destination): Use BEG_BYTE rather than hardcoding 1.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 91727
diff changeset
2419 extern EMACS_INT string_char_to_byte P_ ((Lisp_Object, EMACS_INT));
507bcfb4342c * coding.c (coding_set_destination): Use BEG_BYTE rather than hardcoding 1.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 91727
diff changeset
2420 extern EMACS_INT string_byte_to_char P_ ((Lisp_Object, EMACS_INT));
21515
fb4c986db0e2 Add more prototypes.
Andreas Schwab <schwab@suse.de>
parents: 21322
diff changeset
2421 extern Lisp_Object string_make_multibyte P_ ((Lisp_Object));
58704
8f29fb613b67 Declare string_to_multibyte.
Andreas Schwab <schwab@suse.de>
parents: 58633
diff changeset
2422 extern Lisp_Object string_to_multibyte P_ ((Lisp_Object));
21515
fb4c986db0e2 Add more prototypes.
Andreas Schwab <schwab@suse.de>
parents: 21322
diff changeset
2423 extern Lisp_Object string_make_unibyte P_ ((Lisp_Object));
18732
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2424 EXFUN (Fcopy_alist, 1);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2425 EXFUN (Fplist_get, 2);
25017
4a142fb92f94 (P_): Moved to top of file.
Gerd Moellmann <gerd@gnu.org>
parents: 23984
diff changeset
2426 EXFUN (Fplist_put, 3);
44009
e67bcd447b16 (Fplist_member): Add prototype.
Pavel Janík <Pavel@Janik.cz>
parents: 43816
diff changeset
2427 EXFUN (Fplist_member, 2);
18732
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2428 EXFUN (Frassoc, 2);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2429 EXFUN (Fstring_equal, 2);
21842
870b55420529 Declare Fcompare_strings.
Andreas Schwab <schwab@suse.de>
parents: 21826
diff changeset
2430 EXFUN (Fcompare_strings, 7);
18732
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2431 EXFUN (Fstring_lessp, 2);
21931
b382905e065a Declare init functions.
Andreas Schwab <schwab@suse.de>
parents: 21842
diff changeset
2432 extern void syms_of_fns P_ ((void));
18732
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2433
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2434 /* Defined in floatfns.c */
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2435 extern double extract_float P_ ((Lisp_Object));
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2436 EXFUN (Ffloat, 1);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2437 EXFUN (Ftruncate, 2);
21931
b382905e065a Declare init functions.
Andreas Schwab <schwab@suse.de>
parents: 21842
diff changeset
2438 extern void init_floatfns P_ ((void));
b382905e065a Declare init functions.
Andreas Schwab <schwab@suse.de>
parents: 21842
diff changeset
2439 extern void syms_of_floatfns P_ ((void));
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2440
53884
1b20aa00ebc2 (syms_of_fringe, init_fringe, init_fringe_once):
Kim F. Storm <storm@cua.dk>
parents: 53669
diff changeset
2441 /* Defined in fringe.c */
1b20aa00ebc2 (syms_of_fringe, init_fringe, init_fringe_once):
Kim F. Storm <storm@cua.dk>
parents: 53669
diff changeset
2442 extern void syms_of_fringe P_ ((void));
1b20aa00ebc2 (syms_of_fringe, init_fringe, init_fringe_once):
Kim F. Storm <storm@cua.dk>
parents: 53669
diff changeset
2443 extern void init_fringe P_ ((void));
1b20aa00ebc2 (syms_of_fringe, init_fringe, init_fringe_once):
Kim F. Storm <storm@cua.dk>
parents: 53669
diff changeset
2444 extern void init_fringe_once P_ ((void));
1b20aa00ebc2 (syms_of_fringe, init_fringe, init_fringe_once):
Kim F. Storm <storm@cua.dk>
parents: 53669
diff changeset
2445
54340
52989cb6fe03 Image consolidation:
Kim F. Storm <storm@cua.dk>
parents: 54177
diff changeset
2446 /* Defined in image.c */
56287
f336a26a714d Declare Finit_image_library.
Andreas Schwab <schwab@suse.de>
parents: 56242
diff changeset
2447 EXFUN (Finit_image_library, 2);
54340
52989cb6fe03 Image consolidation:
Kim F. Storm <storm@cua.dk>
parents: 54177
diff changeset
2448 extern void syms_of_image P_ ((void));
52989cb6fe03 Image consolidation:
Kim F. Storm <storm@cua.dk>
parents: 54177
diff changeset
2449 extern void init_image P_ ((void));
52989cb6fe03 Image consolidation:
Kim F. Storm <storm@cua.dk>
parents: 54177
diff changeset
2450
10396
47938020b39d Use large constants for Lisp_Misc_Type.
Karl Heuer <kwzh@gnu.org>
parents: 10387
diff changeset
2451 /* Defined in insdel.c */
39245
76c1a0ab4517 (Qinhibit_modification_hooks): Declare.
Gerd Moellmann <gerd@gnu.org>
parents: 39194
diff changeset
2452 extern Lisp_Object Qinhibit_modification_hooks;
18732
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2453 extern void move_gap P_ ((int));
20559
38941faa1564 (struct Lisp_Marker): New field `charpos'.
Richard M. Stallman <rms@gnu.org>
parents: 20499
diff changeset
2454 extern void move_gap_both P_ ((int, int));
18732
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2455 extern void make_gap P_ ((int));
46471
028a5b2de9e4 (chars_in_text, multibyte_chars_in_text, copy_text):
Ken Raeburn <raeburn@raeburn.org>
parents: 46428
diff changeset
2456 extern int copy_text P_ ((const unsigned char *, unsigned char *, int, int, int));
028a5b2de9e4 (chars_in_text, multibyte_chars_in_text, copy_text):
Ken Raeburn <raeburn@raeburn.org>
parents: 46428
diff changeset
2457 extern int count_size_as_multibyte P_ ((const unsigned char *, int));
028a5b2de9e4 (chars_in_text, multibyte_chars_in_text, copy_text):
Ken Raeburn <raeburn@raeburn.org>
parents: 46428
diff changeset
2458 extern int count_combining_before P_ ((const unsigned char *, int, int, int));
028a5b2de9e4 (chars_in_text, multibyte_chars_in_text, copy_text):
Ken Raeburn <raeburn@raeburn.org>
parents: 46428
diff changeset
2459 extern int count_combining_after P_ ((const unsigned char *, int, int, int));
028a5b2de9e4 (chars_in_text, multibyte_chars_in_text, copy_text):
Ken Raeburn <raeburn@raeburn.org>
parents: 46428
diff changeset
2460 extern void insert P_ ((const unsigned char *, int));
028a5b2de9e4 (chars_in_text, multibyte_chars_in_text, copy_text):
Ken Raeburn <raeburn@raeburn.org>
parents: 46428
diff changeset
2461 extern void insert_and_inherit P_ ((const unsigned char *, int));
028a5b2de9e4 (chars_in_text, multibyte_chars_in_text, copy_text):
Ken Raeburn <raeburn@raeburn.org>
parents: 46428
diff changeset
2462 extern void insert_1 P_ ((const unsigned char *, int, int, int, int));
028a5b2de9e4 (chars_in_text, multibyte_chars_in_text, copy_text):
Ken Raeburn <raeburn@raeburn.org>
parents: 46428
diff changeset
2463 extern void insert_1_both P_ ((const unsigned char *, int, int, int, int, int));
91807
507bcfb4342c * coding.c (coding_set_destination): Use BEG_BYTE rather than hardcoding 1.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 91727
diff changeset
2464 extern void insert_from_gap P_ ((EMACS_INT, EMACS_INT));
20625
a9c4bf3f4e46 (STRING_MULTIBYTE): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20569
diff changeset
2465 extern void insert_from_string P_ ((Lisp_Object, int, int, int, int, int));
18732
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2466 extern void insert_from_buffer P_ ((struct buffer *, int, int, int));
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2467 extern void insert_char P_ ((int));
46471
028a5b2de9e4 (chars_in_text, multibyte_chars_in_text, copy_text):
Ken Raeburn <raeburn@raeburn.org>
parents: 46428
diff changeset
2468 extern void insert_string P_ ((const char *));
028a5b2de9e4 (chars_in_text, multibyte_chars_in_text, copy_text):
Ken Raeburn <raeburn@raeburn.org>
parents: 46428
diff changeset
2469 extern void insert_before_markers P_ ((const unsigned char *, int));
028a5b2de9e4 (chars_in_text, multibyte_chars_in_text, copy_text):
Ken Raeburn <raeburn@raeburn.org>
parents: 46428
diff changeset
2470 extern void insert_before_markers_and_inherit P_ ((const unsigned char *, int));
20625
a9c4bf3f4e46 (STRING_MULTIBYTE): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20569
diff changeset
2471 extern void insert_from_string_before_markers P_ ((Lisp_Object, int, int, int, int, int));
18732
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2472 extern void del_range P_ ((int, int));
26742
936b39bd05b4 * editfns.c (Fdelete_and_extract_region): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 26603
diff changeset
2473 extern Lisp_Object del_range_1 P_ ((int, int, int, int));
20559
38941faa1564 (struct Lisp_Marker): New field `charpos'.
Richard M. Stallman <rms@gnu.org>
parents: 20499
diff changeset
2474 extern void del_range_byte P_ ((int, int, int));
38941faa1564 (struct Lisp_Marker): New field `charpos'.
Richard M. Stallman <rms@gnu.org>
parents: 20499
diff changeset
2475 extern void del_range_both P_ ((int, int, int, int, int));
26742
936b39bd05b4 * editfns.c (Fdelete_and_extract_region): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 26603
diff changeset
2476 extern Lisp_Object del_range_2 P_ ((int, int, int, int, int));
72592
f6de516bbb4b * buffer.h (struct buffer_text): New field chars_modiff.
Chong Yidong <cyd@stupidchicken.com>
parents: 72133
diff changeset
2477 extern void modify_region P_ ((struct buffer *, int, int, int));
18732
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2478 extern void prepare_to_modify_buffer P_ ((int, int, int *));
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2479 extern void signal_before_change P_ ((int, int, int *));
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2480 extern void signal_after_change P_ ((int, int, int));
21322
f93df7bbcead (adjust_after_replace, adjust_after_insert): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 21282
diff changeset
2481 extern void adjust_after_replace P_ ((int, int, Lisp_Object, int, int));
42756
711b64458618 (adjust_after_replace_noundo)
Pavel Janík <Pavel@Janik.cz>
parents: 42466
diff changeset
2482 extern void adjust_after_replace_noundo P_ ((int, int, int, int, int, int));
21322
f93df7bbcead (adjust_after_replace, adjust_after_insert): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 21282
diff changeset
2483 extern void adjust_after_insert P_ ((int, int, int, int, int));
21276
e0c0f8846fb0 Declarations changed.
Kenichi Handa <handa@m17n.org>
parents: 21199
diff changeset
2484 extern void replace_range P_ ((int, int, Lisp_Object, int, int, int));
58092
066860841caf (Fdelete): Add EXFUN.
Kim F. Storm <storm@cua.dk>
parents: 58013
diff changeset
2485 extern void replace_range_2 P_ ((int, int, int, int, char *, int, int, int));
21931
b382905e065a Declare init functions.
Andreas Schwab <schwab@suse.de>
parents: 21842
diff changeset
2486 extern void syms_of_insdel P_ ((void));
10396
47938020b39d Use large constants for Lisp_Misc_Type.
Karl Heuer <kwzh@gnu.org>
parents: 10387
diff changeset
2487
16133
36566aa94b49 Add many declarations.
Richard M. Stallman <rms@gnu.org>
parents: 16051
diff changeset
2488 /* Defined in dispnew.c */
25672
68068da11161 (selected_frame): Add external declaration.
Gerd Moellmann <gerd@gnu.org>
parents: 25556
diff changeset
2489 extern Lisp_Object selected_frame;
43713
f92c4d87863a Change defvar_int def and vars to use EMACS_INT instead of just int.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43699
diff changeset
2490 extern EMACS_INT baud_rate;
18732
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2491 EXFUN (Fding, 1);
25450
b5c133b3bfa0 Add declarations for some functions.
Andreas Schwab <schwab@suse.de>
parents: 25421
diff changeset
2492 EXFUN (Fredraw_frame, 1);
18732
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2493 EXFUN (Fredraw_display, 0);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2494 EXFUN (Fsleep_for, 2);
71796
d16f7a383190 (sit_for): Update prototype.
Kim F. Storm <storm@cua.dk>
parents: 71063
diff changeset
2495 EXFUN (Fredisplay, 1);
d16f7a383190 (sit_for): Update prototype.
Kim F. Storm <storm@cua.dk>
parents: 71063
diff changeset
2496 extern Lisp_Object sit_for P_ ((Lisp_Object, int, int));
21931
b382905e065a Declare init functions.
Andreas Schwab <schwab@suse.de>
parents: 21842
diff changeset
2497 extern void init_display P_ ((void));
b382905e065a Declare init functions.
Andreas Schwab <schwab@suse.de>
parents: 21842
diff changeset
2498 extern void syms_of_display P_ ((void));
46552
cb055b77d3c6 (STRING_COPYIN): New macro.
Ken Raeburn <raeburn@raeburn.org>
parents: 46471
diff changeset
2499 extern void safe_bcopy P_ ((const char *, char *, int));
16133
36566aa94b49 Add many declarations.
Richard M. Stallman <rms@gnu.org>
parents: 16051
diff changeset
2500
10396
47938020b39d Use large constants for Lisp_Misc_Type.
Karl Heuer <kwzh@gnu.org>
parents: 10387
diff changeset
2501 /* Defined in xdisp.c */
34796
560b081d8800 (Qinhibit_point_motion_hooks): Declare extern.
Gerd Moellmann <gerd@gnu.org>
parents: 34534
diff changeset
2502 extern Lisp_Object Qinhibit_point_motion_hooks;
31447
12a61566fea1 (Qdisplay): Declare extern.
Gerd Moellmann <gerd@gnu.org>
parents: 31207
diff changeset
2503 extern Lisp_Object Qinhibit_redisplay, Qdisplay;
37042
a644f4966169 (Qinhibit_eval_during_redisplay): Declare extern.
Gerd Moellmann <gerd@gnu.org>
parents: 36941
diff changeset
2504 extern Lisp_Object Qinhibit_eval_during_redisplay;
29636
04d079a75b41 (Qmessage_truncate_lines): External declaration.
Gerd Moellmann <gerd@gnu.org>
parents: 29443
diff changeset
2505 extern Lisp_Object Qmessage_truncate_lines;
53331
db670c1b5944 (IMAGEP): New macro to test for image object type.
Kim F. Storm <storm@cua.dk>
parents: 53111
diff changeset
2506 extern Lisp_Object Qimage;
11191
4bf8abe4529e Declare Vmessage_log_max.
Karl Heuer <kwzh@gnu.org>
parents: 11164
diff changeset
2507 extern Lisp_Object Vmessage_log_max;
20625
a9c4bf3f4e46 (STRING_MULTIBYTE): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20569
diff changeset
2508 extern int message_enable_multibyte;
25353
fa9f34ec4151 Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 25252
diff changeset
2509 extern Lisp_Object echo_area_buffer[2];
25748
6fddda6e635e Add prototype for uninterrupt_malloc, memory_warnings,
Gerd Moellmann <gerd@gnu.org>
parents: 25737
diff changeset
2510 extern void check_message_stack P_ ((void));
25353
fa9f34ec4151 Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 25252
diff changeset
2511 extern void setup_echo_area_for_printing P_ ((int));
fa9f34ec4151 Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 25252
diff changeset
2512 extern int push_message P_ ((void));
47393
38bf43c3fb05 (pop_message_unwind): Renamed from push_message_unwind.
Richard M. Stallman <rms@gnu.org>
parents: 47136
diff changeset
2513 extern Lisp_Object pop_message_unwind P_ ((Lisp_Object));
38bf43c3fb05 (pop_message_unwind): Renamed from push_message_unwind.
Richard M. Stallman <rms@gnu.org>
parents: 47136
diff changeset
2514 extern Lisp_Object restore_message_unwind P_ ((Lisp_Object));
25353
fa9f34ec4151 Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 25252
diff changeset
2515 extern void pop_message P_ ((void));
fa9f34ec4151 Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 25252
diff changeset
2516 extern void restore_message P_ ((void));
fa9f34ec4151 Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 25252
diff changeset
2517 extern Lisp_Object current_message P_ ((void));
46471
028a5b2de9e4 (chars_in_text, multibyte_chars_in_text, copy_text):
Ken Raeburn <raeburn@raeburn.org>
parents: 46428
diff changeset
2518 extern void set_message P_ ((const char *s, Lisp_Object, int, int));
25353
fa9f34ec4151 Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 25252
diff changeset
2519 extern void clear_message P_ ((int, int));
18732
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2520 extern void message P_ ((/* char *, ... */));
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2521 extern void message_nolog P_ ((/* char *, ... */));
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2522 extern void message1 P_ ((char *));
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2523 extern void message1_nolog P_ ((char *));
46471
028a5b2de9e4 (chars_in_text, multibyte_chars_in_text, copy_text):
Ken Raeburn <raeburn@raeburn.org>
parents: 46428
diff changeset
2524 extern void message2 P_ ((const char *, int, int));
028a5b2de9e4 (chars_in_text, multibyte_chars_in_text, copy_text):
Ken Raeburn <raeburn@raeburn.org>
parents: 46428
diff changeset
2525 extern void message2_nolog P_ ((const char *, int, int));
25017
4a142fb92f94 (P_): Moved to top of file.
Gerd Moellmann <gerd@gnu.org>
parents: 23984
diff changeset
2526 extern void message3 P_ ((Lisp_Object, int, int));
4a142fb92f94 (P_): Moved to top of file.
Gerd Moellmann <gerd@gnu.org>
parents: 23984
diff changeset
2527 extern void message3_nolog P_ ((Lisp_Object, int, int));
46471
028a5b2de9e4 (chars_in_text, multibyte_chars_in_text, copy_text):
Ken Raeburn <raeburn@raeburn.org>
parents: 46428
diff changeset
2528 extern void message_dolog P_ ((const char *, int, int, int));
20625
a9c4bf3f4e46 (STRING_MULTIBYTE): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20569
diff changeset
2529 extern void message_with_string P_ ((char *, Lisp_Object, int));
18732
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2530 extern void message_log_maybe_newline P_ ((void));
20297
bf0a54297d95 Add more prototypes and declarations. Forward declare
Andreas Schwab <schwab@suse.de>
parents: 20123
diff changeset
2531 extern void update_echo_area P_ ((void));
bf0a54297d95 Add more prototypes and declarations. Forward declare
Andreas Schwab <schwab@suse.de>
parents: 20123
diff changeset
2532 extern void truncate_echo_area P_ ((int));
bf0a54297d95 Add more prototypes and declarations. Forward declare
Andreas Schwab <schwab@suse.de>
parents: 20123
diff changeset
2533 extern void redisplay P_ ((void));
26865
87623e53b7c6 (QCtest, QCweakness, Qequal): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 26742
diff changeset
2534 extern int check_point_in_composition
87623e53b7c6 (QCtest, QCweakness, Qequal): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 26742
diff changeset
2535 P_ ((struct buffer *, int, struct buffer *, int));
35335
b5a39d371511 (redisplay_preserve_echo_area): Change prototype.
Gerd Moellmann <gerd@gnu.org>
parents: 35184
diff changeset
2536 extern void redisplay_preserve_echo_area P_ ((int));
20297
bf0a54297d95 Add more prototypes and declarations. Forward declare
Andreas Schwab <schwab@suse.de>
parents: 20123
diff changeset
2537 extern void prepare_menu_bars P_ ((void));
48322
7fc75e78e65f (get_specified_cursor_type, get_window_cursor_type):
Dave Love <fx@gnu.org>
parents: 47991
diff changeset
2538
47136
09135ba45a40 (Qcursor_in_non_selected_windows): Extern removed.
Kim F. Storm <storm@cua.dk>
parents: 46886
diff changeset
2539 void set_frame_cursor_types P_ ((struct frame *, Lisp_Object));
21931
b382905e065a Declare init functions.
Andreas Schwab <schwab@suse.de>
parents: 21842
diff changeset
2540 extern void syms_of_xdisp P_ ((void));
b382905e065a Declare init functions.
Andreas Schwab <schwab@suse.de>
parents: 21842
diff changeset
2541 extern void init_xdisp P_ ((void));
32173
fea92799d3e9 (safe_call): Renamed from call_function.
Gerd Moellmann <gerd@gnu.org>
parents: 32065
diff changeset
2542 extern Lisp_Object safe_eval P_ ((Lisp_Object));
55024
515da854c2b6 (pos_visible_p): Fix prototype.
Kim F. Storm <storm@cua.dk>
parents: 54628
diff changeset
2543 extern int pos_visible_p P_ ((struct window *, int, int *,
72662
0c6f8f13dcc0 (pos_visible_p): Update prototype.
Kim F. Storm <storm@cua.dk>
parents: 72592
diff changeset
2544 int *, int *, int *, int *, int *));
10396
47938020b39d Use large constants for Lisp_Misc_Type.
Karl Heuer <kwzh@gnu.org>
parents: 10387
diff changeset
2545
25748
6fddda6e635e Add prototype for uninterrupt_malloc, memory_warnings,
Gerd Moellmann <gerd@gnu.org>
parents: 25737
diff changeset
2546 /* Defined in vm-limit.c. */
28054
d53d22ce7f4b (P_): Define based on PROTOTYPES, not __STDC__.
Dave Love <fx@gnu.org>
parents: 27885
diff changeset
2547 extern void memory_warnings P_ ((POINTER_TYPE *, void (*warnfun) ()));
d53d22ce7f4b (P_): Define based on PROTOTYPES, not __STDC__.
Dave Love <fx@gnu.org>
parents: 27885
diff changeset
2548
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2549 /* Defined in alloc.c */
39579
e307d3530117 (LIST_END_P, FOREACH): New macros.
Gerd Moellmann <gerd@gnu.org>
parents: 39451
diff changeset
2550 extern void check_pure_size P_ ((void));
27141
d7b1de135a40 Add prototype for allocate_string_data.
Gerd Moellmann <gerd@gnu.org>
parents: 27078
diff changeset
2551 extern void allocate_string_data P_ ((struct Lisp_String *, int, int));
58818
f8cddae7d959 * gtkutil.c: Include signal.h and syssignal.h.
Jan Djärv <jan.h.d@swipnet.se>
parents: 58704
diff changeset
2552 extern void reset_malloc_hooks P_ ((void));
25748
6fddda6e635e Add prototype for uninterrupt_malloc, memory_warnings,
Gerd Moellmann <gerd@gnu.org>
parents: 25737
diff changeset
2553 extern void uninterrupt_malloc P_ ((void));
20297
bf0a54297d95 Add more prototypes and declarations. Forward declare
Andreas Schwab <schwab@suse.de>
parents: 20123
diff changeset
2554 extern void malloc_warning P_ ((char *));
72005
da0099bc0ba4 * ebrowse.c (usage, version): Mark as NO_RETURN.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 71983
diff changeset
2555 extern void memory_full P_ ((void)) NO_RETURN;
da0099bc0ba4 * ebrowse.c (usage, version): Mark as NO_RETURN.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 71983
diff changeset
2556 extern void buffer_memory_full P_ ((void)) NO_RETURN;
25017
4a142fb92f94 (P_): Moved to top of file.
Gerd Moellmann <gerd@gnu.org>
parents: 23984
diff changeset
2557 extern int survives_gc_p P_ ((Lisp_Object));
51766
eee1bdf9de54 (mark_object): Change prototype to only pass Lisp_Object.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51724
diff changeset
2558 extern void mark_object P_ ((Lisp_Object));
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2559 extern Lisp_Object Vpurify_flag;
46304
76246741e5c2 (Vmemory_full): Add declaration.
Richard M. Stallman <rms@gnu.org>
parents: 46284
diff changeset
2560 extern Lisp_Object Vmemory_full;
18732
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2561 EXFUN (Fcons, 2);
71983
d9eba6509dd1 (list1): Add EXFUN.
Kim F. Storm <storm@cua.dk>
parents: 71822
diff changeset
2562 EXFUN (list1, 1);
21038
9b33c6a5b4dc (Vnonascii_translate_table, Qcharset): New variable decls.
Richard M. Stallman <rms@gnu.org>
parents: 20723
diff changeset
2563 EXFUN (list2, 2);
9b33c6a5b4dc (Vnonascii_translate_table, Qcharset): New variable decls.
Richard M. Stallman <rms@gnu.org>
parents: 20723
diff changeset
2564 EXFUN (list3, 3);
9b33c6a5b4dc (Vnonascii_translate_table, Qcharset): New variable decls.
Richard M. Stallman <rms@gnu.org>
parents: 20723
diff changeset
2565 EXFUN (list4, 4);
9b33c6a5b4dc (Vnonascii_translate_table, Qcharset): New variable decls.
Richard M. Stallman <rms@gnu.org>
parents: 20723
diff changeset
2566 EXFUN (list5, 5);
18732
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2567 EXFUN (Flist, MANY);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2568 EXFUN (Fmake_list, 2);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2569 extern Lisp_Object allocate_misc P_ ((void));
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2570 EXFUN (Fmake_vector, 2);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2571 EXFUN (Fvector, MANY);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2572 EXFUN (Fmake_symbol, 1);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2573 EXFUN (Fmake_marker, 0);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2574 EXFUN (Fmake_string, 2);
46471
028a5b2de9e4 (chars_in_text, multibyte_chars_in_text, copy_text):
Ken Raeburn <raeburn@raeburn.org>
parents: 46428
diff changeset
2575 extern Lisp_Object build_string P_ ((const char *));
028a5b2de9e4 (chars_in_text, multibyte_chars_in_text, copy_text):
Ken Raeburn <raeburn@raeburn.org>
parents: 46428
diff changeset
2576 extern Lisp_Object make_string P_ ((const char *, int));
028a5b2de9e4 (chars_in_text, multibyte_chars_in_text, copy_text):
Ken Raeburn <raeburn@raeburn.org>
parents: 46428
diff changeset
2577 extern Lisp_Object make_unibyte_string P_ ((const char *, int));
028a5b2de9e4 (chars_in_text, multibyte_chars_in_text, copy_text):
Ken Raeburn <raeburn@raeburn.org>
parents: 46428
diff changeset
2578 extern Lisp_Object make_multibyte_string P_ ((const char *, int, int));
18732
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2579 extern Lisp_Object make_event_array P_ ((int, Lisp_Object *));
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2580 extern Lisp_Object make_uninit_string P_ ((int));
20625
a9c4bf3f4e46 (STRING_MULTIBYTE): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20569
diff changeset
2581 extern Lisp_Object make_uninit_multibyte_string P_ ((int, int));
50276
fc6bcd4af686 (make_string_from_bytes, make_specified_string):
Kenichi Handa <handa@m17n.org>
parents: 49866
diff changeset
2582 extern Lisp_Object make_string_from_bytes P_ ((const char *, int, int));
fc6bcd4af686 (make_string_from_bytes, make_specified_string):
Kenichi Handa <handa@m17n.org>
parents: 49866
diff changeset
2583 extern Lisp_Object make_specified_string P_ ((const char *, int, int, int));
18732
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2584 EXFUN (Fpurecopy, 1);
21276
e0c0f8846fb0 Declarations changed.
Kenichi Handa <handa@m17n.org>
parents: 21199
diff changeset
2585 extern Lisp_Object make_pure_string P_ ((char *, int, int, int));
18732
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2586 extern Lisp_Object pure_cons P_ ((Lisp_Object, Lisp_Object));
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2587 extern Lisp_Object make_pure_vector P_ ((EMACS_INT));
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2588 EXFUN (Fgarbage_collect, 0);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2589 EXFUN (Fmake_byte_code, MANY);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2590 EXFUN (Fmake_bool_vector, 2);
13202
b307cd5c259f (struct Lisp_Char_Table): New slot `purpose'.
Richard M. Stallman <rms@gnu.org>
parents: 13149
diff changeset
2591 extern Lisp_Object Qchar_table_extra_slots;
36430
5b0805c237e1 (allocate_vectorlike): Remove prototype.
Gerd Moellmann <gerd@gnu.org>
parents: 35773
diff changeset
2592 extern struct Lisp_Vector *allocate_vector P_ ((EMACS_INT));
86160
1ede747999c6 * alloc.c (ALLOCATE_PSEUDOVECTOR): Move to lisp.h.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85764
diff changeset
2593 extern struct Lisp_Vector *allocate_pseudovector P_ ((int memlen, int lisplen, EMACS_INT tag));
1ede747999c6 * alloc.c (ALLOCATE_PSEUDOVECTOR): Move to lisp.h.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85764
diff changeset
2594 #define ALLOCATE_PSEUDOVECTOR(typ,field,tag) \
1ede747999c6 * alloc.c (ALLOCATE_PSEUDOVECTOR): Move to lisp.h.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85764
diff changeset
2595 ((typ*) \
1ede747999c6 * alloc.c (ALLOCATE_PSEUDOVECTOR): Move to lisp.h.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85764
diff changeset
2596 allocate_pseudovector \
1ede747999c6 * alloc.c (ALLOCATE_PSEUDOVECTOR): Move to lisp.h.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85764
diff changeset
2597 (VECSIZE (typ), PSEUDOVECSIZE (typ, field), tag))
36430
5b0805c237e1 (allocate_vectorlike): Remove prototype.
Gerd Moellmann <gerd@gnu.org>
parents: 35773
diff changeset
2598 extern struct Lisp_Hash_Table *allocate_hash_table P_ ((void));
5b0805c237e1 (allocate_vectorlike): Remove prototype.
Gerd Moellmann <gerd@gnu.org>
parents: 35773
diff changeset
2599 extern struct window *allocate_window P_ ((void));
5b0805c237e1 (allocate_vectorlike): Remove prototype.
Gerd Moellmann <gerd@gnu.org>
parents: 35773
diff changeset
2600 extern struct frame *allocate_frame P_ ((void));
5b0805c237e1 (allocate_vectorlike): Remove prototype.
Gerd Moellmann <gerd@gnu.org>
parents: 35773
diff changeset
2601 extern struct Lisp_Process *allocate_process P_ ((void));
84763
6221fe13ef8a (allocate_terminal): Declare.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 84689
diff changeset
2602 extern struct terminal *allocate_terminal P_ ((void));
6657
28359458811c (gc_in_progress): Declared.
Richard M. Stallman <rms@gnu.org>
parents: 6458
diff changeset
2603 extern int gc_in_progress;
50748
7c1d1ca51ca7 (abort_on_gc): Add decl.
Richard M. Stallman <rms@gnu.org>
parents: 50539
diff changeset
2604 extern int abort_on_gc;
18732
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2605 extern Lisp_Object make_float P_ ((double));
20297
bf0a54297d95 Add more prototypes and declarations. Forward declare
Andreas Schwab <schwab@suse.de>
parents: 20123
diff changeset
2606 extern void display_malloc_warning P_ ((void));
bf0a54297d95 Add more prototypes and declarations. Forward declare
Andreas Schwab <schwab@suse.de>
parents: 20123
diff changeset
2607 extern int inhibit_garbage_collection P_ ((void));
49056
88f14a14e005 New misc type Lisp_Save_Value.
Richard M. Stallman <rms@gnu.org>
parents: 48540
diff changeset
2608 extern Lisp_Object make_save_value P_ ((void *, int));
56242
caae4c07c40c (free_misc): Add prototype.
Kim F. Storm <storm@cua.dk>
parents: 56204
diff changeset
2609 extern void free_misc P_ ((Lisp_Object));
20297
bf0a54297d95 Add more prototypes and declarations. Forward declare
Andreas Schwab <schwab@suse.de>
parents: 20123
diff changeset
2610 extern void free_marker P_ ((Lisp_Object));
bf0a54297d95 Add more prototypes and declarations. Forward declare
Andreas Schwab <schwab@suse.de>
parents: 20123
diff changeset
2611 extern void free_cons P_ ((struct Lisp_Cons *));
21931
b382905e065a Declare init functions.
Andreas Schwab <schwab@suse.de>
parents: 21842
diff changeset
2612 extern void init_alloc_once P_ ((void));
b382905e065a Declare init functions.
Andreas Schwab <schwab@suse.de>
parents: 21842
diff changeset
2613 extern void init_alloc P_ ((void));
b382905e065a Declare init functions.
Andreas Schwab <schwab@suse.de>
parents: 21842
diff changeset
2614 extern void syms_of_alloc P_ ((void));
27885
07a468af713c Add a bunch of prototypes.
Dave Love <fx@gnu.org>
parents: 27858
diff changeset
2615 extern struct buffer * allocate_buffer P_ ((void));
66778
aa81a85c6d8e (valid_lisp_object_p): Add prototype.
Kim F. Storm <storm@cua.dk>
parents: 66531
diff changeset
2616 extern int valid_lisp_object_p P_ ((Lisp_Object));
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2617
88382
5e3e1d9d514f (enum pvec_type): New member PVEC_SUB_CHAR_TABLE.
Kenichi Handa <handa@m17n.org>
parents: 43176
diff changeset
2618 /* Defined in chartab.c */
5e3e1d9d514f (enum pvec_type): New member PVEC_SUB_CHAR_TABLE.
Kenichi Handa <handa@m17n.org>
parents: 43176
diff changeset
2619 EXFUN (Fmake_char_table, 2);
5e3e1d9d514f (enum pvec_type): New member PVEC_SUB_CHAR_TABLE.
Kenichi Handa <handa@m17n.org>
parents: 43176
diff changeset
2620 EXFUN (Fchar_table_parent, 1);
5e3e1d9d514f (enum pvec_type): New member PVEC_SUB_CHAR_TABLE.
Kenichi Handa <handa@m17n.org>
parents: 43176
diff changeset
2621 EXFUN (Fset_char_table_parent, 2);
5e3e1d9d514f (enum pvec_type): New member PVEC_SUB_CHAR_TABLE.
Kenichi Handa <handa@m17n.org>
parents: 43176
diff changeset
2622 EXFUN (Fchar_table_extra_slot, 2);
5e3e1d9d514f (enum pvec_type): New member PVEC_SUB_CHAR_TABLE.
Kenichi Handa <handa@m17n.org>
parents: 43176
diff changeset
2623 EXFUN (Fset_char_table_extra_slot, 3);
5e3e1d9d514f (enum pvec_type): New member PVEC_SUB_CHAR_TABLE.
Kenichi Handa <handa@m17n.org>
parents: 43176
diff changeset
2624 EXFUN (Fchar_table_range, 2);
5e3e1d9d514f (enum pvec_type): New member PVEC_SUB_CHAR_TABLE.
Kenichi Handa <handa@m17n.org>
parents: 43176
diff changeset
2625 EXFUN (Fset_char_table_range, 3);
5e3e1d9d514f (enum pvec_type): New member PVEC_SUB_CHAR_TABLE.
Kenichi Handa <handa@m17n.org>
parents: 43176
diff changeset
2626 EXFUN (Fset_char_table_default, 3);
95430
04a952ac356f * chartab.c (Foptimize_char_table, optimize_sub_char_table):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 95188
diff changeset
2627 EXFUN (Foptimize_char_table, 2);
88382
5e3e1d9d514f (enum pvec_type): New member PVEC_SUB_CHAR_TABLE.
Kenichi Handa <handa@m17n.org>
parents: 43176
diff changeset
2628 EXFUN (Fmap_char_table, 2);
5e3e1d9d514f (enum pvec_type): New member PVEC_SUB_CHAR_TABLE.
Kenichi Handa <handa@m17n.org>
parents: 43176
diff changeset
2629 extern Lisp_Object copy_char_table P_ ((Lisp_Object));
5e3e1d9d514f (enum pvec_type): New member PVEC_SUB_CHAR_TABLE.
Kenichi Handa <handa@m17n.org>
parents: 43176
diff changeset
2630 extern Lisp_Object sub_char_table_ref P_ ((Lisp_Object, int));
5e3e1d9d514f (enum pvec_type): New member PVEC_SUB_CHAR_TABLE.
Kenichi Handa <handa@m17n.org>
parents: 43176
diff changeset
2631 extern Lisp_Object char_table_ref P_ ((Lisp_Object, int));
5e3e1d9d514f (enum pvec_type): New member PVEC_SUB_CHAR_TABLE.
Kenichi Handa <handa@m17n.org>
parents: 43176
diff changeset
2632 extern Lisp_Object char_table_ref_and_range P_ ((Lisp_Object, int,
5e3e1d9d514f (enum pvec_type): New member PVEC_SUB_CHAR_TABLE.
Kenichi Handa <handa@m17n.org>
parents: 43176
diff changeset
2633 int *, int *));
5e3e1d9d514f (enum pvec_type): New member PVEC_SUB_CHAR_TABLE.
Kenichi Handa <handa@m17n.org>
parents: 43176
diff changeset
2634 extern Lisp_Object char_table_set P_ ((Lisp_Object, int, Lisp_Object));
5e3e1d9d514f (enum pvec_type): New member PVEC_SUB_CHAR_TABLE.
Kenichi Handa <handa@m17n.org>
parents: 43176
diff changeset
2635 extern Lisp_Object char_table_set_range P_ ((Lisp_Object, int, int,
5e3e1d9d514f (enum pvec_type): New member PVEC_SUB_CHAR_TABLE.
Kenichi Handa <handa@m17n.org>
parents: 43176
diff changeset
2636 Lisp_Object));
5e3e1d9d514f (enum pvec_type): New member PVEC_SUB_CHAR_TABLE.
Kenichi Handa <handa@m17n.org>
parents: 43176
diff changeset
2637 extern int char_table_translate P_ ((Lisp_Object, int));
5e3e1d9d514f (enum pvec_type): New member PVEC_SUB_CHAR_TABLE.
Kenichi Handa <handa@m17n.org>
parents: 43176
diff changeset
2638 extern void map_char_table P_ ((void (*) (Lisp_Object, Lisp_Object,
5e3e1d9d514f (enum pvec_type): New member PVEC_SUB_CHAR_TABLE.
Kenichi Handa <handa@m17n.org>
parents: 43176
diff changeset
2639 Lisp_Object),
89483
2f877ed80fa6 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 88123 89439
diff changeset
2640 Lisp_Object, Lisp_Object, Lisp_Object));
88382
5e3e1d9d514f (enum pvec_type): New member PVEC_SUB_CHAR_TABLE.
Kenichi Handa <handa@m17n.org>
parents: 43176
diff changeset
2641 extern void syms_of_chartab P_ ((void));
5e3e1d9d514f (enum pvec_type): New member PVEC_SUB_CHAR_TABLE.
Kenichi Handa <handa@m17n.org>
parents: 43176
diff changeset
2642
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2643 /* Defined in print.c */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2644 extern Lisp_Object Vprin1_to_string_buffer;
25712
178d6245c681 Add prototype for debug_print.
Gerd Moellmann <gerd@gnu.org>
parents: 25704
diff changeset
2645 extern void debug_print P_ ((Lisp_Object));
18732
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2646 EXFUN (Fprin1, 2);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2647 EXFUN (Fprin1_to_string, 2);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2648 EXFUN (Fprinc, 2);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2649 EXFUN (Fterpri, 1);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2650 EXFUN (Fprint, 2);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2651 EXFUN (Ferror_message_string, 1);
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2652 extern Lisp_Object Vstandard_output, Qstandard_output;
439
350065270fc8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 381
diff changeset
2653 extern Lisp_Object Qexternal_debugging_output;
46552
cb055b77d3c6 (STRING_COPYIN): New macro.
Ken Raeburn <raeburn@raeburn.org>
parents: 46471
diff changeset
2654 extern void temp_output_buffer_setup P_ ((const char *));
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2655 extern int print_level, print_escape_newlines;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2656 extern Lisp_Object Qprint_escape_newlines;
20297
bf0a54297d95 Add more prototypes and declarations. Forward declare
Andreas Schwab <schwab@suse.de>
parents: 20123
diff changeset
2657 extern void write_string P_ ((char *, int));
bf0a54297d95 Add more prototypes and declarations. Forward declare
Andreas Schwab <schwab@suse.de>
parents: 20123
diff changeset
2658 extern void write_string_1 P_ ((char *, int, Lisp_Object));
46573
4de08f73c18e (print_error_message): Declare new args.
Richard M. Stallman <rms@gnu.org>
parents: 46552
diff changeset
2659 extern void print_error_message P_ ((Lisp_Object, Lisp_Object, char *, Lisp_Object));
20297
bf0a54297d95 Add more prototypes and declarations. Forward declare
Andreas Schwab <schwab@suse.de>
parents: 20123
diff changeset
2660 extern Lisp_Object internal_with_output_to_temp_buffer
46552
cb055b77d3c6 (STRING_COPYIN): New macro.
Ken Raeburn <raeburn@raeburn.org>
parents: 46471
diff changeset
2661 P_ ((const char *, Lisp_Object (*) (Lisp_Object), Lisp_Object));
20297
bf0a54297d95 Add more prototypes and declarations. Forward declare
Andreas Schwab <schwab@suse.de>
parents: 20123
diff changeset
2662 extern void float_to_string P_ ((unsigned char *, double));
21931
b382905e065a Declare init functions.
Andreas Schwab <schwab@suse.de>
parents: 21842
diff changeset
2663 extern void syms_of_print P_ ((void));
20297
bf0a54297d95 Add more prototypes and declarations. Forward declare
Andreas Schwab <schwab@suse.de>
parents: 20123
diff changeset
2664
bf0a54297d95 Add more prototypes and declarations. Forward declare
Andreas Schwab <schwab@suse.de>
parents: 20123
diff changeset
2665 /* Defined in doprnt.c */
bf0a54297d95 Add more prototypes and declarations. Forward declare
Andreas Schwab <schwab@suse.de>
parents: 20123
diff changeset
2666 extern int doprnt P_ ((char *, int, char *, char *, int, char **));
bf0a54297d95 Add more prototypes and declarations. Forward declare
Andreas Schwab <schwab@suse.de>
parents: 20123
diff changeset
2667 extern int doprnt_lisp P_ ((char *, int, char *, char *, int, char **));
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2668
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2669 /* Defined in lread.c */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2670 extern Lisp_Object Qvariable_documentation, Qstandard_input;
21774
101cc2e8a4b7 Include initial_obarray from lread.c
Richard M. Stallman <rms@gnu.org>
parents: 21711
diff changeset
2671 extern Lisp_Object Vobarray, initial_obarray, Vstandard_input;
18732
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2672 EXFUN (Fread, 1);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2673 EXFUN (Fread_from_string, 3);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2674 EXFUN (Fintern, 2);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2675 EXFUN (Fintern_soft, 2);
19119
e772b77b919e (Fload): Update declaration.
Richard M. Stallman <rms@gnu.org>
parents: 18732
diff changeset
2676 EXFUN (Fload, 5);
69171
269a00c6f882 EXFUN Fget_load_suffixes. Extern Vload_file_rep_suffixes.
Luc Teirlinck <teirllm@auburn.edu>
parents: 69157
diff changeset
2677 EXFUN (Fget_load_suffixes, 0);
18732
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2678 EXFUN (Fget_file_char, 0);
72133
995e57f32746 * lisp.h: Update read-char, read-event, and read_filtered_event
Chong Yidong <cyd@stupidchicken.com>
parents: 72005
diff changeset
2679 EXFUN (Fread_char, 3);
995e57f32746 * lisp.h: Update read-char, read-event, and read_filtered_event
Chong Yidong <cyd@stupidchicken.com>
parents: 72005
diff changeset
2680 EXFUN (Fread_event, 3);
995e57f32746 * lisp.h: Update read-char, read-event, and read_filtered_event
Chong Yidong <cyd@stupidchicken.com>
parents: 72005
diff changeset
2681 extern Lisp_Object read_filtered_event P_ ((int, int, int, int, Lisp_Object));
22418
340060628c47 (Feval_region): Accept 4 args.
Richard M. Stallman <rms@gnu.org>
parents: 22269
diff changeset
2682 EXFUN (Feval_region, 4);
76496
5002608f229e Declare check_obarray.
Chong Yidong <cyd@stupidchicken.com>
parents: 75348
diff changeset
2683 extern Lisp_Object check_obarray P_ ((Lisp_Object));
46471
028a5b2de9e4 (chars_in_text, multibyte_chars_in_text, copy_text):
Ken Raeburn <raeburn@raeburn.org>
parents: 46428
diff changeset
2684 extern Lisp_Object intern P_ ((const char *));
18732
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2685 extern Lisp_Object make_symbol P_ ((char *));
46471
028a5b2de9e4 (chars_in_text, multibyte_chars_in_text, copy_text):
Ken Raeburn <raeburn@raeburn.org>
parents: 46428
diff changeset
2686 extern Lisp_Object oblookup P_ ((Lisp_Object, const char *, int, int));
2605
b3c605e9bb30 (LOADHIST_ATTACH): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 2515
diff changeset
2687 #define LOADHIST_ATTACH(x) \
b3c605e9bb30 (LOADHIST_ATTACH): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 2515
diff changeset
2688 if (initialized) Vcurrent_load_list = Fcons (x, Vcurrent_load_list)
b3c605e9bb30 (LOADHIST_ATTACH): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 2515
diff changeset
2689 extern Lisp_Object Vcurrent_load_list;
69171
269a00c6f882 EXFUN Fget_load_suffixes. Extern Vload_file_rep_suffixes.
Luc Teirlinck <teirllm@auburn.edu>
parents: 69157
diff changeset
2690 extern Lisp_Object Vload_history, Vload_suffixes, Vload_file_rep_suffixes;
39810
4b565579e4f5 (Vload_suffixes, Vexec_suffixes): Declare.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39804
diff changeset
2691 extern int openp P_ ((Lisp_Object, Lisp_Object, Lisp_Object,
45000
34382d9145d7 (openp): Update prototype.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44940
diff changeset
2692 Lisp_Object *, Lisp_Object));
20297
bf0a54297d95 Add more prototypes and declarations. Forward declare
Andreas Schwab <schwab@suse.de>
parents: 20123
diff changeset
2693 extern int isfloat_string P_ ((char *));
bf0a54297d95 Add more prototypes and declarations. Forward declare
Andreas Schwab <schwab@suse.de>
parents: 20123
diff changeset
2694 extern void map_obarray P_ ((Lisp_Object, void (*) (Lisp_Object, Lisp_Object),
bf0a54297d95 Add more prototypes and declarations. Forward declare
Andreas Schwab <schwab@suse.de>
parents: 20123
diff changeset
2695 Lisp_Object));
bf0a54297d95 Add more prototypes and declarations. Forward declare
Andreas Schwab <schwab@suse.de>
parents: 20123
diff changeset
2696 extern void dir_warning P_ ((char *, Lisp_Object));
bf0a54297d95 Add more prototypes and declarations. Forward declare
Andreas Schwab <schwab@suse.de>
parents: 20123
diff changeset
2697 extern void close_load_descs P_ ((void));
21931
b382905e065a Declare init functions.
Andreas Schwab <schwab@suse.de>
parents: 21842
diff changeset
2698 extern void init_obarray P_ ((void));
b382905e065a Declare init functions.
Andreas Schwab <schwab@suse.de>
parents: 21842
diff changeset
2699 extern void init_lread P_ ((void));
b382905e065a Declare init functions.
Andreas Schwab <schwab@suse.de>
parents: 21842
diff changeset
2700 extern void syms_of_lread P_ ((void));
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2701
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2702 /* Defined in eval.c */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2703 extern Lisp_Object Qautoload, Qexit, Qinteractive, Qcommandp, Qdefun, Qmacro;
381
0673e72f6c8c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 377
diff changeset
2704 extern Lisp_Object Vinhibit_quit, Qinhibit_quit, Vquit_flag;
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2705 extern Lisp_Object Vautoload_queue;
8995
2281d87b7c91 (Vdebug_on_error): Declared.
Richard M. Stallman <rms@gnu.org>
parents: 8912
diff changeset
2706 extern Lisp_Object Vdebug_on_error;
30072
da80009c3957 (Vsignaling_function): External declaration.
Gerd Moellmann <gerd@gnu.org>
parents: 29978
diff changeset
2707 extern Lisp_Object Vsignaling_function;
30081
60dfd5c7304c (handling_signal): External declaration.
Gerd Moellmann <gerd@gnu.org>
parents: 30072
diff changeset
2708 extern int handling_signal;
35773
04bb0b45e18c (interactive_p): Add prototype.
Gerd Moellmann <gerd@gnu.org>
parents: 35335
diff changeset
2709 extern int interactive_p P_ ((int));
30072
da80009c3957 (Vsignaling_function): External declaration.
Gerd Moellmann <gerd@gnu.org>
parents: 29978
diff changeset
2710
12731
cac1b80e43be Declare hook running functions.
Simon Marshall <simon@gnu.org>
parents: 12653
diff changeset
2711 /* To run a normal hook, use the appropriate function from the list below.
cac1b80e43be Declare hook running functions.
Simon Marshall <simon@gnu.org>
parents: 12653
diff changeset
2712 The calling convention:
cac1b80e43be Declare hook running functions.
Simon Marshall <simon@gnu.org>
parents: 12653
diff changeset
2713
6216
9f7708f75f17 (ARRAY_MARK_FLAG): Define here.
Richard M. Stallman <rms@gnu.org>
parents: 6131
diff changeset
2714 if (!NILP (Vrun_hooks))
12731
cac1b80e43be Declare hook running functions.
Simon Marshall <simon@gnu.org>
parents: 12653
diff changeset
2715 call1 (Vrun_hooks, Qmy_funny_hook);
cac1b80e43be Declare hook running functions.
Simon Marshall <simon@gnu.org>
parents: 12653
diff changeset
2716
cac1b80e43be Declare hook running functions.
Simon Marshall <simon@gnu.org>
parents: 12653
diff changeset
2717 should no longer be used. */
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2718 extern Lisp_Object Vrun_hooks;
18732
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2719 EXFUN (Frun_hooks, MANY);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2720 EXFUN (Frun_hook_with_args, MANY);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2721 EXFUN (Frun_hook_with_args_until_success, MANY);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2722 EXFUN (Frun_hook_with_args_until_failure, MANY);
41751
7a360dc26b8a (run_hook_list_with_args): Undo last change.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 41659
diff changeset
2723 extern Lisp_Object run_hook_list_with_args P_ ((Lisp_Object, int, Lisp_Object *));
20297
bf0a54297d95 Add more prototypes and declarations. Forward declare
Andreas Schwab <schwab@suse.de>
parents: 20123
diff changeset
2724 extern void run_hook_with_args_2 P_ ((Lisp_Object, Lisp_Object, Lisp_Object));
18732
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2725 EXFUN (Fand, UNEVALLED);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2726 EXFUN (For, UNEVALLED);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2727 EXFUN (Fif, UNEVALLED);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2728 EXFUN (Fprogn, UNEVALLED);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2729 EXFUN (Fprog1, UNEVALLED);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2730 EXFUN (Fprog2, UNEVALLED);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2731 EXFUN (Fsetq, UNEVALLED);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2732 EXFUN (Fquote, UNEVALLED);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2733 EXFUN (Fuser_variable_p, 1);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2734 EXFUN (Finteractive_p, 0);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2735 EXFUN (Fdefun, UNEVALLED);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2736 EXFUN (Flet, UNEVALLED);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2737 EXFUN (FletX, UNEVALLED);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2738 EXFUN (Fwhile, UNEVALLED);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2739 EXFUN (Fcatch, UNEVALLED);
31833
12c10704f00c (wrong_type_argument, Fthrow, Fsignal, error): Declare
Gerd Moellmann <gerd@gnu.org>
parents: 31447
diff changeset
2740 EXFUN (Fthrow, 2) NO_RETURN;
18732
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2741 EXFUN (Funwind_protect, UNEVALLED);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2742 EXFUN (Fcondition_case, UNEVALLED);
32065
4f8ce7eb45a5 (wrong_type_argument): Remove NO_RETURN, the function can
Gerd Moellmann <gerd@gnu.org>
parents: 31991
diff changeset
2743 EXFUN (Fsignal, 2);
71983
d9eba6509dd1 (list1): Add EXFUN.
Kim F. Storm <storm@cua.dk>
parents: 71822
diff changeset
2744 extern void xsignal P_ ((Lisp_Object, Lisp_Object)) NO_RETURN;
d9eba6509dd1 (list1): Add EXFUN.
Kim F. Storm <storm@cua.dk>
parents: 71822
diff changeset
2745 extern void xsignal0 P_ ((Lisp_Object)) NO_RETURN;
d9eba6509dd1 (list1): Add EXFUN.
Kim F. Storm <storm@cua.dk>
parents: 71822
diff changeset
2746 extern void xsignal1 P_ ((Lisp_Object, Lisp_Object)) NO_RETURN;
d9eba6509dd1 (list1): Add EXFUN.
Kim F. Storm <storm@cua.dk>
parents: 71822
diff changeset
2747 extern void xsignal2 P_ ((Lisp_Object, Lisp_Object, Lisp_Object)) NO_RETURN;
d9eba6509dd1 (list1): Add EXFUN.
Kim F. Storm <storm@cua.dk>
parents: 71822
diff changeset
2748 extern void xsignal3 P_ ((Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object)) NO_RETURN;
d9eba6509dd1 (list1): Add EXFUN.
Kim F. Storm <storm@cua.dk>
parents: 71822
diff changeset
2749 extern void signal_error P_ ((char *, Lisp_Object)) NO_RETURN;
18732
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2750 EXFUN (Fautoload, 5);
44940
2686a6ef3d19 (Fcommandp): Declare new arg.
Richard M. Stallman <rms@gnu.org>
parents: 44522
diff changeset
2751 EXFUN (Fcommandp, 2);
18732
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2752 EXFUN (Feval, 1);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2753 EXFUN (Fapply, MANY);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2754 EXFUN (Ffuncall, MANY);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2755 EXFUN (Fbacktrace, 0);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2756 extern Lisp_Object apply1 P_ ((Lisp_Object, Lisp_Object));
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2757 extern Lisp_Object call0 P_ ((Lisp_Object));
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2758 extern Lisp_Object call1 P_ ((Lisp_Object, Lisp_Object));
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2759 extern Lisp_Object call2 P_ ((Lisp_Object, Lisp_Object, Lisp_Object));
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2760 extern Lisp_Object call3 P_ ((Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object));
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2761 extern Lisp_Object call4 P_ ((Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object));
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2762 extern Lisp_Object call5 P_ ((Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object));
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2763 extern Lisp_Object call6 P_ ((Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object));
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2764 EXFUN (Fdo_auto_save, 2);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2765 extern Lisp_Object apply_lambda P_ ((Lisp_Object, Lisp_Object, int));
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2766 extern Lisp_Object internal_catch P_ ((Lisp_Object, Lisp_Object (*) (Lisp_Object), Lisp_Object));
66531
8d5d518bafa5 (memory_full_cons_threshold): Declared.
Richard M. Stallman <rms@gnu.org>
parents: 65795
diff changeset
2767 extern Lisp_Object internal_lisp_condition_case P_ ((Lisp_Object, Lisp_Object, Lisp_Object));
18732
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2768 extern Lisp_Object internal_condition_case P_ ((Lisp_Object (*) (void), Lisp_Object, Lisp_Object (*) (Lisp_Object)));
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2769 extern Lisp_Object internal_condition_case_1 P_ ((Lisp_Object (*) (Lisp_Object), Lisp_Object, Lisp_Object, Lisp_Object (*) (Lisp_Object)));
30218
70f3583c5da1 (FUNCTIONP): New macro.
Gerd Moellmann <gerd@gnu.org>
parents: 30201
diff changeset
2770 extern Lisp_Object internal_condition_case_2 P_ ((Lisp_Object (*) (int, Lisp_Object *), int, Lisp_Object *, Lisp_Object, Lisp_Object (*) (Lisp_Object)));
20297
bf0a54297d95 Add more prototypes and declarations. Forward declare
Andreas Schwab <schwab@suse.de>
parents: 20123
diff changeset
2771 extern void specbind P_ ((Lisp_Object, Lisp_Object));
bf0a54297d95 Add more prototypes and declarations. Forward declare
Andreas Schwab <schwab@suse.de>
parents: 20123
diff changeset
2772 extern void record_unwind_protect P_ ((Lisp_Object (*) (Lisp_Object), Lisp_Object));
18732
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2773 extern Lisp_Object unbind_to P_ ((int, Lisp_Object));
31833
12c10704f00c (wrong_type_argument, Fthrow, Fsignal, error): Declare
Gerd Moellmann <gerd@gnu.org>
parents: 31447
diff changeset
2774 extern void error P_ ((/* char *, ... */)) NO_RETURN;
20297
bf0a54297d95 Add more prototypes and declarations. Forward declare
Andreas Schwab <schwab@suse.de>
parents: 20123
diff changeset
2775 extern void do_autoload P_ ((Lisp_Object, Lisp_Object));
18732
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2776 extern Lisp_Object un_autoload P_ ((Lisp_Object));
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2777 EXFUN (Ffetch_bytecode, 1);
21931
b382905e065a Declare init functions.
Andreas Schwab <schwab@suse.de>
parents: 21842
diff changeset
2778 extern void init_eval_once P_ ((void));
32173
fea92799d3e9 (safe_call): Renamed from call_function.
Gerd Moellmann <gerd@gnu.org>
parents: 32065
diff changeset
2779 extern Lisp_Object safe_call P_ ((int, Lisp_Object *));
fea92799d3e9 (safe_call): Renamed from call_function.
Gerd Moellmann <gerd@gnu.org>
parents: 32065
diff changeset
2780 extern Lisp_Object safe_call1 P_ ((Lisp_Object, Lisp_Object));
93369
ed10c3092847 * keyboard.c (pending_funcalls): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 93032
diff changeset
2781 extern Lisp_Object safe_call2 (Lisp_Object, Lisp_Object, Lisp_Object);
21931
b382905e065a Declare init functions.
Andreas Schwab <schwab@suse.de>
parents: 21842
diff changeset
2782 extern void init_eval P_ ((void));
b382905e065a Declare init functions.
Andreas Schwab <schwab@suse.de>
parents: 21842
diff changeset
2783 extern void syms_of_eval P_ ((void));
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2784
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2785 /* Defined in editfns.c */
44522
cada3f53aa13 (Fpropertize): Add prototype.
Pavel Janík <Pavel@Janik.cz>
parents: 44065
diff changeset
2786 EXFUN (Fpropertize, MANY);
25353
fa9f34ec4151 Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 25252
diff changeset
2787 EXFUN (Fcurrent_message, 0);
18732
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2788 EXFUN (Fgoto_char, 1);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2789 EXFUN (Fpoint_min_marker, 0);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2790 EXFUN (Fpoint_max_marker, 0);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2791 EXFUN (Fpoint_min, 0);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2792 EXFUN (Fpoint_max, 0);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2793 EXFUN (Fpoint, 0);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2794 EXFUN (Fpoint_marker, 0);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2795 EXFUN (Fmark_marker, 0);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2796 EXFUN (Fline_beginning_position, 1);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2797 EXFUN (Fline_end_position, 1);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2798 EXFUN (Ffollowing_char, 0);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2799 EXFUN (Fprevious_char, 0);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2800 EXFUN (Fchar_after, 1);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2801 EXFUN (Finsert, MANY);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2802 EXFUN (Finsert_and_inherit, MANY);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2803 EXFUN (Finsert_before_markers, MANY);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2804 EXFUN (Finsert_buffer_substring, 3);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2805 EXFUN (Finsert_char, 3);
20297
bf0a54297d95 Add more prototypes and declarations. Forward declare
Andreas Schwab <schwab@suse.de>
parents: 20123
diff changeset
2806 extern void insert1 P_ ((Lisp_Object));
18732
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2807 EXFUN (Feolp, 0);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2808 EXFUN (Feobp, 0);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2809 EXFUN (Fbolp, 0);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2810 EXFUN (Fbobp, 0);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2811 EXFUN (Fformat, MANY);
25017
4a142fb92f94 (P_): Moved to top of file.
Gerd Moellmann <gerd@gnu.org>
parents: 23984
diff changeset
2812 EXFUN (Fmessage, MANY);
49446
21086b629b21 Declare format2 instead of format1.
Richard M. Stallman <rms@gnu.org>
parents: 49322
diff changeset
2813 extern Lisp_Object format2 P_ ((char *, Lisp_Object, Lisp_Object));
18732
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2814 EXFUN (Fbuffer_substring, 2);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2815 EXFUN (Fbuffer_string, 0);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2816 extern Lisp_Object save_excursion_save P_ ((void));
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2817 extern Lisp_Object save_restriction_save P_ ((void));
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2818 extern Lisp_Object save_excursion_restore P_ ((Lisp_Object));
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2819 extern Lisp_Object save_restriction_restore P_ ((Lisp_Object));
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2820 EXFUN (Fchar_to_string, 1);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2821 EXFUN (Fdelete_region, 2);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2822 EXFUN (Fnarrow_to_region, 2);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2823 EXFUN (Fwiden, 0);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2824 EXFUN (Fuser_login_name, 1);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2825 EXFUN (Fsystem_name, 0);
25450
b5c133b3bfa0 Add declarations for some functions.
Andreas Schwab <schwab@suse.de>
parents: 25421
diff changeset
2826 EXFUN (Fcurrent_time, 0);
20297
bf0a54297d95 Add more prototypes and declarations. Forward declare
Andreas Schwab <schwab@suse.de>
parents: 20123
diff changeset
2827 extern int clip_to_bounds P_ ((int, int, int));
21282
58268912c0b5 (make_buffer_string, make_buffer_string_both): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 21277
diff changeset
2828 extern Lisp_Object make_buffer_string P_ ((int, int, int));
58268912c0b5 (make_buffer_string, make_buffer_string_both): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 21277
diff changeset
2829 extern Lisp_Object make_buffer_string_both P_ ((int, int, int, int, int));
21931
b382905e065a Declare init functions.
Andreas Schwab <schwab@suse.de>
parents: 21842
diff changeset
2830 extern void init_editfns P_ ((void));
b382905e065a Declare init functions.
Andreas Schwab <schwab@suse.de>
parents: 21842
diff changeset
2831 extern void syms_of_editfns P_ ((void));
27078
bedae2f61170 Add extern declaration for Vinhibit_field_text_motion.
Gerd Moellmann <gerd@gnu.org>
parents: 26994
diff changeset
2832 extern Lisp_Object Vinhibit_field_text_motion;
30440
a438686586dd (Fconstrain_to_field): Update external declaration.
Miles Bader <miles@gnu.org>
parents: 30322
diff changeset
2833 EXFUN (Fconstrain_to_field, 5);
27885
07a468af713c Add a bunch of prototypes.
Dave Love <fx@gnu.org>
parents: 27858
diff changeset
2834 EXFUN (Ffield_string, 1);
07a468af713c Add a bunch of prototypes.
Dave Love <fx@gnu.org>
parents: 27858
diff changeset
2835 EXFUN (Fdelete_field, 1);
41067
2031344d2205 (Ffield_beginning, Ffield_end): Update EXFUN decl.
Miles Bader <miles@gnu.org>
parents: 40727
diff changeset
2836 EXFUN (Ffield_beginning, 3);
2031344d2205 (Ffield_beginning, Ffield_end): Update EXFUN decl.
Miles Bader <miles@gnu.org>
parents: 40727
diff changeset
2837 EXFUN (Ffield_end, 3);
27885
07a468af713c Add a bunch of prototypes.
Dave Love <fx@gnu.org>
parents: 27858
diff changeset
2838 EXFUN (Ffield_string_no_properties, 1);
31015
0a24ffcc4061 (set_time_zone_rule): Add prototype.
Gerd Moellmann <gerd@gnu.org>
parents: 30943
diff changeset
2839 extern void set_time_zone_rule P_ ((char *));
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2840
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2841 /* defined in buffer.c */
36585
50e14a0ca5eb (mouse_face_overlay_overlaps): Add prototype.
Gerd Moellmann <gerd@gnu.org>
parents: 36445
diff changeset
2842 extern int mouse_face_overlay_overlaps P_ ((Lisp_Object));
71063
7510757f449b * search.c (matcher_overflow): Mark as NO_RETURN.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 70929
diff changeset
2843 extern void nsberror P_ ((Lisp_Object)) NO_RETURN;
25353
fa9f34ec4151 Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 25252
diff changeset
2844 EXFUN (Fset_buffer_multibyte, 1);
18732
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2845 EXFUN (Foverlay_start, 1);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2846 EXFUN (Foverlay_end, 1);
97232
5584d562a3b5 Fix erroneous last commit.
Eli Zaretskii <eliz@gnu.org>
parents: 97226
diff changeset
2847 EXFUN (Foverlay_buffer, 1);
51868
6806fc84a58f (adjust_overlays_for_insert, adjust_overlays_for_delete): Update prototype.
Andreas Schwab <schwab@suse.de>
parents: 51858
diff changeset
2848 extern void adjust_overlays_for_insert P_ ((EMACS_INT, EMACS_INT));
6806fc84a58f (adjust_overlays_for_insert, adjust_overlays_for_delete): Update prototype.
Andreas Schwab <schwab@suse.de>
parents: 51858
diff changeset
2849 extern void adjust_overlays_for_delete P_ ((EMACS_INT, EMACS_INT));
54555
b136a4512609 * insdel.c (adjust_markers_for_insert): Call fix_start_end_in_overlays.
Masatake YAMATO <jet@gyve.org>
parents: 54340
diff changeset
2850 extern void fix_start_end_in_overlays P_ ((int, int));
20297
bf0a54297d95 Add more prototypes and declarations. Forward declare
Andreas Schwab <schwab@suse.de>
parents: 20123
diff changeset
2851 extern void report_overlay_modification P_ ((Lisp_Object, Lisp_Object, int,
bf0a54297d95 Add more prototypes and declarations. Forward declare
Andreas Schwab <schwab@suse.de>
parents: 20123
diff changeset
2852 Lisp_Object, Lisp_Object, Lisp_Object));
18732
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2853 extern int overlay_touches_p P_ ((int));
3539
a9b1e2a5523b Don't declare malloc or realloc.
Richard M. Stallman <rms@gnu.org>
parents: 3324
diff changeset
2854 extern Lisp_Object Vbuffer_alist, Vinhibit_read_only;
93032
fde89c413096 (Fbuffer_list): Declare.
Andreas Schwab <schwab@suse.de>
parents: 92279
diff changeset
2855 EXFUN (Fbuffer_list, 1);
18732
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2856 EXFUN (Fget_buffer, 1);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2857 EXFUN (Fget_buffer_create, 1);
89439
bc52ad30b028 (Fgenerate_new_buffer_name): EXFUN it.
Kenichi Handa <handa@m17n.org>
parents: 89058
diff changeset
2858 EXFUN (Fgenerate_new_buffer_name, 2);
18732
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2859 EXFUN (Fset_buffer, 1);
20708
ed9ed828415e Update copyright year.
Richard M. Stallman <rms@gnu.org>
parents: 20625
diff changeset
2860 EXFUN (set_buffer_if_live, 1);
18732
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2861 EXFUN (Fbarf_if_buffer_read_only, 0);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2862 EXFUN (Fcurrent_buffer, 0);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2863 EXFUN (Fswitch_to_buffer, 2);
22190
54a0e89d2a48 (frame_buffer_predicate, frame_buffer_list)
Richard M. Stallman <rms@gnu.org>
parents: 22123
diff changeset
2864 EXFUN (Fother_buffer, 3);
18732
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2865 EXFUN (Foverlay_get, 2);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2866 EXFUN (Fbuffer_modified_p, 1);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2867 EXFUN (Fset_buffer_modified_p, 1);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2868 EXFUN (Fkill_buffer, 1);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2869 EXFUN (Fkill_all_local_variables, 0);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2870 EXFUN (Fbuffer_disable_undo, 1);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2871 EXFUN (Fbuffer_enable_undo, 1);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2872 EXFUN (Ferase_buffer, 0);
2780
cfe7659bbc05 * lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents: 2728
diff changeset
2873 extern Lisp_Object Qoverlayp;
63146
7dced3c64549 (Fmatch_data, Fset_match_data): Fix EXFUN.
Kim F. Storm <storm@cua.dk>
parents: 62660
diff changeset
2874 extern Lisp_Object Qevaporate;
18732
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2875 extern Lisp_Object get_truename_buffer P_ ((Lisp_Object));
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2876 extern struct buffer *all_buffers;
18732
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2877 EXFUN (Fprevious_overlay_change, 1);
34154
88440ae23652 (Fmake_variable_buffer_local, Fbuffer_file_name): Declare.
Ken Raeburn <raeburn@raeburn.org>
parents: 33508
diff changeset
2878 EXFUN (Fbuffer_file_name, 1);
21931
b382905e065a Declare init functions.
Andreas Schwab <schwab@suse.de>
parents: 21842
diff changeset
2879 extern void init_buffer_once P_ ((void));
b382905e065a Declare init functions.
Andreas Schwab <schwab@suse.de>
parents: 21842
diff changeset
2880 extern void init_buffer P_ ((void));
b382905e065a Declare init functions.
Andreas Schwab <schwab@suse.de>
parents: 21842
diff changeset
2881 extern void syms_of_buffer P_ ((void));
b382905e065a Declare init functions.
Andreas Schwab <schwab@suse.de>
parents: 21842
diff changeset
2882 extern void keys_of_buffer P_ ((void));
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2883
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2884 /* defined in marker.c */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2885
18732
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2886 EXFUN (Fmarker_position, 1);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2887 EXFUN (Fmarker_buffer, 1);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2888 EXFUN (Fcopy_marker, 2);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2889 EXFUN (Fset_marker, 3);
20297
bf0a54297d95 Add more prototypes and declarations. Forward declare
Andreas Schwab <schwab@suse.de>
parents: 20123
diff changeset
2890 extern int marker_position P_ ((Lisp_Object));
21515
fb4c986db0e2 Add more prototypes.
Andreas Schwab <schwab@suse.de>
parents: 21322
diff changeset
2891 extern int marker_byte_position P_ ((Lisp_Object));
fb4c986db0e2 Add more prototypes.
Andreas Schwab <schwab@suse.de>
parents: 21322
diff changeset
2892 extern void clear_charpos_cache P_ ((struct buffer *));
fb4c986db0e2 Add more prototypes.
Andreas Schwab <schwab@suse.de>
parents: 21322
diff changeset
2893 extern int charpos_to_bytepos P_ ((int));
fb4c986db0e2 Add more prototypes.
Andreas Schwab <schwab@suse.de>
parents: 21322
diff changeset
2894 extern int buf_charpos_to_bytepos P_ ((struct buffer *, int));
fb4c986db0e2 Add more prototypes.
Andreas Schwab <schwab@suse.de>
parents: 21322
diff changeset
2895 extern int buf_bytepos_to_charpos P_ ((struct buffer *, int));
51666
7181f5ced81c (unchain_marker): Lisp_Object arg => Lisp_Marker.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51657
diff changeset
2896 extern void unchain_marker P_ ((struct Lisp_Marker *marker));
20297
bf0a54297d95 Add more prototypes and declarations. Forward declare
Andreas Schwab <schwab@suse.de>
parents: 20123
diff changeset
2897 extern Lisp_Object set_marker_restricted P_ ((Lisp_Object, Lisp_Object, Lisp_Object));
20559
38941faa1564 (struct Lisp_Marker): New field `charpos'.
Richard M. Stallman <rms@gnu.org>
parents: 20499
diff changeset
2898 extern Lisp_Object set_marker_both P_ ((Lisp_Object, Lisp_Object, int, int));
38941faa1564 (struct Lisp_Marker): New field `charpos'.
Richard M. Stallman <rms@gnu.org>
parents: 20499
diff changeset
2899 extern Lisp_Object set_marker_restricted_both P_ ((Lisp_Object, Lisp_Object,
38941faa1564 (struct Lisp_Marker): New field `charpos'.
Richard M. Stallman <rms@gnu.org>
parents: 20499
diff changeset
2900 int, int));
21931
b382905e065a Declare init functions.
Andreas Schwab <schwab@suse.de>
parents: 21842
diff changeset
2901 extern void syms_of_marker P_ ((void));
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2902
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2903 /* Defined in fileio.c */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2904
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2905 extern Lisp_Object Qfile_error;
18732
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2906 EXFUN (Ffind_file_name_handler, 2);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2907 EXFUN (Ffile_name_as_directory, 1);
25450
b5c133b3bfa0 Add declarations for some functions.
Andreas Schwab <schwab@suse.de>
parents: 25421
diff changeset
2908 EXFUN (Fmake_temp_name, 1);
18732
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2909 EXFUN (Fexpand_file_name, 2);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2910 EXFUN (Ffile_name_nondirectory, 1);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2911 EXFUN (Fsubstitute_in_file_name, 1);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2912 EXFUN (Ffile_symlink_p, 1);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2913 EXFUN (Fverify_visited_file_modtime, 1);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2914 EXFUN (Ffile_exists_p, 1);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2915 EXFUN (Ffile_name_absolute_p, 1);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2916 EXFUN (Fdirectory_file_name, 1);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2917 EXFUN (Ffile_name_directory, 1);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2918 extern Lisp_Object expand_and_dir_to_file P_ ((Lisp_Object, Lisp_Object));
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2919 EXFUN (Ffile_accessible_directory_p, 1);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2920 EXFUN (Funhandled_file_name_directory, 1);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2921 EXFUN (Ffile_directory_p, 1);
21038
9b33c6a5b4dc (Vnonascii_translate_table, Qcharset): New variable decls.
Richard M. Stallman <rms@gnu.org>
parents: 20723
diff changeset
2922 EXFUN (Fwrite_region, 7);
18732
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2923 EXFUN (Ffile_readable_p, 1);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2924 EXFUN (Ffile_executable_p, 1);
45545
6b37dbf4d2a5 (Fread_file_name): Now has 6 args.
Kim F. Storm <storm@cua.dk>
parents: 45416
diff changeset
2925 EXFUN (Fread_file_name, 6);
25704
71063541d5e3 Declare close_file_unwind.
Andreas Schwab <schwab@suse.de>
parents: 25672
diff changeset
2926 extern Lisp_Object close_file_unwind P_ ((Lisp_Object));
69878
7017df39d957 (report_file_error): Mark as NO_RETURN.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 69874
diff changeset
2927 extern void report_file_error P_ ((const char *, Lisp_Object)) NO_RETURN;
20297
bf0a54297d95 Add more prototypes and declarations. Forward declare
Andreas Schwab <schwab@suse.de>
parents: 20123
diff changeset
2928 extern int internal_delete_file P_ ((Lisp_Object));
21931
b382905e065a Declare init functions.
Andreas Schwab <schwab@suse.de>
parents: 21842
diff changeset
2929 extern void syms_of_fileio P_ ((void));
25748
6fddda6e635e Add prototype for uninterrupt_malloc, memory_warnings,
Gerd Moellmann <gerd@gnu.org>
parents: 25737
diff changeset
2930 extern void init_fileio_once P_ ((void));
29443
9a8c5dd3685e (DEFUN, EXFUN): Test PROTOTYPES.
Dave Love <fx@gnu.org>
parents: 29337
diff changeset
2931 extern Lisp_Object make_temp_name P_ ((Lisp_Object, int));
55487
3834fb45a740 Declare Fmake_symbolic_link.
Andreas Schwab <schwab@suse.de>
parents: 55157
diff changeset
2932 EXFUN (Fmake_symbolic_link, 3);
97232
5584d562a3b5 Fix erroneous last commit.
Eli Zaretskii <eliz@gnu.org>
parents: 97226
diff changeset
2933 extern Lisp_Object Qdelete_directory;
5584d562a3b5 Fix erroneous last commit.
Eli Zaretskii <eliz@gnu.org>
parents: 97226
diff changeset
2934 extern Lisp_Object Qdelete_file;
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2935
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2936 /* Defined in abbrev.c */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2937
21931
b382905e065a Declare init functions.
Andreas Schwab <schwab@suse.de>
parents: 21842
diff changeset
2938 extern void syms_of_abbrev P_ ((void));
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2939
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2940 /* defined in search.c */
25765
416e6af8f06a Add prototype for shrink_regexp_cache,
Gerd Moellmann <gerd@gnu.org>
parents: 25759
diff changeset
2941 extern void shrink_regexp_cache P_ ((void));
18732
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2942 EXFUN (Fstring_match, 3);
63146
7dced3c64549 (Fmatch_data, Fset_match_data): Fix EXFUN.
Kim F. Storm <storm@cua.dk>
parents: 62660
diff changeset
2943 extern void restore_search_regs P_ ((void));
7dced3c64549 (Fmatch_data, Fset_match_data): Fix EXFUN.
Kim F. Storm <storm@cua.dk>
parents: 62660
diff changeset
2944 EXFUN (Fmatch_data, 3);
7dced3c64549 (Fmatch_data, Fset_match_data): Fix EXFUN.
Kim F. Storm <storm@cua.dk>
parents: 62660
diff changeset
2945 EXFUN (Fset_match_data, 2);
18732
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2946 EXFUN (Fmatch_beginning, 1);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2947 EXFUN (Fmatch_end, 1);
63146
7dced3c64549 (Fmatch_data, Fset_match_data): Fix EXFUN.
Kim F. Storm <storm@cua.dk>
parents: 62660
diff changeset
2948 extern void record_unwind_save_match_data P_ ((void));
33351
6d19f06da8a4 * lisp.h (Flooking_at): Declare.
Ken Raeburn <raeburn@raeburn.org>
parents: 32988
diff changeset
2949 EXFUN (Flooking_at, 1);
20297
bf0a54297d95 Add more prototypes and declarations. Forward declare
Andreas Schwab <schwab@suse.de>
parents: 20123
diff changeset
2950 extern int fast_string_match P_ ((Lisp_Object, Lisp_Object));
46471
028a5b2de9e4 (chars_in_text, multibyte_chars_in_text, copy_text):
Ken Raeburn <raeburn@raeburn.org>
parents: 46428
diff changeset
2951 extern int fast_c_string_match_ignore_case P_ ((Lisp_Object, const char *));
57571
e624ae20de7c (fast_string_match_ignore_case): Extern it.
Kenichi Handa <handa@m17n.org>
parents: 56729
diff changeset
2952 extern int fast_string_match_ignore_case P_ ((Lisp_Object, Lisp_Object));
20297
bf0a54297d95 Add more prototypes and declarations. Forward declare
Andreas Schwab <schwab@suse.de>
parents: 20123
diff changeset
2953 extern int scan_buffer P_ ((int, int, int, int, int *, int));
20559
38941faa1564 (struct Lisp_Marker): New field `charpos'.
Richard M. Stallman <rms@gnu.org>
parents: 20499
diff changeset
2954 extern int scan_newline P_ ((int, int, int, int, int, int));
20297
bf0a54297d95 Add more prototypes and declarations. Forward declare
Andreas Schwab <schwab@suse.de>
parents: 20123
diff changeset
2955 extern int find_next_newline P_ ((int, int));
bf0a54297d95 Add more prototypes and declarations. Forward declare
Andreas Schwab <schwab@suse.de>
parents: 20123
diff changeset
2956 extern int find_next_newline_no_quit P_ ((int, int));
bf0a54297d95 Add more prototypes and declarations. Forward declare
Andreas Schwab <schwab@suse.de>
parents: 20123
diff changeset
2957 extern int find_before_next_newline P_ ((int, int, int));
21931
b382905e065a Declare init functions.
Andreas Schwab <schwab@suse.de>
parents: 21842
diff changeset
2958 extern void syms_of_search P_ ((void));
73231
6b368d6ebfa5 (clear_regexp_cache): Declare.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 72662
diff changeset
2959 extern void clear_regexp_cache P_ ((void));
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2960
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2961 /* defined in minibuf.c */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2962
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2963 extern Lisp_Object last_minibuf_string;
20297
bf0a54297d95 Add more prototypes and declarations. Forward declare
Andreas Schwab <schwab@suse.de>
parents: 20123
diff changeset
2964 extern void choose_minibuf_frame P_ ((void));
19547
70d930b49bb4 (DEFUN_ARGS_8): New macro.
Kenichi Handa <handa@m17n.org>
parents: 19224
diff changeset
2965 EXFUN (Fcompleting_read, 8);
70929
10bd863bbc8a (Fread_from_minibuffer): Decrement number of args.
Juri Linkov <juri@jurta.org>
parents: 69959
diff changeset
2966 EXFUN (Fread_from_minibuffer, 7);
18732
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2967 EXFUN (Fread_variable, 2);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2968 EXFUN (Fread_buffer, 3);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2969 EXFUN (Fread_minibuffer, 2);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2970 EXFUN (Feval_minibuffer, 2);
19547
70d930b49bb4 (DEFUN_ARGS_8): New macro.
Kenichi Handa <handa@m17n.org>
parents: 19224
diff changeset
2971 EXFUN (Fread_string, 5);
70d930b49bb4 (DEFUN_ARGS_8): New macro.
Kenichi Handa <handa@m17n.org>
parents: 19224
diff changeset
2972 EXFUN (Fread_no_blanks_input, 3);
94935
45602a11979b (enum pvec_type): New member PREV_FONT.
Kenichi Handa <handa@m17n.org>
parents: 94121
diff changeset
2973 EXFUN (Fassoc_string, 3);
18732
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2974 extern Lisp_Object get_minibuffer P_ ((int));
50539
4bdf6c3c3d59 (temp_echo_area_glyphs): Adjust prototype.
Kenichi Handa <handa@m17n.org>
parents: 50276
diff changeset
2975 extern void temp_echo_area_glyphs P_ ((Lisp_Object));
21931
b382905e065a Declare init functions.
Andreas Schwab <schwab@suse.de>
parents: 21842
diff changeset
2976 extern void init_minibuf_once P_ ((void));
b382905e065a Declare init functions.
Andreas Schwab <schwab@suse.de>
parents: 21842
diff changeset
2977 extern void syms_of_minibuf P_ ((void));
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2978
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2979 /* Defined in callint.c */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2980
12114
437964ecfc70 (current_prefix_partial): Deleted.
Karl Heuer <kwzh@gnu.org>
parents: 12093
diff changeset
2981 extern Lisp_Object Qminus, Qplus, Vcurrent_prefix_arg;
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2982 extern Lisp_Object Vcommand_history;
15695
597fb46cb2fd (Qmouse_leave_buffer_hook): Declare it here.
Karl Heuer <kwzh@gnu.org>
parents: 15090
diff changeset
2983 extern Lisp_Object Qcall_interactively, Qmouse_leave_buffer_hook;
18732
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2984 EXFUN (Fcall_interactively, 3);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2985 EXFUN (Fprefix_numeric_value, 1);
21931
b382905e065a Declare init functions.
Andreas Schwab <schwab@suse.de>
parents: 21842
diff changeset
2986 extern void syms_of_callint P_ ((void));
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2987
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2988 /* defined in casefiddle.c */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2989
18732
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2990 EXFUN (Fdowncase, 1);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2991 EXFUN (Fupcase, 1);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2992 EXFUN (Fcapitalize, 1);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2993 EXFUN (Fupcase_region, 2);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2994 EXFUN (Fupcase_initials, 1);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2995 EXFUN (Fupcase_initials_region, 2);
21931
b382905e065a Declare init functions.
Andreas Schwab <schwab@suse.de>
parents: 21842
diff changeset
2996 extern void syms_of_casefiddle P_ ((void));
b382905e065a Declare init functions.
Andreas Schwab <schwab@suse.de>
parents: 21842
diff changeset
2997 extern void keys_of_casefiddle P_ ((void));
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2998
16133
36566aa94b49 Add many declarations.
Richard M. Stallman <rms@gnu.org>
parents: 16051
diff changeset
2999 /* defined in casetab.c */
36566aa94b49 Add many declarations.
Richard M. Stallman <rms@gnu.org>
parents: 16051
diff changeset
3000
18732
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
3001 EXFUN (Fset_case_table, 1);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
3002 EXFUN (Fset_standard_case_table, 1);
21931
b382905e065a Declare init functions.
Andreas Schwab <schwab@suse.de>
parents: 21842
diff changeset
3003 extern void init_casetab_once P_ ((void));
b382905e065a Declare init functions.
Andreas Schwab <schwab@suse.de>
parents: 21842
diff changeset
3004 extern void syms_of_casetab P_ ((void));
16133
36566aa94b49 Add many declarations.
Richard M. Stallman <rms@gnu.org>
parents: 16051
diff changeset
3005
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3006 /* defined in keyboard.c */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3007
37188
da91f955f74c (echoing, echo_message_buffer, cancel_echoing): Declare.
Gerd Moellmann <gerd@gnu.org>
parents: 37042
diff changeset
3008 extern int echoing;
da91f955f74c (echoing, echo_message_buffer, cancel_echoing): Declare.
Gerd Moellmann <gerd@gnu.org>
parents: 37042
diff changeset
3009 extern Lisp_Object echo_message_buffer;
39451
f9d098bd1299 (echo_kboard): Declare extern.
Gerd Moellmann <gerd@gnu.org>
parents: 39245
diff changeset
3010 extern struct kboard *echo_kboard;
37188
da91f955f74c (echoing, echo_message_buffer, cancel_echoing): Declare.
Gerd Moellmann <gerd@gnu.org>
parents: 37042
diff changeset
3011 extern void cancel_echoing P_ ((void));
29940
3a3b1bda631d (QCfilter): External declaration.
Gerd Moellmann <gerd@gnu.org>
parents: 29925
diff changeset
3012 extern Lisp_Object Qdisabled, QCfilter;
17871
1c5753313c4e (Vtty_erase_char): Declared.
Richard M. Stallman <rms@gnu.org>
parents: 17714
diff changeset
3013 extern Lisp_Object Vtty_erase_char, Vhelp_form, Vtop_level;
58932
ce2e33a2adae (QUIT): Check for Vthrow_on_input.
Richard M. Stallman <rms@gnu.org>
parents: 58818
diff changeset
3014 extern Lisp_Object Vthrow_on_input;
30723
882e52f9e2bd (input_pending): External declaration.
Gerd Moellmann <gerd@gnu.org>
parents: 30556
diff changeset
3015 extern int input_pending;
18732
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
3016 EXFUN (Fdiscard_input, 0);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
3017 EXFUN (Frecursive_edit, 0);
39924
c1262fd975b2 (Ftop_level): Add prototype.
Pavel Janík <Pavel@Janik.cz>
parents: 39898
diff changeset
3018 EXFUN (Ftop_level, 0);
18732
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
3019 EXFUN (Fcommand_execute, 4);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
3020 EXFUN (Finput_pending_p, 0);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
3021 extern Lisp_Object menu_bar_items P_ ((Lisp_Object));
25544
693ca9ba497a Change spelling of `toolbar' to `tool_bar' or `tool-bar'.
Gerd Moellmann <gerd@gnu.org>
parents: 25515
diff changeset
3022 extern Lisp_Object tool_bar_items P_ ((Lisp_Object, int *));
1990
c7d6c746fea6 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1923
diff changeset
3023 extern Lisp_Object Qvertical_scroll_bar;
27885
07a468af713c Add a bunch of prototypes.
Dave Love <fx@gnu.org>
parents: 27858
diff changeset
3024 extern void discard_mouse_events P_ ((void));
18732
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
3025 EXFUN (Fevent_convert_list, 1);
22925
e89aad442cf7 (Fread_key_sequence): Update declaration.
Kenichi Handa <handa@m17n.org>
parents: 22791
diff changeset
3026 EXFUN (Fread_key_sequence, 5);
83417
fe870a866ce7 Don't let x_initialize break 8-bit input on ttys. (Reported by Joakim Verona.) Split `set-input-mode'.
Karoly Lorentey <lorentey@elte.hu>
parents: 83414
diff changeset
3027 EXFUN (Fset_input_interrupt_mode, 1);
fe870a866ce7 Don't let x_initialize break 8-bit input on ttys. (Reported by Joakim Verona.) Split `set-input-mode'.
Karoly Lorentey <lorentey@elte.hu>
parents: 83414
diff changeset
3028 EXFUN (Fset_output_flow_control, 2);
fe870a866ce7 Don't let x_initialize break 8-bit input on ttys. (Reported by Joakim Verona.) Split `set-input-mode'.
Karoly Lorentey <lorentey@elte.hu>
parents: 83414
diff changeset
3029 EXFUN (Fset_input_meta_mode, 2);
fe870a866ce7 Don't let x_initialize break 8-bit input on ttys. (Reported by Joakim Verona.) Split `set-input-mode'.
Karoly Lorentey <lorentey@elte.hu>
parents: 83414
diff changeset
3030 EXFUN (Fset_quit_char, 1);
20297
bf0a54297d95 Add more prototypes and declarations. Forward declare
Andreas Schwab <schwab@suse.de>
parents: 20123
diff changeset
3031 EXFUN (Fset_input_mode, 4);
93369
ed10c3092847 * keyboard.c (pending_funcalls): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 93032
diff changeset
3032 extern Lisp_Object pending_funcalls;
20297
bf0a54297d95 Add more prototypes and declarations. Forward declare
Andreas Schwab <schwab@suse.de>
parents: 20123
diff changeset
3033 extern int detect_input_pending P_ ((void));
59580
f43d0816e9c3 * keyboard.c (READABLE_EVENTS_DO_TIMERS_NOW)
Jan Djärv <jan.h.d@swipnet.se>
parents: 59111
diff changeset
3034 extern int detect_input_pending_ignore_squeezables P_ ((void));
20297
bf0a54297d95 Add more prototypes and declarations. Forward declare
Andreas Schwab <schwab@suse.de>
parents: 20123
diff changeset
3035 extern int detect_input_pending_run_timers P_ ((int));
bf0a54297d95 Add more prototypes and declarations. Forward declare
Andreas Schwab <schwab@suse.de>
parents: 20123
diff changeset
3036 extern void safe_run_hooks P_ ((Lisp_Object));
bf0a54297d95 Add more prototypes and declarations. Forward declare
Andreas Schwab <schwab@suse.de>
parents: 20123
diff changeset
3037 extern void cmd_error_internal P_ ((Lisp_Object, char *));
bf0a54297d95 Add more prototypes and declarations. Forward declare
Andreas Schwab <schwab@suse.de>
parents: 20123
diff changeset
3038 extern Lisp_Object command_loop_1 P_ ((void));
bf0a54297d95 Add more prototypes and declarations. Forward declare
Andreas Schwab <schwab@suse.de>
parents: 20123
diff changeset
3039 extern Lisp_Object recursive_edit_1 P_ ((void));
bf0a54297d95 Add more prototypes and declarations. Forward declare
Andreas Schwab <schwab@suse.de>
parents: 20123
diff changeset
3040 extern void record_auto_save P_ ((void));
21931
b382905e065a Declare init functions.
Andreas Schwab <schwab@suse.de>
parents: 21842
diff changeset
3041 extern void init_keyboard P_ ((void));
b382905e065a Declare init functions.
Andreas Schwab <schwab@suse.de>
parents: 21842
diff changeset
3042 extern void syms_of_keyboard P_ ((void));
b382905e065a Declare init functions.
Andreas Schwab <schwab@suse.de>
parents: 21842
diff changeset
3043 extern void keys_of_keyboard P_ ((void));
34907
cc3aa3f6232a (push_key_description): Add prototype.
Gerd Moellmann <gerd@gnu.org>
parents: 34796
diff changeset
3044 extern char *push_key_description P_ ((unsigned int, char *, int));
83766
77882096d1d7 (set_initial_environment): Rename from set_global_environment.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 83688
diff changeset
3045 extern void add_user_signal P_ ((int sig, const char *name));
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3046
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3047
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3048 /* defined in indent.c */
18732
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
3049 EXFUN (Fvertical_motion, 2);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
3050 EXFUN (Findent_to, 2);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
3051 EXFUN (Fcurrent_column, 0);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
3052 EXFUN (Fmove_to_column, 2);
46304
76246741e5c2 (Vmemory_full): Add declaration.
Richard M. Stallman <rms@gnu.org>
parents: 46284
diff changeset
3053 extern double current_column P_ ((void));
20297
bf0a54297d95 Add more prototypes and declarations. Forward declare
Andreas Schwab <schwab@suse.de>
parents: 20123
diff changeset
3054 extern void invalidate_current_column P_ ((void));
46304
76246741e5c2 (Vmemory_full): Add declaration.
Richard M. Stallman <rms@gnu.org>
parents: 46284
diff changeset
3055 extern int indented_beyond_p P_ ((int, int, double));
21931
b382905e065a Declare init functions.
Andreas Schwab <schwab@suse.de>
parents: 21842
diff changeset
3056 extern void syms_of_indent P_ ((void));
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3057
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
3058 /* defined in frame.c */
55583
21f88361795c Various fixes to support USE_LSB_TAG with carbon emacs. Mostly fixing
Steven Tamm <steventamm@mac.com>
parents: 55570
diff changeset
3059 #ifdef HAVE_WINDOW_SYSTEM
21f88361795c Various fixes to support USE_LSB_TAG with carbon emacs. Mostly fixing
Steven Tamm <steventamm@mac.com>
parents: 55570
diff changeset
3060 extern Lisp_Object Vx_resource_name;
21f88361795c Various fixes to support USE_LSB_TAG with carbon emacs. Mostly fixing
Steven Tamm <steventamm@mac.com>
parents: 55570
diff changeset
3061 extern Lisp_Object Vx_resource_class;
21f88361795c Various fixes to support USE_LSB_TAG with carbon emacs. Mostly fixing
Steven Tamm <steventamm@mac.com>
parents: 55570
diff changeset
3062 #endif /* HAVE_WINDOW_SYSTEM */
6243
25d0943a4f4e (Qvisible): Declared.
Richard M. Stallman <rms@gnu.org>
parents: 6216
diff changeset
3063 extern Lisp_Object Qvisible;
20297
bf0a54297d95 Add more prototypes and declarations. Forward declare
Andreas Schwab <schwab@suse.de>
parents: 20123
diff changeset
3064 extern void store_frame_param P_ ((struct frame *, Lisp_Object, Lisp_Object));
18732
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
3065 extern void store_in_alist P_ ((Lisp_Object *, Lisp_Object, Lisp_Object));
99321
91206eb7321f (do_switch_frame, Fselect_frame)
Martin Rudalics <rudalics@gmx.at>
parents: 99182
diff changeset
3066 extern Lisp_Object do_switch_frame P_ ((Lisp_Object, int, int, Lisp_Object));
20297
bf0a54297d95 Add more prototypes and declarations. Forward declare
Andreas Schwab <schwab@suse.de>
parents: 20123
diff changeset
3067 extern Lisp_Object get_frame_param P_ ((struct frame *, Lisp_Object));
22190
54a0e89d2a48 (frame_buffer_predicate, frame_buffer_list)
Richard M. Stallman <rms@gnu.org>
parents: 22123
diff changeset
3068 extern Lisp_Object frame_buffer_predicate P_ ((Lisp_Object));
18732
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
3069 EXFUN (Fframep, 1);
99321
91206eb7321f (do_switch_frame, Fselect_frame)
Martin Rudalics <rudalics@gmx.at>
parents: 99182
diff changeset
3070 EXFUN (Fselect_frame, 2);
18732
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
3071 EXFUN (Fselected_frame, 0);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
3072 EXFUN (Fwindow_frame, 1);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
3073 EXFUN (Fframe_root_window, 1);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
3074 EXFUN (Fframe_first_window, 1);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
3075 EXFUN (Fframe_selected_window, 1);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
3076 EXFUN (Fframe_list, 0);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
3077 EXFUN (Fnext_frame, 2);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
3078 EXFUN (Fdelete_frame, 2);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
3079 EXFUN (Fset_mouse_position, 3);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
3080 EXFUN (Fmake_frame_visible, 1);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
3081 EXFUN (Fmake_frame_invisible, 2);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
3082 EXFUN (Ficonify_frame, 1);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
3083 EXFUN (Fframe_visible_p, 1);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
3084 EXFUN (Fvisible_frame_list, 0);
36445
904a83f1b00b * lisp.h (Fframe_parameter): Declare.
Ken Raeburn <raeburn@raeburn.org>
parents: 36430
diff changeset
3085 EXFUN (Fframe_parameter, 2);
18732
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
3086 EXFUN (Fframe_parameters, 1);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
3087 EXFUN (Fmodify_frame_parameters, 2);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
3088 EXFUN (Fset_frame_height, 3);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
3089 EXFUN (Fset_frame_width, 3);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
3090 EXFUN (Fset_frame_size, 3);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
3091 EXFUN (Fset_frame_position, 3);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
3092 EXFUN (Fraise_frame, 1);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
3093 EXFUN (Fredirect_frame_focus, 2);
99321
91206eb7321f (do_switch_frame, Fselect_frame)
Martin Rudalics <rudalics@gmx.at>
parents: 99182
diff changeset
3094 EXFUN (Fset_frame_selected_window, 3);
22190
54a0e89d2a48 (frame_buffer_predicate, frame_buffer_list)
Richard M. Stallman <rms@gnu.org>
parents: 22123
diff changeset
3095 extern Lisp_Object frame_buffer_list P_ ((Lisp_Object));
20297
bf0a54297d95 Add more prototypes and declarations. Forward declare
Andreas Schwab <schwab@suse.de>
parents: 20123
diff changeset
3096 extern void frames_discard_buffer P_ ((Lisp_Object));
22190
54a0e89d2a48 (frame_buffer_predicate, frame_buffer_list)
Richard M. Stallman <rms@gnu.org>
parents: 22123
diff changeset
3097 extern void set_frame_buffer_list P_ ((Lisp_Object, Lisp_Object));
20297
bf0a54297d95 Add more prototypes and declarations. Forward declare
Andreas Schwab <schwab@suse.de>
parents: 20123
diff changeset
3098 extern void frames_bury_buffer P_ ((Lisp_Object));
21931
b382905e065a Declare init functions.
Andreas Schwab <schwab@suse.de>
parents: 21842
diff changeset
3099 extern void syms_of_frame P_ ((void));
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3100
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3101 /* defined in emacs.c */
18732
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
3102 extern Lisp_Object decode_env_path P_ ((char *, char *));
4528
5622149e7f75 (Vinvocation_directory): Declared.
Richard M. Stallman <rms@gnu.org>
parents: 4139
diff changeset
3103 extern Lisp_Object Vinvocation_name, Vinvocation_directory;
98546
dae1f13ca423 (Vbefore_init_time, Vafter_init_time): Declare.
Chong Yidong <cyd@stupidchicken.com>
parents: 98327
diff changeset
3104 extern Lisp_Object Vbefore_init_time, Vafter_init_time;
81269
5e310b8be81d (STRING_SET_UNIBYTE): Return the canonical empty unibyte string, if appropriate.
Juanma Barranquero <lekktu@gmail.com>
parents: 80985
diff changeset
3105 extern Lisp_Object Vinstallation_directory;
5e310b8be81d (STRING_SET_UNIBYTE): Return the canonical empty unibyte string, if appropriate.
Juanma Barranquero <lekktu@gmail.com>
parents: 80985
diff changeset
3106 extern Lisp_Object empty_unibyte_string, empty_multibyte_string;
69896
618ce5655fc3 Undo previous change.
Richard M. Stallman <rms@gnu.org>
parents: 69884
diff changeset
3107 EXFUN (Fkill_emacs, 1);
26088
b7aa6ac26872 Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents: 25818
diff changeset
3108 #if HAVE_SETLOCALE
b7aa6ac26872 Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents: 25818
diff changeset
3109 void fixup_locale P_ ((void));
26526
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26479
diff changeset
3110 void synchronize_system_messages_locale P_ ((void));
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26479
diff changeset
3111 void synchronize_system_time_locale P_ ((void));
26088
b7aa6ac26872 Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents: 25818
diff changeset
3112 #else
b7aa6ac26872 Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents: 25818
diff changeset
3113 #define setlocale(category, locale)
b7aa6ac26872 Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents: 25818
diff changeset
3114 #define fixup_locale()
26526
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26479
diff changeset
3115 #define synchronize_system_messages_locale()
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26479
diff changeset
3116 #define synchronize_system_time_locale()
26088
b7aa6ac26872 Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents: 25818
diff changeset
3117 #endif
18732
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
3118 void shut_down_emacs P_ ((int, int, Lisp_Object));
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3119 /* Nonzero means don't do interactive redisplay and don't change tty modes */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3120 extern int noninteractive;
99182
c1511154e8c2 * emacs.c (daemon_pipe): Make non-static.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98983
diff changeset
3121
c1511154e8c2 * emacs.c (daemon_pipe): Make non-static.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98983
diff changeset
3122 /* Pipe used to send exit notification to the daemon parent at
c1511154e8c2 * emacs.c (daemon_pipe): Make non-static.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98983
diff changeset
3123 startup. */
c1511154e8c2 * emacs.c (daemon_pipe): Make non-static.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98983
diff changeset
3124 extern int daemon_pipe[2];
c1511154e8c2 * emacs.c (daemon_pipe): Make non-static.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98983
diff changeset
3125 #define IS_DAEMON (daemon_pipe[1] != 0)
c1511154e8c2 * emacs.c (daemon_pipe): Make non-static.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98983
diff changeset
3126
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3127 /* Nonzero means don't do use window-system-specific display code */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3128 extern int inhibit_window_system;
10316
272f15eddaca (enum Lisp_Type): Delete Lisp_Buffer.
Richard M. Stallman <rms@gnu.org>
parents: 10292
diff changeset
3129 /* Nonzero means that a filter or a sentinel is running. */
10032
f689803caa92 Added code for automatically saving and restoring the match data
Francesco Potortì <pot@gnu.org>
parents: 10010
diff changeset
3130 extern int running_asynch_code;
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3131
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3132 /* defined in process.c */
18732
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
3133 EXFUN (Fget_process, 1);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
3134 EXFUN (Fget_buffer_process, 1);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
3135 EXFUN (Fprocessp, 1);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
3136 EXFUN (Fprocess_status, 1);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
3137 EXFUN (Fkill_process, 2);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
3138 EXFUN (Fprocess_send_eof, 1);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
3139 EXFUN (Fwaiting_for_user_input_p, 0);
10727
7720faec5ca7 (Qprocessp): Declared.
Richard M. Stallman <rms@gnu.org>
parents: 10675
diff changeset
3140 extern Lisp_Object Qprocessp;
20297
bf0a54297d95 Add more prototypes and declarations. Forward declare
Andreas Schwab <schwab@suse.de>
parents: 20123
diff changeset
3141 extern void kill_buffer_processes P_ ((Lisp_Object));
56729
e6e0caa7ec87 Rename wait_reading_process_input to wait_reading_process_output.
Kim F. Storm <storm@cua.dk>
parents: 56717
diff changeset
3142 extern int wait_reading_process_output P_ ((int, int, int, int,
e6e0caa7ec87 Rename wait_reading_process_input to wait_reading_process_output.
Kim F. Storm <storm@cua.dk>
parents: 56717
diff changeset
3143 Lisp_Object,
e6e0caa7ec87 Rename wait_reading_process_input to wait_reading_process_output.
Kim F. Storm <storm@cua.dk>
parents: 56717
diff changeset
3144 struct Lisp_Process *,
e6e0caa7ec87 Rename wait_reading_process_input to wait_reading_process_output.
Kim F. Storm <storm@cua.dk>
parents: 56717
diff changeset
3145 int));
20297
bf0a54297d95 Add more prototypes and declarations. Forward declare
Andreas Schwab <schwab@suse.de>
parents: 20123
diff changeset
3146 extern void add_keyboard_wait_descriptor P_ ((int));
bf0a54297d95 Add more prototypes and declarations. Forward declare
Andreas Schwab <schwab@suse.de>
parents: 20123
diff changeset
3147 extern void delete_keyboard_wait_descriptor P_ ((int));
80985
ff24a009be17 (add_gpm_wait_descriptor, delete_gpm_wait_descriptor):
Nick Roberts <nickrob@snap.net.nz>
parents: 80829
diff changeset
3148 extern void add_gpm_wait_descriptor P_ ((int));
ff24a009be17 (add_gpm_wait_descriptor, delete_gpm_wait_descriptor):
Nick Roberts <nickrob@snap.net.nz>
parents: 80829
diff changeset
3149 extern void delete_gpm_wait_descriptor P_ ((int));
20297
bf0a54297d95 Add more prototypes and declarations. Forward declare
Andreas Schwab <schwab@suse.de>
parents: 20123
diff changeset
3150 extern void close_process_descs P_ ((void));
21931
b382905e065a Declare init functions.
Andreas Schwab <schwab@suse.de>
parents: 21842
diff changeset
3151 extern void init_process P_ ((void));
b382905e065a Declare init functions.
Andreas Schwab <schwab@suse.de>
parents: 21842
diff changeset
3152 extern void syms_of_process P_ ((void));
49665
c102e97c89eb (setup_process_coding_systems): Add prototype.
Kenichi Handa <handa@m17n.org>
parents: 49446
diff changeset
3153 extern void setup_process_coding_systems P_ ((Lisp_Object));
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3154
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3155 /* defined in callproc.c */
39810
4b565579e4f5 (Vload_suffixes, Vexec_suffixes): Declare.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39804
diff changeset
3156 extern Lisp_Object Vexec_path, Vexec_suffixes,
4b565579e4f5 (Vload_suffixes, Vexec_suffixes): Declare.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39804
diff changeset
3157 Vexec_directory, Vdata_directory;
6029
897ffebd97ea New variable doc_directory.
Karl Heuer <kwzh@gnu.org>
parents: 5791
diff changeset
3158 extern Lisp_Object Vdoc_directory;
25450
b5c133b3bfa0 Add declarations for some functions.
Andreas Schwab <schwab@suse.de>
parents: 25421
diff changeset
3159 EXFUN (Fcall_process, MANY);
20297
bf0a54297d95 Add more prototypes and declarations. Forward declare
Andreas Schwab <schwab@suse.de>
parents: 20123
diff changeset
3160 extern int child_setup P_ ((int, int, int, char **, int, Lisp_Object));
21931
b382905e065a Declare init functions.
Andreas Schwab <schwab@suse.de>
parents: 21842
diff changeset
3161 extern void init_callproc_1 P_ ((void));
b382905e065a Declare init functions.
Andreas Schwab <schwab@suse.de>
parents: 21842
diff changeset
3162 extern void init_callproc P_ ((void));
83766
77882096d1d7 (set_initial_environment): Rename from set_global_environment.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 83688
diff changeset
3163 extern void set_initial_environment P_ ((void));
21931
b382905e065a Declare init functions.
Andreas Schwab <schwab@suse.de>
parents: 21842
diff changeset
3164 extern void syms_of_callproc P_ ((void));
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3165
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3166 /* defined in doc.c */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3167 extern Lisp_Object Vdoc_file_name;
18732
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
3168 EXFUN (Fsubstitute_command_keys, 1);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
3169 EXFUN (Fdocumentation, 2);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
3170 EXFUN (Fdocumentation_property, 3);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
3171 extern Lisp_Object read_doc_string P_ ((Lisp_Object));
22604
51f68ee599f8 (get_doc_string): Adjust declaration.
Richard M. Stallman <rms@gnu.org>
parents: 22541
diff changeset
3172 extern Lisp_Object get_doc_string P_ ((Lisp_Object, int, int));
21931
b382905e065a Declare init functions.
Andreas Schwab <schwab@suse.de>
parents: 21842
diff changeset
3173 extern void syms_of_doc P_ ((void));
25759
e473b3e5cf6d Declare Fcurrent_message, Fmake_temp_name, read_bytecode_char,
Dave Love <fx@gnu.org>
parents: 25748
diff changeset
3174 extern int read_bytecode_char P_ ((int));
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3175
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3176 /* defined in bytecode.c */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3177 extern Lisp_Object Qbytecode;
18732
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
3178 EXFUN (Fbyte_code, 3);
21931
b382905e065a Declare init functions.
Andreas Schwab <schwab@suse.de>
parents: 21842
diff changeset
3179 extern void syms_of_bytecode P_ ((void));
26367
9f71d570068d Add prototypes for new functions in bytecode.c.
Gerd Moellmann <gerd@gnu.org>
parents: 26309
diff changeset
3180 extern struct byte_stack *byte_stack_list;
9f71d570068d Add prototypes for new functions in bytecode.c.
Gerd Moellmann <gerd@gnu.org>
parents: 26309
diff changeset
3181 extern void mark_byte_stack P_ ((void));
26377
55f8aad5034d Add prototype for unmark_byte_stack.
Gerd Moellmann <gerd@gnu.org>
parents: 26367
diff changeset
3182 extern void unmark_byte_stack P_ ((void));
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3183
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3184 /* defined in macros.c */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3185 extern Lisp_Object Qexecute_kbd_macro;
46886
1bc111036f11 (Fexecute_kbd_macro): Update prototype.
Kim F. Storm <storm@cua.dk>
parents: 46866
diff changeset
3186 EXFUN (Fexecute_kbd_macro, 3);
49866
c1513decc2e5 (Fcancel_kbd_macro_events, Fstring_to_multibyte): Add
Andreas Schwab <schwab@suse.de>
parents: 49665
diff changeset
3187 EXFUN (Fcancel_kbd_macro_events, 0);
21931
b382905e065a Declare init functions.
Andreas Schwab <schwab@suse.de>
parents: 21842
diff changeset
3188 extern void init_macros P_ ((void));
b382905e065a Declare init functions.
Andreas Schwab <schwab@suse.de>
parents: 21842
diff changeset
3189 extern void syms_of_macros P_ ((void));
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3190
1518
eda3ace74d74 * lisp.h (Fdefault_boundp, make_float, Ffloat, Fnth, Fcopy_alist,
Jim Blandy <jimb@redhat.com>
parents: 1442
diff changeset
3191 /* defined in undo.c */
14665
7a50843d260f (Qinhibit_read_only): Declared.
Richard M. Stallman <rms@gnu.org>
parents: 14473
diff changeset
3192 extern Lisp_Object Qinhibit_read_only;
18732
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
3193 EXFUN (Fundo_boundary, 0);
59049
a38c7bcb8e1a (truncate_undo_list): Update decl.
Richard M. Stallman <rms@gnu.org>
parents: 58932
diff changeset
3194 extern void truncate_undo_list P_ ((struct buffer *));
20297
bf0a54297d95 Add more prototypes and declarations. Forward declare
Andreas Schwab <schwab@suse.de>
parents: 20123
diff changeset
3195 extern void record_marker_adjustment P_ ((Lisp_Object, int));
bf0a54297d95 Add more prototypes and declarations. Forward declare
Andreas Schwab <schwab@suse.de>
parents: 20123
diff changeset
3196 extern void record_insert P_ ((int, int));
21277
be5da0a5cf64 (record_delete): The second arg is Lisp_Object.
Kenichi Handa <handa@m17n.org>
parents: 21276
diff changeset
3197 extern void record_delete P_ ((int, Lisp_Object));
20297
bf0a54297d95 Add more prototypes and declarations. Forward declare
Andreas Schwab <schwab@suse.de>
parents: 20123
diff changeset
3198 extern void record_first_change P_ ((void));
bf0a54297d95 Add more prototypes and declarations. Forward declare
Andreas Schwab <schwab@suse.de>
parents: 20123
diff changeset
3199 extern void record_change P_ ((int, int));
bf0a54297d95 Add more prototypes and declarations. Forward declare
Andreas Schwab <schwab@suse.de>
parents: 20123
diff changeset
3200 extern void record_property_change P_ ((int, int, Lisp_Object, Lisp_Object,
bf0a54297d95 Add more prototypes and declarations. Forward declare
Andreas Schwab <schwab@suse.de>
parents: 20123
diff changeset
3201 Lisp_Object));
21931
b382905e065a Declare init functions.
Andreas Schwab <schwab@suse.de>
parents: 21842
diff changeset
3202 extern void syms_of_undo P_ ((void));
59070
0927fb5e3920 (Vundo_outer_limit): Fix decl.
Richard M. Stallman <rms@gnu.org>
parents: 59049
diff changeset
3203 extern Lisp_Object Vundo_outer_limit;
1518
eda3ace74d74 * lisp.h (Fdefault_boundp, make_float, Ffloat, Fnth, Fcopy_alist,
Jim Blandy <jimb@redhat.com>
parents: 1442
diff changeset
3204
4067
379b03502e48 (Qinsert_before_hooks, Qinsert_after_hooks): Declared.
Richard M. Stallman <rms@gnu.org>
parents: 4035
diff changeset
3205 /* defined in textprop.c */
51858
bf6232373c39 (VALBITS): Define in terms of GCTYPEBITS.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51833
diff changeset
3206 extern Lisp_Object Qfont, Qmouse_face;
4079
c1b16f1167d4 (Qinsert_in_front_hooks, Qinsert_behind_hooks): Declared.
Richard M. Stallman <rms@gnu.org>
parents: 4067
diff changeset
3207 extern Lisp_Object Qinsert_in_front_hooks, Qinsert_behind_hooks;
18732
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
3208 EXFUN (Fnext_single_property_change, 4);
30322
6dd0219378f5 (Fnext_single_char_property_change): Add prototype.
Gerd Moellmann <gerd@gnu.org>
parents: 30218
diff changeset
3209 EXFUN (Fnext_single_char_property_change, 4);
18732
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
3210 EXFUN (Fprevious_single_property_change, 4);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
3211 EXFUN (Fget_text_property, 3);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
3212 EXFUN (Fput_text_property, 5);
85595
4f5a9f3d91ae * lisp.h (Fget_text_property): Declare.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85345
diff changeset
3213 EXFUN (Fget_text_property, 3);
18732
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
3214 EXFUN (Fprevious_char_property_change, 2);
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
3215 EXFUN (Fnext_char_property_change, 2);
20297
bf0a54297d95 Add more prototypes and declarations. Forward declare
Andreas Schwab <schwab@suse.de>
parents: 20123
diff changeset
3216 extern void report_interval_modification P_ ((Lisp_Object, Lisp_Object));
25818
c5458623cf16 (toplevel): Add prototype for
Gerd Moellmann <gerd@gnu.org>
parents: 25786
diff changeset
3217 extern Lisp_Object next_single_char_property_change P_ ((Lisp_Object,
c5458623cf16 (toplevel): Add prototype for
Gerd Moellmann <gerd@gnu.org>
parents: 25786
diff changeset
3218 Lisp_Object,
c5458623cf16 (toplevel): Add prototype for
Gerd Moellmann <gerd@gnu.org>
parents: 25786
diff changeset
3219 Lisp_Object,
c5458623cf16 (toplevel): Add prototype for
Gerd Moellmann <gerd@gnu.org>
parents: 25786
diff changeset
3220 Lisp_Object));
4067
379b03502e48 (Qinsert_before_hooks, Qinsert_after_hooks): Declared.
Richard M. Stallman <rms@gnu.org>
parents: 4035
diff changeset
3221
95650
4be5569ac684 Declare syms_of_menu.
Chong Yidong <cyd@stupidchicken.com>
parents: 95590
diff changeset
3222 /* defined in menu.c */
4be5569ac684 Declare syms_of_menu.
Chong Yidong <cyd@stupidchicken.com>
parents: 95590
diff changeset
3223 extern void syms_of_menu P_ ((void));
4be5569ac684 Declare syms_of_menu.
Chong Yidong <cyd@stupidchicken.com>
parents: 95590
diff changeset
3224
12093
7212f4fd85e3 (Fwaiting_for_user_input_p): Function declared.
Karl Heuer <kwzh@gnu.org>
parents: 11934
diff changeset
3225 /* defined in xmenu.c */
18732
a0663e413622 (EXFUN, P_): New definitions. Use them to declare
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
3226 EXFUN (Fx_popup_menu, 2);
62660
a3b4d6c789db Fx_popup_dialog can have three arguments.
Nick Roberts <nickrob@snap.net.nz>
parents: 61724
diff changeset
3227 EXFUN (Fx_popup_dialog, 3);
21931
b382905e065a Declare init functions.
Andreas Schwab <schwab@suse.de>
parents: 21842
diff changeset
3228 extern void syms_of_xmenu P_ ((void));
20297
bf0a54297d95 Add more prototypes and declarations. Forward declare
Andreas Schwab <schwab@suse.de>
parents: 20123
diff changeset
3229
53226
dd3018b4785b Implemented multiple tty support.
Karoly Lorentey <lorentey@elte.hu>
parents: 53111
diff changeset
3230 /* defined in termchar.h */
82989
f3845715a5f6 Separate frame-local, tty-dependent parameters from tty-local parameters.
Karoly Lorentey <lorentey@elte.hu>
parents: 53341
diff changeset
3231 struct tty_display_info;
f3845715a5f6 Separate frame-local, tty-dependent parameters from tty-local parameters.
Karoly Lorentey <lorentey@elte.hu>
parents: 53341
diff changeset
3232
f3845715a5f6 Separate frame-local, tty-dependent parameters from tty-local parameters.
Karoly Lorentey <lorentey@elte.hu>
parents: 53341
diff changeset
3233 /* defined in termhooks.h */
83431
76396de7f50a Rename `struct device' to `struct terminal'. Rename some terminal-related functions similarly.
Karoly Lorentey <lorentey@elte.hu>
parents: 83427
diff changeset
3234 struct terminal;
53226
dd3018b4785b Implemented multiple tty support.
Karoly Lorentey <lorentey@elte.hu>
parents: 53111
diff changeset
3235
20297
bf0a54297d95 Add more prototypes and declarations. Forward declare
Andreas Schwab <schwab@suse.de>
parents: 20123
diff changeset
3236 /* defined in sysdep.c */
65424
e5d4c2f48bb3 Fix last change.
Eli Zaretskii <eliz@gnu.org>
parents: 65420
diff changeset
3237 #ifndef HAVE_GET_CURRENT_DIR_NAME
65420
23daa927d64c (get_current_dir_name) [!HAVE_GET_CURRENT_DIR_NAME]: Add prototype.
Eli Zaretskii <eliz@gnu.org>
parents: 64981
diff changeset
3238 extern char *get_current_dir_name P_ ((void));
23daa927d64c (get_current_dir_name) [!HAVE_GET_CURRENT_DIR_NAME]: Add prototype.
Eli Zaretskii <eliz@gnu.org>
parents: 64981
diff changeset
3239 #endif
25769
4399d55899d3 (RETURN_UNGCPRO): Use do-while (0) idiom.
Gerd Moellmann <gerd@gnu.org>
parents: 25765
diff changeset
3240 extern void stuff_char P_ ((char c));
20297
bf0a54297d95 Add more prototypes and declarations. Forward declare
Andreas Schwab <schwab@suse.de>
parents: 20123
diff changeset
3241 extern void init_sigio P_ ((int));
bf0a54297d95 Add more prototypes and declarations. Forward declare
Andreas Schwab <schwab@suse.de>
parents: 20123
diff changeset
3242 extern void sys_subshell P_ ((void));
bf0a54297d95 Add more prototypes and declarations. Forward declare
Andreas Schwab <schwab@suse.de>
parents: 20123
diff changeset
3243 extern void sys_suspend P_ ((void));
bf0a54297d95 Add more prototypes and declarations. Forward declare
Andreas Schwab <schwab@suse.de>
parents: 20123
diff changeset
3244 extern void discard_tty_input P_ ((void));
82989
f3845715a5f6 Separate frame-local, tty-dependent parameters from tty-local parameters.
Karoly Lorentey <lorentey@elte.hu>
parents: 53341
diff changeset
3245 extern void init_sys_modes P_ ((struct tty_display_info *));
f3845715a5f6 Separate frame-local, tty-dependent parameters from tty-local parameters.
Karoly Lorentey <lorentey@elte.hu>
parents: 53341
diff changeset
3246 extern void reset_sys_modes P_ ((struct tty_display_info *));
53226
dd3018b4785b Implemented multiple tty support.
Karoly Lorentey <lorentey@elte.hu>
parents: 53111
diff changeset
3247 extern void init_all_sys_modes P_ ((void));
dd3018b4785b Implemented multiple tty support.
Karoly Lorentey <lorentey@elte.hu>
parents: 53111
diff changeset
3248 extern void reset_all_sys_modes P_ ((void));
20297
bf0a54297d95 Add more prototypes and declarations. Forward declare
Andreas Schwab <schwab@suse.de>
parents: 20123
diff changeset
3249 extern void wait_for_termination P_ ((int));
bf0a54297d95 Add more prototypes and declarations. Forward declare
Andreas Schwab <schwab@suse.de>
parents: 20123
diff changeset
3250 extern void flush_pending_output P_ ((int));
bf0a54297d95 Add more prototypes and declarations. Forward declare
Andreas Schwab <schwab@suse.de>
parents: 20123
diff changeset
3251 extern void child_setup_tty P_ ((int));
bf0a54297d95 Add more prototypes and declarations. Forward declare
Andreas Schwab <schwab@suse.de>
parents: 20123
diff changeset
3252 extern void setup_pty P_ ((int));
bf0a54297d95 Add more prototypes and declarations. Forward declare
Andreas Schwab <schwab@suse.de>
parents: 20123
diff changeset
3253 extern int set_window_size P_ ((int, int, int));
bf0a54297d95 Add more prototypes and declarations. Forward declare
Andreas Schwab <schwab@suse.de>
parents: 20123
diff changeset
3254 extern void create_process P_ ((Lisp_Object, char **, Lisp_Object));
46471
028a5b2de9e4 (chars_in_text, multibyte_chars_in_text, copy_text):
Ken Raeburn <raeburn@raeburn.org>
parents: 46428
diff changeset
3255 extern int emacs_open P_ ((const char *, int, int));
26088
b7aa6ac26872 Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents: 25818
diff changeset
3256 extern int emacs_close P_ ((int));
b7aa6ac26872 Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents: 25818
diff changeset
3257 extern int emacs_read P_ ((int, char *, unsigned int));
46552
cb055b77d3c6 (STRING_COPYIN): New macro.
Ken Raeburn <raeburn@raeburn.org>
parents: 46471
diff changeset
3258 extern int emacs_write P_ ((int, const char *, unsigned int));
20297
bf0a54297d95 Add more prototypes and declarations. Forward declare
Andreas Schwab <schwab@suse.de>
parents: 20123
diff changeset
3259
bf0a54297d95 Add more prototypes and declarations. Forward declare
Andreas Schwab <schwab@suse.de>
parents: 20123
diff changeset
3260 /* defined in filelock.c */
bf0a54297d95 Add more prototypes and declarations. Forward declare
Andreas Schwab <schwab@suse.de>
parents: 20123
diff changeset
3261 EXFUN (Funlock_buffer, 0);
21711
2aa9965afd39 Remove extraneous semicolon.
Erik Naggum <erik@naggum.no>
parents: 21515
diff changeset
3262 EXFUN (Ffile_locked_p, 1);
20297
bf0a54297d95 Add more prototypes and declarations. Forward declare
Andreas Schwab <schwab@suse.de>
parents: 20123
diff changeset
3263 extern void unlock_all_files P_ ((void));
bf0a54297d95 Add more prototypes and declarations. Forward declare
Andreas Schwab <schwab@suse.de>
parents: 20123
diff changeset
3264 extern void lock_file P_ ((Lisp_Object));
bf0a54297d95 Add more prototypes and declarations. Forward declare
Andreas Schwab <schwab@suse.de>
parents: 20123
diff changeset
3265 extern void unlock_file P_ ((Lisp_Object));
bf0a54297d95 Add more prototypes and declarations. Forward declare
Andreas Schwab <schwab@suse.de>
parents: 20123
diff changeset
3266 extern void unlock_buffer P_ ((struct buffer *));
21931
b382905e065a Declare init functions.
Andreas Schwab <schwab@suse.de>
parents: 21842
diff changeset
3267 extern void syms_of_filelock P_ ((void));
25748
6fddda6e635e Add prototype for uninterrupt_malloc, memory_warnings,
Gerd Moellmann <gerd@gnu.org>
parents: 25737
diff changeset
3268 extern void init_filelock P_ ((void));
6fddda6e635e Add prototype for uninterrupt_malloc, memory_warnings,
Gerd Moellmann <gerd@gnu.org>
parents: 25737
diff changeset
3269
6fddda6e635e Add prototype for uninterrupt_malloc, memory_warnings,
Gerd Moellmann <gerd@gnu.org>
parents: 25737
diff changeset
3270 /* Defined in sound.c */
6fddda6e635e Add prototype for uninterrupt_malloc, memory_warnings,
Gerd Moellmann <gerd@gnu.org>
parents: 25737
diff changeset
3271 extern void syms_of_sound P_ ((void));
6fddda6e635e Add prototype for uninterrupt_malloc, memory_warnings,
Gerd Moellmann <gerd@gnu.org>
parents: 25737
diff changeset
3272 extern void init_sound P_ ((void));
21931
b382905e065a Declare init functions.
Andreas Schwab <schwab@suse.de>
parents: 21842
diff changeset
3273
b382905e065a Declare init functions.
Andreas Schwab <schwab@suse.de>
parents: 21842
diff changeset
3274 /* Defined in category.c */
b382905e065a Declare init functions.
Andreas Schwab <schwab@suse.de>
parents: 21842
diff changeset
3275 extern void init_category_once P_ ((void));
88382
5e3e1d9d514f (enum pvec_type): New member PVEC_SUB_CHAR_TABLE.
Kenichi Handa <handa@m17n.org>
parents: 43176
diff changeset
3276 extern Lisp_Object char_category_set P_ ((int));
21931
b382905e065a Declare init functions.
Andreas Schwab <schwab@suse.de>
parents: 21842
diff changeset
3277 extern void syms_of_category P_ ((void));
b382905e065a Declare init functions.
Andreas Schwab <schwab@suse.de>
parents: 21842
diff changeset
3278
b382905e065a Declare init functions.
Andreas Schwab <schwab@suse.de>
parents: 21842
diff changeset
3279 /* Defined in ccl.c */
b382905e065a Declare init functions.
Andreas Schwab <schwab@suse.de>
parents: 21842
diff changeset
3280 extern void syms_of_ccl P_ ((void));
b382905e065a Declare init functions.
Andreas Schwab <schwab@suse.de>
parents: 21842
diff changeset
3281
b382905e065a Declare init functions.
Andreas Schwab <schwab@suse.de>
parents: 21842
diff changeset
3282 /* Defined in dired.c */
53111
094f6b57ed09 (Qinteger): Added.
Lars Hansen <larsh@soem.dk>
parents: 53088
diff changeset
3283 EXFUN (Ffile_attributes, 2);
21931
b382905e065a Declare init functions.
Andreas Schwab <schwab@suse.de>
parents: 21842
diff changeset
3284 extern void syms_of_dired P_ ((void));
97224
b68c6493157a (HAVE_PROCFS, LISTPROC, PROCATTR): New defines.
Eli Zaretskii <eliz@gnu.org>
parents: 97059
diff changeset
3285 extern Lisp_Object directory_files_internal P_ ((Lisp_Object, Lisp_Object,
b68c6493157a (HAVE_PROCFS, LISTPROC, PROCATTR): New defines.
Eli Zaretskii <eliz@gnu.org>
parents: 97059
diff changeset
3286 Lisp_Object, Lisp_Object,
b68c6493157a (HAVE_PROCFS, LISTPROC, PROCATTR): New defines.
Eli Zaretskii <eliz@gnu.org>
parents: 97059
diff changeset
3287 int, Lisp_Object));
21931
b382905e065a Declare init functions.
Andreas Schwab <schwab@suse.de>
parents: 21842
diff changeset
3288
b382905e065a Declare init functions.
Andreas Schwab <schwab@suse.de>
parents: 21842
diff changeset
3289 /* Defined in term.c */
b382905e065a Declare init functions.
Andreas Schwab <schwab@suse.de>
parents: 21842
diff changeset
3290 extern void syms_of_term P_ ((void));
86288
145903731829 * term.c: Include stdarg.h.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 86285
diff changeset
3291 extern void fatal P_ ((const char *msgid, ...)) NO_RETURN;
21931
b382905e065a Declare init functions.
Andreas Schwab <schwab@suse.de>
parents: 21842
diff changeset
3292
83420
521d3f18b3d1 Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents: 83417
diff changeset
3293 /* Defined in terminal.c */
92108
fc5344b71cdb (Fdelete_terminal): Declare.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 91822
diff changeset
3294 EXFUN (Fdelete_terminal, 2);
83420
521d3f18b3d1 Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents: 83417
diff changeset
3295 extern void syms_of_terminal P_ ((void));
21931
b382905e065a Declare init functions.
Andreas Schwab <schwab@suse.de>
parents: 21842
diff changeset
3296
97232
5584d562a3b5 Fix erroneous last commit.
Eli Zaretskii <eliz@gnu.org>
parents: 97226
diff changeset
3297 /* Defined in font.c */
5584d562a3b5 Fix erroneous last commit.
Eli Zaretskii <eliz@gnu.org>
parents: 97226
diff changeset
3298 extern void syms_of_font P_ ((void));
5584d562a3b5 Fix erroneous last commit.
Eli Zaretskii <eliz@gnu.org>
parents: 97226
diff changeset
3299
69959
d1856dc3952f (syms_of_fontset, Fset_fontset_font): Put extern and
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 69928
diff changeset
3300 #ifdef HAVE_WINDOW_SYSTEM
21931
b382905e065a Declare init functions.
Andreas Schwab <schwab@suse.de>
parents: 21842
diff changeset
3301 /* Defined in fontset.c */
b382905e065a Declare init functions.
Andreas Schwab <schwab@suse.de>
parents: 21842
diff changeset
3302 extern void syms_of_fontset P_ ((void));
88904
da66b8fcc88c (CHAR_TABLE_REF): Remove unnecessary check (IDX >= 0).
Kenichi Handa <handa@m17n.org>
parents: 88748
diff changeset
3303 EXFUN (Fset_fontset_font, 5);
88933
b47c197101cf (Fnew_fontset): Declare.
Dave Love <fx@gnu.org>
parents: 88904
diff changeset
3304 EXFUN (Fnew_fontset, 2);
69959
d1856dc3952f (syms_of_fontset, Fset_fontset_font): Put extern and
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 69928
diff changeset
3305
d1856dc3952f (syms_of_fontset, Fset_fontset_font): Put extern and
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 69928
diff changeset
3306 /* Defined in xfns.c, w32fns.c, or macfns.c */
d1856dc3952f (syms_of_fontset, Fset_fontset_font): Put extern and
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 69928
diff changeset
3307 EXFUN (Fxw_display_color_p, 1);
d1856dc3952f (syms_of_fontset, Fset_fontset_font): Put extern and
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 69928
diff changeset
3308 EXFUN (Fx_file_dialog, 5);
21931
b382905e065a Declare init functions.
Andreas Schwab <schwab@suse.de>
parents: 21842
diff changeset
3309 #endif
b382905e065a Declare init functions.
Andreas Schwab <schwab@suse.de>
parents: 21842
diff changeset
3310
b382905e065a Declare init functions.
Andreas Schwab <schwab@suse.de>
parents: 21842
diff changeset
3311 /* Defined in xfaces.c */
78616
798fe25e4552 (Fclear_face_cache, Fx_send_client_event): Declare.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 78501
diff changeset
3312 EXFUN (Fclear_face_cache, 1);
21931
b382905e065a Declare init functions.
Andreas Schwab <schwab@suse.de>
parents: 21842
diff changeset
3313 extern void syms_of_xfaces P_ ((void));
b382905e065a Declare init functions.
Andreas Schwab <schwab@suse.de>
parents: 21842
diff changeset
3314
69374
c65249b41906 Remove duplicate prototypes. Make the prototype of getloadavg be conditioned
Eli Zaretskii <eliz@gnu.org>
parents: 69171
diff changeset
3315 #ifndef HAVE_GETLOADAVG
25712
178d6245c681 Add prototype for debug_print.
Gerd Moellmann <gerd@gnu.org>
parents: 25704
diff changeset
3316 /* Defined in getloadavg.c */
178d6245c681 Add prototype for debug_print.
Gerd Moellmann <gerd@gnu.org>
parents: 25704
diff changeset
3317 extern int getloadavg P_ ((double *, int));
69374
c65249b41906 Remove duplicate prototypes. Make the prototype of getloadavg be conditioned
Eli Zaretskii <eliz@gnu.org>
parents: 69171
diff changeset
3318 #endif
25712
178d6245c681 Add prototype for debug_print.
Gerd Moellmann <gerd@gnu.org>
parents: 25704
diff changeset
3319
21931
b382905e065a Declare init functions.
Andreas Schwab <schwab@suse.de>
parents: 21842
diff changeset
3320 #ifdef HAVE_X_WINDOWS
b382905e065a Declare init functions.
Andreas Schwab <schwab@suse.de>
parents: 21842
diff changeset
3321 /* Defined in xfns.c */
b382905e065a Declare init functions.
Andreas Schwab <schwab@suse.de>
parents: 21842
diff changeset
3322 extern void syms_of_xfns P_ ((void));
b382905e065a Declare init functions.
Andreas Schwab <schwab@suse.de>
parents: 21842
diff changeset
3323
43816
a00859016219 Extern declare syms_of_xsmfns ().
Jan Djärv <jan.h.d@swipnet.se>
parents: 43782
diff changeset
3324 /* Defined in xsmfns.c */
a00859016219 Extern declare syms_of_xsmfns ().
Jan Djärv <jan.h.d@swipnet.se>
parents: 43782
diff changeset
3325 extern void syms_of_xsmfns P_ ((void));
a00859016219 Extern declare syms_of_xsmfns ().
Jan Djärv <jan.h.d@swipnet.se>
parents: 43782
diff changeset
3326
21931
b382905e065a Declare init functions.
Andreas Schwab <schwab@suse.de>
parents: 21842
diff changeset
3327 /* Defined in xselect.c */
78616
798fe25e4552 (Fclear_face_cache, Fx_send_client_event): Declare.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 78501
diff changeset
3328 EXFUN (Fx_send_client_event, 6);
21931
b382905e065a Declare init functions.
Andreas Schwab <schwab@suse.de>
parents: 21842
diff changeset
3329 extern void syms_of_xselect P_ ((void));
b382905e065a Declare init functions.
Andreas Schwab <schwab@suse.de>
parents: 21842
diff changeset
3330
b382905e065a Declare init functions.
Andreas Schwab <schwab@suse.de>
parents: 21842
diff changeset
3331 /* Defined in xterm.c */
b382905e065a Declare init functions.
Andreas Schwab <schwab@suse.de>
parents: 21842
diff changeset
3332 extern void syms_of_xterm P_ ((void));
69959
d1856dc3952f (syms_of_fontset, Fset_fontset_font): Put extern and
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 69928
diff changeset
3333 #endif /* HAVE_X_WINDOWS */
25759
e473b3e5cf6d Declare Fcurrent_message, Fmake_temp_name, read_bytecode_char,
Dave Love <fx@gnu.org>
parents: 25748
diff changeset
3334
58013
93fda23ae576 Declare Fmsdos_downcase_filename.
Andreas Schwab <schwab@suse.de>
parents: 57868
diff changeset
3335 #ifdef MSDOS
93fda23ae576 Declare Fmsdos_downcase_filename.
Andreas Schwab <schwab@suse.de>
parents: 57868
diff changeset
3336 /* Defined in msdos.c */
93fda23ae576 Declare Fmsdos_downcase_filename.
Andreas Schwab <schwab@suse.de>
parents: 57868
diff changeset
3337 EXFUN (Fmsdos_downcase_filename, 1);
93fda23ae576 Declare Fmsdos_downcase_filename.
Andreas Schwab <schwab@suse.de>
parents: 57868
diff changeset
3338 #endif
69959
d1856dc3952f (syms_of_fontset, Fset_fontset_font): Put extern and
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents: 69928
diff changeset
3339
85595
4f5a9f3d91ae * lisp.h (Fget_text_property): Declare.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85345
diff changeset
3340 #ifdef HAVE_MENUS
97267
248808aeee3e fix popup menu selection return (menu.c); add use of popup_activated under NS (nsmenu.m, xdisp.c); improve comments (lisp.h, s/darwin.h); use FORWARD_SIGNAL_TO_MAIN_THREAD (syssignal.h)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 97232
diff changeset
3341 /* Defined in (x|w32)fns.c, nsfns.m... */
85595
4f5a9f3d91ae * lisp.h (Fget_text_property): Declare.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85345
diff changeset
3342 extern int have_menus_p P_ ((void));
4f5a9f3d91ae * lisp.h (Fget_text_property): Declare.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85345
diff changeset
3343 #endif
97232
5584d562a3b5 Fix erroneous last commit.
Eli Zaretskii <eliz@gnu.org>
parents: 97226
diff changeset
3344
5584d562a3b5 Fix erroneous last commit.
Eli Zaretskii <eliz@gnu.org>
parents: 97226
diff changeset
3345 #ifdef HAVE_DBUS
5584d562a3b5 Fix erroneous last commit.
Eli Zaretskii <eliz@gnu.org>
parents: 97226
diff changeset
3346 /* Defined in dbusbind.c */
5584d562a3b5 Fix erroneous last commit.
Eli Zaretskii <eliz@gnu.org>
parents: 97226
diff changeset
3347 void xd_read_queued_messages P_ ((void));
5584d562a3b5 Fix erroneous last commit.
Eli Zaretskii <eliz@gnu.org>
parents: 97226
diff changeset
3348 void syms_of_dbusbind P_ ((void));
5584d562a3b5 Fix erroneous last commit.
Eli Zaretskii <eliz@gnu.org>
parents: 97226
diff changeset
3349 #endif
29779
4fe4901e5113 (x_set_tool_bar_lines, free_frame_xic, compose_text, getenv, ctime)
Dave Love <fx@gnu.org>
parents: 29636
diff changeset
3350
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3351 /* Nonzero means Emacs has already been initialized.
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3352 Used during startup to detect startup of dumped Emacs. */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3353 extern int initialized;
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3354
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3355 extern int immediate_quit; /* Nonzero means ^G can quit instantly */
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3356
30556
8014dddae2f1 (Fsingle_key_description, xmalloc, xrealloc): Change
Gerd Moellmann <gerd@gnu.org>
parents: 30489
diff changeset
3357 extern POINTER_TYPE *xmalloc P_ ((size_t));
8014dddae2f1 (Fsingle_key_description, xmalloc, xrealloc): Change
Gerd Moellmann <gerd@gnu.org>
parents: 30489
diff changeset
3358 extern POINTER_TYPE *xrealloc P_ ((POINTER_TYPE *, size_t));
29785
d092cbe8cae7 Add xfree missed from last change.
Dave Love <fx@gnu.org>
parents: 29779
diff changeset
3359 extern void xfree P_ ((POINTER_TYPE *));
d092cbe8cae7 Add xfree missed from last change.
Dave Love <fx@gnu.org>
parents: 29779
diff changeset
3360
46471
028a5b2de9e4 (chars_in_text, multibyte_chars_in_text, copy_text):
Ken Raeburn <raeburn@raeburn.org>
parents: 46428
diff changeset
3361 extern char *xstrdup P_ ((const char *));
302
7c3ce5b350b8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3362
20297
bf0a54297d95 Add more prototypes and declarations. Forward declare
Andreas Schwab <schwab@suse.de>
parents: 20123
diff changeset
3363 extern char *egetenv P_ ((char *));
17404
73012b195cf3 (DOWNCASE): Return int, not Lisp_Object.
Karl Heuer <kwzh@gnu.org>
parents: 17326
diff changeset
3364
7906
1d64f77001be declare init_system_name (replaces get_system_name).
Karl Heuer <kwzh@gnu.org>
parents: 7307
diff changeset
3365 /* Set up the name of the machine we're running on. */
20297
bf0a54297d95 Add more prototypes and declarations. Forward declare
Andreas Schwab <schwab@suse.de>
parents: 20123
diff changeset
3366 extern void init_system_name P_ ((void));
9799
c9c11e41bf07 (DEVICE_SEP, DIRECTORY_SEP, IS_DEVICE_SEP)
Richard M. Stallman <rms@gnu.org>
parents: 9572
diff changeset
3367
c9c11e41bf07 (DEVICE_SEP, DIRECTORY_SEP, IS_DEVICE_SEP)
Richard M. Stallman <rms@gnu.org>
parents: 9572
diff changeset
3368 /* Some systems (e.g., NT) use a different path separator than Unix,
c9c11e41bf07 (DEVICE_SEP, DIRECTORY_SEP, IS_DEVICE_SEP)
Richard M. Stallman <rms@gnu.org>
parents: 9572
diff changeset
3369 in addition to a device separator. Default the path separator
c9c11e41bf07 (DEVICE_SEP, DIRECTORY_SEP, IS_DEVICE_SEP)
Richard M. Stallman <rms@gnu.org>
parents: 9572
diff changeset
3370 to '/', and don't test for a device separator in IS_ANY_SEP. */
c9c11e41bf07 (DEVICE_SEP, DIRECTORY_SEP, IS_DEVICE_SEP)
Richard M. Stallman <rms@gnu.org>
parents: 9572
diff changeset
3371
15090
c07a2c3e141d [WINDOWS_NT]: Declare Vdirectory_sep_char.
Richard M. Stallman <rms@gnu.org>
parents: 14665
diff changeset
3372 #ifdef WINDOWSNT
c07a2c3e141d [WINDOWS_NT]: Declare Vdirectory_sep_char.
Richard M. Stallman <rms@gnu.org>
parents: 14665
diff changeset
3373 extern Lisp_Object Vdirectory_sep_char;
c07a2c3e141d [WINDOWS_NT]: Declare Vdirectory_sep_char.
Richard M. Stallman <rms@gnu.org>
parents: 14665
diff changeset
3374 #endif
c07a2c3e141d [WINDOWS_NT]: Declare Vdirectory_sep_char.
Richard M. Stallman <rms@gnu.org>
parents: 14665
diff changeset
3375
9799
c9c11e41bf07 (DEVICE_SEP, DIRECTORY_SEP, IS_DEVICE_SEP)
Richard M. Stallman <rms@gnu.org>
parents: 9572
diff changeset
3376 #ifndef DIRECTORY_SEP
c9c11e41bf07 (DEVICE_SEP, DIRECTORY_SEP, IS_DEVICE_SEP)
Richard M. Stallman <rms@gnu.org>
parents: 9572
diff changeset
3377 #define DIRECTORY_SEP '/'
c9c11e41bf07 (DEVICE_SEP, DIRECTORY_SEP, IS_DEVICE_SEP)
Richard M. Stallman <rms@gnu.org>
parents: 9572
diff changeset
3378 #endif
c9c11e41bf07 (DEVICE_SEP, DIRECTORY_SEP, IS_DEVICE_SEP)
Richard M. Stallman <rms@gnu.org>
parents: 9572
diff changeset
3379 #ifndef IS_DIRECTORY_SEP
c9c11e41bf07 (DEVICE_SEP, DIRECTORY_SEP, IS_DEVICE_SEP)
Richard M. Stallman <rms@gnu.org>
parents: 9572
diff changeset
3380 #define IS_DIRECTORY_SEP(_c_) ((_c_) == DIRECTORY_SEP)
c9c11e41bf07 (DEVICE_SEP, DIRECTORY_SEP, IS_DEVICE_SEP)
Richard M. Stallman <rms@gnu.org>
parents: 9572
diff changeset
3381 #endif
c9c11e41bf07 (DEVICE_SEP, DIRECTORY_SEP, IS_DEVICE_SEP)
Richard M. Stallman <rms@gnu.org>
parents: 9572
diff changeset
3382 #ifndef IS_DEVICE_SEP
c9c11e41bf07 (DEVICE_SEP, DIRECTORY_SEP, IS_DEVICE_SEP)
Richard M. Stallman <rms@gnu.org>
parents: 9572
diff changeset
3383 #ifndef DEVICE_SEP
c9c11e41bf07 (DEVICE_SEP, DIRECTORY_SEP, IS_DEVICE_SEP)
Richard M. Stallman <rms@gnu.org>
parents: 9572
diff changeset
3384 #define IS_DEVICE_SEP(_c_) 0
c9c11e41bf07 (DEVICE_SEP, DIRECTORY_SEP, IS_DEVICE_SEP)
Richard M. Stallman <rms@gnu.org>
parents: 9572
diff changeset
3385 #else
c9c11e41bf07 (DEVICE_SEP, DIRECTORY_SEP, IS_DEVICE_SEP)
Richard M. Stallman <rms@gnu.org>
parents: 9572
diff changeset
3386 #define IS_DEVICE_SEP(_c_) ((_c_) == DEVICE_SEP)
c9c11e41bf07 (DEVICE_SEP, DIRECTORY_SEP, IS_DEVICE_SEP)
Richard M. Stallman <rms@gnu.org>
parents: 9572
diff changeset
3387 #endif
c9c11e41bf07 (DEVICE_SEP, DIRECTORY_SEP, IS_DEVICE_SEP)
Richard M. Stallman <rms@gnu.org>
parents: 9572
diff changeset
3388 #endif
c9c11e41bf07 (DEVICE_SEP, DIRECTORY_SEP, IS_DEVICE_SEP)
Richard M. Stallman <rms@gnu.org>
parents: 9572
diff changeset
3389 #ifndef IS_ANY_SEP
c9c11e41bf07 (DEVICE_SEP, DIRECTORY_SEP, IS_DEVICE_SEP)
Richard M. Stallman <rms@gnu.org>
parents: 9572
diff changeset
3390 #define IS_ANY_SEP(_c_) (IS_DIRECTORY_SEP (_c_))
c9c11e41bf07 (DEVICE_SEP, DIRECTORY_SEP, IS_DEVICE_SEP)
Richard M. Stallman <rms@gnu.org>
parents: 9572
diff changeset
3391 #endif
10455
d5a769d08f88 (SWITCH_ENUM_CAST): New macro.
Karl Heuer <kwzh@gnu.org>
parents: 10426
diff changeset
3392
d5a769d08f88 (SWITCH_ENUM_CAST): New macro.
Karl Heuer <kwzh@gnu.org>
parents: 10426
diff changeset
3393 #define SWITCH_ENUM_CAST(x) (x)
39579
e307d3530117 (LIST_END_P, FOREACH): New macros.
Gerd Moellmann <gerd@gnu.org>
parents: 39451
diff changeset
3394
e307d3530117 (LIST_END_P, FOREACH): New macros.
Gerd Moellmann <gerd@gnu.org>
parents: 39451
diff changeset
3395 /* Loop over Lisp list LIST. Signal an error if LIST is not a proper
e307d3530117 (LIST_END_P, FOREACH): New macros.
Gerd Moellmann <gerd@gnu.org>
parents: 39451
diff changeset
3396 list, or if it contains circles.
45623
0e92d219e195 (current_column): Now returns float.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 45545
diff changeset
3397
39579
e307d3530117 (LIST_END_P, FOREACH): New macros.
Gerd Moellmann <gerd@gnu.org>
parents: 39451
diff changeset
3398 HARE and TORTOISE should be the names of Lisp_Object variables, and
e307d3530117 (LIST_END_P, FOREACH): New macros.
Gerd Moellmann <gerd@gnu.org>
parents: 39451
diff changeset
3399 N should be the name of an EMACS_INT variable declared in the
e307d3530117 (LIST_END_P, FOREACH): New macros.
Gerd Moellmann <gerd@gnu.org>
parents: 39451
diff changeset
3400 function where the macro is used. Each nested loop should use
e307d3530117 (LIST_END_P, FOREACH): New macros.
Gerd Moellmann <gerd@gnu.org>
parents: 39451
diff changeset
3401 its own variables.
e307d3530117 (LIST_END_P, FOREACH): New macros.
Gerd Moellmann <gerd@gnu.org>
parents: 39451
diff changeset
3402
e307d3530117 (LIST_END_P, FOREACH): New macros.
Gerd Moellmann <gerd@gnu.org>
parents: 39451
diff changeset
3403 In the loop body, HARE is set to each cons of LIST, and N is the
e307d3530117 (LIST_END_P, FOREACH): New macros.
Gerd Moellmann <gerd@gnu.org>
parents: 39451
diff changeset
3404 length of the list processed so far. */
e307d3530117 (LIST_END_P, FOREACH): New macros.
Gerd Moellmann <gerd@gnu.org>
parents: 39451
diff changeset
3405
e307d3530117 (LIST_END_P, FOREACH): New macros.
Gerd Moellmann <gerd@gnu.org>
parents: 39451
diff changeset
3406 #define LIST_END_P(list, obj) \
e307d3530117 (LIST_END_P, FOREACH): New macros.
Gerd Moellmann <gerd@gnu.org>
parents: 39451
diff changeset
3407 (NILP (obj) \
e307d3530117 (LIST_END_P, FOREACH): New macros.
Gerd Moellmann <gerd@gnu.org>
parents: 39451
diff changeset
3408 ? 1 \
e307d3530117 (LIST_END_P, FOREACH): New macros.
Gerd Moellmann <gerd@gnu.org>
parents: 39451
diff changeset
3409 : (CONSP (obj) \
e307d3530117 (LIST_END_P, FOREACH): New macros.
Gerd Moellmann <gerd@gnu.org>
parents: 39451
diff changeset
3410 ? 0 \
41615
6486180ed9ef (run_hook_list_with_args): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 41262
diff changeset
3411 : (wrong_type_argument (Qlistp, (list))), 1))
39579
e307d3530117 (LIST_END_P, FOREACH): New macros.
Gerd Moellmann <gerd@gnu.org>
parents: 39451
diff changeset
3412
e307d3530117 (LIST_END_P, FOREACH): New macros.
Gerd Moellmann <gerd@gnu.org>
parents: 39451
diff changeset
3413 #define FOREACH(hare, list, tortoise, n) \
e307d3530117 (LIST_END_P, FOREACH): New macros.
Gerd Moellmann <gerd@gnu.org>
parents: 39451
diff changeset
3414 for (tortoise = hare = (list), n = 0; \
e307d3530117 (LIST_END_P, FOREACH): New macros.
Gerd Moellmann <gerd@gnu.org>
parents: 39451
diff changeset
3415 !LIST_END_P (list, hare); \
e307d3530117 (LIST_END_P, FOREACH): New macros.
Gerd Moellmann <gerd@gnu.org>
parents: 39451
diff changeset
3416 (hare = XCDR (hare), ++n, \
e307d3530117 (LIST_END_P, FOREACH): New macros.
Gerd Moellmann <gerd@gnu.org>
parents: 39451
diff changeset
3417 ((n & 1) != 0 \
e307d3530117 (LIST_END_P, FOREACH): New macros.
Gerd Moellmann <gerd@gnu.org>
parents: 39451
diff changeset
3418 ? (tortoise = XCDR (tortoise), \
e307d3530117 (LIST_END_P, FOREACH): New macros.
Gerd Moellmann <gerd@gnu.org>
parents: 39451
diff changeset
3419 (EQ (hare, tortoise) \
e307d3530117 (LIST_END_P, FOREACH): New macros.
Gerd Moellmann <gerd@gnu.org>
parents: 39451
diff changeset
3420 && (circular_list_error ((list)), 1))) \
e307d3530117 (LIST_END_P, FOREACH): New macros.
Gerd Moellmann <gerd@gnu.org>
parents: 39451
diff changeset
3421 : 0)))
39681
87cc624f4e1e (min, max): New macros.
Gerd Moellmann <gerd@gnu.org>
parents: 39675
diff changeset
3422
87cc624f4e1e (min, max): New macros.
Gerd Moellmann <gerd@gnu.org>
parents: 39675
diff changeset
3423 /* The ubiquitous min and max macros. */
87cc624f4e1e (min, max): New macros.
Gerd Moellmann <gerd@gnu.org>
parents: 39675
diff changeset
3424
39710
45e11013c850 [max]: Undef min and max before redefining them.
Andrew Innes <andrewi@gnu.org>
parents: 39699
diff changeset
3425 #ifdef max
45e11013c850 [max]: Undef min and max before redefining them.
Andrew Innes <andrewi@gnu.org>
parents: 39699
diff changeset
3426 #undef max
45e11013c850 [max]: Undef min and max before redefining them.
Andrew Innes <andrewi@gnu.org>
parents: 39699
diff changeset
3427 #undef min
45e11013c850 [max]: Undef min and max before redefining them.
Andrew Innes <andrewi@gnu.org>
parents: 39699
diff changeset
3428 #endif
39681
87cc624f4e1e (min, max): New macros.
Gerd Moellmann <gerd@gnu.org>
parents: 39675
diff changeset
3429 #define min(a, b) ((a) < (b) ? (a) : (b))
87cc624f4e1e (min, max): New macros.
Gerd Moellmann <gerd@gnu.org>
parents: 39675
diff changeset
3430 #define max(a, b) ((a) > (b) ? (a) : (b))
39773
51f74f0f7fce (make_fixnum_or_float): New macro.
Gerd Moellmann <gerd@gnu.org>
parents: 39766
diff changeset
3431
85250
2acb83e611e8 (eabs): Rename from `abs'. All callers changed.
Eli Zaretskii <eliz@gnu.org>
parents: 85143
diff changeset
3432 /* We used to use `abs', but that clashes with system headers on some
2acb83e611e8 (eabs): Rename from `abs'. All callers changed.
Eli Zaretskii <eliz@gnu.org>
parents: 85143
diff changeset
3433 platforms, and using a name reserved by Standard C is a bad idea
2acb83e611e8 (eabs): Rename from `abs'. All callers changed.
Eli Zaretskii <eliz@gnu.org>
parents: 85143
diff changeset
3434 anyway. */
2acb83e611e8 (eabs): Rename from `abs'. All callers changed.
Eli Zaretskii <eliz@gnu.org>
parents: 85143
diff changeset
3435 #if !defined(eabs)
2acb83e611e8 (eabs): Rename from `abs'. All callers changed.
Eli Zaretskii <eliz@gnu.org>
parents: 85143
diff changeset
3436 #define eabs(x) ((x) < 0 ? -(x) : (x))
84804
bc91e8a1fafc Johannes Weiner <hannes at saeurebad.de>
Glenn Morris <rgm@gnu.org>
parents: 84763
diff changeset
3437 #endif
bc91e8a1fafc Johannes Weiner <hannes at saeurebad.de>
Glenn Morris <rgm@gnu.org>
parents: 84763
diff changeset
3438
39773
51f74f0f7fce (make_fixnum_or_float): New macro.
Gerd Moellmann <gerd@gnu.org>
parents: 39766
diff changeset
3439 /* Return a fixnum or float, depending on whether VAL fits in a Lisp
51f74f0f7fce (make_fixnum_or_float): New macro.
Gerd Moellmann <gerd@gnu.org>
parents: 39766
diff changeset
3440 fixnum. */
51f74f0f7fce (make_fixnum_or_float): New macro.
Gerd Moellmann <gerd@gnu.org>
parents: 39766
diff changeset
3441
51f74f0f7fce (make_fixnum_or_float): New macro.
Gerd Moellmann <gerd@gnu.org>
parents: 39766
diff changeset
3442 #define make_fixnum_or_float(val) \
41615
6486180ed9ef (run_hook_list_with_args): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 41262
diff changeset
3443 (FIXNUM_OVERFLOW_P (val) \
6486180ed9ef (run_hook_list_with_args): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 41262
diff changeset
3444 ? make_float (val) \
6486180ed9ef (run_hook_list_with_args): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 41262
diff changeset
3445 : make_number ((EMACS_INT)(val)))
52274
9f08d8959a2a (EMACS_LISP_H): New.
Dave Love <fx@gnu.org>
parents: 51868
diff changeset
3446
55142
45f74adeb581 Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-248
Miles Bader <miles@gnu.org>
parents: 55081
diff changeset
3447
45f74adeb581 Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-248
Miles Bader <miles@gnu.org>
parents: 55081
diff changeset
3448 /* Checks the `cycle check' variable CHECK to see if it indicates that
45f74adeb581 Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-248
Miles Bader <miles@gnu.org>
parents: 55081
diff changeset
3449 EL is part of a cycle; CHECK must be either Qnil or a value returned
45f74adeb581 Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-248
Miles Bader <miles@gnu.org>
parents: 55081
diff changeset
3450 by an earlier use of CYCLE_CHECK. SUSPICIOUS is the number of
45f74adeb581 Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-248
Miles Bader <miles@gnu.org>
parents: 55081
diff changeset
3451 elements after which a cycle might be suspected; after that many
45f74adeb581 Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-248
Miles Bader <miles@gnu.org>
parents: 55081
diff changeset
3452 elements, this macro begins consing in order to keep more precise
45f74adeb581 Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-248
Miles Bader <miles@gnu.org>
parents: 55081
diff changeset
3453 track of elements.
45f74adeb581 Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-248
Miles Bader <miles@gnu.org>
parents: 55081
diff changeset
3454
45f74adeb581 Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-248
Miles Bader <miles@gnu.org>
parents: 55081
diff changeset
3455 Returns nil if a cycle was detected, otherwise a new value for CHECK
45f74adeb581 Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-248
Miles Bader <miles@gnu.org>
parents: 55081
diff changeset
3456 that includes EL.
45f74adeb581 Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-248
Miles Bader <miles@gnu.org>
parents: 55081
diff changeset
3457
45f74adeb581 Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-248
Miles Bader <miles@gnu.org>
parents: 55081
diff changeset
3458 CHECK is evaluated multiple times, EL and SUSPICIOUS 0 or 1 times, so
45f74adeb581 Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-248
Miles Bader <miles@gnu.org>
parents: 55081
diff changeset
3459 the caller should make sure that's ok. */
45f74adeb581 Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-248
Miles Bader <miles@gnu.org>
parents: 55081
diff changeset
3460
45f74adeb581 Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-248
Miles Bader <miles@gnu.org>
parents: 55081
diff changeset
3461 #define CYCLE_CHECK(check, el, suspicious) \
45f74adeb581 Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-248
Miles Bader <miles@gnu.org>
parents: 55081
diff changeset
3462 (NILP (check) \
45f74adeb581 Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-248
Miles Bader <miles@gnu.org>
parents: 55081
diff changeset
3463 ? make_number (0) \
45f74adeb581 Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-248
Miles Bader <miles@gnu.org>
parents: 55081
diff changeset
3464 : (INTEGERP (check) \
45f74adeb581 Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-248
Miles Bader <miles@gnu.org>
parents: 55081
diff changeset
3465 ? (XFASTINT (check) < (suspicious) \
45f74adeb581 Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-248
Miles Bader <miles@gnu.org>
parents: 55081
diff changeset
3466 ? make_number (XFASTINT (check) + 1) \
45f74adeb581 Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-248
Miles Bader <miles@gnu.org>
parents: 55081
diff changeset
3467 : Fcons (el, Qnil)) \
45f74adeb581 Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-248
Miles Bader <miles@gnu.org>
parents: 55081
diff changeset
3468 : (!NILP (Fmemq ((el), (check))) \
45f74adeb581 Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-248
Miles Bader <miles@gnu.org>
parents: 55081
diff changeset
3469 ? Qnil \
45f74adeb581 Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-248
Miles Bader <miles@gnu.org>
parents: 55081
diff changeset
3470 : Fcons ((el), (check)))))
45f74adeb581 Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-248
Miles Bader <miles@gnu.org>
parents: 55081
diff changeset
3471
45f74adeb581 Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-248
Miles Bader <miles@gnu.org>
parents: 55081
diff changeset
3472
56186
8107f309570c (MAX_ALLOCA): Define here.
Kim F. Storm <storm@cua.dk>
parents: 55837
diff changeset
3473 /* SAFE_ALLOCA normally allocates memory on the stack, but if size is
8107f309570c (MAX_ALLOCA): Define here.
Kim F. Storm <storm@cua.dk>
parents: 55837
diff changeset
3474 larger than MAX_ALLOCA, use xmalloc to avoid overflowing the stack. */
8107f309570c (MAX_ALLOCA): Define here.
Kim F. Storm <storm@cua.dk>
parents: 55837
diff changeset
3475
8107f309570c (MAX_ALLOCA): Define here.
Kim F. Storm <storm@cua.dk>
parents: 55837
diff changeset
3476 #define MAX_ALLOCA 16*1024
8107f309570c (MAX_ALLOCA): Define here.
Kim F. Storm <storm@cua.dk>
parents: 55837
diff changeset
3477
8107f309570c (MAX_ALLOCA): Define here.
Kim F. Storm <storm@cua.dk>
parents: 55837
diff changeset
3478 extern Lisp_Object safe_alloca_unwind (Lisp_Object);
8107f309570c (MAX_ALLOCA): Define here.
Kim F. Storm <storm@cua.dk>
parents: 55837
diff changeset
3479
8107f309570c (MAX_ALLOCA): Define here.
Kim F. Storm <storm@cua.dk>
parents: 55837
diff changeset
3480 #define USE_SAFE_ALLOCA \
57724
80393689541a (USE_SAFE_ALLOCA): Add and init sa_must_free integer.
Kim F. Storm <storm@cua.dk>
parents: 57571
diff changeset
3481 int sa_count = SPECPDL_INDEX (), sa_must_free = 0
56186
8107f309570c (MAX_ALLOCA): Define here.
Kim F. Storm <storm@cua.dk>
parents: 55837
diff changeset
3482
56198
a803de48faef (SAFE_ALLOCA_LISP): New macro to allocate Lisp_Objects.
Kim F. Storm <storm@cua.dk>
parents: 56186
diff changeset
3483 /* SAFE_ALLOCA allocates a simple buffer. */
a803de48faef (SAFE_ALLOCA_LISP): New macro to allocate Lisp_Objects.
Kim F. Storm <storm@cua.dk>
parents: 56186
diff changeset
3484
56186
8107f309570c (MAX_ALLOCA): Define here.
Kim F. Storm <storm@cua.dk>
parents: 55837
diff changeset
3485 #define SAFE_ALLOCA(buf, type, size) \
8107f309570c (MAX_ALLOCA): Define here.
Kim F. Storm <storm@cua.dk>
parents: 55837
diff changeset
3486 do { \
8107f309570c (MAX_ALLOCA): Define here.
Kim F. Storm <storm@cua.dk>
parents: 55837
diff changeset
3487 if ((size) < MAX_ALLOCA) \
8107f309570c (MAX_ALLOCA): Define here.
Kim F. Storm <storm@cua.dk>
parents: 55837
diff changeset
3488 buf = (type) alloca (size); \
8107f309570c (MAX_ALLOCA): Define here.
Kim F. Storm <storm@cua.dk>
parents: 55837
diff changeset
3489 else \
8107f309570c (MAX_ALLOCA): Define here.
Kim F. Storm <storm@cua.dk>
parents: 55837
diff changeset
3490 { \
8107f309570c (MAX_ALLOCA): Define here.
Kim F. Storm <storm@cua.dk>
parents: 55837
diff changeset
3491 buf = (type) xmalloc (size); \
57724
80393689541a (USE_SAFE_ALLOCA): Add and init sa_must_free integer.
Kim F. Storm <storm@cua.dk>
parents: 57571
diff changeset
3492 sa_must_free++; \
56186
8107f309570c (MAX_ALLOCA): Define here.
Kim F. Storm <storm@cua.dk>
parents: 55837
diff changeset
3493 record_unwind_protect (safe_alloca_unwind, \
8107f309570c (MAX_ALLOCA): Define here.
Kim F. Storm <storm@cua.dk>
parents: 55837
diff changeset
3494 make_save_value (buf, 0)); \
8107f309570c (MAX_ALLOCA): Define here.
Kim F. Storm <storm@cua.dk>
parents: 55837
diff changeset
3495 } \
8107f309570c (MAX_ALLOCA): Define here.
Kim F. Storm <storm@cua.dk>
parents: 55837
diff changeset
3496 } while (0)
8107f309570c (MAX_ALLOCA): Define here.
Kim F. Storm <storm@cua.dk>
parents: 55837
diff changeset
3497
56198
a803de48faef (SAFE_ALLOCA_LISP): New macro to allocate Lisp_Objects.
Kim F. Storm <storm@cua.dk>
parents: 56186
diff changeset
3498 /* SAFE_FREE frees xmalloced memory and enables GC as needed. */
a803de48faef (SAFE_ALLOCA_LISP): New macro to allocate Lisp_Objects.
Kim F. Storm <storm@cua.dk>
parents: 56186
diff changeset
3499
57724
80393689541a (USE_SAFE_ALLOCA): Add and init sa_must_free integer.
Kim F. Storm <storm@cua.dk>
parents: 57571
diff changeset
3500 #define SAFE_FREE() \
56186
8107f309570c (MAX_ALLOCA): Define here.
Kim F. Storm <storm@cua.dk>
parents: 55837
diff changeset
3501 do { \
57724
80393689541a (USE_SAFE_ALLOCA): Add and init sa_must_free integer.
Kim F. Storm <storm@cua.dk>
parents: 57571
diff changeset
3502 if (sa_must_free) { \
80393689541a (USE_SAFE_ALLOCA): Add and init sa_must_free integer.
Kim F. Storm <storm@cua.dk>
parents: 57571
diff changeset
3503 sa_must_free = 0; \
56186
8107f309570c (MAX_ALLOCA): Define here.
Kim F. Storm <storm@cua.dk>
parents: 55837
diff changeset
3504 unbind_to (sa_count, Qnil); \
57724
80393689541a (USE_SAFE_ALLOCA): Add and init sa_must_free integer.
Kim F. Storm <storm@cua.dk>
parents: 57571
diff changeset
3505 } \
56186
8107f309570c (MAX_ALLOCA): Define here.
Kim F. Storm <storm@cua.dk>
parents: 55837
diff changeset
3506 } while (0)
8107f309570c (MAX_ALLOCA): Define here.
Kim F. Storm <storm@cua.dk>
parents: 55837
diff changeset
3507
8107f309570c (MAX_ALLOCA): Define here.
Kim F. Storm <storm@cua.dk>
parents: 55837
diff changeset
3508
56204
d79e58a67b48 (struct Lisp_Save_Value): New member dogc.
Kim F. Storm <storm@cua.dk>
parents: 56198
diff changeset
3509 /* SAFE_ALLOCA_LISP allocates an array of Lisp_Objects. */
d79e58a67b48 (struct Lisp_Save_Value): New member dogc.
Kim F. Storm <storm@cua.dk>
parents: 56198
diff changeset
3510
d79e58a67b48 (struct Lisp_Save_Value): New member dogc.
Kim F. Storm <storm@cua.dk>
parents: 56198
diff changeset
3511 #define SAFE_ALLOCA_LISP(buf, nelt) \
d79e58a67b48 (struct Lisp_Save_Value): New member dogc.
Kim F. Storm <storm@cua.dk>
parents: 56198
diff changeset
3512 do { \
d79e58a67b48 (struct Lisp_Save_Value): New member dogc.
Kim F. Storm <storm@cua.dk>
parents: 56198
diff changeset
3513 int size_ = (nelt) * sizeof (Lisp_Object); \
d79e58a67b48 (struct Lisp_Save_Value): New member dogc.
Kim F. Storm <storm@cua.dk>
parents: 56198
diff changeset
3514 if (size_ < MAX_ALLOCA) \
d79e58a67b48 (struct Lisp_Save_Value): New member dogc.
Kim F. Storm <storm@cua.dk>
parents: 56198
diff changeset
3515 buf = (Lisp_Object *) alloca (size_); \
d79e58a67b48 (struct Lisp_Save_Value): New member dogc.
Kim F. Storm <storm@cua.dk>
parents: 56198
diff changeset
3516 else \
d79e58a67b48 (struct Lisp_Save_Value): New member dogc.
Kim F. Storm <storm@cua.dk>
parents: 56198
diff changeset
3517 { \
d79e58a67b48 (struct Lisp_Save_Value): New member dogc.
Kim F. Storm <storm@cua.dk>
parents: 56198
diff changeset
3518 Lisp_Object arg_; \
d79e58a67b48 (struct Lisp_Save_Value): New member dogc.
Kim F. Storm <storm@cua.dk>
parents: 56198
diff changeset
3519 buf = (Lisp_Object *) xmalloc (size_); \
d79e58a67b48 (struct Lisp_Save_Value): New member dogc.
Kim F. Storm <storm@cua.dk>
parents: 56198
diff changeset
3520 arg_ = make_save_value (buf, nelt); \
d79e58a67b48 (struct Lisp_Save_Value): New member dogc.
Kim F. Storm <storm@cua.dk>
parents: 56198
diff changeset
3521 XSAVE_VALUE (arg_)->dogc = 1; \
57724
80393689541a (USE_SAFE_ALLOCA): Add and init sa_must_free integer.
Kim F. Storm <storm@cua.dk>
parents: 57571
diff changeset
3522 sa_must_free++; \
56204
d79e58a67b48 (struct Lisp_Save_Value): New member dogc.
Kim F. Storm <storm@cua.dk>
parents: 56198
diff changeset
3523 record_unwind_protect (safe_alloca_unwind, arg_); \
d79e58a67b48 (struct Lisp_Save_Value): New member dogc.
Kim F. Storm <storm@cua.dk>
parents: 56198
diff changeset
3524 } \
d79e58a67b48 (struct Lisp_Save_Value): New member dogc.
Kim F. Storm <storm@cua.dk>
parents: 56198
diff changeset
3525 } while (0)
d79e58a67b48 (struct Lisp_Save_Value): New member dogc.
Kim F. Storm <storm@cua.dk>
parents: 56198
diff changeset
3526
56186
8107f309570c (MAX_ALLOCA): Define here.
Kim F. Storm <storm@cua.dk>
parents: 55837
diff changeset
3527
52274
9f08d8959a2a (EMACS_LISP_H): New.
Dave Love <fx@gnu.org>
parents: 51868
diff changeset
3528 #endif /* EMACS_LISP_H */
52401
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 52274
diff changeset
3529
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 52274
diff changeset
3530 /* arch-tag: 9b2ed020-70eb-47ac-94ee-e1c2a5107d5e
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 52274
diff changeset
3531 (do not change this comment) */