;ELC   
;;; Compiled
;;; in Emacs version 29.4
;;; with all optimizations.



(byte-code "\300\301!\210\300\302!\210\300\303!\210\300\304!\210\300\305!\210\300\306!\210\307\310\311\312!\"\210\307\313\314\312!\"\210\307\315\313\"\210\316\315\317\320#\210\321\312\322\313#\323\312\324\325\326$\207" [require semantic eieio cl-generic eieio-base srecode/table srecode/dictionary defalias srecode-template-p eieio-make-class-predicate srecode-template srecode-template--eieio-childp eieio-make-child-predicate srecode-template-child-p make-obsolete "use (cl-typep ... 'srecode-template) instead" "25.1" define-symbol-prop cl-deftype-satisfies eieio-defclass-internal (eieio-named) ((context :initarg :context :initform nil :documentation "Context this template belongs to.") (args :initarg :args :documentation "List of arguments that this template requires.") (code :initarg :code :documentation "Compiled text from the template.") (dictionary :initarg :dictionary :type (or null srecode-dictionary) :documentation "List of section dictionaries.\nThe compiled template can contain lists of section dictionaries,\nor values that are expected to be passed down into different\nsection macros.  The template section dictionaries are merged in with\nany incoming dictionaries values.") (binding :initarg :binding :documentation "Preferred keybinding for this template in `srecode-minor-mode-map'.") (active :allocation :class :initform nil :documentation "During template insertion, this is the stack of active templates.\nThe top-most template is the `active' template.  Use the accessor methods\nfor push, pop, and peek for the active template.") (table :initarg :table :documentation "The table this template lives in.")) (:documentation "Class defines storage for semantic recoder templates.")] 6)#@73 Create a new object of class type `srecode-template'.

