;ELC ;;; Compiled ;;; in Emacs version 27.1 ;;; 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 @\315 A\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& @\nB A\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)