Function: c-forward-keyword-prefixed-id

c-forward-keyword-prefixed-id is a macro defined in cc-engine.el.gz.

Signature

(c-forward-keyword-prefixed-id TYPE)

Source Code

;; Defined in /usr/src/emacs/lisp/progmodes/cc-engine.el.gz
(defmacro c-forward-keyword-prefixed-id (type)
  ;; Used internally in `c-forward-keyword-clause' to move forward
  ;; over a type (if TYPE is 'type) or a name (otherwise) which
  ;; possibly is prefixed by keywords and their associated clauses.
  ;; Try with a type/name first to not trip up on those that begin
  ;; with a keyword.  Return t if a known or found type is moved
  ;; over.  The point is clobbered if nil is returned.  If range
  ;; recording is enabled, the identifier is recorded on as a type
  ;; if TYPE is 'type or as a reference if TYPE is 'ref.
  ;;
  ;; This macro might do hidden buffer changes.
  (declare (debug t))
  `(let (res)
     (setq c-last-identifier-range nil)
     (while (if (setq res ,(if (eq type 'type)
			       '(c-forward-type)
			     '(c-forward-name)))
		nil
	      (cond ((looking-at c-keywords-regexp)
		     (c-forward-keyword-clause 1))
		    ((and c-opt-cpp-prefix
			  (looking-at c-noise-macro-with-parens-name-re))
		     (c-forward-noise-clause)))))
     (when (memq res '(t known found prefix maybe))
       (when c-record-type-identifiers
        ,(if (eq type 'type)
             '(c-record-type-id c-last-identifier-range)
           '(c-record-ref-id c-last-identifier-range)))
       t)))