Function: c-forward-align-clause-throw-if-invalid

c-forward-align-clause-throw-if-invalid is a macro defined in cc-engine.el.gz.

Signature

(c-forward-align-clause-throw-if-invalid THROW-TAG)

Source Code

;; Defined in /usr/src/emacs/lisp/progmodes/cc-engine.el.gz
(defmacro c-forward-align-clause-throw-if-invalid (throw-tag)
  ;; If we are at a `c-type-modifier-with-parens-key' keyword, try to go
  ;; forward over the clause it introduces, and return t.  If the clause is
  ;; ill formed (or absent), move point to START, set RES to nil, and throw
  ;; nil to the tag THROW-TAG.  Otherwise, return nil.  The match data are
  ;; preserved.
  ;; This macro is intended only for use withing `c-forward-type'.
  `(if (save-match-data
	 (looking-at c-type-modifier-with-parens-key))
       (if (and (zerop (c-forward-token-2))
		(eq (char-after) ?\()
		(c-safe (c-go-list-forward))
		(eq (char-before) ?\))
		(setq pos (point))
		(progn (c-forward-syntactic-ws) t))
	   t
	 (setq res nil)
	 (goto-char start)
	 (throw ,throw-tag nil))
     nil))