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);