Mercurial > hg > xemacs-beta
comparison src/fns.c @ 5277:d804e621add0
Simplify the API of PARSE_KEYWORDS for callers.
src/ChangeLog addition:
2010-09-18 Aidan Kehoe <kehoea@parhasard.net>
Simplify the API of PARSE_KEYWORDS for callers.
* lisp.h (PARSE_KEYWORDS): Simply the API, while making the
implementation a little more complex; work out KEYWORDS_OFFSET
from the appropriate Lisp_Subr struct, take the function name as
the C name of the DEFUN rather than a symbol visible as a
Lisp_Object, on debug builds assert that we're actually in the
function so we choke on badly-done copy-and-pasting,
* lisp.h (PARSE_KEYWORDS_8): New. This is the old PARSE_KEYWORDS.
* fns.c (Fmerge, FsortX, Ffill, Freduce, Freplace):
Change to use the new PARSE_KEYWORDS syntax.
* elhash.c (Fmake_hash_table): Chance to the new PARSE_KEYWORDS
syntax, rename a define to correspond to what other files use.
* symbols.c (intern_massaging_name):
* buffer.c (ADD_INT):
Rename intern_converting_underscores_to_dashes() to
intern_massaging_name(), now it does a little more.
author | Aidan Kehoe <kehoea@parhasard.net> |
---|---|
date | Sat, 18 Sep 2010 15:57:20 +0100 |
parents | 5a9aa6c40c9b |
children | be436ac36ba4 308d34e9f07d |
comparison
equal
deleted
inserted
replaced
5276:dd2976af8783 | 5277:d804e621add0 |
---|---|
2573 Lisp_Object type = args[0], sequence_one = args[1], sequence_two = args[2], | 2573 Lisp_Object type = args[0], sequence_one = args[1], sequence_two = args[2], |
2574 predicate = args[3], result = Qnil; | 2574 predicate = args[3], result = Qnil; |
2575 Lisp_Object (*c_predicate) (Lisp_Object, Lisp_Object, Lisp_Object, | 2575 Lisp_Object (*c_predicate) (Lisp_Object, Lisp_Object, Lisp_Object, |
2576 Lisp_Object); | 2576 Lisp_Object); |
2577 | 2577 |
2578 PARSE_KEYWORDS (Qmerge, nargs, args, 4, 1, (key), NULL, 0); | 2578 PARSE_KEYWORDS (Fmerge, nargs, args, 1, (key), NULL); |
2579 | 2579 |
2580 CHECK_SEQUENCE (sequence_one); | 2580 CHECK_SEQUENCE (sequence_one); |
2581 CHECK_SEQUENCE (sequence_two); | 2581 CHECK_SEQUENCE (sequence_two); |
2582 | 2582 |
2583 CHECK_KEY_ARGUMENT (key); | 2583 CHECK_KEY_ARGUMENT (key); |
2825 Lisp_Object *sequence_carray; | 2825 Lisp_Object *sequence_carray; |
2826 Lisp_Object (*c_predicate) (Lisp_Object, Lisp_Object, Lisp_Object, | 2826 Lisp_Object (*c_predicate) (Lisp_Object, Lisp_Object, Lisp_Object, |
2827 Lisp_Object); | 2827 Lisp_Object); |
2828 Elemcount sequence_len, i; | 2828 Elemcount sequence_len, i; |
2829 | 2829 |
2830 PARSE_KEYWORDS (QsortX, nargs, args, 2, 1, (key), NULL, 0); | 2830 PARSE_KEYWORDS (FsortX, nargs, args, 1, (key), NULL); |
2831 | 2831 |
2832 CHECK_SEQUENCE (sequence); | 2832 CHECK_SEQUENCE (sequence); |
2833 | 2833 |
2834 CHECK_KEY_ARGUMENT (key); | 2834 CHECK_KEY_ARGUMENT (key); |
2835 | 2835 |
4000 { | 4000 { |
4001 Lisp_Object sequence = args[0]; | 4001 Lisp_Object sequence = args[0]; |
4002 Lisp_Object item = args[1]; | 4002 Lisp_Object item = args[1]; |
4003 Elemcount starting = 0, ending = EMACS_INT_MAX, ii, len; | 4003 Elemcount starting = 0, ending = EMACS_INT_MAX, ii, len; |
4004 | 4004 |
4005 PARSE_KEYWORDS (Qfill, nargs, args, 2, 2, (start, end), (start = Qzero), 0); | 4005 PARSE_KEYWORDS (Ffill, nargs, args, 2, (start, end), (start = Qzero)); |
4006 | 4006 |
4007 CHECK_NATNUM (start); | 4007 CHECK_NATNUM (start); |
4008 starting = XINT (start); | 4008 starting = XINT (start); |
4009 | 4009 |
4010 if (!NILP (end)) | 4010 if (!NILP (end)) |
5003 (int nargs, Lisp_Object *args)) | 5003 (int nargs, Lisp_Object *args)) |
5004 { | 5004 { |
5005 Lisp_Object function = args[0], sequence = args[1], accum = Qunbound; | 5005 Lisp_Object function = args[0], sequence = args[1], accum = Qunbound; |
5006 Elemcount starting, ending = EMACS_INT_MAX, ii = 0; | 5006 Elemcount starting, ending = EMACS_INT_MAX, ii = 0; |
5007 | 5007 |
5008 PARSE_KEYWORDS (Qreduce, nargs, args, 2, 5, | 5008 PARSE_KEYWORDS (Freduce, nargs, args, 5, |
5009 (start, end, from_end, initial_value, key), | 5009 (start, end, from_end, initial_value, key), |
5010 (start = Qzero, initial_value = Qunbound), 0); | 5010 (start = Qzero, initial_value = Qunbound)); |
5011 | 5011 |
5012 CHECK_SEQUENCE (sequence); | 5012 CHECK_SEQUENCE (sequence); |
5013 CHECK_NATNUM (start); | 5013 CHECK_NATNUM (start); |
5014 | 5014 |
5015 CHECK_KEY_ARGUMENT (key); | 5015 CHECK_KEY_ARGUMENT (key); |
5539 Elemcount starting1, ending1 = EMACS_INT_MAX, starting2; | 5539 Elemcount starting1, ending1 = EMACS_INT_MAX, starting2; |
5540 Elemcount ending2 = EMACS_INT_MAX, counting = 0, startcounting; | 5540 Elemcount ending2 = EMACS_INT_MAX, counting = 0, startcounting; |
5541 Boolint sequence1_listp, sequence2_listp, | 5541 Boolint sequence1_listp, sequence2_listp, |
5542 overwriting = EQ (sequence1, sequence2); | 5542 overwriting = EQ (sequence1, sequence2); |
5543 | 5543 |
5544 PARSE_KEYWORDS (Qreplace, nargs, args, 2, 4, (start1, end1, start2, end2), | 5544 PARSE_KEYWORDS (Freplace, nargs, args, 4, (start1, end1, start2, end2), |
5545 (start1 = start2 = Qzero), 0); | 5545 (start1 = start2 = Qzero)); |
5546 | 5546 |
5547 CHECK_SEQUENCE (sequence1); | 5547 CHECK_SEQUENCE (sequence1); |
5548 CHECK_LISP_WRITEABLE (sequence1); | 5548 CHECK_LISP_WRITEABLE (sequence1); |
5549 | 5549 |
5550 CHECK_SEQUENCE (sequence2); | 5550 CHECK_SEQUENCE (sequence2); |