Function: c-fdoc-shift-type-backward
c-fdoc-shift-type-backward is a macro defined in cc-engine.el.gz.
Signature
(c-fdoc-shift-type-backward &optional SHORT)
Source Code
;; Defined in /usr/src/emacs/lisp/progmodes/cc-engine.el.gz
;; Macro used inside `c-forward-decl-or-cast-1'. It ought to be a
;; defsubst or perhaps even a defun, but it contains lots of free
;; variables that refer to things inside `c-forward-decl-or-cast-1'.
(defmacro c-fdoc-shift-type-backward (&optional short)
;; `c-forward-decl-or-cast-1' can consume an arbitrary length list
;; of types when parsing a declaration, which means that it
;; sometimes consumes the identifier in the declaration as a type.
;; This is used to "backtrack" and make the last type be treated as
;; an identifier instead.
(declare (debug nil))
`(progn
(setq identifier-start type-start)
,(unless short
;; These identifiers are bound only in the inner let.
'(setq identifier-type at-type
got-parens nil
got-identifier t
got-suffix t
got-suffix-after-parens id-start
paren-depth 0))
(if (not (memq
(setq at-type (if (eq backup-at-type 'prefix)
t
backup-at-type))
'(nil no-id)))
(setq type-start backup-type-start
id-start backup-id-start)
(setq type-start start-pos
id-start start-pos))
;; When these flags already are set we've found specifiers that
;; unconditionally signal these attributes - backtracking doesn't
;; change that. So keep them set in that case.
(or at-type-decl
(setq at-type-decl backup-at-type-decl))
(or maybe-typeless
(setq maybe-typeless backup-maybe-typeless))
,(unless short
;; This identifier is bound only in the inner let.
'(setq start id-start))))