Function: semantic-analyze-dereference-metatype-c-mode
semantic-analyze-dereference-metatype-c-mode is a byte-compiled
function defined in c.el.gz.
Signature
(semantic-analyze-dereference-metatype-c-mode TYPE SCOPE &optional TYPE-DECLARATION)
Documentation
Dereference TYPE as described in semantic-analyze-dereference-metatype.
Handle typedef, template instantiation, and -> operator.
Override semantic-analyze-dereference-metatype in c-mode buffers.
Source Code
;; Defined in /usr/src/emacs/lisp/cedet/semantic/bovine/c.el.gz
(define-mode-local-override semantic-analyze-dereference-metatype
c-mode (type scope &optional type-declaration)
"Dereference TYPE as described in `semantic-analyze-dereference-metatype'.
Handle typedef, template instantiation, and `->' operator."
(let* ((dereferencer-list '(semantic-c-dereference-typedef
semantic-c-dereference-template
semantic-c-dereference-member-of
semantic-c-dereference-namespace))
(dereferencer (pop dereferencer-list))
(type-tuple)
(original-type type))
(while dereferencer
(setq type-tuple (funcall dereferencer type scope type-declaration)
type (car type-tuple)
type-declaration (cadr type-tuple))
(if (not (eq type original-type))
;; we found a new type so break the dereferencer loop now !
;; (we will be recalled with the new type expanded by
;; semantic-analyze-dereference-metatype-stack).
(setq dereferencer nil)
;; no new type found try the next dereferencer :
(setq dereferencer (pop dereferencer-list)))))
(list type type-declaration))