%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /usr/local/share/emacs/27.2/lisp/progmodes/
Upload File :
Create Path :
Current File : //usr/local/share/emacs/27.2/lisp/progmodes/hideif.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\303\304\305\306\307\310%\210\311\312\313\314\315DD\316\317\320%\210\311\321\313\314\322DD\323\317\320%\210\311\324\313\314\325DD\326\317\320%\210\311\327\313\314\330DD\331\317\320\332\333&\210\334\327\335\336\332\333%\210\311\337\313\314\340DD\341\317\342\332\343&\210\311\344\313\314\345DD\346\317\320\332\343&\210\311\347\313\314\350DD\351\317\352\332\343&\207" [require cc-mode cl-lib custom-declare-group hide-ifdef nil "Hide selected code within `ifdef'." :group c custom-declare-variable hide-ifdef-initially funcall function #[0 "\300\207" [nil] 1] "Non-nil means call `hide-ifdefs' when Hide-Ifdef mode is first activated." :type boolean hide-ifdef-read-only #[0 "\300\207" [nil] 1] "Set to non-nil if you want buffer to be read-only while hiding text." hide-ifdef-lines #[0 "\300\207" [nil] 1] "Non-nil means hide the #ifX, #else, and #endif lines." hide-ifdef-shadow #[0 "\300\207" [nil] 1] "Non-nil means shadow text instead of hiding it." :version "23.1" custom-declare-face ((t (:inherit shadow))) "Face for shadowing ifdef blocks." hide-ifdef-exclude-define-regexp #[0 "\300\207" [nil] 1] "Ignore #define names if those names match this exclusion pattern." (choice (const nil) string) "25.1" hide-ifdef-expand-reinclusion-protection #[0 "\300\207" [t] 1] "Non-nil means don't hide an entire header file enclosed by #ifndef...#endif.\nMost C/C++ headers are usually wrapped with ifdefs to prevent re-inclusion:\n\n  ----- beginning of file -----\n  #ifndef _XXX_HEADER_FILE_INCLUDED_\n  #define _XXX_HEADER_FILE_INCLUDED_\n     xxx\n     xxx\n     xxx...\n  #endif\n  ----- end of file -----\n\nThe first time we visit such a file, _XXX_HEADER_FILE_INCLUDED_ is\nundefined, and so nothing is hidden.  The next time we visit it, everything will\nbe hidden.\n\nThis behavior is generally undesirable.  If this option is non-nil, the outermost\n#if is always visible." hide-ifdef-header-regexp #[0 "\300\207" [#1="\\.h\\(h\\|xx\\|pp\\|\\+\\+\\)?\\'"] 1 #1#] "C/C++ header file name patterns to determine if current buffer is a header.\nEffective only if `hide-ifdef-expand-reinclusion-protection' is t." string] 8)
#@70 Keymap used by `hide-ifdef-mode' under `hide-ifdef-mode-prefix-key'.
(defvar hide-ifdef-mode-submap (byte-code "\300 \301\302\303#\210\301\304\305#\210\301\306\307#\210\301\310\311#\210\301\312\313#\210\301\314\315#\210\301\316\317#\210\301\320\321#\210\301\322\323#\210\301\324\325#\210\301\326\327#\210\301\330\331#\210\332\333\334#\210\332\335\334#\210\211\207" [make-sparse-keymap define-key "d" hide-ifdef-define "u" hide-ifdef-undef "D" hide-ifdef-set-define-alist "U" hide-ifdef-use-define-alist "h" hide-ifdefs "s" show-ifdefs "" hide-ifdef-block "" show-ifdef-block "e" hif-evaluate-macro "C" hif-clear-all-ifdef-defined "" hide-ifdef-toggle-read-only "" hide-ifdef-toggle-shadowing substitute-key-definition read-only-mode hide-ifdef-toggle-outside-read-only toggle-read-only] 5) (#$ . 2576))
(byte-code "\300\301\302\303\304DD\305\306\307\310\311&\207" [custom-declare-variable hide-ifdef-mode-prefix-key funcall function #[0 "\300\207" [#1="@"] 1 #1#] "Prefix key for all Hide-Ifdef mode commands." :type key-sequence :version "27.1"] 8)
#@37 Keymap used with `hide-ifdef-mode'.
(defvar hide-ifdef-mode-map (byte-code "\302 \303	#\210\211\207" [hide-ifdef-mode-prefix-key hide-ifdef-mode-submap make-sparse-keymap define-key] 5) (#$ . 3652))
#@29 Menu for `hide-ifdef-mode'.
(defvar hide-ifdef-mode-menu nil (#$ . 3859))
(easy-menu-do-define 'hide-ifdef-mode-menu hide-ifdef-mode-map "Menu for `hide-ifdef-mode'." '("Hide-Ifdef" ["Hide some ifdefs" hide-ifdefs :help "Hide the contents of some #ifdefs"] ["Show all ifdefs" show-ifdefs :help "Cancel the effects of `hide-ifdef': show the contents of all #ifdefs"] ["Hide ifdef block" hide-ifdef-block :help "Hide the ifdef block (true or false part) enclosing or before the cursor"] ["Show ifdef block" show-ifdef-block :help "Show the ifdef block (true or false part) enclosing or before the cursor"] ["Define a variable..." hide-ifdef-define :help "Define a VAR so that #ifdef VAR would be included"] ["Undefine a variable..." hide-ifdef-undef :help "Undefine a VAR so that #ifdef VAR would not be included"] ["Define an alist..." hide-ifdef-set-define-alist :help "Set the association for NAME to `hide-ifdef-env'"] ["Use an alist..." hide-ifdef-use-define-alist :help "Set `hide-ifdef-env' to the define list specified by NAME"] ["Toggle read only" hide-ifdef-toggle-read-only :style toggle :selected hide-ifdef-read-only :help "Buffer should be read-only while hiding text"] ["Toggle shadowing" hide-ifdef-toggle-shadowing :style toggle :selected hide-ifdef-shadow :help "Text should be shadowed instead of hidden"]))
#@34 Non-nil when text may be hidden.
(defvar hide-ifdef-hiding nil (#$ . 5190))
(byte-code "\301\236\204\n\302B\301\207" [minor-mode-alist hide-ifdef-hiding (hide-ifdef-hiding " Hiding")] 2)
#@51 Syntax table used for tokenizing #if expressions.
(defvar hide-ifdef-syntax-table (byte-code "\301!\302\303\304#\210\302\305\306#\210\302\307\306#\210\211\207" [c-mode-syntax-table copy-syntax-table modify-syntax-entry 95 "w" 38 "." 124] 5) (#$ . 5387))
#@47 An alist of defined symbols and their values.
(defvar hide-ifdef-env nil (#$ . 5651))
#@171 This variable is a backup of the previously cleared `hide-ifdef-env'.
This backup prevents any accidental clearance of `hide-ifdef-env' by
`hif-clear-all-ifdef-defined'.
(defvar hide-ifdef-env-backup nil (#$ . 5744))
#@73 Internal variable.  Saves the value of `buffer-read-only' while hiding.
(defvar hif-outside-read-only nil (#$ . 5967))
#@99 Non-nil if Hide-Ifdef mode is enabled.
Use the command `hide-ifdef-mode' to change this variable.
(defvar hide-ifdef-mode nil (#$ . 6092))
(make-variable-buffer-local 'hide-ifdef-mode)
#@1846 Toggle features to hide/show #ifdef blocks (Hide-Ifdef mode).

If called interactively, enable Hide-Ifdef mode if ARG is positive,
and disable it if ARG is zero or negative.  If called from Lisp, also
enable the mode if ARG is omitted or nil, and toggle it if ARG is
`toggle'; disable the mode otherwise.

Hide-Ifdef mode is a buffer-local minor mode for use with C and
C-like major modes.  When enabled, code within #ifdef constructs
that the C preprocessor would eliminate may be hidden from view.
Several variables affect how the hiding is done:

`hide-ifdef-env'
        An association list of defined and undefined symbols for the
        current project.  Initially, the global value of `hide-ifdef-env'
        is used.  This variable was a buffer-local variable, which limits
        hideif to parse only one C/C++ file at a time.  We've extended
        hideif to support parsing a C/C++ project containing multiple C/C++
        source files opened simultaneously in different buffers.  Therefore
        `hide-ifdef-env' can no longer be buffer local but must be global.

`hide-ifdef-define-alist'
        An association list of defined symbol lists.
        Use `hide-ifdef-set-define-alist' to save the current `hide-ifdef-env'
        and `hide-ifdef-use-define-alist' to set the current `hide-ifdef-env'
        from one of the lists in `hide-ifdef-define-alist'.

`hide-ifdef-lines'
        Set to non-nil to not show #if, #ifdef, #ifndef, #else, and
        #endif lines when hiding.

`hide-ifdef-initially'
        Indicates whether `hide-ifdefs' should be called when Hide-Ifdef mode
        is activated.

`hide-ifdef-read-only'
        Set to non-nil if you want to make buffers read only while hiding.
        After `show-ifdefs', read-only status is restored to previous value.

\{hide-ifdef-mode-map}

(fn &optional ARG)
(defalias 'hide-ifdef-mode #[256 "\306 \307=\203
?\202\310!\311V\211\203T\312\301!\313\302!\210\312\302!\313\303!\210\312\303!\313\305!\210\f\313\314!\210\315\f\316\317\320\321\315$\210\322\323!\210%\203N\324 \210\202c\325 \210\202c\326\314!\210\327\330!\210\203c\325 \210\331\332\203m\333\202n\334\"\210\335\336!\203\222\306 \203\202\211\306 \232\203\222\337\340\341\203\215\342\202\216\343#\266\210\344 \210\207" [hide-ifdef-mode hide-ifdef-env hide-ifdef-expand-reinclusion-protection hide-ifdef-hiding buffer-read-only hif-outside-read-only current-message toggle prefix-numeric-value 0 default-value make-local-variable line-move-ignore-invisible t add-hook change-major-mode-hook #[0 "\300\301!\207" [hide-ifdef-mode -1] 2] nil add-to-invisibility-spec (hide-ifdef . t) hide-ifdefs show-ifdefs kill-local-variable remove-from-invisibility-spec (hide-ifdef . t) run-hooks hide-ifdef-mode-hook hide-ifdef-mode-on-hook hide-ifdef-mode-off-hook called-interactively-p any " in current buffer" message "Hide-Ifdef mode %sabled%s" "en" "dis" force-mode-line-update hide-ifdef-initially] 8 (#$ . 6285) (byte-code "\206\301C\207" [current-prefix-arg toggle] 1)])
(defvar hide-ifdef-mode-hook nil)
(byte-code "\301\302N\204\f\303\301\302\304#\210\305\306\307\310\300!\205\311\211%\207" [hide-ifdef-mode-map hide-ifdef-mode-hook variable-documentation put "Hook run after entering or leaving `hide-ifdef-mode'.\nNo problems result if this variable is not bound.\n`add-hook' automatically binds it.  (This is true for all hook variables.)" add-minor-mode hide-ifdef-mode " Ifdef" boundp nil] 6)
#@154 Clears all symbols defined in `hide-ifdef-env'.
It will backup this variable to `hide-ifdef-env-backup' before clearing to
prevent accidental clearance.
(defalias 'hif-clear-all-ifdef-defined #[0 "\302\303!\205\304\211\207" [hide-ifdef-env hide-ifdef-env-backup y-or-n-p "Clear all #defined symbols? " nil] 2 (#$ . 9765) nil])
#@45 Show all of the text in the current buffer.
(defalias 'hif-show-all #[0 "\300ed\"\207" [hif-show-ifdef-region] 3 (#$ . 10103) nil])
(defalias 'hif-after-revert-function #[0 "\205	\205\302\303!\207" [hide-ifdef-mode hide-ifdef-hiding hide-ifdefs t] 2])
(add-hook 'after-revert-hook 'hif-after-revert-function)
(defalias 'hif-end-of-line #[0 "\300\210\301\302\303\300x\"\302U\205\304\210\202\207" [nil logand 1 "\\\\" 2] 4])
#@177 This function merges nearby ifdef regions to form a bigger overlay.
The region is defined by START and END.  This will decrease the number of
overlays created.

(fn START END)
(defalias 'hif-merge-ifdef-region #[514 "\214~\210\300\301Ze]Se]\"\300Td^\301\\d^\"\302\211\211\211\211\203P\211@\303\304\"\203I	\305!^\262\306!]\262\307#\210\310\"\210\211\262A\266\202\202\210\211\203\204\211@\303\304\"\203}	\305!^\262\306!]\262\307#\210\310\"\210\211\262A\266\202\202R\210\203\254\203\254\305!\305!^\306!\306!]\311!\210\307#\210\310\"\266\206\261\266\206)\207" [overlays-in 2 nil overlay-get hide-ifdef overlay-start overlay-end move-overlay hif-merge-ifdef-region delete-overlay] 14 (#$ . 10544)])
#@18 

(fn START END)
(defalias 'hide-ifdef-region-internal #[514 "\301\"?\205%\302\"\303\304\305#\210\203\303\306\300#\202#\303\307\304#\262\207" [hide-ifdef-shadow hif-merge-ifdef-region make-overlay overlay-put hide-ifdef t face invisible] 7 (#$ . 11306)])
#@145 START is the start of a #if, #elif, or #else form.  END is the ending part.
Everything including these lines is made invisible.

(fn START END)
(defalias 'hide-ifdef-region #[514 "\212b\210\300 \210`\262\211b\210\300 \210`\262\301\")\207" [hif-end-of-line hide-ifdef-region-internal] 5 (#$ . 11581)])
#@67 Everything between START and END is made visible.

(fn START END)
(defalias 'hif-show-ifdef-region #[514 "\300\"G\301\302\303$\210\211\300\"GU?\207" [overlays-in remove-overlays hide-ifdef t] 8 (#$ . 11893)])
#@140 The function to use to evaluate a form.
The evaluator is given a canonical form and returns t if text under
that form should be displayed.
(defvar hide-ifdef-evaluator 'eval (#$ . 12115))
#@42 ...is by default considered to be false.
(defvar hif-undefined-symbol nil (#$ . 12309))
#@63 Prepend (VAR VALUE) pair to `hide-ifdef-env'.

(fn VAR VALUE)
(defalias 'hif-set-var #[514 "BB\211\207" [hide-ifdef-env] 4 (#$ . 12403)])
#@12 

(fn VAR)
(defalias 'hif-lookup #[257 "\303\300!\203\203\304!\206 \305	\"\211\203\211A\202\n\262\207" [semantic-c-takeover-hideif hide-ifdef-env hif-undefined-symbol boundp semantic-c-hideif-lookup assoc] 4 (#$ . 12551)])
#@12 

(fn VAR)
(defalias 'hif-defined #[257 "\302\300!\203\203\303!\207\304	\"\203\305\207\306\207" [semantic-c-takeover-hideif hide-ifdef-env boundp semantic-c-hideif-defined assoc 1 0] 4 (#$ . 12793)])
(defconst hif-cpp-prefix "\\(^\\|
\\)[ 	]*#[ 	]*")
(defconst hif-ifxdef-regexp (concat hif-cpp-prefix "if\\(n\\)?def"))
(defconst hif-ifndef-regexp (concat hif-cpp-prefix "ifndef"))
(defconst hif-ifx-regexp (concat hif-cpp-prefix "if\\(n?def\\)?[ 	]+"))
(defconst hif-elif-regexp (concat hif-cpp-prefix "elif"))
(defconst hif-else-regexp (concat hif-cpp-prefix "else"))
(defconst hif-endif-regexp (concat hif-cpp-prefix "endif"))
(defconst hif-ifx-else-endif-regexp (concat hif-ifx-regexp #1="\\|" hif-elif-regexp #1# hif-else-regexp #1# hif-endif-regexp))
(defconst hif-macro-expr-prefix-regexp (concat hif-cpp-prefix "\\(if\\(n?def\\)?\\|elif\\|define\\)[ 	]+"))
(defconst hif-white-regexp "[ 	]*")
(defconst hif-define-regexp (concat hif-cpp-prefix "\\(define\\|undef\\)"))
(defconst hif-id-regexp "[[:alpha:]_][[:alnum:]_]*")
(defconst hif-macroref-regexp (concat hif-white-regexp #1="\\(" hif-id-regexp "\\)" hif-white-regexp "\\((" hif-white-regexp #1# hif-id-regexp "\\)?" hif-white-regexp "\\(," hif-white-regexp hif-id-regexp hif-white-regexp "\\)*\\(\\.\\.\\.\\)?" hif-white-regexp ")\\)?"))
(defconst hif-token-alist '(("||" . hif-or) ("&&" . hif-and) ("|" . hif-logior) ("^" . hif-logxor) ("&" . hif-logand) ("<<" . hif-shiftleft) (">>" . hif-shiftright) ("==" . hif-equal) ("=" . hif-assign) ("!=" . hif-notequal) ("##" . hif-token-concat) ("!" . hif-not) ("~" . hif-lognot) ("(" . hif-lparen) (")" . hif-rparen) (">" . hif-greater) ("<" . hif-less) (">=" . hif-greater-equal) ("<=" . hif-less-equal) ("+" . hif-plus) ("-" . hif-minus) ("*" . hif-multiply) ("/" . hif-divide) ("%" . hif-modulo) ("?" . hif-conditional) (":" . hif-colon) ("," . hif-comma) ("#" . hif-stringify) ("..." . hif-etc)))
(defconst hif-valid-token-list (mapcar 'cdr hif-token-alist))
(defconst hif-token-regexp (byte-code "\301\302\303\"!\304P\207" [hif-token-alist regexp-opt mapcar car "\\|0x[[:xdigit:]]+\\.?[[:xdigit:]]*\\|[0-9]+\\.?[0-9]*\\|\\w+"] 4))
(defconst hif-string-literal-regexp "\\(\"\\(?:[^\"\\]\\|\\\\.\\)*\"\\)")
#@93 Like `string-to-number', but it understands non-decimal floats.

(fn STRING &optional BASE)
(defalias 'hif-string-to-number #[513 "\211\203\n\211\300U\203\301\"\207\302\303\304\305$\211A@\211G\306\307U\203%\202(\310_\"\301@P\"\245\207" [10 string-to-number split-string "\\." t "[ 	]+" expt 0 1.0] 9 (#$ . 15028)])
#@78 Separate string between START and END into a list of tokens.

(fn START END)
(defalias 'hif-tokenize #[514 "\305\306\307 p\310\311\312\313\314\"\315\"\316$\216\317	!\210\212b\210\320d!\210`W\203\270\321\322!\2033\316u\210\202\321\n!\203I\323\324\325!!B\262\311\225b\210\202\321!\203\243\326`\311\225\"\311\225b\210\327\f\"A\206\233\211\330\230\203j\331\202\233\332\333\"\203{\334\324\325\"\335\"\206\233\332\336\"\203\211\334\337\"\206\233\332\340\"\203\226\341!\206\233\342!\305B\262\210\202\321\343!\203\257\325u\210\202\344\345\346 \"\210\202*\266\211\237\207" [hif-simple-token-only hide-ifdef-syntax-table hif-string-literal-regexp hif-token-regexp hif-token-alist nil t syntax-table make-byte-code 0 "r\301q\210\302\300!)\207" vconcat vector [set-syntax-table] 2 set-syntax-table forward-comment looking-at "\\\\\n" substring-no-properties match-string 1 buffer-substring-no-properties assoc "defined" hif-defined string-match "0x\\([[:xdigit:]]+\\.?[[:xdigit:]]*\\)" hif-string-to-number 16 "\\`0[0-9]+\\(\\.[0-9]+\\)?\\'" 8 "\\`[1-9][0-9]*\\(\\.[0-9]+\\)?\\'" string-to-number intern "
" error "Bad #if expression: %s" buffer-string] 12 (#$ . 15366)])
#@71 Pop the next token from token-list into the let variable `hif-token'.
(defalias 'hif-nexttoken #[0 "\211A\242\211\207" [hif-token-list hif-token] 2 (#$ . 16578)])
(put 'hif-nexttoken 'byte-optimizer 'byte-compile-inline-expand)
#@11 

(fn ID)
(defalias 'hif-if-valid-identifier-p #[257 "\211\247\206\211;?\207" [] 2 (#$ . 16815)])
(put 'hif-if-valid-identifier-p 'byte-optimizer 'byte-compile-inline-expand)
#@89 "Upgrade" hif-define XXX to `(hif-define XXX)' so it won't be substituted.

(fn TOKENS)
(defalias 'hif-define-operator #[257 "\300\211\211A\262\242\211\262\203r\211\301=\203jA@\262@\302=\203G\211\211\247\206(\211;?\262\203?\3038\304=\203?AAA\262\202b\305\306\"\210\202b@\262A\262\211\211\247\206W\211;?\262\204b\305\306\"\210\301\302\304F\202k\211B\262\202\237\207" [nil hif-defined hif-lparen 2 hif-rparen error "#define followed by non-identifier: %S"] 7 (#$ . 16998)])
(byte-code "\300\301\302\303#\210\304\301\302\305#\207" [defalias hif-flatten flatten-tree nil make-obsolete "27.1"] 4)
#@265 Perform expansion on TOKENS till everything expanded.
Self-reference (directly or indirectly) tokens are not expanded.
EXPAND_LIST is the list of macro names currently being expanded, used for
detecting self-reference.

(fn TOKENS &optional MACRONAME EXPAND_LIST)
(defalias 'hif-expand-token-list #[769 "\3032\260\304\305\306\307!!!\304\211\203B\262\211A\262\242\211\262\203\251>\2030\310\303\"\210>\204@\247\204@;\203D\202\242\311!\211\262\203\241\211<\203\235\211@\312=\203\235\211A@\203\210@\313=\204j\202\242A\304\314\315\316 \"\315\317\"#\n	B\262*\262\202\242\315\3208#\262\321#\262\211\202\242\211\202\242B\262\202\322\237!\266\2040\207" [hif-valid-token-list hif-token-list hif-token self-referencing nil hif-define-operator hif-token-concatenation hif-token-stringification throw hif-lookup hif-define-macro hif-lparen mapcar hif-expand-token-list hif-get-argument-list hif-macro-supply-arguments 2 cl-substitute flatten-tree] 12 (#$ . 17631)])
#@169 Parse the TOKEN-LIST.
Return translated list in prefix form.  MACRONAME is applied when invoking
macros to prevent self-reference.

(fn TOKEN-LIST &optional MACRONAME)
(defalias 'hif-parse-exp #[513 "\302\"\211\211A\242\211\205\303 	\203\304\305	\"\210)\207" [hif-token-list hif-token hif-expand-token-list hif-exprlist error "Error: unexpected token: %s"] 7 (#$ . 18656)])
#@38 Parse an exprlist: expr { `,' expr}.
(defalias 'hif-exprlist #[0 "\302 \303=\203%\211C	\211A\242\302 B\262\303=\204\n\303\237B\262\202&\211\207" [hif-token hif-token-list hif-expr hif-comma] 4 (#$ . 19045)])
#@82 Parse an expression as found in #if.
expr : or-expr | or-expr `?' expr `:' expr.
(defalias 'hif-expr #[0 "\302 \303\304=\2032	\211A\242\305 \262\306=\203*	\211A\242\304\305 F\262\202\307\310\"\210\202\207" [hif-token hif-token-list hif-or-expr nil hif-conditional hif-expr hif-colon error "Error: unexpected token: %s"] 6 (#$ . 19270)])
#@54 Parse an or-expr : and-expr | or-expr `||' and-expr.
(defalias 'hif-or-expr #[0 "\302 \303=\203	\211A\242\303\302 E\262\202\211\207" [hif-token hif-token-list hif-and-expr hif-or] 4 (#$ . 19631)])
#@62 Parse an and-expr : logior-expr | and-expr `&&' logior-expr.
(defalias 'hif-and-expr #[0 "\302 \303=\203	\211A\242\303\302 E\262\202\211\207" [hif-token hif-token-list hif-logior-expr hif-and] 4 (#$ . 19843)])
#@64 Parse a logor-expr : logxor-expr | logor-expr `|' logxor-expr.
(defalias 'hif-logior-expr #[0 "\302 \303=\203	\211A\242\303\302 E\262\202\211\207" [hif-token hif-token-list hif-logxor-expr hif-logior] 4 (#$ . 20068)])
#@66 Parse a logxor-expr : logand-expr | logxor-expr `^' logand-expr.
(defalias 'hif-logxor-expr #[0 "\302 \303=\203	\211A\242\303\302 E\262\202\211\207" [hif-token hif-token-list hif-logand-expr hif-logxor] 4 (#$ . 20301)])
#@58 Parse a logand-expr : eq-expr | logand-expr `&' eq-expr.
(defalias 'hif-logand-expr #[0 "\302 \303=\203	\211A\242\303\302 E\262\202\211\207" [hif-token hif-token-list hif-eq-expr hif-logand] 4 (#$ . 20536)])
#@51 Parse an eq-expr : comp | eq-expr `=='|`!=' comp.
(defalias 'hif-eq-expr #[0 "\302 \303\304>\203\262	\211A\242\211\302 E\262\202\207" [hif-token hif-token-list hif-comp-expr nil (hif-equal hif-notequal)] 5 (#$ . 20759)])
#@70 Parse a comp-expr : logshift | comp-expr `<'|`>'|`>='|`<=' logshift.
(defalias 'hif-comp-expr #[0 "\302 \303\304>\203\262	\211A\242\211\302 E\262\202\207" [hif-token hif-token-list hif-logshift-expr nil (hif-greater hif-less hif-greater-equal hif-less-equal)] 5 (#$ . 20998)])
#@52 Parse a logshift : math | logshift `<<'|`>>' math.
(defalias 'hif-logshift-expr #[0 "\302 \303\304>\203\262	\211A\242\211\302 E\262\202\207" [hif-token hif-token-list hif-math nil (hif-shiftleft hif-shiftright)] 5 (#$ . 21293)])
#@78 Parse an expression with + or -.
       math : muldiv | math `+'|`-' muldiv.
(defalias 'hif-math #[0 "\302 \303\304>\203\262	\211A\242\211\302 E\262\202\207" [hif-token hif-token-list hif-muldiv-expr nil (hif-plus hif-minus)] 5 (#$ . 21540)])
#@85 Parse an expression with *,/,%.
       muldiv : factor | muldiv `*'|`/'|`%' factor.
(defalias 'hif-muldiv-expr #[0 "\302 \303\304>\203\262	\211A\242\211\302 E\262\202\207" [hif-token hif-token-list hif-factor nil (hif-multiply hif-divide hif-modulo)] 5 (#$ . 21801)])
#@132 Parse a factor.
factor : `!' factor | `~' factor | `(' expr `)' | `defined(' id `)' |
         id `(' parmlist `)' | strings | id.
(defalias 'hif-factor #[0 "\302\267\202x	\211A\242\303\304 D\207	\211A\242\305\304 D\207	\211A\242\306 \307=\2041\310\311\"\2028	\211A\242\211\207	\211A\242\211\312=\205L	\211A\242\313\211\314>\203X\310\315\"\210\203l	\211A\242\211\307=\204l\310\316!\210	\211A\242\317\320DD\207\247\203\205	\211A\242\207;\203\215\321 \207\322>\203\237	\211A\242\323\304 E\207	\211A\242\211\312=\203\262\324!\202\267\325\320DD\207" [hif-token hif-token-list #s(hash-table size 4 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (hif-not 6 hif-lognot 17 hif-lparen 28 hif-defined 57)) hif-not hif-factor hif-lognot hif-exprlist hif-rparen error "Bad token in parenthesized expression: %s" hif-lparen t (or and not hif-defined hif-lparen hif-rparen) "Error: unexpected token: %s" "Error: expected \")\" after identifier" hif-defined quote hif-string-concatenation (hif-minus hif-plus) 0 hif-place-macro-invocation hif-lookup] 6 (#$ . 22088)])
(defalias 'hif-get-argument-list #[0 "\302\303\211\211A\242\211\304=\203\302U\204R\305!@\306=\203!\303\262	\307\267\2025T\262\202JS\262\202J	\306=\203J\302U\203J\211\237B\262\303\262	B\262\202\211\237B\262\211A\242\237\207" [hif-token-list hif-token 0 nil hif-rparen last hif-comma #s(hash-table size 2 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (hif-lparen 39 hif-rparen 46))] 5])
#@14 

(fn IDENT)
(defalias 'hif-place-macro-invocation #[257 "\300 \301\302D\302DE\207" [hif-get-argument-list hif-invoke quote] 6 (#$ . 23649)])
#@54 Parse concatenated strings: string | strings string.
(defalias 'hif-string-concatenation #[0 "\302!	\211A\242\211;\203\303\304\305#\303\306\"P\262\202\211\207" [hif-token hif-token-list substring-no-properties substring 0 -1 1] 5 (#$ . 23799)])
#@133 A marker for defined macro with arguments.
This macro cannot be evaluated alone without parameters input.

(fn PARMLIST TOKEN-BODY)
(defalias 'hif-define-macro #[514 "\300\301!\207" [error "Argumented macro cannot be evaluated without passing any parameter"] 4 (#$ . 24061)])
#@47 Stringify a number, string or symbol.

(fn A)
(defalias 'hif-stringify #[257 "\211\247\203	\300!\207\211:\204\301!\207\211;\203\302\302Q\207\303\304!\207" [number-to-string symbol-name "\"" error "Invalid token to stringify"] 4 (#$ . 24343)])
#@12 

(fn STR)
(defalias 'intern-safe #[257 "\211;\205\300!\207" [intern] 3 (#$ . 24600)])
#@362 Concatenate two tokens into a longer token.
Currently support only simple token concatenation.  Also support weird (but
valid) token concatenation like `>' ## `>' becomes `>>'.  Here we take care only
those that can be evaluated during preprocessing time and ignore all those that
can only be evaluated at C(++) runtime (like `++', `--' and `+='...).

(fn A B)
(defalias 'hif-token-concat #[514 ">\204\f\211>\203=\302	\"@\302	\"@\205%\211\205%\303P	\"A\211\206<\304\305\2063\306!\206;\306!#\207\307\310!\310!P!\207" [hif-valid-token-list hif-token-alist rassq assoc error "Concatenating \"%s\" and \"%s\" does not give a valid preprocessing token" symbol-name intern-safe hif-stringify] 10 (#$ . 24697)])
#@64 Treat VAL as a number: if it's t or nil, use 1 or 0.

(fn VAL)
(defalias 'hif-mathify #[257 "\211\300=\203\301\207\211\204\302\207\207" [t 1 0] 3 (#$ . 25431)])
#@14 

(fn A B C)
(defalias 'hif-conditional #[771 "\300!\301U\204\f\300!\207\300!\207" [hif-mathify 0] 5 (#$ . 25602)])
#@12 

(fn A B)
(defalias 'hif-and #[514 "\300!\301U?\205\300!\301U?\207" [hif-mathify 0] 4 (#$ . 25728)])
#@12 

(fn A B)
(defalias 'hif-or #[514 "\300!\301U?\206\300!\301U?\207" [hif-mathify 0] 4 (#$ . 25840)])
#@10 

(fn A)
(defalias 'hif-not #[257 "\300!\301U\207" [hif-mathify 0] 3 (#$ . 25951)])
#@10 

(fn A)
(defalias 'hif-lognot #[257 "\300\301!!\207" [lognot hif-mathify] 4 (#$ . 26042)])
#@12 

(fn FUN)
(defalias 'hif-mathify-binop '(macro . #[257 "\300\301\302\303\"\304BF\207" [lambda (a b) format "Like `%s' but treat t and nil as 1 and 0." ((hif-mathify a) (hif-mathify b))] 6 (#$ . 26141)]))
#@12 

(fn A B)
(defalias 'hif-shiftleft #[514 "\300!\262\300!\262\301\"\207" [hif-mathify ash] 5 (#$ . 26354)])
#@12 

(fn A B)
(defalias 'hif-shiftright #[514 "\300!\262\300!\262\301[\"\207" [hif-mathify ash] 5 (#$ . 26474)])
#@52 Like `*' but treat t and nil as 1 and 0.

(fn A B)
(defalias 'hif-multiply #[514 "\300!\300!_\207" [hif-mathify] 5 (#$ . 26596)])
#@52 Like `/' but treat t and nil as 1 and 0.

(fn A B)
(defalias 'hif-divide #[514 "\300!\300!\245\207" [hif-mathify] 5 (#$ . 26734)])
#@52 Like `%' but treat t and nil as 1 and 0.

(fn A B)
(defalias 'hif-modulo #[514 "\300!\300!\246\207" [hif-mathify] 5 (#$ . 26873)])
#@52 Like `+' but treat t and nil as 1 and 0.

(fn A B)
(defalias 'hif-plus #[514 "\300!\300!\\\207" [hif-mathify] 5 (#$ . 27012)])
#@52 Like `-' but treat t and nil as 1 and 0.

(fn A B)
(defalias 'hif-minus #[514 "\300!\300!Z\207" [hif-mathify] 5 (#$ . 27147)])
#@52 Like `=' but treat t and nil as 1 and 0.

(fn A B)
(defalias 'hif-equal #[514 "\300!\300!U\207" [hif-mathify] 5 (#$ . 27282)])
#@53 Like `/=' but treat t and nil as 1 and 0.

(fn A B)
(defalias 'hif-notequal #[514 "\300!\300!U?\207" [hif-mathify] 5 (#$ . 27417)])
#@52 Like `>' but treat t and nil as 1 and 0.

(fn A B)
(defalias 'hif-greater #[514 "\300!\300!V\207" [hif-mathify] 5 (#$ . 27557)])
#@52 Like `<' but treat t and nil as 1 and 0.

(fn A B)
(defalias 'hif-less #[514 "\300!\300!W\207" [hif-mathify] 5 (#$ . 27694)])
#@53 Like `>=' but treat t and nil as 1 and 0.

(fn A B)
(defalias 'hif-greater-equal #[514 "\300!\300!Y\207" [hif-mathify] 5 (#$ . 27828)])
#@53 Like `<=' but treat t and nil as 1 and 0.

(fn A B)
(defalias 'hif-less-equal #[514 "\300!\300!X\207" [hif-mathify] 5 (#$ . 27972)])
#@57 Like `logior' but treat t and nil as 1 and 0.

(fn A B)
(defalias 'hif-logior #[514 "\300\301!\301!\"\207" [logior hif-mathify] 6 (#$ . 28113)])
#@57 Like `logxor' but treat t and nil as 1 and 0.

(fn A B)
(defalias 'hif-logxor #[514 "\300\301!\301!\"\207" [logxor hif-mathify] 6 (#$ . 28266)])
#@57 Like `logand' but treat t and nil as 1 and 0.

(fn A B)
(defalias 'hif-logand #[514 "\300\301!\301!\"\207" [logand hif-mathify] 6 (#$ . 28419)])
#@79 Evaluate a list of EXPR, return the result of the last item.

(fn &rest EXPR)
(defalias 'hif-comma #[128 "\301\211\203\"\211@\3021!\211\2620\202\210\202\210A\266\202\202\210\211\207" [hide-ifdef-evaluator nil (error)] 6 (#$ . 28572)])
#@87 Scan token list for `hif-stringify' ('#') token and stringify the next token.

(fn L)
(defalias 'hif-token-stringification #[257 "\300\2031@\301=\203$A@\203\301A@!\202\302\303!A\262\202&@B\262A\262\202\211\237\207" [nil hif-stringify error "No token to stringify"] 4 (#$ . 28827)])
#@89 Scan token list for `hif-token-concat' ('##') token and concatenate two tokens.

(fn L)
(defalias 'hif-token-concatenation #[257 "\300\211\203D@\301=\203.\204\302\303!\210A\204\302\304!\210\301A@\"\262AA\262\202\2039\305C\"\262@\262A\262\202\203P\305C\"\202Q\211\207" [nil hif-token-concat error "No token before ## to concatenate" "No token after ## to concatenate" append] 6 (#$ . 29135)])
#@17 

(fn LIS ATOM)
(defalias 'hif-delimit #[514 "\300\301\302\303\304\305!\306\"\307\310%\311!\"\312!\244\207" [mapcan make-byte-code 257 "\211\300D\207" vconcat vector [] 3 "\n\n(fn L)" butlast last] 9 (#$ . 29566)])
#@92 Expand a macro call, replace ACTUAL-PARMS in the macro body.

(fn MACRO-NAME ACTUAL-PARMS)
(defalias 'hif-macro-supply-arguments #[514 "\301\"\211\205\211A\205\211A@\302=\205\211AA\211\205\211@\205%A@\303\211\211\211\205\246\205\246\205\246@\304=\211\262\203DA\262G\262G\262V\203\\\305\306\"\210\202lW\203l\211\204l\305\307\"\210\211A\262\242\211\262\203\233\310\203\212\204\212\311\n\312\"\202\215	@#\262A\262	\202l\313!\262\314\315!!\207" [hide-ifdef-env assoc hif-define-macro nil hif-etc error "Too few parameters for macro %S" "Too many parameters for macro %S" cl-substitute hif-delimit hif-comma flatten-tree hif-token-concatenation hif-token-stringification] 14 (#$ . 29791)])
#@105 Invoke a macro by expanding it, reparse macro-body and finally invoke it.

(fn MACRO-NAME ACTUAL-PARMS)
(defalias 'hif-invoke #[514 "\301\302\"\"!\207" [hide-ifdef-evaluator hif-parse-exp hif-macro-supply-arguments] 7 (#$ . 30548)])
#@64 Return the expanded result of the scanned tokens.

(fn REGEXP)
(defalias 'hif-canonicalize-tokens #[257 "\212\302!\210\303\304!\305\"\211\205\303\306\"\307\230\310\311`\312 \210`\"\203(\313D\262\2031\314D\262)\266\203)\207" [hif-ifxdef-regexp hif-simple-token-only re-search-forward match-string 0 string-match 2 "n" nil hif-tokenize hif-end-of-line hif-defined hif-not] 7 (#$ . 30791)])
#@150 Return a Lisp expression for its condition by scanning current buffer.
Do this when cursor is at the beginning of `regexp' (i.e. #ifX).

(fn REGEXP)
(defalias 'hif-canonicalize #[257 "\303\212\304!\210\305\306!\307	\"\211\205\305\310\"\311\230\303\312`\313 \210`\"\203*\314D\262\2033\315D\262\316!)\266\204*\207" [case-fold-search hif-ifxdef-regexp hif-simple-token-only nil re-search-forward match-string 0 string-match 2 "n" hif-tokenize hif-end-of-line hif-defined hif-not hif-parse-exp] 7 (#$ . 31201)])
#@53 Move to next #if..., or #ifndef, at point or after.
(defalias 'hif-find-any-ifX #[0 "\301d\302#\303 \210\207" [hif-ifx-regexp re-search-forward t beginning-of-line] 4 (#$ . 31731)])
#@74 Move to next #if..., #elif..., #else, or #endif, after the current line.
(defalias 'hif-find-next-relevant #[0 "\301\210\302d\303#\205
\304 \207" [hif-ifx-else-endif-regexp nil re-search-forward t beginning-of-line] 4 (#$ . 31920)])
#@69 Move to previous #if..., #else, or #endif, before the current line.
(defalias 'hif-find-previous-relevant #[0 "\301 \210\302e\303#\205
\301 \207" [hif-ifx-else-endif-regexp beginning-of-line re-search-backward t] 4 (#$ . 32162)])
(defalias 'hif-looking-at-ifX #[0 "\301!\207" [hif-ifx-regexp looking-at] 2])
(defalias 'hif-looking-at-endif #[0 "\301!\207" [hif-endif-regexp looking-at] 2])
(defalias 'hif-looking-at-else #[0 "\301!\207" [hif-else-regexp looking-at] 2])
(defalias 'hif-looking-at-elif #[0 "\301!\207" [hif-elif-regexp looking-at] 2])
#@76 If positioned at #ifX, #elif, or #else form, skip to corresponding #endif.
(defalias 'hif-ifdef-to-endif #[0 "\300 \210\301 \203\302 \210\302 \207\303 \203\302 \207\304 \203\302 \207\305 \203%\306\207\307\310!\207" [hif-find-next-relevant hif-looking-at-ifX hif-ifdef-to-endif hif-looking-at-elif hif-looking-at-else hif-looking-at-endif done error "Mismatched #ifdef #endif pair"] 2 (#$ . 32724)])
#@68 If positioned at #endif form, skip backward to corresponding #ifX.
(defalias 'hif-endif-to-ifdef #[0 "`\300 \210\211`U\203\301\302!\210\210\303 \203\304 \210\304 \207\305 \203\"\304 \207\306 \203*\304 \207\307 \2031\310\207\301\311!\207" [hif-find-previous-relevant error "Mismatched #ifdef #endif pair" hif-looking-at-endif hif-endif-to-ifdef hif-looking-at-elif hif-looking-at-else hif-looking-at-ifX done "Mismatched #endif"] 3 (#$ . 33136)])
#@118 Move point to beginning of line of the next ifdef-endif.
With argument, do this that many times.

(fn &optional ARG)
(defalias 'forward-ifdef #[256 "\211\204\300\262\211\301W\203\302[!\207\301W\205;\211[\262`\303 \204%\304 \210\303 \2030\305 \210\2027\211b\210\306\307!\210\210\202\207" [1 0 backward-ifdef hif-looking-at-ifX hif-find-next-relevant hif-ifdef-to-endif error "No following #ifdef"] 4 (#$ . 33596) "p"])
#@114 Move point to beginning of the previous ifdef-endif.
With argument, do this that many times.

(fn &optional ARG)
(defalias 'backward-ifdef #[256 "\211\204\300\262\211\301W\203\302[!\207\301W\205>\211S\262\303 \210`\304 \204(\305 \210\304 \2033\306 \210\202:\211b\210\307\310!\210\210\202\207" [1 0 forward-ifdef beginning-of-line hif-looking-at-endif hif-find-previous-relevant hif-endif-to-ifdef error "No previous #ifdef"] 4 (#$ . 34035) "p"])
#@55 Move point to beginning of nested ifdef or else-part.
(defalias 'down-ifdef #[0 "`\300 \210\301 \206\302 ?\205\211b\210\303\304!\207" [hif-find-next-relevant hif-looking-at-ifX hif-looking-at-else error "No following #ifdef"] 3 (#$ . 34501) nil])
#@58 Move point to beginning of enclosing ifdef or else-part.
(defalias 'up-ifdef #[0 "\300 \210`\301 \204\f\302 \210\301 \203\303 \210\211`U\205\304\305!\207" [beginning-of-line hif-looking-at-endif hif-find-previous-relevant hif-endif-to-ifdef error "No previous #ifdef"] 3 (#$ . 34758) nil])
#@119 Move to the beginning of the next #ifX, #else, or #endif.
With argument, do this that many times.

(fn &optional ARG)
(defalias 'next-ifdef #[256 "\211\204\300\262\211\301W\203\302[!\207\301W\205-\211S\262\303 \210l\203\304 \210\305\306!\210\202\207" [1 0 previous-ifdef hif-find-next-relevant beginning-of-line error "No following #ifdefs, #elses, or #endifs"] 3 (#$ . 35060) "p"])
#@123 Move to the beginning of the previous #ifX, #else, or #endif.
With argument, do this that many times.

(fn &optional ARG)
(defalias 'previous-ifdef #[256 "\211\204\300\262\211\301W\203\302[!\207\301W\205.\211S\262`\303 \210\211`U\203*\304\305!\210\210\202\207" [1 0 next-ifdef hif-find-previous-relevant error "No previous #ifdefs, #elses, or #endifs"] 4 (#$ . 35463) "p"])
#@38 

(fn START END &optional ELSE ELIF)
(defalias 'hif-make-range #[1026 "F\207" [] 8 (#$ . 35855)])
(put 'hif-make-range 'byte-optimizer 'byte-compile-inline-expand)
#@14 

(fn RANGE)
(defalias 'hif-range-start #[257 "\211\300\234\207" [0] 3 (#$ . 36029)])
(put 'hif-range-start 'byte-optimizer 'byte-compile-inline-expand)
#@14 

(fn RANGE)
(defalias 'hif-range-else #[257 "\211\300\234\207" [1] 3 (#$ . 36188)])
(put 'hif-range-else 'byte-optimizer 'byte-compile-inline-expand)
#@14 

(fn RANGE)
(defalias 'hif-range-end #[257 "\211\300\234\207" [2] 3 (#$ . 36345)])
(put 'hif-range-end 'byte-optimizer 'byte-compile-inline-expand)
#@14 

(fn RANGE)
(defalias 'hif-range-elif #[257 "\211\300\234\207" [3] 3 (#$ . 36500)])
(put 'hif-range-elif 'byte-optimizer 'byte-compile-inline-expand)
#@86 Return a Range structure describing the current #if region.
Point is left unchanged.
(defalias 'hif-find-range #[0 "\212\300 \210`\301\211\211\204=\211\204=\302 \210\303 \203\304 \210\202\305 \203,`C\244\262\202\306 \2037`\262\202`\262\202\203[\302 \210\303 \203O\304 \210\202A\306 \203X\307\310!\210`\262F\266\204\266\204)\207" [beginning-of-line nil hif-find-next-relevant hif-looking-at-ifX hif-ifdef-to-endif hif-looking-at-elif hif-looking-at-else error "Found two elses in a row?  Broken!"] 12 (#$ . 36657)])
#@88 Hide the line containing point.
Does nothing if `hide-ifdef-lines' is nil.

(fn POINT)
(defalias 'hif-hide-line #[257 "\205\212\211b\210\301\302 \303 \210`\")\207" [hide-ifdef-lines hide-ifdef-region-internal line-beginning-position hif-end-of-line] 4 (#$ . 37211)])
(defvar hif-recurse-level 0)
#@113 Call `hide-ifdef-guts' after narrowing to end of START line and END line.

(fn START END &optional DONT-GO-EOL)
(defalias 'hif-recurse-on #[770 "\212\214b\210\211\204\f\301\210`}\210T\302 +\207" [hif-recurse-level nil hide-ifdef-guts] 5 (#$ . 37517)])
#@320 Called at #ifX expression, this hides those parts that should be hidden.
It uses the judgment of `hide-ifdef-evaluator'.  EXPAND-REINCLUSION is a flag
indicating that we should expand the #ifdef even if it should be hidden.
Refer to `hide-ifdef-expand-reinclusion-protection' for more details.

(fn EXPAND-REINCLUSION)
(defalias 'hif-possibly-hide #[257 "\304\305	!\306 \211\211\307\234\262\310\304\311\211\312\234\262!\210\211\204\203$\204\240\313\n!!\203\240\203[@\311\211\314\234\262!\210\315\211\314\234\262S\"\210\240\210\211b\210A\262\305!\262\210\202\n\211\316\234\262\203\217\311\211\316\234\262!\210\315\211\314\234\262\211\316\234\262S\"\210\317\211\316\234\262\211\312\234\262\"\210\202\232\315`\211\312\234\262S\"\210\310\262\202\n\203\304@\311!\210\315\211\312\234\262S\"\210\317\211\314\234\262\"\266\202\211\316\234\262\203\370\311\211\316\234\262!\210\315\211\316\234\262\211\312\234\262S\"\210\317\211\314\234\262\211\316\234\262\"\210\202\317\211\314\234\262\211\312\234\262\"\210\310\262\304\262\202\311\211\314\234\262!\210\211\312\234\262b\210\304)\207" [case-fold-search hif-ifx-regexp hide-ifdef-evaluator hif-elif-regexp nil hif-canonicalize hif-find-range 3 t hif-hide-line 2 hif-not 0 hide-ifdef-region 1 hif-recurse-on] 12 (#$ . 37782)])
#@18 

(fn START END)
(defalias 'hif-evaluate-region #[514 "\3011\f\302\"0\202\210\303\211\205\3041\305!0\202\210\211!\207" [hide-ifdef-evaluator (error) hif-tokenize nil (error) hif-parse-exp] 6 (#$ . 39141)])
#@245 Evaluate the macro expansion result for the active region.
If no region active, find the current #ifdefs and evaluate the result.
Currently it supports only math calculations, strings or argumented macros can
not be expanded.

(fn RSTART REND)
(defalias 'hif-evaluate-macro #[514 "\305\212\306 \204'\305\262\305\262\307 \210\310	\305\311#\203'\312\313!\314\230\203'\310\n\305\311#\210\206,`\2064\315 \210`\305\311\3161B\317\"0\202D\210\305\211G\320X\203i\321@\"\211\262\203i\322@!:?\211\262\203i\322@!\206z\211\205z\3231x\324!0\202z\210\305\f!\325\326\327\325\330\331\332

\"##G\320X\203\253\203\253\203\243\333\334#\210\202\361\333\335\"\210\202\361\250\203\317\336U\204\274\320U\203\305\333\334#\210\202\361\333\337\211$\210\202\361\204\334\333\334\340#\210\202\361\311=\203\353\333\334\341#\210\202\361\333\334#\210\266\210*\207" [case-fold-search hif-macro-expr-prefix-regexp hif-macroref-regexp hide-ifdef-env hide-ifdef-evaluator nil use-region-p beginning-of-line re-search-forward t match-string 2 "define" hif-end-of-line (error) hif-tokenize 1 assoc hif-lookup (error) hif-parse-exp replace-regexp-in-string "^[ 	]*\\([^ 	]+\\)[ 	]*" "\\1" "\\(//.*\\)" "" buffer-substring-no-properties message "%S <= `%s'" "`%s' is not defined" 0 "%S (%#x) <= `%s'" false true] 18 (#$ . 39368) (byte-code "\300 \203\301 \302 D\207\303\207" [use-region-p region-beginning region-end (nil nil)] 2)])
#@182 Parse argument list formatted as `( arg1 [ , argn] [...] )'.
The `...' is also included.  Return a list of the arguments, if `...' exists the
first arg will be `hif-etc'.

(fn STR)
(defalias 'hif-parse-macro-arglist #[257 "\301\302`GZ`\"A\301\211\211\211A\262\242\211\262\303=\2042\211\304\267\202*\305\262\202
\202
\211B\262\202
\203=\306\237B\202?\237)\207" [hif-simple-token-only nil hif-tokenize hif-rparen #s(hash-table size 2 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (hif-etc 33 hif-comma 39)) t hif-etc] 7 (#$ . 40835)])
#@93 Parse texts and retrieve all defines within the region MIN and MAX.

(fn &optional MIN MAX)
(defalias 'hif-find-define #[512 "\203b\210\305\306#\205\262\307\310!\311\230\305	\306#\205\307\312!\307\313!\205*\314\307\310!!\203\243\n\2039\315\n\"\206\254`\316 \210`\317\205W\3201P\321\"0\202W\210\306\322\"\211\205u\203q\211<\203q\211G\312U\203q\323!\206u\324E\205\200\325\326!\f\"\205\235\211\203\223\211\241\206\235\306\202\235\326!B\fB\211)\266\205\202\254\205\254\327\326!!\266\203\205\262\306\207" [hif-define-regexp hif-macroref-regexp hide-ifdef-exclude-define-regexp hif-simple-token-only hide-ifdef-env re-search-forward t match-string 2 "define" 1 3 hif-parse-macro-arglist string-match hif-end-of-line nil (error) hif-tokenize buffer-substring-no-properties hif-parse-exp hif-define-macro assoc intern hif-undefine-symbol] 12 (#$ . 41410) nil])
#@78 Scan and add all #define macros between MIN and MAX.

(fn &optional MIN MAX)
(defalias 'hif-add-new-defines #[512 "\212\214\300\"\203`\262\202\211\203\211b\202db*\207" [hif-find-define] 5 (#$ . 42324) nil])
#@112 Does most of the work of `hide-ifdefs'.
It does not do the work that's pointless to redo on a recursive entry.
(defalias 'hide-ifdef-guts #[0 "\212\304	\205\305\n\306 \"\205\307U\310\211\310eb\210`\262\311 \262\312\"\210\211\203-\313!\210`\262\211\204*\310\266\203)\207" [case-fold-search hide-ifdef-expand-reinclusion-protection hide-ifdef-header-regexp hif-recurse-level t string-match buffer-file-name 0 nil hif-find-any-ifX hif-add-new-defines hif-possibly-hide] 7 (#$ . 42549)])
#@32 Toggle `hide-ifdef-read-only'.
(defalias 'hide-ifdef-toggle-read-only #[0 "?\304\305\203
\306\202\307\"\210	\203\206\n\310 \207" [hide-ifdef-read-only hide-ifdef-hiding hif-outside-read-only buffer-read-only message "Hide-Read-Only %s" "ON" "OFF" force-mode-line-update] 3 (#$ . 43055) nil])
#@58 Replacement for `read-only-mode' within Hide-Ifdef mode.
(defalias 'hide-ifdef-toggle-outside-read-only #[0 "?\304\305\203
\306\202\307\"\210	\203\n\206\310 \207" [hif-outside-read-only hide-ifdef-hiding hide-ifdef-read-only buffer-read-only message "Read only %s" "ON" "OFF" force-mode-line-update] 3 (#$ . 43365) nil])
#@19 Toggle shadowing.
(defalias 'hide-ifdef-toggle-shadowing #[0 "\301\300!\210?\302\303\203\304\202\305\"\210\214~\210\306ed\"\211\205N\211@\307\310\"\203G\203;\311\312\313#\210\311\314\300#\210\202G\311\314\313#\210\311\312\310#\210A\266\202\202\262)\207" [hide-ifdef-shadow make-local-variable message "Shadowing %s" "ON" "OFF" overlays-in overlay-get hide-ifdef overlay-put invisible nil face] 6 (#$ . 43704) nil])
#@115 Define a VAR to VAL (default 1) in `hide-ifdef-env'.
This allows #ifdef VAR to be hidden.

(fn VAR &optional VAL)
(defalias 'hide-ifdef-define #[513 "\301\206\302\"\210\303\304\206\302#\210\305\302!\210\205\306 \207" [hide-ifdef-hiding hif-set-var 1 message "%s set to %s" sleep-for hide-ifdefs] 6 (#$ . 44147) (byte-code "\212\301 \210\302!\203\303\304!\210\305\306!\202\307)\310\311\"\312\313\314\"\307\211\315\307\316&D\207" [hif-ifx-else-endif-regexp beginning-of-line looking-at forward-word-strictly 2 current-word strict nil read-minibuffer "Define what? " read-from-minibuffer format "Set %s to? (default 1): " t "1"] 9)])
#@12 

(fn VAR)
(defalias 'hif-undefine-symbol #[257 "\301\302\"\"\211\207" [hide-ifdef-env delete assoc] 5 (#$ . 44805)])
#@74 Undefine a VAR so that #ifdef VAR would not be included.

(fn START END)
(defalias 'hide-ifdef-undef #[514 "\301!\203\301!\203\302\"\206\303\304\305 \"\211\205\306!\307!\310U\203.\311\312\"\202=\313!\210\2039\314 \210\311\315\"\207" [hide-ifdef-hiding number-or-marker-p buffer-substring-no-properties read-string "Undefine what? " current-word intern hif-defined 0 message "`%s' not defined, no need to undefine it" hif-undefine-symbol hide-ifdefs "`%S' undefined"] 7 (#$ . 44933) (byte-code "\300 \203\301 \302 D\207\303\207" [use-region-p region-beginning region-end (nil nil)] 2)])
#@368 Hide the contents of some #ifdefs.
Assume that defined symbols have been added to `hide-ifdef-env'.
The text hidden is the text that would not be included by the C
preprocessor if it were given the file with those symbols defined.
With prefix command presents it will also hide the #ifdefs themselves.

Turn off hiding by calling `show-ifdefs'.

(fn &optional NOMSG)
(defalias 'hide-ifdefs #[256 "\211\204\n\306\307!\210\n\f\204\304\310!\210
\203\311 \210\312\313 \210
\206&\211\206.\306\314!)\207" [current-prefix-arg hide-ifdef-lines buffer-read-only hif-outside-read-only hide-ifdef-mode hide-ifdef-hiding message "Hiding..." 1 show-ifdefs t hide-ifdef-guts "Hiding done" hide-ifdef-read-only] 3 (#$ . 45549) nil])
#@71 Cancel the effects of `hide-ifdef': show the contents of all #ifdefs.
(defalias 'show-ifdefs #[0 "\303 \210\304\211\207" [hif-outside-read-only buffer-read-only hide-ifdef-hiding hif-show-all nil] 2 (#$ . 46287) nil])
#@91 Utility to hide and show ifdef block.
Return as (TOP . BOTTOM) the extent of ifdef block.
(defalias 'hif-find-ifdef-block #[0 "\300\212\301 \210\302 \204\303 \204\304 \210`\305 \210`S\262)\212\301 \210\306 \204'\307 \210\303 \2035\305 \210\307 \210\202'`S^)B\207" [nil beginning-of-line hif-looking-at-else hif-looking-at-ifX up-ifdef hif-ifdef-to-endif hif-looking-at-endif hif-find-next-relevant] 4 (#$ . 46514)])
#@174 Hide the ifdef block (true or false part) enclosing or before the cursor.
With optional prefix argument ARG, also hide the #ifdefs themselves.

(fn &optional ARG START END)
(defalias 'hide-ifdef-block #[768 "\306 \203	T\307\310#\210\311\211)\202C\204\303\312!\210\313 \314@A\"\210\2037\315@!\210\315AT!\210\310\210
\206@\211)\207" [hide-ifdef-lines hif-recurse-level mark-active hide-ifdef-mode hide-ifdef-hiding hide-ifdef-read-only use-region-p hif-recurse-on t nil 1 hif-find-ifdef-block hide-ifdef-region hif-hide-line hif-outside-read-only buffer-read-only] 7 (#$ . 46946) "P\nr"])
#@101 Show the ifdef block (true or false part) enclosing or before the cursor.

(fn &optional START END)
(defalias 'show-ifdef-block #[512 "\302!\203-\302!\203-\303\"\211\203(\211@\304\305\"\203!\306!\210A\266\202\202\210\307\211\207\31017\311 0\2029\210\307\303e`S]d`T^\"\307\203n	\203e\312\212@b\210\313 )\212ATb\210\314 \210`)\"\210\202n\312@SA\"\262\205s\211?\205\222\211\205\220\211@\304\305\"\203\211\306!\210A\266\202\202x\262\207" [mark-active hide-ifdef-lines number-or-marker-p overlays-in overlay-get hide-ifdef delete-overlay nil (error) hif-find-ifdef-block hif-show-ifdef-region line-beginning-position hif-end-of-line] 10 (#$ . 47564) (byte-code "\300 \203\301 \302 D\207\303\207" [use-region-p region-beginning region-end (nil nil)] 2)])
#@50 A global assoc list of pre-defined symbol lists.
(defvar hide-ifdef-define-alist nil (#$ . 48357))
#@77 Compress the define list ENV into a list of defined symbols only.

(fn ENV)
(defalias 'hif-compress-define-list #[257 "\300\211\203\211@\301@!\203\211@B\262A\266\202\202\262\207" [nil hif-lookup] 6 (#$ . 48462)])
#@62 Set the association for NAME to `hide-ifdef-env'.

(fn NAME)
(defalias 'hide-ifdef-set-define-alist #[257 "\211\302!B	B\211\207" [hide-ifdef-env hide-ifdef-define-alist hif-compress-define-list] 4 (#$ . 48694) "SSet define list: "])
#@71 Set `hide-ifdef-env' to the define list specified by NAME.

(fn NAME)
(defalias 'hide-ifdef-use-define-alist #[257 "\211;\203\n\303!\262\304\"\211\203\305\306A\"\202 \307\310\"\210\n\205&\311 \207" [hide-ifdef-define-alist hide-ifdef-env hide-ifdef-hiding intern assoc mapcar #[257 "\211\300B\207" [t] 3 "\n\n(fn ARG)"] error "No define list for %s" hide-ifdefs] 5 (#$ . 48935) (byte-code "\301\302\303\304\"\305\306$C\207" [hide-ifdef-define-alist completing-read "Use define list: " mapcar #[257 "\300@!\207" [symbol-name] 3 "\n\n(fn X)"] nil t] 5)])
(provide 'hideif)

Zerion Mini Shell 1.0