Function: semantic-analyze-dereference-metatype-stack
semantic-analyze-dereference-metatype-stack is a byte-compiled
function defined in fcn.el.gz.
Signature
(semantic-analyze-dereference-metatype-stack TYPE SCOPE &optional TYPE-DECLARATION)
Documentation
Dereference metatypes repeatedly until we hit a real TYPE.
Uses semantic-analyze-dereference-metatype.
Argument SCOPE is the scope object with additional items in which to search.
Optional argument TYPE-DECLARATION is how TYPE was found referenced.
Source Code
;; Defined in /usr/src/emacs/lisp/cedet/semantic/analyze/fcn.el.gz
(defun semantic-analyze-dereference-metatype-stack (type scope &optional type-declaration)
"Dereference metatypes repeatedly until we hit a real TYPE.
Uses `semantic-analyze-dereference-metatype'.
Argument SCOPE is the scope object with additional items in which to search.
Optional argument TYPE-DECLARATION is how TYPE was found referenced."
(let ((lasttype type)
(lasttypedeclaration type-declaration)
(nexttype (semantic-analyze-dereference-metatype type scope type-declaration))
(idx 0))
(catch 'metatype-recursion
(while (and nexttype (not (semantic-tag-similar-p (car nexttype) lasttype)))
(setq lasttype (car nexttype)
lasttypedeclaration (cadr nexttype))
(setq nexttype (semantic-analyze-dereference-metatype lasttype scope lasttypedeclaration))
(setq idx (1+ idx))
(when (> idx 20) (message "Possible metatype recursion for %S"
(semantic-tag-name lasttype))
(throw 'metatype-recursion nil))
))
lasttype))