diff options
| author | Dan Nicolaescu | 2009-10-19 04:27:09 +0000 |
|---|---|---|
| committer | Dan Nicolaescu | 2009-10-19 04:27:09 +0000 |
| commit | d7306fe6b15ccdc49a066c05e5e86df8e005e859 (patch) | |
| tree | 94c95272d2541ca995105e2b64e96470be9702af /src/lisp.h | |
| parent | a9e7f03da3de5df3c3d0563caf4d408ad0858de5 (diff) | |
| download | emacs-d7306fe6b15ccdc49a066c05e5e86df8e005e859.tar.gz emacs-d7306fe6b15ccdc49a066c05e5e86df8e005e859.zip | |
* alloc.c: Do not define struct catchtag.
* eval.c: Move struct catchtag definition ...
* lisp.h: ... here.
* image.c: Move png.h #include earlier to avoid warnings.
* xterm.c:
* xsmfns.c:
* xselect.c:
* xrdb.c:
* xmenu.c:
* xftfont.c:
* xfont.c:
* xfns.c:
* xfaces.c:
* xdisp.c:
* window.c:
* widget.c:
* w32xfns.c:
* w32uniscribe.c:
* w32term.c:
* w32select.c:
* w32reg.c:
* w32proc.c:
* w32menu.c:
* w32inevt.c:
* w32heap.c:
* w32font.c:
* w32fns.c:
* w32console.c:
* w32.c:
* w16select.c:
* vm-limit.c:
* unexsol.c:
* unexec.c:
* unexcw.c:
* unexaix.c:
* undo.c:
* tparam.c:
* textprop.c:
* terminfo.c:
* terminal.c:
* termcap.c:
* term.c:
* syntax.c:
* sound.c:
* sheap.c:
* search.c:
* scroll.c:
* region-cache.c:
* regex.c:
* ralloc.c:
* process.c:
* print.c:
* msdos.c:
* minibuf.c:
* menu.c:
* marker.c:
* macros.c:
* keymap.c:
* keyboard.c:
* intervals.c:
* insdel.c:
* indent.c:
* gtkutil.c:
* ftxfont.c:
* ftfont.c:
* fringe.c:
* frame.c:
* fontset.c:
* font.c:
* fns.c:
* floatfns.c:
* filelock.c:
* fileio.c:
* emacs.c:
* editfns.c:
* dosfns.c:
* doprnt.c:
* doc.c:
* dispnew.c:
* dired.c:
* dbusbind.c:
* data.c:
* composite.c:
* coding.c:
* cmds.c:
* cm.c:
* chartab.c:
* charset.c:
* character.c:
* ccl.c:
* category.c:
* casetab.c:
* casefiddle.c:
* callproc.c:
* callint.c:
* bytecode.c:
* buffer.c:
* atimer.c: Include setjmp.h. (Bug#4643)
* xlwmenu.c:
* lwlib.c:
* lwlib-utils.c:
* lwlib-Xm.c:
* lwlib-Xlw.c:
* lwlib-Xaw.c: Include setjmp.h.
Diffstat (limited to 'src/lisp.h')
| -rw-r--r-- | src/lisp.h | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/src/lisp.h b/src/lisp.h index 6751898e163..4685578a417 100644 --- a/src/lisp.h +++ b/src/lisp.h | |||
| @@ -1826,6 +1826,41 @@ struct handler | |||
| 1826 | 1826 | ||
| 1827 | extern struct handler *handlerlist; | 1827 | extern struct handler *handlerlist; |
| 1828 | 1828 | ||
| 1829 | /* This structure helps implement the `catch' and `throw' control | ||
| 1830 | structure. A struct catchtag contains all the information needed | ||
| 1831 | to restore the state of the interpreter after a non-local jump. | ||
| 1832 | |||
| 1833 | Handlers for error conditions (represented by `struct handler' | ||
| 1834 | structures) just point to a catch tag to do the cleanup required | ||
| 1835 | for their jumps. | ||
| 1836 | |||
| 1837 | catchtag structures are chained together in the C calling stack; | ||
| 1838 | the `next' member points to the next outer catchtag. | ||
| 1839 | |||
| 1840 | A call like (throw TAG VAL) searches for a catchtag whose `tag' | ||
| 1841 | member is TAG, and then unbinds to it. The `val' member is used to | ||
| 1842 | hold VAL while the stack is unwound; `val' is returned as the value | ||
| 1843 | of the catch form. | ||
| 1844 | |||
| 1845 | All the other members are concerned with restoring the interpreter | ||
| 1846 | state. */ | ||
| 1847 | |||
| 1848 | struct catchtag | ||
| 1849 | { | ||
| 1850 | Lisp_Object tag; | ||
| 1851 | Lisp_Object val; | ||
| 1852 | struct catchtag *next; | ||
| 1853 | struct gcpro *gcpro; | ||
| 1854 | jmp_buf jmp; | ||
| 1855 | struct backtrace *backlist; | ||
| 1856 | struct handler *handlerlist; | ||
| 1857 | int lisp_eval_depth; | ||
| 1858 | int pdlcount; | ||
| 1859 | int poll_suppress_count; | ||
| 1860 | int interrupt_input_blocked; | ||
| 1861 | struct byte_stack *byte_stack; | ||
| 1862 | }; | ||
| 1863 | |||
| 1829 | extern struct catchtag *catchlist; | 1864 | extern struct catchtag *catchlist; |
| 1830 | extern struct backtrace *backtrace_list; | 1865 | extern struct backtrace *backtrace_list; |
| 1831 | 1866 | ||