Current File : //proc/self/root/kunden/usr/share/emacs/27.2/lisp/cedet/semantic/db-typecache.elc
;ELC
;;; Compiled
;;; in Emacs version 27.2
;;; with all optimizations.

;;; This file uses dynamic docstrings, first added in Emacs 19.29.

;;; This file does not contain utf-8 non-ASCII characters,
;;; and so can be loaded in Emacs versions earlier than 23.

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


(byte-code "\300\301!\210\300\302!\210\300\303!\210\300\304!\210\305\306\307\310!\"\210\305\311\312\310!\"\210\305\313\311\"\210\314\313\315\316#\210\317\310\320\311#\321\310\322\323\324$\207" [require semantic semantic/db semantic/db-find semantic/analyze/fcn defalias semanticdb-typecache-p eieio-make-class-predicate semanticdb-typecache semanticdb-typecache--eieio-childp eieio-make-child-predicate semanticdb-typecache-child-p make-obsolete "use (cl-typep ... \\='semanticdb-typecache) instead" "25.1" define-symbol-prop cl-deftype-satisfies eieio-defclass-internal nil ((filestream :initform nil :documentation "Fully sorted/merged list of tags within this buffer.") (includestream :initform nil :documentation "Fully sorted/merged list of tags from this file's includes list.") (stream :initform nil :documentation "The searchable tag stream for this cache.\nNOTE: Can I get rid of this?  Use a hash table instead?") (dependants :initform nil :documentation "Any other object that is dependent on typecache results.\nSaid object must support `semantic-reset' methods.")) (:documentation "Structure for maintaining a typecache.")] 6)
#@59 Create a new object of class type `semanticdb-typecache'.
(defalias 'semanticdb-typecache #[(&rest slots) "\301\302\303#\207" [slots apply make-instance semanticdb-typecache] 4 (#$ . 1548)])
(byte-code "\300\301\302\303#\300\207" [function-put semanticdb-typecache compiler-macro semanticdb-typecache--anon-cmacro] 4)
(defalias 'semanticdb-typecache--anon-cmacro #[(whole &rest slots) "@;\204	\207\302\303\304@	@#	@\305@DABB\"\207" [slots whole macroexp--warn-and-return format "Obsolete name arg %S to constructor %S" identity] 5])
(byte-code "\300\301\302\303\302\304%\210\300\305\302\306\302\307%\210\300\310\302\311\302\312%\207" [cl-generic-define-method semantic-reset nil ((tc semanticdb-typecache)) #[(tc) "\301\302\303#\210\301\304\303#\210\301\305\303#\210\306\307\310\311\"\"\210\301\311\303#\207" [tc eieio-oset filestream nil includestream stream mapc semantic-reset eieio-oref dependants] 5 "Reset the object IDX."] semanticdb-typecache-notify-reset ((tc semanticdb-typecache)) #[(tc) "\301\302\303#\210\304\305\306\307\"\"\210\301\307\303#\207" [tc eieio-oset includestream nil mapc semantic-reset eieio-oref dependants] 5 "Do a reset from a notify from a table we depend on."] semanticdb-partial-synchronize ((tc semanticdb-typecache) new-tags) #[(tc new-tags) "\305!\306\211\203\"\n@\211A@)\307=\203\n@	B\nA\211\204\n	\237*\203<\310\f\311\306#\210\312\313\314\f\315\"\"\210\310\f\315\306#\210\305!\306\211\203^\n@\211A@)\316=\203W\n@	B\nA\211\204F	\237*\205k\310\f\317\306#\210\320\207" [new-tags result tags tag tc semantic-something-to-tag-table nil include eieio-oset includestream mapc semantic-reset eieio-oref dependants type filestream t] 6 "Reset the typecache based on a partial reparse."]] 6)
#@47 Add into the local typecache a dependant DEP.
(defalias 'semanticdb-typecache-add-dependant #[(dep) "\304	!\305\n\306#*\207" [semanticdb-current-table table cache dep semanticdb-get-typecache object-add-to-list dependants] 4 (#$ . 3310)])
#@40 How long is THING?
Debugging function.
(defalias 'semanticdb-typecache-length #[(thing) "\303!\203\f\304\305\"G\207\30619	:\2055	@;\2055	A@9\2055	A@\2055\307	8<\2055\310	8<0\202;\210\311)\203Q\211\312\313	\307	8)\n\"+G\207<\203\215@\3141\204	:\205\200	@;\205\200	A@9\205\200	A@\205\200\307	8<\205\200\310	8<0\202\206\210\311)\203\215G\207\204\223\315\207\316\207" [thing tag attribute semanticdb-typecache--eieio-childp eieio-oref stream (error) 2 3 nil :members plist-get (error) 0 -1] 4 (#$ . 3559)])
(byte-code "\300\301\302\303\302\304%\210\300\305\302\306\302\307%\210\310\311\312\313!\"\210\310\314\315\313!\"\210\310\316\314\"\210\317\316\320\321#\210\322\313\323\314#\324\313\325\326\327$\207" [cl-generic-define-method semanticdb-get-typecache nil ((table semanticdb-abstract-table)) #[(table) "\303!\210\304!\305	\306\"\211\204\307\310!!\311	\306\n#\210\n*\207" [table idx cache semanticdb-refresh-table semanticdb-get-table-index eieio-oref type-cache semanticdb-typecache semanticdb-full-filename eieio-oset] 5 "Retrieve the typecache from the semanticdb TABLE.\nIf there is no table, create one, and fill it in."] semanticdb-have-typecache-p ((table semanticdb-abstract-table)) #[(table) "\302!\303	\304\")\207" [table idx semanticdb-get-table-index eieio-oref type-cache] 3 "Return non-nil (the typecache) if TABLE has a pre-calculated typecache."] defalias semanticdb-database-typecache-p eieio-make-class-predicate semanticdb-database-typecache semanticdb-database-typecache--eieio-childp eieio-make-child-predicate semanticdb-database-typecache-child-p make-obsolete "use (cl-typep ... \\='semanticdb-database-typecache) instead" "25.1" define-symbol-prop cl-deftype-satisfies eieio-defclass-internal (semanticdb-abstract-db-cache) ((stream :initform nil :documentation "The searchable tag stream for this cache.")) (:documentation "Structure for maintaining a typecache.")] 6)
#@68 Create a new object of class type `semanticdb-database-typecache'.
(defalias 'semanticdb-database-typecache #[(&rest slots) "\301\302\303#\207" [slots apply make-instance semanticdb-database-typecache] 4 (#$ . 5503)])
(byte-code "\300\301\302\303#\300\207" [function-put semanticdb-database-typecache compiler-macro semanticdb-database-typecache--anon-cmacro] 4)
(defalias 'semanticdb-database-typecache--anon-cmacro #[(whole &rest slots) "@;\204	\207\302\303\304@	@#	@\305@DABB\"\207" [slots whole macroexp--warn-and-return format "Obsolete name arg %S to constructor %S" identity] 5])
(byte-code "\300\301\302\303\302\304%\210\300\305\302\306\302\307%\210\300\310\302\311\302\312%\210\300\313\302\314\302\315%\207" [cl-generic-define-method semantic-reset nil ((tc semanticdb-database-typecache)) #[(tc) "\301\302\303#\207" [tc eieio-oset stream nil] 4 "Reset the object IDX."] semanticdb-synchronize ((cache semanticdb-database-typecache) new-tags) #[(cache new-tags) "\300\207" ["Synchronize a CACHE with some NEW-TAGS."] 1] semanticdb-partial-synchronize ((cache semanticdb-database-typecache) new-tags) #[(cache new-tags) "\300\207" ["Synchronize a CACHE with some changed NEW-TAGS."] 1] semanticdb-get-typecache ((db semanticdb-project-database)) #[(db) "\301\302\"\207" [db semanticdb-cache-get semanticdb-database-typecache] 3 "Retrieve the typecache from the semantic database DB.\nIf there is no table, create one, and fill it in."]] 6)
#@48 Apply the filename FILE to all tags in STREAM.
(defalias 'semanticdb-typecache-apply-filename #[(file stream) "\303	\203\304	@\303\n#B	A\211\204\237)\207" [new stream file nil semantic-tag-copy] 5 (#$ . 6966)])
#@60 Return a list of members for TAG that are safe to permute.
(defalias 'semanticdb-typecache-safe-tag-members #[(tag) "\211\304\305\3068)	\"+\307!\n\203\"\310\n\"\211\202%\311!*\207" [tag attribute fname mem :members plist-get 2 semantic-tag-file-name semanticdb-typecache-apply-filename copy-sequence] 4 (#$ . 7192)])
(put 'semanticdb-typecache-safe-tag-members 'byte-optimizer 'byte-compile-inline-expand)
#@100 Make the tag list TAGS found in TABLE safe for the typecache.
Adds a filename and copies the tags.
(defalias 'semanticdb-typecache-safe-tag-list #[(tags table) "\302\303!	\"\207" [table tags semanticdb-typecache-apply-filename semanticdb-full-filename] 3 (#$ . 7620)])
(put 'semanticdb-typecache-safe-tag-list 'byte-optimizer 'byte-compile-inline-expand)
#@130 Create a new namespace tag with NAME and a set of MEMBERS.
The new tag will be a faux tag, used as a placeholder in a typecache.
(defalias 'semanticdb-typecache-faux-namespace #[(name members) "\306	\307\211\310\311\304\312\f\313	\314@\315A\n&\f-\211\316
\317\320#\210)
)\207" [name members attributes parents type tag "namespace" nil apply semantic-tag :type :members :superclasses :interfaces semantic--tag-put-property :faux-flag t] 14 (#$ . 7983)])
#@77 Merge into CACHE1 and CACHE2 together.  The Caches will be merged in place.
(defalias 'semanticdb-typecache-merge-streams #[(cache1 cache2) "\204	\203A\204	\203\204 	A\204 \206A	\207\306\307!\210\310	\244!\311\211\211\211\211\203>
@@\203R\f\211@)\211@)\230\204Y\f
B\2025\f\211\312\313\3148)\"+\315\n\"\204\204\316!\204\204\316\f!\2031\f\302\211\211A@)*=\203\n\317\230\203
\320\211@)\321\211\211\322\313\3148)\"+\323!\203\332\324\"\211\202\336\325!+\f\211\211\322\313\3148)\"+\323!\203\324\"\211\202\325!+\"\"\240\210\2025\326\f!\2045\326!\2035
\f\240\210\2025\f
BA\211\2047
\237-\207" [cache1 cache2 type prev next ans require semantic/sort semantic-sort-tags-by-name-then-type-increasing nil :type plist-get 2 semantic-tag-of-type-p semantic-tag-faux-p "namespace" semanticdb-typecache-faux-namespace semanticdb-typecache-merge-streams :members semantic-tag-file-name semanticdb-typecache-apply-filename copy-sequence semantic-tag-prototype-p S tag attribute class fname mem] 9 (#$ . 8453)])
#@126 Expand TAG from fully qualified names.
If TAG has fully qualified names, expand it to a series of nested
namespaces instead.
(defalias 'semanticdb-expand-nested-tag #[(tag) "\305\211\306\307\310!\306\204\"\211\262\204\"	\262\n\205 \311\n\"\262\203M\211\204M\302N\203<\311\302N\"\211\262\204\"\211\312N\206F\211\313N\262\262\202\"\266\203\211\262\205a\211\203_N\205aJ\266\203\206\326\211\211\314N\262\205\326\211\211\314N\262\306\307\310!\306\204\225\211\262\204\225	\262\n\205\223\311\n\"\262\203\300\211\204\300\302N\203\257\311\302N\"\211\262\204\225\211\312N\206\271\211\313N\262\262\202\225\266\203\211\262\205\324\211\203\322N\205\324J\266\203\262\211\203\343\f!\202\344\f)\207" [mode-local-active-mode major-mode mode-local-symbol-table #1=#:override tag semanticdb-expand-nested-tag nil override-flag symbol-name intern-soft mode-local-parent derived-mode-parent mode-local--overload-obsolete] 13 (#$ . 9607)])
(byte-code "\300\301\302\303#\210\304\305\306\307\306\310%\210\304\305\306\311\306\312%\210\304\313\306\314\306\315%\210\304\313\306\316\306\317%\207" [put semanticdb-expand-nested-tag mode-local-overload t cl-generic-define-method semanticdb-typecache-file-tags nil ((table semanticdb-abstract-table)) #[(table) "\300\207" [nil] 1 "No tags available from non-file based tables."] ((table semanticdb-table)) #[(table) "\306!\307	\310\"\204m\311!\312\211\203-@\211A@)\313=\203&@\nBA\211\204\n\237*\312\211\203l\314\315!\"*\211\312\211\203b@\316!
BA\211\204M*\317	\310\320
\312\"#\210*\307	\310\")\207" [table cache result tags tag exptags semanticdb-get-typecache eieio-oref filestream semantic-something-to-tag-table nil type semanticdb-typecache-apply-filename semanticdb-full-filename semanticdb-expand-nested-tag eieio-oset semanticdb-typecache-merge-streams T --dolist-tail--] 7 "Update the typecache for TABLE, and return the file-tags.\nFile-tags are those that belong to this file only, and excludes\nall included files."] semanticdb-typecache-include-tags ((table semanticdb-abstract-table)) #[(table) "\300\207" [nil] 1 "No tags available from non-file based tables."] ((table semanticdb-table)) #[(table) "\306!\307	\310\"\204?\311\312\"\312\211\312\211\2037
@\211\2030\f=\2040\313\n\314\315\f!!\"
A\211\204*\316	\310\n#\210*\307	\310\")\207" [table cache incstream incpath i --dolist-tail-- semanticdb-get-typecache eieio-oref includestream semanticdb-find-translate-path nil semanticdb-typecache-merge-streams copy-sequence semanticdb-typecache-file-tags eieio-oset] 6 "Update the typecache for TABLE, and return the merged types from the include tags.\nInclude-tags are the tags brought in via includes, all merged together into\na master list."]] 6)
#@304 Search the typecache for TYPE in PATH.
If type is a string, split the string, and search for the parts.
If type is a list, treat the type as a pre-split string.
PATH can be nil for the current buffer, or a semanticdb table.
FIND-FILE-MATCH is non-nil to force all found tags to be loaded into a buffer.
(defalias 'semanticdb-typecache-find #[(type &optional path find-file-match) "\306\211\307\310\311!\307\204\"\211\262\204\"	\262\n\205 \312\n\"\262\203M\211\204M\302N\203<\312\302N\"\211\262\204\"\211\313N\206F\211\314N\262\262\202\"\266\203\211\262\205a\211\203_N\205aJ\266\203\206\326\211\211\315N\262\205\326\211\211\315N\262\307\310\311!\307\204\225\211\262\204\225	\262\n\205\223\312\n\"\262\203\300\211\204\300\302N\203\257\312\302N\"\211\262\204\225\211\313N\206\271\211\314N\262\262\202\225\266\203\211\262\205\324\211\203\322N\205\324J\266\203\262\211\203\346\f
#\202\354\316\f
#)\207" [mode-local-active-mode major-mode mode-local-symbol-table #1=#:override type path semanticdb-typecache-find nil override-flag symbol-name intern-soft mode-local-parent derived-mode-parent mode-local--overload-obsolete semanticdb-typecache-find-default find-file-match] 13 (#$ . 12431)])
(put 'semanticdb-typecache-find 'mode-local-overload t)
#@237 Default implementation of `semanticdb-typecache-find'.
TYPE is the datatype to find.
PATH is the search path, which should be one table object.
If FIND-FILE-MATCH is non-nil, then force the file belonging to the
found tag to be loaded.
(defalias 'semanticdb-typecache-find-default #[(type &optional path find-file-match) "\305\306!\205\205\212\307	\206\n\f#)\207" [semanticdb-current-database path semanticdb-current-table type find-file-match featurep semantic/db semanticdb-typecache-find-method] 4 (#$ . 13759)])
#@149 Find the tag with NAME in TABLE, which is from a typecache.
If more than one tag has NAME in TABLE, we will prefer the tag that
is of class `type'.
(defalias 'semanticdb-typecache-find-by-name-helper #[(name table) "\306\n!\307\211\203$
\f@\211\n@)\230\203\f@B\fA\211\204\f\237+\310\307\"\f\306\f!\307\211\203T\f@\211\nA@)\311=\203M\f@B\fA\211\204;\237*\211
\242\206a\f\242+\207" [semantic-case-fold case-fold-search table result tags name semantic-something-to-tag-table nil semanticdb-typecache-merge-streams type tag names nmerge types] 4 (#$ . 14290)])
(byte-code "\300\301\302\303\302\304%\210\300\305\302\306\302\307%\207" [cl-generic-define-method semanticdb-typecache-find-method nil ((table semanticdb-abstract-table) type find-file-match) #[(table type find-file-match) ";\203	\306!;\203C\307	!\310	!\311\211\311\211\312\311\211\311\211\313@\n\"\313@\"
\203\\\203\\\314
CC\"\313@\"\202d
\206b\203\347\203\347\f\203\225\315@\f\"A\203\225\300 \211!\211!A@) *=\204\225\311\316!\211B\317!\211\203\265;\203\265\204\300\311\202\331\211!\320\"!\321!!\322!8)\"\"+\311A\211\204h\206\356??\205.#\203\203\323!\210\202\203\324\311#\203,\203,\325\326!\210\327\330A!\"\202..\207" [type table file inc stream f-ans semantic-analyze-split-name semanticdb-typecache-file-tags semanticdb-typecache-include-tags nil t semantic-find-first-tag-by-name semanticdb-typecache-merge-streams semanticdb-typecache-find-by-name-helper semantic-tag-resolve-proxy semantic-tag-file-name :members plist-get 2 find-file-noselect semantic-tag-copy require semantic/scope semantic-scope-tag-clone-with-scope reverse i-ans ans notdone lastfile thisfile lastans calculated-scope class tag attribute find-file-match] 5 "Search the typecache in TABLE for the datatype TYPE.\nIf type is a string, split the string, and search for the parts.\nIf type is a list, treat the type as a pre-split string.\nIf FIND-FILE-MATCH is non-nil, then force the file belonging to the\nfound tag to be loaded."] semanticdb-typecache-for-database ((db semanticdb-project-database) &optional mode) #[(db &optional mode) "\206	\306\n!\307\310\n!\307\211\203:@
\311\301\"=\2031\312\313\314!!\"A\211\204*\315\f\303#\210\f+\207" [mode major-mode db stream cache lmode semanticdb-get-typecache nil semanticdb-get-database-tables eieio-oref semanticdb-typecache-merge-streams copy-sequence semanticdb-typecache-file-tags eieio-oset table --dolist-tail--] 6 "Return the typecache for the project database DB.\nIf there isn't one, create it.\n"]] 6)
#@35 Refresh the typecache for BUFFER.
(defalias 'semanticdb-typecache-refresh-for-buffer #[(buffer) "rq\210	\304\n!\305\n!\210\306\n!\210+\207" [buffer semanticdb-current-table tab tc semanticdb-get-typecache semanticdb-typecache-file-tags semanticdb-typecache-include-tags] 2 (#$ . 17008)])
#@56 Flush all typecaches referenced by the current buffer.
(defalias 'semanticdb-typecache-complete-flush #[nil "\303\304\211\"\211\304\211\2050\n@\3051\306	\307\304#0\202!\210\202\"\210\310\311	!!\210\nA\211\204
\304+\207" [path P --dolist-tail-- semanticdb-find-translate-path nil (error) eieio-oset pointmax semantic-reset semanticdb-get-typecache] 5 (#$ . 17306) nil])
#@44 Dump the typecache for the current buffer.
(defalias 'semanticdb-typecache-dump #[nil "\303\304!\210\305 \306p!\305 \307\310!\210\311\312\n\313\314\n\"!*\"\210\315	\316\317#+\207" [start tc end require data-debug current-time semanticdb-typecache-refresh-for-buffer data-debug-new-buffer "*TypeCache ADEBUG*" message "Calculating Cache took %.2f seconds." float-time time-subtract data-debug-insert-thing "]" ""] 6 (#$ . 17692) nil])
#@55 Dump the typecache for the current buffer's database.
(defalias 'semanticdb-db-typecache-dump #[nil "\306\307!\210\310	!\311\n\312\313#\314 \315\316	\317\"!\314 \320\321!\210\322\323\f\324\325\f\"!*\"\210\326
\327\330#.\207" [semanticdb-current-table tab idx junk start tc require data-debug semanticdb-get-table-index eieio-oset type-cache nil current-time semanticdb-typecache-for-database eieio-oref parent-db data-debug-new-buffer "*TypeCache ADEBUG*" message "Calculating Cache took %.2f seconds." float-time time-subtract data-debug-insert-thing "]" "" end] 6 (#$ . 18139) nil])
(provide 'semantic/db-typecache)