MMCT TEAM
Server IP : 111.118.215.189  /  Your IP : 3.133.106.74
Web Server : Apache
System : Linux md-in-83.webhostbox.net 4.19.286-203.ELK.el7.x86_64 #1 SMP Wed Jun 14 04:33:55 CDT 2023 x86_64
User : a1673wkz ( 2475)
PHP Version : 8.2.25
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON
Directory (0755) :  /usr/share/emacs/24.3/lisp/emacs-lisp/

[  Home  ][  C0mmand  ][  Upload File  ]

Current File : //usr/share/emacs/24.3/lisp/emacs-lisp/gv.elc
;ELC
;;; Compiled by mockbuild@buildfarm06-new.corp.cloudlinux.com on Fri Oct 11 10:09:04 2024
;;; from file /builddir/build/BUILD/emacs-24.3/lisp/emacs-lisp/gv.el
;;; in Emacs version 24.3.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.

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


(require 'macroexp)
#@455 Build the code that applies DO to PLACE.
PLACE must be a valid generalized variable.
DO must be a function; it will be called with 2 arguments: GETTER and SETTER,
where GETTER is a (copyable) Elisp expression that returns the value of PLACE,
and SETTER is a function which returns the code to set PLACE when called
with a (not necessarily copyable) Elisp expression that returns the value to
set it to.
DO must return an Elisp expression.

(fn PLACE DO)
(defalias 'gv-get #[514 "9\203\211\301\302\303\304\305!\306\"\307\310%\"\207@\311\312\313#\211\203+\314A#\202s\315\"\211=\203F\316N\203F\314\316N\211A#\262\211=\203_\317!\203_K9\203_KAB\262\211=\203m\320\321\"\202q\322\"\262\207" [macroexpand-all-environment make-byte-code 257 "\301\300E\207" vconcat vector [setq] 4 "\n\n(fn V)" function-get gv-expander autoload apply macroexpand compiler-macro fboundp error "%S is not a valid place expression" gv-get] 10 (#$ . 577)])
#@512 Build the code manipulating the generalized variable PLACE.
GETTER will be bound to a copyable expression that returns the value
of PLACE.
SETTER will be bound to a function that takes an expression V and returns
a new expression that sets PLACE to V.
BODY should return some Elisp expression E manipulating PLACE via GETTER
and SETTER.
The returned value will then be an Elisp expression that first evaluates
all the parts of PLACE that can be evaluated and then runs E.

(fn (GETTER SETTER) PLACE &rest BODY)
(defalias 'gv-letplace '(macro . #[642 "\300\301BBE\207" [gv-get lambda] 8 (#$ . 1553)]))
(byte-code "\300\301\302\303#\210\300\301\304\305#\207" [put gv-letplace lisp-indent-function 2 edebug-form-spec (sexp form body)] 4)
#@266 Use HANDLER to handle NAME as a generalized var.
NAME is a symbol: the name of a function, macro, or special form.
HANDLER is a function which takes an argument DO followed by the same
arguments as NAME.  DO is a function as defined in `gv-get'.

(fn NAME HANDLER)
(defalias 'gv-define-expander '(macro . #[514 "\300\301\302D\303FD\207" [eval-and-compile put quote 'gv-expander] 7 (#$ . 2298)]))
(byte-code "\300\301\302\303#\210\300\301\304\305#\207" [put gv-define-expander lisp-indent-function 1 edebug-form-spec (sexp form)] 4)
(defalias 'gv--defun-declaration #[1284 "\300\301B\302:\203 @A\303=\203\223\211:\203z\211@A\304=\204.
\"\202u\211:\203o\211@A:\203c@A\211\204W\305\304BBBE\266\202\202^\"\266\202\202j
\"\266\202\202u
\"\266\202\202\2119\203\212\305\n\306\nDE\202	\"\202\307=\204\242	\"\202\211:\203\211@A\304=\204\272
\"\202\211:\203\372\211@A:\203\356@A\211\204\342\310BBBB\266\202\202\351\"\266\202\202\365
\"\266\202\202
\"\266\202\202\2119\203\311\n		F\202	\"\266\202\202&\211	\"\266\202E\207" [progn :autoload-end #[514 "\300\301#\210\302\207" [message "Unknown %s declaration %S" nil] 6 "\n\n(fn SYMBOL HANDLER)"] gv-expander lambda gv-define-expander function gv-setter gv-define-setter gv-define-simple-setter] 24 "\n\n(fn SYMBOL NAME ARGS HANDLER &optional FIX)"])
(byte-code "\301\302\303\301\"DB\304\302\303\304\"DB\301\207" [defun-declarations-alist gv-expander apply-partially gv--defun-declaration gv-setter] 4)
#@317 Helper function used by code generated by `gv-define-setter'.
NAME is the name of the getter function.
SETTER is a function that generates the code for the setter.
NAME accept ARGS as arguments and SETTER accepts (NEWVAL . ARGS).
VARS is used internally for recursive calls.

(fn NAME SETTER DO ARGS &optional VARS)
(defalias 'gv--defsetter #[1284 "\204\211\237B\300\301\302\303\304\"\305\"\306\307%\"\207@\310!\203(\211\202+\311\312!\313AB%=\203D\211\202K\314DC\"\207" [make-byte-code 257 "\302\300\301#\207" vconcat vector [apply] 5 "\n\n(fn V)" macroexp-const-p make-symbol "v" gv--defsetter macroexp-let*] 15 (#$ . 3887)])
#@627 Define a setter method for generalized variable NAME.
This macro is an easy-to-use substitute for `gv-define-expander' that works
well for simple place forms.
Assignments of VAL to (NAME ARGS...) are expanded by binding the argument
forms (VAL ARGS...) according to ARGLIST, then executing BODY, which must
return a Lisp form that does the assignment.
The first arg in ARGLIST (the one that receives VAL) receives an expression
which can do arbitrary things, whereas the other arguments are all guaranteed
to be pure and copyable.  Example use:
  (gv-define-setter aref (v a i) `(aset ,a ,i ,v))

(fn NAME ARGLIST &rest BODY)
(defalias 'gv-define-setter '(macro . #[642 "\300\301\302\303\304D\301BB\305BBBEE\207" [gv-define-expander lambda (do &rest args) gv--defsetter quote (do args)] 12 (#$ . 4555)]))
(byte-code "\300\301\302\303#\210\300\301\304\305#\207" [put gv-define-setter lisp-indent-function 2 edebug-form-spec (&define name sexp body)] 4)
#@533 Define a simple setter method for generalized variable NAME.
This macro is an easy-to-use substitute for `gv-define-expander' that works
well for simple place forms.  Assignments of VAL to (NAME ARGS...) are
turned into calls of the form (SETTER ARGS... VAL).

If FIX-RETURN is non-nil, then SETTER is not assumed to return VAL and
instead the assignment is turned into something equivalent to
  (let ((temp VAL))
    (SETTER ARGS... temp)
    temp)
so as to preserve the semantics of `setf'.

(fn NAME SETTER &optional FIX-RETURN)
(defalias 'gv-define-simple-setter '(macro . #[770 "\300\301\203 \302\303\304\305\306\307\310\311\fDCB\312B\313BBCB\257\202(\314\311D\315BBF\207" [gv-define-setter (val &rest args) macroexp-let2 nil v val \` progn \, quote ((\,@ (append args (list v)))) ((\, v)) cons ((append args (list val)))] 15 (#$ . 5521)]))
(put 'gv-define-simple-setter 'edebug-form-spec '(sexp (&or symbolp lambda-expr) &optional sexp))
#@321 Set each PLACE to the value of its VAL.
This is a generalized version of `setq'; the PLACEs may be symbolic
references such as (car x) or (aref x i), as well as plain symbols.
For example, (setf (cadr x) y) is equivalent to (setcar (cdr x) y).
The return value is the last VAL in the list.

(fn PLACE VAL PLACE VAL ...)
(defalias 'setf '(macro . #[128 "\211\203&\211\211AA)\204&\211A\262@@\301\302\303\304\305\306!\307\"\310\311%\"\207\312\203@\313\211A\262@\211A\262@EB\262\202'\314\237B\207" [x gv-get make-byte-code 514 "\211\300!\207" vconcat vector [] 4 "\n\n(fn GETTER SETTER)" nil setf progn] 11 (#$ . 6480)]))
(byte-code "\300\301\302\303#\210\300\304\302\305#\210\300\306\307\310#\210\300\311\307\312#\210\300\313\307\314#\210\300\315\307\316#\210\300\317\307\320#\210\300\321\307\322#\210\300\323\307\324#\210\300\325\307\326#\210\300\327\307\330#\210\300\331\307\332#\210\300\333\307\334#\210\300\335\307\336#\210\300\337\307\340#\210\300\341\307\342#\210\300\343\307\344#\210\300\345\307\346#\210\300\347\307\350#\210\300\351\307\352#\210\300\353\307\354#\210\300\355\307\356#\210\300\357\307\360#\210\300\361\307\362#\210\300\363\307\364#\210\300\365\307\366#\210\300\367\307\370#\210\300\371\307\372#\210\300\373\307\374#\210\300\375\307\376#\210\300\377\307\201@#\210\300\201A\307\201B#\210\300\201C\307\201D#\210\300\201E\307\201F#\210\300\201G\307\201H#\210\300\201I\307\201J#\210\300\201K\307\201L#\210\300\201M\307\201N#\210\201O\300\201P\307\201P!#\210\300\201Q\307\201Q!#\266\300\201R\307\201S#\210\300\201T\307\201U#\210\300\201V\307\201W#\210\300\201X\307\201Y#\210\201Z\201[!\207" [put setf edebug-form-spec (&rest [gv-place form]) gv-place edebug-match-form edebug-after gv-expander #[1028 "\300\301\302\303\304\305\n\n\n#\306\"\307\310%\"\207" [gv-get make-byte-code 514 "\300\303\301\302F\"\207" vconcat vector [edebug-after] 7 "\n\n(fn GETTER SETTER)"] 14 "\n\n(fn DO BEFORE INDEX PLACE)"] aref #[385 "\300\301\302$\207" [gv--defsetter aref #[385 "\300\301C\"B\207" [aset append] 6 "\n\n(fn VAL &rest ARGS)"]] 7 "\n\n(fn DO &rest ARGS)"] car #[385 "\300\301\302$\207" [gv--defsetter car #[385 "\300\301C\"B\207" [setcar append] 6 "\n\n(fn VAL &rest ARGS)"]] 7 "\n\n(fn DO &rest ARGS)"] cdr #[385 "\300\301\302$\207" [gv--defsetter cdr #[385 "\300\301C\"B\207" [setcdr append] 6 "\n\n(fn VAL &rest ARGS)"]] 7 "\n\n(fn DO &rest ARGS)"] caar #[385 "\300\301\302$\207" [gv--defsetter caar #[514 "\300\301DE\207" [setcar car] 5 "\n\n(fn VAL X)"]] 7 "\n\n(fn DO &rest ARGS)"] cadr #[385 "\300\301\302$\207" [gv--defsetter cadr #[514 "\300\301DE\207" [setcar cdr] 5 "\n\n(fn VAL X)"]] 7 "\n\n(fn DO &rest ARGS)"] cdar #[385 "\300\301\302$\207" [gv--defsetter cdar #[514 "\300\301DE\207" [setcdr car] 5 "\n\n(fn VAL X)"]] 7 "\n\n(fn DO &rest ARGS)"] cddr #[385 "\300\301\302$\207" [gv--defsetter cddr #[514 "\300\301DE\207" [setcdr cdr] 5 "\n\n(fn VAL X)"]] 7 "\n\n(fn DO &rest ARGS)"] elt #[385 "\300\301\302$\207" [gv--defsetter elt #[771 "\300\301D\302\303EE\304FF\207" [if listp setcar nthcdr aset] 10 "\n\n(fn STORE SEQ N)"]] 7 "\n\n(fn DO &rest ARGS)"] get #[385 "\300\301\302$\207" [gv--defsetter get #[385 "\300\301C\"B\207" [put append] 6 "\n\n(fn VAL &rest ARGS)"]] 7 "\n\n(fn DO &rest ARGS)"] gethash #[385 "\300\301\302$\207" [gv--defsetter gethash #[1027 "\300F\207" [puthash] 8 "\n\n(fn VAL K H &optional D)"]] 7 "\n\n(fn DO &rest ARGS)"] nth #[771 "\300E\301!\203\211\202\302\303!\304D\305\306\307\310\311!\312\"\313\314%\"=\203-\211\2024\315DC\"\207" [nthcdr macroexp-const-p make-symbol "c" car make-byte-code 257 "\301\300E\207" vconcat vector [setcar] 4 "\n\n(fn V)" macroexp-let*] 13 "\n\n(fn DO IDX LIST)"] symbol-function #[385 "\300\301\302$\207" [gv--defsetter symbol-function #[385 "\300\301C\"B\207" [fset append] 6 "\n\n(fn VAL &rest ARGS)"]] 7 "\n\n(fn DO &rest ARGS)"] symbol-plist #[385 "\300\301\302$\207" [gv--defsetter symbol-plist #[385 "\300\301C\"B\207" [setplist append] 6 "\n\n(fn VAL &rest ARGS)"]] 7 "\n\n(fn DO &rest ARGS)"] symbol-value #[385 "\300\301\302$\207" [gv--defsetter symbol-value #[385 "\300\301C\"B\207" [set append] 6 "\n\n(fn VAL &rest ARGS)"]] 7 "\n\n(fn DO &rest ARGS)"] nthcdr #[771 "\300!\203\211\202\301\302!\303\304\305\306\307\310\"\311\"\312\313%\"=\203*\211\2021\314DC\"\207" [macroexp-const-p make-symbol "idx" gv-get make-byte-code 514 "\300\302\301E\303\304\305\306\307\301		#\310\"\311\312%\"\207" vconcat vector [nthcdr make-byte-code 257 "\303\304\300\305BB\302!\306\307\310\300D\301EEF\207" vconcat vector [if <= (0) setcdr nthcdr 1-] 8 "\n\n(fn V)"] 12 "\n\n(fn GETTER SETTER)" macroexp-let*] 14 "\n\n(fn DO N PLACE)"] default-value #[385 "\300\301\302$\207" [gv--defsetter default-value #[385 "\300\301C\"B\207" [set-default append] 6 "\n\n(fn VAL &rest ARGS)"]] 7 "\n\n(fn DO &rest ARGS)"] frame-parameter #[385 "\300\301\302$\207" [gv--defsetter frame-parameter #[385 "\300!\203\211\202\301\302!\303\304\305C\"BE=\203\"\211\202)\306DC\"\207" [macroexp-const-p make-symbol #1="v" progn set-frame-parameter append macroexp-let*] 9 "\n\n(fn VAL &rest ARGS)"]] 7 "\n\n(fn DO &rest ARGS)"] terminal-parameter #[385 "\300\301\302$\207" [gv--defsetter terminal-parameter #[385 "\300\301C\"B\207" [set-terminal-parameter append] 6 "\n\n(fn VAL &rest ARGS)"]] 7 "\n\n(fn DO &rest ARGS)"] keymap-parent #[385 "\300\301\302$\207" [gv--defsetter keymap-parent #[385 "\300\301C\"B\207" [set-keymap-parent append] 6 "\n\n(fn VAL &rest ARGS)"]] 7 "\n\n(fn DO &rest ARGS)"] match-data #[385 "\300\301\302$\207" [gv--defsetter match-data #[385 "\300!\203\211\202\301\302!\303\304\305C\"BE=\203\"\211\202)\306DC\"\207" [macroexp-const-p make-symbol #1# progn set-match-data append macroexp-let*] 9 "\n\n(fn VAL &rest ARGS)"]] 7 "\n\n(fn DO &rest ARGS)"] overlay-get #[385 "\300\301\302$\207" [gv--defsetter overlay-get #[385 "\300\301C\"B\207" [overlay-put append] 6 "\n\n(fn VAL &rest ARGS)"]] 7 "\n\n(fn DO &rest ARGS)"] overlay-start #[385 "\300\301\302$\207" [gv--defsetter overlay-start #[514 "\300\301\302DFE\207" [progn move-overlay overlay-end] 8 "\n\n(fn STORE OV)"]] 7 "\n\n(fn DO &rest ARGS)"] overlay-end #[385 "\300\301\302$\207" [gv--defsetter overlay-end #[514 "\300\301\302DFE\207" [progn move-overlay overlay-start] 7 "\n\n(fn STORE OV)"]] 7 "\n\n(fn DO &rest ARGS)"] process-buffer #[385 "\300\301\302$\207" [gv--defsetter process-buffer #[385 "\300\301C\"B\207" [set-process-buffer append] 6 "\n\n(fn VAL &rest ARGS)"]] 7 "\n\n(fn DO &rest ARGS)"] process-filter #[385 "\300\301\302$\207" [gv--defsetter process-filter #[385 "\300\301C\"B\207" [set-process-filter append] 6 "\n\n(fn VAL &rest ARGS)"]] 7 "\n\n(fn DO &rest ARGS)"] process-sentinel #[385 "\300\301\302$\207" [gv--defsetter process-sentinel #[385 "\300\301C\"B\207" [set-process-sentinel append] 6 "\n\n(fn VAL &rest ARGS)"]] 7 "\n\n(fn DO &rest ARGS)"] process-get #[385 "\300\301\302$\207" [gv--defsetter process-get #[385 "\300\301C\"B\207" [process-put append] 6 "\n\n(fn VAL &rest ARGS)"]] 7 "\n\n(fn DO &rest ARGS)"] window-buffer #[385 "\300\301\302$\207" [gv--defsetter window-buffer #[385 "\300\301C\"B\207" [set-window-buffer append] 6 "\n\n(fn VAL &rest ARGS)"]] 7 "\n\n(fn DO &rest ARGS)"] window-display-table #[385 "\300\301\302$\207" [gv--defsetter window-display-table #[385 "\300!\203\211\202\301\302!\303\304\305C\"BE=\203\"\211\202)\306DC\"\207" [macroexp-const-p make-symbol #1# progn set-window-display-table append macroexp-let*] 9 "\n\n(fn VAL &rest ARGS)"]] 7 "\n\n(fn DO &rest ARGS)"] window-dedicated-p #[385 "\300\301\302$\207" [gv--defsetter window-dedicated-p #[385 "\300\301C\"B\207" [set-window-dedicated-p append] 6 "\n\n(fn VAL &rest ARGS)"]] 7 "\n\n(fn DO &rest ARGS)"] window-hscroll #[385 "\300\301\302$\207" [gv--defsetter window-hscroll #[385 "\300\301C\"B\207" [set-window-hscroll append] 6 "\n\n(fn VAL &rest ARGS)"]] 7 "\n\n(fn DO &rest ARGS)"] window-parameter #[385 "\300\301\302$\207" [gv--defsetter window-parameter #[385 "\300\301C\"B\207" [set-window-parameter append] 6 "\n\n(fn VAL &rest ARGS)"]] 7 "\n\n(fn DO &rest ARGS)"] window-point #[385 "\300\301\302$\207" [gv--defsetter window-point #[385 "\300\301C\"B\207" [set-window-point append] 6 "\n\n(fn VAL &rest ARGS)"]] 7 "\n\n(fn DO &rest ARGS)"] window-start #[385 "\300\301\302$\207" [gv--defsetter window-start #[385 "\300\301C\"B\207" [set-window-start append] 6 "\n\n(fn VAL &rest ARGS)"]] 7 "\n\n(fn DO &rest ARGS)"] progn #[385 "\300!\301!@\204\302\"\202\303\304\302\"C\"B\207" [butlast last gv-get progn append] 10 "\n\n(fn DO &rest EXPS)"] #[257 "\300\301\302\303\304!\305\"\306\307%\207" [make-byte-code 642 "\300\301\302\303!\"!BB\207" vconcat vector [macroexp-unprogn gv-get macroexp-progn] 9 "\n\n(fn DO BINDINGS &rest BODY)"] 7 "\n\n(fn LETSYM)"] let let* if #[899 "\203
\301\302\303\"!\203\"\304\305\"\306\305\307!	\"!BBB\207\310\311!\304\305\312\313\314\315\316	!\317\"\320\321%\"\305\307!\312\313\314\315\316\n!\322\"\320\321%\"F\323!\203U\211\202X\310\324!\325\326DD\312\327\330\315\316!\331\"\332\333%\"=\203w\211\202~\334DC\"\266\203\207" [lexical-binding macroexp-small-p dummy #[257 "\300\207" [dummy] 2 "\n\n(fn ##)"] if gv-get macroexp-unprogn macroexp-progn make-symbol "v" make-byte-code 514 "\301\302\303E\302\300C\300!EE\207" vconcat vector [cons lambda nil] 8 "\n\n(fn GETTER SETTER)" [cons lambda nil] macroexp-const-p #2="gv" funcall car 257 "\301\302\300DE\207" [funcall cdr] 4 "\n\n(fn V)" macroexp-let*] 16 "\n\n(fn DO TEST THEN &rest ELSE)"] cond #[385 "\203
\301\302\303\"!\203 \304\305\306\307\310\311\312!\313\"\314\315%\"B\207\316\317!\304\305\306\307\320\311\312!\321\"\322\315%\"B\323!\203?\211\202B\316\324!\325\326DD\306\307\327\311\312!\330\"\331\332%\"=\203`\211\202g\333DC\"\266\203\207" [lexical-binding macroexp-small-p dummy #[257 "\300\207" [dummy] 2 "\n\n(fn ##)"] cond mapcar make-byte-code 257 "\211A\203\211@\301\302\303A!\300\"!B\207\302@\300\"\207" vconcat vector [macroexp-unprogn gv-get macroexp-progn] 6 "\n\n(fn BRANCH)" make-symbol "v" "\211A\203\211@\301\302\303A!\304\305\306\307\310\300!\311\"\312\313%\"!B\207\302@\304\305\306\307\310\300!\314\"\312\313%\"\207" [macroexp-unprogn gv-get macroexp-progn make-byte-code 514 "\301\302\303E\302\300C\300!EE\207" vconcat vector [cons lambda nil] 8 "\n\n(fn GETTER SETTER)" [cons lambda nil]] 11 macroexp-const-p #2# funcall car "\301\302\300DE\207" [funcall cdr] 4 "\n\n(fn V)" macroexp-let*] 13 "\n\n(fn DO &rest BRANCHES)"] cons #[771 "\300\301\302\303\304\305	\"\306\"\307\310%\"\207" [gv-get make-byte-code 514 "\302\301\303\304\305\306\307\300		#\310\"\311\312%\"\207" vconcat vector [gv-get make-byte-code 514 "\300\303\301E\304\305\306\307\310\302\"\311\"\312\313%\"\207" vconcat vector [cons make-byte-code 257 "\302\300\303D!\301\304D!E\207" vconcat vector [progn car cdr] 6 "\n\n(fn V)"] 11 "\n\n(fn DGETTER DSETTER)"] 12 "\n\n(fn AGETTER ASETTER)"] 12 "\n\n(fn DO A D)"] logand #[642 "\300\301\302\303\304\305	\"\306\"\307\310%\"\207" [gv-get make-byte-code 514 "\301A\203\302\301B\202
\301@\303!\203\211\202\304\305!\300\302E\306\307\310\311\312\n\n	#\313\"\314\315%\"=\203;\211\202B\316DC\"\207" vconcat vector [logand macroexp-copyable-p make-symbol "mask" make-byte-code 257 "\301\303\304\302E\304\300\305\302DEE!\207" vconcat vector [logior logand lognot] 8 "\n\n(fn V)" macroexp-let*] 14 "\n\n(fn GETTER SETTER)"] 12 "\n\n(fn DO PLACE &rest MASKS)"] provide gv] 6)

MMCT - 2023