Function: c-back-over-list-of-member-inits

c-back-over-list-of-member-inits is a macro defined in cc-engine.el.gz.

Signature

(c-back-over-list-of-member-inits LIMIT)

Source Code

;; Defined in /usr/src/emacs/lisp/progmodes/cc-engine.el.gz
(defmacro c-back-over-list-of-member-inits (limit)
  ;; Go back over a list of elements, each looking like:
  ;; <symbol> (<expression>) ,
  ;; or <symbol> {<expression>} , (with possibly a <....> expressions
  ;; following the <symbol>).
  ;; when we are putatively immediately after a comma.  Stop when we don't see
  ;; a comma.  If either of <symbol> or bracketed <expression> is missing,
  ;; throw nil to 'level.  If the terminating } or ) is unmatched, throw nil
  ;; to 'done.  This is not a general purpose macro!
  (declare (debug t))
  `(while (eq (char-before) ?,)
     (backward-char)
     (c-backward-syntactic-ws ,limit)
     (when (not (memq (char-before) '(?\) ?})))
       (throw 'level nil))
     (when (not (c-go-list-backward))
       (throw 'done nil))
     (c-backward-syntactic-ws ,limit)
     (while (eq (char-before) ?>)
       (when (not (c-backward-<>-arglist nil))
	 (throw 'done nil))
       (c-backward-syntactic-ws ,limit))
     (when (not (c-back-over-compound-identifier))
       (throw 'level nil))
     (c-backward-syntactic-ws ,limit)))