diff options
author | Chong Yidong <cyd@stupidchicken.com> | 2009-09-13 16:12:23 +0000 |
---|---|---|
committer | Chong Yidong <cyd@stupidchicken.com> | 2009-09-13 16:12:23 +0000 |
commit | 00676d68f4ea876fd87a7cef6c1f0e8663a7f83d (patch) | |
tree | ef3182ec9f49e559b87c86a76ca60597e23cad1d /lisp/cedet/semantic/analyze | |
parent | a964f5e552c64a53fb4b5c417f1825807cdcca6f (diff) | |
download | emacs-00676d68f4ea876fd87a7cef6c1f0e8663a7f83d.tar.gz emacs-00676d68f4ea876fd87a7cef6c1f0e8663a7f83d.tar.bz2 emacs-00676d68f4ea876fd87a7cef6c1f0e8663a7f83d.zip |
* cedet/semantic/analyze/fcn.el (semantic-analyze-dereference-metatype-1)
(semantic-analyze-type): Require semantic/scope.
(semantic-analyze-select-best-tag): Require semantic/db-typecache.
(semantic-analyze-dereference-metatype): Move up to avoid compiler warning.
* cedet/semantic/analyze.el (semantic-adebug-analyze): Require data-debug.
Diffstat (limited to 'lisp/cedet/semantic/analyze')
-rw-r--r-- | lisp/cedet/semantic/analyze/fcn.el | 51 |
1 files changed, 31 insertions, 20 deletions
diff --git a/lisp/cedet/semantic/analyze/fcn.el b/lisp/cedet/semantic/analyze/fcn.el index 6fe5c49b0bc..e0059896fb3 100644 --- a/lisp/cedet/semantic/analyze/fcn.el +++ b/lisp/cedet/semantic/analyze/fcn.el @@ -29,6 +29,13 @@ (require 'semantic) (require 'semantic/tag) +(eval-when-compile (require 'semantic/find)) + +(declare-function semanticdb-typecache-merge-streams "semantic/db-typecache") +(declare-function semantic-scope-find name "semantic/scope") +(declare-function semantic-scope-set-typecache "semantic/scope") +(declare-function semantic-scope-tag-get-scope "semantic/scope") + ;;; Small Mode Specific Options ;; ;; These queries allow a major mode to help the analyzer make decisions. @@ -105,6 +112,7 @@ tags of TAGCLASS." ;; ;; 2) ;; It will also remove prototypes. + (require 'semantic/db-typecache) (setq sequence (semanticdb-typecache-merge-streams sequence nil)) (if (< (length sequence) 2) @@ -150,6 +158,27 @@ Almost all searches use the same arguments." ;;; Finding Datatypes ;; + +(define-overloadable-function semantic-analyze-dereference-metatype (type scope &optional type-declaration) + ;; todo - move into typecahe!! + "Return a concrete type tag based on input TYPE tag. +A concrete type is an actual declaration of a memory description, +such as a structure, or class. A meta type is an alias, +or a typedef in C or C++. If TYPE is concrete, it +is returned. If it is a meta type, it will return the concrete +type defined by TYPE. +The default behavior always returns TYPE. +Override functions need not return a real semantic tag. +Just a name, or short tag will be ok. It will be expanded here. +SCOPE is the scope object with additional items in which to search for names." + (catch 'default-behavior + (let* ((ans-tuple (:override + ;; Nothing fancy, just return type by default. + (throw 'default-behavior (list type type-declaration)))) + (ans-type (car ans-tuple)) + (ans-type-declaration (cadr ans-tuple))) + (list (semantic-analyze-dereference-metatype-1 ans-type scope) ans-type-declaration)))) + ;; Finding a data type by name within a project. ;; (defun semantic-analyze-type-to-name (type) @@ -184,6 +213,7 @@ Optional SCOPE represents a calculated scope in which the types might be found. This can be nil. If NOMETADEREF, then do not dereference metatypes. This is used by the analyzer debugger." + (require 'semantic/scope) (let ((name nil) (typetag nil) ) @@ -257,32 +287,13 @@ Optional argument TYPE-DECLARATION is how TYPE was found referenced." )) lasttype)) -(define-overloadable-function semantic-analyze-dereference-metatype (type scope &optional type-declaration) - ;; todo - move into typecahe!! - "Return a concrete type tag based on input TYPE tag. -A concrete type is an actual declaration of a memory description, -such as a structure, or class. A meta type is an alias, -or a typedef in C or C++. If TYPE is concrete, it -is returned. If it is a meta type, it will return the concrete -type defined by TYPE. -The default behavior always returns TYPE. -Override functions need not return a real semantic tag. -Just a name, or short tag will be ok. It will be expanded here. -SCOPE is the scope object with additional items in which to search for names." - (catch 'default-behavior - (let* ((ans-tuple (:override - ;; Nothing fancy, just return type by default. - (throw 'default-behavior (list type type-declaration)))) - (ans-type (car ans-tuple)) - (ans-type-declaration (cadr ans-tuple))) - (list (semantic-analyze-dereference-metatype-1 ans-type scope) ans-type-declaration)))) - ;; @ TODO - the typecache can also return a stack of scope names. (defun semantic-analyze-dereference-metatype-1 (ans scope) "Do extra work after dereferencing a metatype. ANS is the answer from the the language specific query. SCOPE is the current scope." + (require 'semantic/scope) ;; If ANS is a string, or if ANS is a short tag, we ;; need to do some more work to look it up. (if (stringp ans) |