comparison src/lisp.h @ 39898:bc20a5e30bfd

(DEFUN, DEFVAR_LISP, ...) [DOC_STRINGS_IN_COMMENTS]: Provide definitions for doc strings in comments.
author Gerd Moellmann <gerd@gnu.org>
date Sat, 13 Oct 2001 20:43:52 +0000
parents f510faf7f4d7
children c1262fd975b2
comparison
equal deleted inserted replaced
39897:3e6f2f2a0a62 39898:bc20a5e30bfd
1501 A null string means call interactively with no arguments. 1501 A null string means call interactively with no arguments.
1502 `doc' is documentation for the user. */ 1502 `doc' is documentation for the user. */
1503 1503
1504 #if (!defined (__STDC__) && !defined (PROTOTYPES)) \ 1504 #if (!defined (__STDC__) && !defined (PROTOTYPES)) \
1505 || defined (USE_NONANSI_DEFUN) 1505 || defined (USE_NONANSI_DEFUN)
1506
1507 #ifdef DOC_STRINGS_IN_COMMENTS
1508
1506 #define DEFUN(lname, fnname, sname, minargs, maxargs, prompt, doc) \ 1509 #define DEFUN(lname, fnname, sname, minargs, maxargs, prompt, doc) \
1507 Lisp_Object fnname (); \ 1510 Lisp_Object fnname (); \
1508 struct Lisp_Subr sname = \ 1511 struct Lisp_Subr sname = \
1509 { PVEC_SUBR | (sizeof (struct Lisp_Subr) / sizeof (EMACS_INT)), \ 1512 { PVEC_SUBR | (sizeof (struct Lisp_Subr) / sizeof (EMACS_INT)), \
1510 fnname, minargs, maxargs, lname, prompt, 0}; \ 1513 fnname, minargs, maxargs, lname, prompt, 0}; \
1511 Lisp_Object fnname 1514 Lisp_Object fnname
1512 1515
1516 #else /* not DOC_STRINGS_IN_COMMENTS */
1517
1518 #define DEFUN(lname, fnname, sname, minargs, maxargs, prompt, args) \
1519 Lisp_Object fnname (); \
1520 struct Lisp_Subr sname = \
1521 { PVEC_SUBR | (sizeof (struct Lisp_Subr) / sizeof (EMACS_INT)), \
1522 fnname, minargs, maxargs, lname, prompt, 0}; \
1523 Lisp_Object fnname args
1524
1525 #endif /* not DOC_STRINGS_IN_COMMENTS */
1526
1513 #else 1527 #else
1528
1529 #ifdef DOC_STRINGS_IN_COMMENTS
1530
1531 #define DEFUN(lname, fnname, sname, minargs, maxargs, prompt, args) \
1532 Lisp_Object fnname DEFUN_ARGS_ ## maxargs ; \
1533 struct Lisp_Subr sname = \
1534 { PVEC_SUBR | (sizeof (struct Lisp_Subr) / sizeof (EMACS_INT)), \
1535 fnname, minargs, maxargs, lname, prompt, 0}; \
1536 Lisp_Object fnname args
1537
1538 #else /* not DOC_STRINGS_IN_COMMENTS */
1514 1539
1515 /* This version of DEFUN declares a function prototype with the right 1540 /* This version of DEFUN declares a function prototype with the right
1516 arguments, so we can catch errors with maxargs at compile-time. */ 1541 arguments, so we can catch errors with maxargs at compile-time. */
1517 #define DEFUN(lname, fnname, sname, minargs, maxargs, prompt, doc) \ 1542 #define DEFUN(lname, fnname, sname, minargs, maxargs, prompt, doc) \
1518 Lisp_Object fnname DEFUN_ARGS_ ## maxargs ; \ 1543 Lisp_Object fnname DEFUN_ARGS_ ## maxargs ; \
1519 struct Lisp_Subr sname = \ 1544 struct Lisp_Subr sname = \
1520 { PVEC_SUBR | (sizeof (struct Lisp_Subr) / sizeof (EMACS_INT)), \ 1545 { PVEC_SUBR | (sizeof (struct Lisp_Subr) / sizeof (EMACS_INT)), \
1521 fnname, minargs, maxargs, lname, prompt, 0}; \ 1546 fnname, minargs, maxargs, lname, prompt, 0}; \
1522 Lisp_Object fnname 1547 Lisp_Object fnname
1548
1549 #endif /* not DOC_STRINGS_IN_COMMENTS */
1523 1550
1524 /* Note that the weird token-substitution semantics of ANSI C makes 1551 /* Note that the weird token-substitution semantics of ANSI C makes
1525 this work for MANY and UNEVALLED. */ 1552 this work for MANY and UNEVALLED. */
1526 #define DEFUN_ARGS_MANY (int, Lisp_Object *) 1553 #define DEFUN_ARGS_MANY (int, Lisp_Object *)
1527 #define DEFUN_ARGS_UNEVALLED (Lisp_Object) 1554 #define DEFUN_ARGS_UNEVALLED (Lisp_Object)
1563 extern void defvar_kboard P_ ((char *, int)); 1590 extern void defvar_kboard P_ ((char *, int));
1564 1591
1565 /* Macros we use to define forwarded Lisp variables. 1592 /* Macros we use to define forwarded Lisp variables.
1566 These are used in the syms_of_FILENAME functions. */ 1593 These are used in the syms_of_FILENAME functions. */
1567 1594
1595 #ifdef DOC_STRINGS_IN_COMMENTS
1596
1597 #define DEFVAR_LISP(lname, vname) defvar_lisp (lname, vname)
1598 #define DEFVAR_LISP_NOPRO(lname, vname) defvar_lisp_nopro (lname, vname)
1599 #define DEFVAR_BOOL(lname, vname) defvar_bool (lname, vname)
1600 #define DEFVAR_INT(lname, vname) defvar_int (lname, vname)
1601 #define DEFVAR_PER_BUFFER(lname, vname, type) \
1602 defvar_per_buffer (lname, vname, type, 0)
1603 #define DEFVAR_KBOARD(lname, vname) \
1604 defvar_kboard (lname, \
1605 (int)((char *)(&current_kboard->vname) \
1606 - (char *)current_kboard))
1607
1608 #else /* not DOC_STRINGS_IN_COMMENTS */
1609
1568 #define DEFVAR_LISP(lname, vname, doc) defvar_lisp (lname, vname) 1610 #define DEFVAR_LISP(lname, vname, doc) defvar_lisp (lname, vname)
1569 #define DEFVAR_LISP_NOPRO(lname, vname, doc) defvar_lisp_nopro (lname, vname) 1611 #define DEFVAR_LISP_NOPRO(lname, vname, doc) defvar_lisp_nopro (lname, vname)
1570 #define DEFVAR_BOOL(lname, vname, doc) defvar_bool (lname, vname) 1612 #define DEFVAR_BOOL(lname, vname, doc) defvar_bool (lname, vname)
1571 #define DEFVAR_INT(lname, vname, doc) defvar_int (lname, vname) 1613 #define DEFVAR_INT(lname, vname, doc) defvar_int (lname, vname)
1572 #define DEFVAR_PER_BUFFER(lname, vname, type, doc) \ 1614 #define DEFVAR_PER_BUFFER(lname, vname, type, doc) \
1573 defvar_per_buffer (lname, vname, type, 0) 1615 defvar_per_buffer (lname, vname, type, 0)
1574 #define DEFVAR_KBOARD(lname, vname, doc) \ 1616 #define DEFVAR_KBOARD(lname, vname, doc) \
1575 defvar_kboard (lname, \ 1617 defvar_kboard (lname, \
1576 (int)((char *)(&current_kboard->vname) \ 1618 (int)((char *)(&current_kboard->vname) \
1577 - (char *)current_kboard)) 1619 - (char *)current_kboard))
1620
1621 #endif /* not DOC_STRINGS_IN_COMMENTS */
1622
1623
1578 1624
1579 /* Structure for recording Lisp call stack for backtrace purposes. */ 1625 /* Structure for recording Lisp call stack for backtrace purposes. */
1580 1626
1581 /* The special binding stack holds the outer values of variables while 1627 /* The special binding stack holds the outer values of variables while
1582 they are bound by a function application or a let form, stores the 1628 they are bound by a function application or a let form, stores the