Function: semantic-analyze-scoped-type-parts
semantic-analyze-scoped-type-parts is a byte-compiled function defined
in scope.el.gz.
Signature
(semantic-analyze-scoped-type-parts TYPE &optional SCOPE NOINHERIT PROTECTION)
Documentation
Return all parts of TYPE, a tag representing a TYPE declaration.
SCOPE is the scope object.
NOINHERIT turns off searching of inherited tags.
PROTECTION specifies the type of access requested,
such as public or private.
Source Code
;; Defined in /usr/src/emacs/lisp/cedet/semantic/scope.el.gz
(defun semantic-analyze-scoped-type-parts (type &optional scope noinherit _protection)
"Return all parts of TYPE, a tag representing a TYPE declaration.
SCOPE is the scope object.
NOINHERIT turns off searching of inherited tags.
PROTECTION specifies the type of access requested,
such as `public' or `private'."
(if (not type)
nil
(let* ((access (semantic-analyze-scope-calculate-access type scope))
;; SLOTS are the slots directly a part of TYPE.
(allslots (semantic-completable-tags-from-type type))
(slots (semantic-find-tags-by-scope-protection
access
type allslots))
(fname (semantic-tag-file-name type))
;; EXTMETH are externally defined methods that are still
;; a part of this class.
;; @TODO - is this line needed?? Try w/out for a while
;; @note - I think C++ says no. elisp might, but methods
;; look like defuns, so it makes no difference.
;;(extmeth nil) ; (semantic-tag-external-member-children type t))
;; INHERITED are tags found in classes that our TYPE tag
;; inherits from. Do not do this if it was not requested.
(inherited (when (not noinherit)
(semantic-analyze-scoped-inherited-tags type scope
access)))
)
(when (not (semantic-tag-in-buffer-p type))
(let ((copyslots nil))
(dolist (TAG slots)
;;(semantic--tag-put-property TAG :filename fname)
(if (semantic-tag-file-name TAG)
;; If it has a filename, just go with it...
(setq copyslots (cons TAG copyslots))
;; Otherwise, copy the tag with the guessed filename.
(setq copyslots (cons (semantic-tag-copy TAG nil fname)
copyslots)))
)
(setq slots (nreverse copyslots))
))
;; Flatten the database output.
(append slots nil inherited) ;; extmeth
)))