(fn &rest SLOTS)
(defalias 'srecode-template #[128 "\300\301\302#\207" [apply make-instance srecode-template] 5 (#$ . 1800)])
(byte-code "\300\301\302\303#\300\207" [function-put srecode-template compiler-macro srecode-template--anon-cmacro] 4)#@26 

(fn WHOLE &rest SLOTS)
(defalias 'srecode-template--anon-cmacro #[385 "\211@;\204 \207\300\301\302@@#@\303@DABB\304\211@%\207" [macroexp-warn-and-return format "Obsolete name arg %S to constructor %S" identity nil] 8 (#$ . 2106)])#@120 Flush the active template storage.
Useful if something goes wrong in SRecode, and the active template
stack is broken.
(defalias 'srecode-flush-active-templates #[0 "\300\301\302\"\203 \303\304\305\300\301\302\"G\"!\205 \306\301\302\307#\207\310\311!\207" [eieio-oref-default srecode-template active y-or-n-p format "%d active templates.  Flush? " eieio-oset-default nil message "No active templates to flush."] 6 (#$ . 2353) nil])
(byte-code "\300\301\302\303!\"\210\300\304\305\303!\"\210\300\306\304\"\210\307\306\310\311#\210\312\303\313\304#\314\303\315\316\317$\207" [defalias srecode-template-inserter-p eieio-make-class-predicate srecode-template-inserter srecode-template-inserter--eieio-childp eieio-make-child-predicate srecode-template-inserter-child-p make-obsolete "use (cl-typep ... 'srecode-template-inserter) instead" "25.1" define-symbol-prop cl-deftype-satisfies eieio-defclass-internal (eieio-named) ((secondname :initarg :secondname :type (or null string) :documentation "If there is a colon in the inserter's name, it represents\nadditional static argument data.") (key :initform nil :allocation :class :documentation "The character code used to identify inserters of this style.\nAll children of this class should specify `key' slot with appropriate\n:initform value.")) (:documentation "This represents an item to be inserted via a template macro.\nPlain text strings are not handled via this baseclass." :abstract t)] 6)#@83 You cannot create a new object of type `srecode-template-inserter'.

(fn &rest _)
(defalias 'srecode-template-inserter #[128 "\300\301!\207" [error "Class srecode-template-inserter is abstract"] 3 (#$ . 3806)])
(byte-code "\300\301\302\303\302\304%\210\300\305\302\306\302\307%\210\300\310\302\311\302\312%\210\313\314\315\316!\"\210\313\317\320\316!\"\210\313\321\317\"\210\322\321\323\324#\210\325\316\326\317#\327\316\302\330\331$\207" [cl-generic-define-method srecode-parse-input nil ((_ins srecode-template-inserter) _tag input _STATE) #[1028 "\207" [] 5 "For the template inserter INS, parse INPUT.\nShorten input only by the amount needed.\nReturn the remains of INPUT.\nSTATE is the current compilation state.\n\n(fn INS TAG INPUT STATE)"] srecode-match-end ((_ins srecode-template-inserter) _name) #[514 "\300\207" [nil] 3 "For the template inserter INS, do I end a section called NAME?\n\n(fn INS NAME)"] srecode-inserter-apply-state ((_ins srecode-template-inserter) _STATE) #[514 "\300\207" [nil] 3 "For the template inserter INS, apply information from STATE.\n\n(fn INS STATE)"] defalias srecode-compile-state-p eieio-make-class-predicate srecode-compile-state srecode-compile-state--eieio-childp eieio-make-child-predicate srecode-compile-state-child-p make-obsolete "use (cl-typep ... 'srecode-compile-state) instead" "25.1" define-symbol-prop cl-deftype-satisfies eieio-defclass-internal ((context :initform "declaration" :documentation "The active context.") (prompts :initform nil :documentation "The active prompts.") (escape_start :initform "{{" :documentation "The starting escape sequence.") (escape_end :initform "}}" :documentation "The ending escape sequence.")) (:documentation "Current state of the compile.")] 6)#@78 Create a new object of class type `srecode-compile-state'.

(fn &rest SLOTS)
(defalias 'srecode-compile-state #[128 "\300\301\302#\207" [apply make-instance srecode-compile-state] 5 (#$ . 5555)])
(byte-code "\300\301\302\303#\300\207" [function-put srecode-compile-state compiler-macro srecode-compile-state--anon-cmacro] 4)#@26 

(fn WHOLE &rest SLOTS)
(defalias 'srecode-compile-state--anon-cmacro #[385 "\211@;\204 \207\300\301\302@@#@\303@DABB\304\211@%\207" [macroexp-warn-and-return format "Obsolete name arg %S to constructor %S" identity nil] 8 (#$ . 5886)])
(cl-generic-define-method 'srecode-compile-add-prompt nil '((state srecode-compile-state) prompttag) nil #[514 "\300\211@\262\301\302\"\"\301\302\"\2035 \301\302\"\303\262\211\2034 \211@@@\230\204- \211@B\262\211A\262\202 \210\304\302B#\207" [assoc slot-value prompts nil eieio-oset] 9 "Add PROMPTTAG to the current list of prompts.\n\n(fn STATE PROMPTTAG)"])#@56 Compile the templates from the file FNAME.

(fn FNAME)
(defalias 'srecode-compile-file #[257 "\301!\212\211\204 \302!q\210\202 \211q\210\204 \303 \210\304 \210\211?\205% \305p!)\207" [semantic-new-buffer-fcn-was-run get-file-buffer semantic-find-file-noselect semantic-new-buffer-fcn srecode-compile-templates kill-buffer] 4 (#$ . 6512)])#@69 Compile a semantic recode template file into a mode-local variable.
(defalias 'srecode-compile-templates #[0 "\204 \301\302!\210\303\304!\210\305\306!\203 \307\310\311\312 !\"\210\313 \314\211\211\315\311\312 !!\314\211\211\211\211\211\n\203)\n@\262\n	\211A@\262\262	\316\267\202\317\320\f\211@\262#\210\202!\321\"\210\202!	\211@\262\n\211\322\323\3248\262\"\266\203\211@G\325U\203\372 \211;\203\372 \326\230\203\221 \327!\262	\266\202!\330\230\203\242 \317\n\331#\266\202!\332\230\203\263 \317\n\333#\266\202!\334\230\203\303 \335!\262\266\202!\336\230\203\323 \335!\262\266\202!\337\230\203\343 \335!\262\266\202!\340\230\203\360 \262\266\202!BB\266\204\202!\303\341!\210\342\343#BB\266\205\202!\344\n\"B\262\202!\301\345\n\"\210\nA\262\202+ \305\306!\2038\307\346	G#\210\204@\301\347!\210\204\225\350\351\312 !!\350\351\352\353!!!\354=\203\\\355\202]\356\357\360P\"\203n\361\\\262\202\200;\203{\362\\\262\202\200\363\\\262\305\306!\203\220\307\364\311\312 !#\210\266\202\244\305\306!\203\244\307\365\311\312 !#\210\366&\207" [semantic-new-buffer-fcn-was-run error "You have to activate semantic-mode to compile SRecode templates" require srecode/insert called-interactively-p interactive message "Compiling template %s..." file-name-nondirectory buffer-file-name semantic-fetch-tags nil srecode-compile-state #s(hash-table size 4 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (context 69 prompt 84 variable 94 function 269)) eieio-oset context srecode-compile-add-prompt :default-value plist-get 2 1 "mode" intern "escape_start" escape_start "escape_end" escape_end "application" read "framework" "priority" "project" srecode/dictionary srecode-dictionary-compound-variable :value srecode-compile-one-template-tag "Unknown TAG class %s" "%d templates compiled for %s" "You must specify a MODE for your templates" expand-file-name file-name-directory locate-library "srecode" default 0 10 string-match "^" 30 50 80 "Templates %s has estimated priority of %d" "Compiling templates %s priority %d... done!" srecode-compile-template-table] 19 (#$ . 6862) nil])#@158 Compile a template tag TAG into a srecode template object.
STATE is the current compile state as an object of class
`srecode-compile-state'.

(fn TAG STATE)
(defalias 'srecode-compile-one-template-tag #[514 "\300\301\"\302\211\303\304\3058\262\"\266\202#A\211\306\304\3058\262\"\266\203\307\304\3058\262\"\266\202\310\304\3058\262\"\266\202\211\205G \311\"\312\211\203\203 \211@\313!\211B\262\211\314=\203{ \315\316\317\320\321\312\322\323&C\n\316\317\320\321\312\322\324&C#\262	\210A\266\202\202I \210\325	\211@\262\326	\327\237\330\307\f\303&\207" [eieio-oref context srecode-compile-split-code :code plist-get 2 :arguments :binding :dictionaries srecode-create-dictionaries-from-tags nil intern :blank append srecode-compile-inserter "BLANK" "" :secondname :where begin end srecode-template :context :args :dictionary] 23 (#$ . 9075)])#@132 Examine COMP to decide if the upcoming newline should be hard.
It is hard if the previous inserter is a newline object.

(fn COMP)
(defalias 'srecode-compile-do-hard-newline-p #[257 "\211\203 \211@;\203 \211A\262\202  \211?\206 \300@!\207" [srecord-compile-inserter-newline-p] 3 (#$ . 9968)])
(byte-code "\300\301\302\301\303\304#\305#\210\306\301\304\303\304\307%\207" [defalias srecord-compile-inserter-newline-p cl-generic-define (_obj) nil "Non-nil if OBJ is a newline inserter object.\n\n(fn OBJ)" cl-generic-define-method #[257 "\300\207" [nil] 2 "\n\n(fn OBJ)"]] 6)#@408 Split the code for TAG into something templatable.
STR is the string of code from TAG to split.
STATE is the current compile state.
ESCAPE_START and ESCAPE_END are regexps that indicate the beginning
escape character, and end escape character pattern for expandable
macro names.
Optional argument END-NAME specifies the name of a token upon which
parsing should stop.

(fn TAG STR STATE &optional END-NAME)
(defalias 'srecode-compile-split-code #[1027 "\300\211\301\302\303\304\"!P\302\303\305\"!\203\371 \204\371 \306\"\203\344 \307\211\224O\307\224\307\225O\307\225\306	#\300\211\211G\307V\203H \nB\262\n\310\230\203w \311\312\310\313\300\314\315!&\f\300O\262\fG\307V\203r \211B\262\266\202 \203\200 \307\224\202\211 \316\317\211@\262\"\262\307\225\262\204\240 \316\320\211@\262\"\210\202\260 X\203\260 \316\321\211@\262\"\210O\262\300O\262\f\322\"\323\"\203\316 \211\262\f\211B\262\324$\262\266\202 \203\356 \316\325\"\210B\262\300\262\202 \237B\207" [nil "\n\\|" regexp-quote eieio-oref escape_start escape_end string-match 0 "\n" srecode-compile-inserter "INDENT" :secondname :hard srecode-compile-do-hard-newline-p error "Could not find end escape for %s" "No matching escape end for %s" "Stray end escape for %s" srecode-compile-parse-inserter srecode-match-end srecode-parse-input "Unmatched section end %s"] 25 (#$ . 10552)])#@91 Parse the inserter TXT with the current STATE.
Return an inserter object.

(fn TXT STATE)
(defalias 'srecode-compile-parse-inserter #[514 "\300H\301\302W\204 \303V\203% \304W\204 \305V\203% \306\301O\262\202+ \262\301\262\307\310\"\211\203; \300\211\224O\202< \205E \300\225\301O\311\312%\207" [0 nil 65 90 97 122 1 string-match ":" srecode-compile-inserter :secondname] 13 (#$ . 11980)])#@295 Create an srecode inserter object for some macro NAME.
KEY indicates a single character key representing a type
of inserter to create.
STATE is the current compile state.
PROPS are additional properties that might need to be passed
to the inserter constructor.

(fn NAME KEY STATE &rest PROPS)
(defalias 'srecode-compile-inserter #[899 "\204\f \300\301\302$\207\303\304!\305\211\204I \203I \306\303@!\"\262\307@!\204B \310@\311\"\232\203B \300\301@$\262\312\"\210A\262\202 \211\204S \313\314\"\210\207" [apply make-instance srecode-template-inserter-variable eieio-class-children srecode-template-inserter nil append class-abstract-p eieio-oref-default key srecode-inserter-apply-state error "SRECODE: Unknown macro code %S"] 11 (#$ . 12398)])#@532 Compile a list of TEMPLATES into an semantic recode table.
The table being compiled is for MODE, or the string "default".
PRIORITY is a numerical value that indicates this tables location
in an ordered search.
APPLICATION is the name of the application these templates belong to.
FRAMEWORK is the name of the framework these templates belong to.
PROJECT is a directory name which these templates scope to.
A list of defined variables VARS provides a variable table.

(fn TEMPLATES MODE PRIORITY APPLICATION FRAMEWORK PROJECT VARS)
(defalias 'srecode-compile-template-table #[1799 "\300\301\302\303\nG$\300\301\302\303\304$\211\203R \305@\306\"\305@\307\"\211\310Q\311@#\210\312\"\211\204B \300\301\302\303\313$\262\311#\210\311@#\266A\266\204\202 ;\203\\ \314!\262\315	\316 \317\237\320\321	\322\323\324\325\326\327&\305\330\"\211\205\225 \331@\332#\210\211A\262\202\203 \207" [make-hash-table :test equal :size 10 eieio-oref object-name context ":" puthash gethash 20 expand-file-name srecode-mode-table-new buffer-file-name :templates :namehash :contexthash :variables :major-mode :priority :application :framework :project templates eieio-oset table] 31 (#$ . 13172)])
(cl-generic-define-method 'srecode-dump nil '((tmp srecode-template)) nil #[257 "\300\301!\210\300\302!!\210\300\303!\210\300\304\305\"!\210\300\306!\210\304\307\"\203/ \300\310!\210\311\304\307\"!\210\300\306!\210\304\312\"\203B \300\313!\210\314\304\312\"\315\"\210\316\317\"\203_ \304\317\"\203_ \300\320!\210\311\304\317\"!\210\300\306!\210\300\321!\210\322\304\323\"\324\"\210\300\325!\207" [princ "== Template \"" eieio-object-name-string "\" in context " eieio-oref context "\n" args "   Arguments: " prin1 dictionary "   Section Dictionaries:\n" srecode-dump 4 slot-boundp binding "   Binding: " "   Compiled Codes:\n" srecode-dump-code-list code "    " "\n\n"] 5 "Dump the contents of the SRecode template tmp.\n\n(fn TMP)"])#@141 Dump the CODE from a template code list to standard output.
Argument INDENT specifies the indentation level for the list.

(fn CODE INDENT)
(defalias 'srecode-dump-code-list #[514 "\300\205N \301!\210\302!\210\301\303!\210@;\203 \302@!\210\202; @\304!\262\2032 \305@\"\210\202; \301\306!\210\302@!\210A\262\211T\262\203 \301\307!\210\202 \207" [1 princ prin1 ") " srecode-template-inserter--eieio-childp srecode-dump "Unknown Code: " "\n"] 6 (#$ . 15146)])
(byte-code "\300\301\302\303\302\304%\210\305\306!\207" [cl-generic-define-method srecode-dump nil ((ins srecode-template-inserter) _indent) #[514 "\300\301!\210\300\302!!\210\303\304\"\203 \300\305!\210\300\303\304\"!\210\300\306!\210\307\310!!\311\312\"\211\2035 \313\225\314O\2026 \300!\266\300\315!\207" [princ "INS: \"" eieio-object-name-string eieio-oref secondname "\" : \"" "\" type \"" symbol-name eieio-object-class string-match "srecode-template-inserter-" 0 nil "\""] 7 "Dump the state of the SRecode template inserter INS.\n\n(fn INS INDENT)"] provide srecode/compile] 6)
