Edit file File name : cl-generic.elc Content :;ELC ;;; Compiled ;;; in Emacs version 26.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 "\301\302!B\301\207" [package--builtin-versions purecopy (cl-generic 1 0)] 2) #@82 compiler-macro for inlining `cl--generic-generalizer-p'. (fn CL-WHOLE-ARG CL-X) (defalias 'cl--generic-generalizer-p--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block cl--generic-generalizer-p (and (memq (type-of cl-x) cl-struct-cl--generic-generalizer-tags) t)) nil] 9 (#$ . 499)]) (put 'cl--generic-generalizer-p 'compiler-macro 'cl--generic-generalizer-p--cmacro) #@13 (fn CL-X) (defalias 'cl--generic-generalizer-p #[257 "\301!>\205 \302\207" [cl-struct-cl--generic-generalizer-tags type-of t] 3 (#$ . 910)]) (byte-code "\300\301\302\303#\304\305\306\301#\207" [function-put cl--generic-generalizer-p side-effect-free error-free put cl--generic-generalizer cl-deftype-satisfies] 5) #@85 compiler-macro for inlining `cl--generic-generalizer-name'. (fn CL-WHOLE-ARG CL-X) (defalias 'cl--generic-generalizer-name--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block cl--generic-generalizer-name (or (cl--generic-generalizer-p cl-x) (signal 'wrong-type-argument (list 'cl--generic-generalizer cl-x))) (aref cl-x 1)) nil] 9 (#$ . 1235)]) (put 'cl--generic-generalizer-name 'compiler-macro 'cl--generic-generalizer-name--cmacro) #@192 Access slot "name" of `(cl--generic-generalizer (:constructor nil) (:constructor cl-generic-make-generalizer (name priority tagcode-function specializers-function)))' struct CL-X. (fn CL-X) (defalias 'cl--generic-generalizer-name #[257 "\301!>\204 \302\303\304D\"\210\211\305H\207" [cl-struct-cl--generic-generalizer-tags type-of signal wrong-type-argument cl--generic-generalizer 1] 5 (#$ . 1713)]) (byte-code "\300\301\302\303#\300\207" [function-put cl--generic-generalizer-name side-effect-free t] 4) #@89 compiler-macro for inlining `cl--generic-generalizer-priority'. (fn CL-WHOLE-ARG CL-X) (defalias 'cl--generic-generalizer-priority--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block cl--generic-generalizer-priority (or (cl--generic-generalizer-p cl-x) (signal 'wrong-type-argument (list 'cl--generic-generalizer cl-x))) (aref cl-x 2)) nil] 9 (#$ . 2229)]) (put 'cl--generic-generalizer-priority 'compiler-macro 'cl--generic-generalizer-priority--cmacro) #@196 Access slot "priority" of `(cl--generic-generalizer (:constructor nil) (:constructor cl-generic-make-generalizer (name priority tagcode-function specializers-function)))' struct CL-X. (fn CL-X) (defalias 'cl--generic-generalizer-priority #[257 "\301!>\204 \302\303\304D\"\210\211\305H\207" [cl-struct-cl--generic-generalizer-tags type-of signal wrong-type-argument cl--generic-generalizer 2] 5 (#$ . 2727)]) (byte-code "\300\301\302\303#\300\207" [function-put cl--generic-generalizer-priority side-effect-free t] 4) #@97 compiler-macro for inlining `cl--generic-generalizer-tagcode-function'. (fn CL-WHOLE-ARG CL-X) (defalias 'cl--generic-generalizer-tagcode-function--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block cl--generic-generalizer-tagcode-function (or (cl--generic-generalizer-p cl-x) (signal 'wrong-type-argument (list 'cl--generic-generalizer cl-x))) (aref cl-x 3)) nil] 9 (#$ . 3255)]) (put 'cl--generic-generalizer-tagcode-function 'compiler-macro 'cl--generic-generalizer-tagcode-function--cmacro) #@204 Access slot "tagcode-function" of `(cl--generic-generalizer (:constructor nil) (:constructor cl-generic-make-generalizer (name priority tagcode-function specializers-function)))' struct CL-X. (fn CL-X) (defalias 'cl--generic-generalizer-tagcode-function #[257 "\301!>\204 \302\303\304D\"\210\211\305H\207" [cl-struct-cl--generic-generalizer-tags type-of signal wrong-type-argument cl--generic-generalizer 3] 5 (#$ . 3793)]) (byte-code "\300\301\302\303#\300\207" [function-put cl--generic-generalizer-tagcode-function side-effect-free t] 4) #@102 compiler-macro for inlining `cl--generic-generalizer-specializers-function'. (fn CL-WHOLE-ARG CL-X) (defalias 'cl--generic-generalizer-specializers-function--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block cl--generic-generalizer-specializers-function (or (cl--generic-generalizer-p cl-x) (signal 'wrong-type-argument (list 'cl--generic-generalizer cl-x))) (aref cl-x 4)) nil] 9 (#$ . 4346)]) (put 'cl--generic-generalizer-specializers-function 'compiler-macro 'cl--generic-generalizer-specializers-function--cmacro) #@209 Access slot "specializers-function" of `(cl--generic-generalizer (:constructor nil) (:constructor cl-generic-make-generalizer (name priority tagcode-function specializers-function)))' struct CL-X. (fn CL-X) (defalias 'cl--generic-generalizer-specializers-function #[257 "\301!>\204 \302\303\304D\"\210\211\305H\207" [cl-struct-cl--generic-generalizer-tags type-of signal wrong-type-argument cl--generic-generalizer 4] 5 (#$ . 4909)]) (byte-code "\300\301\302\303#\304\305\306\"\207" [function-put cl--generic-generalizer-specializers-function side-effect-free t defalias copy-cl--generic-generalizer copy-sequence] 4) #@132 compiler-macro for inlining `cl-generic-make-generalizer'. (fn CL-WHOLE-ARG NAME PRIORITY TAGCODE-FUNCTION SPECIALIZERS-FUNCTION) (defalias 'cl-generic-make-generalizer--cmacro #[1285 "\300\301\302\303\211\211 & \207" [cl--defsubst-expand (name priority tagcode-function specializers-function) (cl-block cl-generic-make-generalizer (record 'cl--generic-generalizer name priority tagcode-function specializers-function)) nil] 15 (#$ . 5539)]) (put 'cl-generic-make-generalizer 'compiler-macro 'cl-generic-make-generalizer--cmacro) #@119 Constructor for objects of type `cl--generic-generalizer'. (fn NAME PRIORITY TAGCODE-FUNCTION SPECIALIZERS-FUNCTION) (defalias 'cl-generic-make-generalizer #[1028 "\300\301%\207" [record cl--generic-generalizer] 10 (#$ . 6084)]) (byte-code "\300\301\302\303#\304\305\306\307\310\306\311\312\305\303& \207" [function-put cl-generic-make-generalizer side-effect-free t cl-struct-define cl--generic-generalizer nil cl-structure-object record ((cl-tag-slot) (name nil :type string) (priority nil :type integer) (tagcode-function) (specializers-function)) cl-struct-cl--generic-generalizer-tags] 11) #@650 Define a new kind of generalizer. NAME is the name of the variable that will hold it. PRIORITY defines which generalizer takes precedence. The catch-all generalizer has priority 0. Then `eql' generalizer has priority 100. TAGCODE-FUNCTION takes as first argument a varname and should return a chunk of code that computes the tag of the value held in that variable. Further arguments are reserved for future use. SPECIALIZERS-FUNCTION takes as first argument a tag value TAG and should return a list of specializers that match TAG. Further arguments are reserved for future use. (fn NAME PRIORITY TAGCODE-FUNCTION SPECIALIZERS-FUNCTION) (defalias 'cl-generic-define-generalizer '(macro . #[1028 "\300\301\302D\257E\207" [defconst cl-generic-make-generalizer quote] 11 (#$ . 6691)])) (byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put cl-generic-define-generalizer lisp-indent-function 1 put edebug-form-spec (symbolp body)] 5) (defconst cl--generic-t-generalizer (byte-code "\300\301\302\303\304\305%\207" [#[385 "\300\207" [nil] 3 "\n\n(fn NAME &rest _)"] #[385 "\300\207" [(t)] 3 "\n\n(fn TAG &rest _)"] record cl--generic-generalizer cl--generic-t-generalizer 0] 8)) #@88 compiler-macro for inlining `cl--struct-cl--generic-method-p'. (fn CL-WHOLE-ARG CL-X) (defalias 'cl--struct-cl--generic-method-p--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block cl--struct-cl--generic-method-p (and (memq (type-of cl-x) cl-struct-cl--generic-method-tags) t)) nil] 9 (#$ . 7906)]) (put 'cl--struct-cl--generic-method-p 'compiler-macro 'cl--struct-cl--generic-method-p--cmacro) #@13 (fn CL-X) (defalias 'cl--struct-cl--generic-method-p #[257 "\301!>\205 \302\207" [cl-struct-cl--generic-method-tags type-of t] 3 (#$ . 8343)]) (byte-code "\300\301\302\303#\304\305\306\301#\207" [function-put cl--struct-cl--generic-method-p side-effect-free error-free put cl--generic-method cl-deftype-satisfies] 5) #@88 compiler-macro for inlining `cl--generic-method-specializers'. (fn CL-WHOLE-ARG CL-X) (defalias 'cl--generic-method-specializers--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block cl--generic-method-specializers (or (cl--struct-cl--generic-method-p cl-x) (signal 'wrong-type-argument (list 'cl--generic-method cl-x))) (aref cl-x 1)) nil] 9 (#$ . 8671)]) (put 'cl--generic-method-specializers 'compiler-macro 'cl--generic-method-specializers--cmacro) #@197 Access slot "specializers" of `(cl--generic-method (:constructor nil) (:constructor cl--generic-make-method (specializers qualifiers uses-cnm function)) (:predicate nil))' struct CL-X. (fn CL-X) (defalias 'cl--generic-method-specializers #[257 "\301!>\204 \302\303\304D\"\210\211\305H\207" [cl-struct-cl--generic-method-tags type-of signal wrong-type-argument cl--generic-method 1] 5 (#$ . 9165)]) (byte-code "\300\301\302\303#\300\301\304\305#\300\207" [function-put cl--generic-method-specializers side-effect-free t gv-expander #[514 "\300\301\302\"\207" [error "%s is a read-only slot" cl--generic-method-specializers] 5 "\n\n(fn CL-DO CL-X)"]] 5) #@86 compiler-macro for inlining `cl--generic-method-qualifiers'. (fn CL-WHOLE-ARG CL-X) (defalias 'cl--generic-method-qualifiers--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block cl--generic-method-qualifiers (or (cl--struct-cl--generic-method-p cl-x) (signal 'wrong-type-argument (list 'cl--generic-method cl-x))) (aref cl-x 2)) nil] 9 (#$ . 9828)]) (put 'cl--generic-method-qualifiers 'compiler-macro 'cl--generic-method-qualifiers--cmacro) #@195 Access slot "qualifiers" of `(cl--generic-method (:constructor nil) (:constructor cl--generic-make-method (specializers qualifiers uses-cnm function)) (:predicate nil))' struct CL-X. (fn CL-X) (defalias 'cl--generic-method-qualifiers #[257 "\301!>\204 \302\303\304D\"\210\211\305H\207" [cl-struct-cl--generic-method-tags type-of signal wrong-type-argument cl--generic-method 2] 5 (#$ . 10312)]) (byte-code "\300\301\302\303#\300\301\304\305#\300\207" [function-put cl--generic-method-qualifiers side-effect-free t gv-expander #[514 "\300\301\302\"\207" [error "%s is a read-only slot" cl--generic-method-qualifiers] 5 "\n\n(fn CL-DO CL-X)"]] 5) #@84 compiler-macro for inlining `cl--generic-method-uses-cnm'. (fn CL-WHOLE-ARG CL-X) (defalias 'cl--generic-method-uses-cnm--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block cl--generic-method-uses-cnm (or (cl--struct-cl--generic-method-p cl-x) (signal 'wrong-type-argument (list 'cl--generic-method cl-x))) (aref cl-x 3)) nil] 9 (#$ . 10968)]) (put 'cl--generic-method-uses-cnm 'compiler-macro 'cl--generic-method-uses-cnm--cmacro) #@193 Access slot "uses-cnm" of `(cl--generic-method (:constructor nil) (:constructor cl--generic-make-method (specializers qualifiers uses-cnm function)) (:predicate nil))' struct CL-X. (fn CL-X) (defalias 'cl--generic-method-uses-cnm #[257 "\301!>\204 \302\303\304D\"\210\211\305H\207" [cl-struct-cl--generic-method-tags type-of signal wrong-type-argument cl--generic-method 3] 5 (#$ . 11443)]) (byte-code "\300\301\302\303#\300\301\304\305#\300\207" [function-put cl--generic-method-uses-cnm side-effect-free t gv-expander #[514 "\300\301\302\"\207" [error "%s is a read-only slot" cl--generic-method-uses-cnm] 5 "\n\n(fn CL-DO CL-X)"]] 5) #@84 compiler-macro for inlining `cl--generic-method-function'. (fn CL-WHOLE-ARG CL-X) (defalias 'cl--generic-method-function--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block cl--generic-method-function (or (cl--struct-cl--generic-method-p cl-x) (signal 'wrong-type-argument (list 'cl--generic-method cl-x))) (aref cl-x 4)) nil] 9 (#$ . 12091)]) (put 'cl--generic-method-function 'compiler-macro 'cl--generic-method-function--cmacro) #@193 Access slot "function" of `(cl--generic-method (:constructor nil) (:constructor cl--generic-make-method (specializers qualifiers uses-cnm function)) (:predicate nil))' struct CL-X. (fn CL-X) (defalias 'cl--generic-method-function #[257 "\301!>\204 \302\303\304D\"\210\211\305H\207" [cl-struct-cl--generic-method-tags type-of signal wrong-type-argument cl--generic-method 4] 5 (#$ . 12566)]) (byte-code "\300\301\302\303#\300\301\304\305#\306\307\310\"\207" [function-put cl--generic-method-function side-effect-free t gv-expander #[514 "\300\301\302\"\207" [error "%s is a read-only slot" cl--generic-method-function] 5 "\n\n(fn CL-DO CL-X)"] defalias copy-cl--generic-method copy-sequence] 5) #@117 compiler-macro for inlining `cl--generic-make-method'. (fn CL-WHOLE-ARG SPECIALIZERS QUALIFIERS USES-CNM FUNCTION) (defalias 'cl--generic-make-method--cmacro #[1285 "\300\301\302\303\211\211 & \207" [cl--defsubst-expand (specializers qualifiers uses-cnm function) (cl-block cl--generic-make-method (record 'cl--generic-method specializers qualifiers uses-cnm function)) nil] 15 (#$ . 13272)]) (put 'cl--generic-make-method 'compiler-macro 'cl--generic-make-method--cmacro) #@103 Constructor for objects of type `cl--generic-method'. (fn SPECIALIZERS QUALIFIERS USES-CNM FUNCTION) (defalias 'cl--generic-make-method #[1028 "\300\301%\207" [record cl--generic-method] 10 (#$ . 13760)]) (byte-code "\300\301\302\303#\304\305\306\307\310\306\311\312\305\303& \207" [function-put cl--generic-make-method side-effect-free t cl-struct-define cl--generic-method nil cl-structure-object record ((cl-tag-slot) (specializers nil :read-only t :type list) (qualifiers nil :read-only t :type (list-of atom)) (uses-cnm nil :read-only t :type boolean) (function nil :read-only t :type function)) cl-struct-cl--generic-method-tags] 11) #@81 compiler-macro for inlining `cl--struct-cl--generic-p'. (fn CL-WHOLE-ARG CL-X) (defalias 'cl--struct-cl--generic-p--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block cl--struct-cl--generic-p (and (memq (type-of cl-x) cl-struct-cl--generic-tags) t)) nil] 9 (#$ . 14411)]) (put 'cl--struct-cl--generic-p 'compiler-macro 'cl--struct-cl--generic-p--cmacro) #@13 (fn CL-X) (defalias 'cl--struct-cl--generic-p #[257 "\301!>\205 \302\207" [cl-struct-cl--generic-tags type-of t] 3 (#$ . 14807)]) (byte-code "\300\301\302\303#\304\305\306\301#\207" [function-put cl--struct-cl--generic-p side-effect-free error-free put cl--generic cl-deftype-satisfies] 5) #@73 compiler-macro for inlining `cl--generic-name'. (fn CL-WHOLE-ARG CL-X) (defalias 'cl--generic-name--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block cl--generic-name (or (cl--struct-cl--generic-p cl-x) (signal 'wrong-type-argument (list 'cl--generic cl-x))) (aref cl-x 1)) nil] 9 (#$ . 15108)]) (put 'cl--generic-name 'compiler-macro 'cl--generic-name--cmacro) #@138 Access slot "name" of `(cl--generic (:constructor nil) (:constructor cl--generic-make (name)) (:predicate nil))' struct CL-X. (fn CL-X) (defalias 'cl--generic-name #[257 "\301!>\204 \302\303\304D\"\210\211\305H\207" [cl-struct-cl--generic-tags type-of signal wrong-type-argument cl--generic 1] 5 (#$ . 15514)]) (byte-code "\300\301\302\303#\300\301\304\305#\300\207" [function-put cl--generic-name side-effect-free t gv-expander #[514 "\300\301\302\"\207" [error "%s is a read-only slot" cl--generic-name] 5 "\n\n(fn CL-DO CL-X)"]] 5) #@79 compiler-macro for inlining `cl--generic-dispatches'. (fn CL-WHOLE-ARG CL-X) (defalias 'cl--generic-dispatches--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block cl--generic-dispatches (or (cl--struct-cl--generic-p cl-x) (signal 'wrong-type-argument (list 'cl--generic cl-x))) (aref cl-x 2)) nil] 9 (#$ . 16060)]) (put 'cl--generic-dispatches 'compiler-macro 'cl--generic-dispatches--cmacro) #@144 Access slot "dispatches" of `(cl--generic (:constructor nil) (:constructor cl--generic-make (name)) (:predicate nil))' struct CL-X. (fn CL-X) (defalias 'cl--generic-dispatches #[257 "\301!>\204 \302\303\304D\"\210\211\305H\207" [cl-struct-cl--generic-tags type-of signal wrong-type-argument cl--generic 2] 5 (#$ . 16496)]) (byte-code "\300\301\302\303#\300\207" [function-put cl--generic-dispatches side-effect-free t] 4) #@81 compiler-macro for inlining `cl--generic-method-table'. (fn CL-WHOLE-ARG CL-X) (defalias 'cl--generic-method-table--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block cl--generic-method-table (or (cl--struct-cl--generic-p cl-x) (signal 'wrong-type-argument (list 'cl--generic cl-x))) (aref cl-x 3)) nil] 9 (#$ . 16929)]) (put 'cl--generic-method-table 'compiler-macro 'cl--generic-method-table--cmacro) #@146 Access slot "method-table" of `(cl--generic (:constructor nil) (:constructor cl--generic-make (name)) (:predicate nil))' struct CL-X. (fn CL-X) (defalias 'cl--generic-method-table #[257 "\301!>\204 \302\303\304D\"\210\211\305H\207" [cl-struct-cl--generic-tags type-of signal wrong-type-argument cl--generic 3] 5 (#$ . 17375)]) (byte-code "\300\301\302\303#\300\207" [function-put cl--generic-method-table side-effect-free t] 4) #@76 compiler-macro for inlining `cl--generic-options'. (fn CL-WHOLE-ARG CL-X) (defalias 'cl--generic-options--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block cl--generic-options (or (cl--struct-cl--generic-p cl-x) (signal 'wrong-type-argument (list 'cl--generic cl-x))) (aref cl-x 4)) nil] 9 (#$ . 17814)]) (put 'cl--generic-options 'compiler-macro 'cl--generic-options--cmacro) #@141 Access slot "options" of `(cl--generic (:constructor nil) (:constructor cl--generic-make (name)) (:predicate nil))' struct CL-X. (fn CL-X) (defalias 'cl--generic-options #[257 "\301!>\204 \302\303\304D\"\210\211\305H\207" [cl-struct-cl--generic-tags type-of signal wrong-type-argument cl--generic 4] 5 (#$ . 18235)]) (byte-code "\300\301\302\303#\304\305\306\"\207" [function-put cl--generic-options side-effect-free t defalias copy-cl--generic copy-sequence] 4) #@73 compiler-macro for inlining `cl--generic-make'. (fn CL-WHOLE-ARG NAME) (defalias 'cl--generic-make--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (name) (cl-block cl--generic-make (record 'cl--generic name nil nil nil)) nil] 9 (#$ . 18709)]) (put 'cl--generic-make 'compiler-macro 'cl--generic-make--cmacro) #@59 Constructor for objects of type `cl--generic'. (fn NAME) (defalias 'cl--generic-make #[257 "\300\301\302\211\211%\207" [record cl--generic nil] 7 (#$ . 19047)]) (byte-code "\300\301\302\303#\304\305\306\307\310\306\311\312\305\303& \207" [function-put cl--generic-make side-effect-free t cl-struct-define cl--generic nil cl-structure-object record ((cl-tag-slot) (name nil :type symbol :read-only t) (dispatches nil :type (list-of (cons natnum (list-of generalizers)))) (method-table nil :type (list-of cl--generic-method)) (options nil :type list)) cl-struct-cl--generic-tags] 11) #@67 Return the options of the generic function GENERIC. (fn GENERIC) (defalias 'cl-generic-function-options #[257 "\301!>\204 \302\303\304D\"\210\211\305H\207" [cl-struct-cl--generic-tags type-of signal wrong-type-argument cl--generic 4] 5 (#$ . 19637)]) #@13 (fn NAME) (defalias 'cl--generic '(macro . #[257 "\300\301BB\207" [get ('cl--generic)] 4 (#$ . 19899)])) #@52 Return non-nil if F is a generic function. (fn F) (defalias 'cl-generic-p #[257 "\2119\205 \211\300N\207" [cl--generic] 3 (#$ . 20013)]) #@31 (fn NAME &optional NOERROR) (defalias 'cl-generic-ensure-function #[513 "\301\302N\211\262\204\"