Function: semantic-tag-abstract-p-c-mode
semantic-tag-abstract-p-c-mode is a byte-compiled function defined in
c.el.gz.
Signature
(semantic-tag-abstract-p-c-mode TAG &optional PARENT)
Documentation
Return non-nil if TAG is considered abstract.
PARENT is tag's parent.
In C, a method is abstract if it is virtual, which is already
handled. A class is abstract only if its destructor is virtual.
Override semantic-tag-abstract-p in c-mode buffers.
Source Code
;; Defined in /usr/src/emacs/lisp/cedet/semantic/bovine/c.el.gz
(define-mode-local-override semantic-tag-abstract-p
c-mode (tag &optional parent)
"Return non-nil if TAG is considered abstract.
PARENT is tag's parent.
In C, a method is abstract if it is `virtual', which is already
handled. A class is abstract only if its destructor is virtual."
(cond
((eq (semantic-tag-class tag) 'type)
(require 'semantic/find)
(or (semantic-brute-find-tag-by-attribute :pure-virtual-flag
(semantic-tag-components tag)
)
(let* ((ds (semantic-brute-find-tag-by-attribute
:destructor-flag
(semantic-tag-components tag)
))
(cs (semantic-brute-find-tag-by-attribute
:constructor-flag
(semantic-tag-components tag)
)))
(and ds (member "virtual" (semantic-tag-modifiers (car ds)))
cs (eq 'protected (semantic-tag-protection (car cs) tag))
)
)))
((eq (semantic-tag-class tag) 'function)
(or (semantic-tag-get-attribute tag :pure-virtual-flag)
(member "virtual" (semantic-tag-modifiers tag))))
(t (semantic-tag-abstract-p-default tag parent))))