%PDF- <> %âãÏÓ endobj 2 0 obj <> endobj 3 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 28 0 R 29 0 R] /MediaBox[ 0 0 595.5 842.25] /Contents 4 0 R/Group<>/Tabs/S>> endobj ºaâÚÎΞ-ÌE1ÍØÄ÷{òò2ÿ ÛÖ^ÔÀá TÎ{¦?§®¥kuµùÕ5sLOšuY>endobj 2 0 obj<>endobj 2 0 obj<>endobj 2 0 obj<>endobj 2 0 obj<> endobj 2 0 obj<>endobj 2 0 obj<>es 3 0 R>> endobj 2 0 obj<> ox[ 0.000000 0.000000 609.600000 935.600000]/Fi endobj 3 0 obj<> endobj 7 1 obj<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI]>>/Subtype/Form>> stream
;ELC ;;; Compiled ;;; in Emacs version 25.2.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. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; #@27 Current version of EIEIO. (defvar eieio-version "1.4" (#$ . 410)) #@39 Display the current version of EIEIO. (defalias 'eieio-version #[0 "\301!\207" [eieio-version message] 2 (#$ . 482) nil]) (require 'eieio-core) #@2510 Define NAME as a new class derived from SUPERCLASS with SLOTS. OPTIONS-AND-DOC is used as the class' options and base documentation. SUPERCLASSES is a list of superclasses to inherit from, with SLOTS being the slots residing in that class definition. Supported tags are: :initform - Initializing form. :initarg - Tag used during initialization. :accessor - Tag used to create a function to access this slot. :allocation - Specify where the value is stored. Defaults to `:instance', but could also be `:class'. :writer - A function symbol which will `write' an object's slot. :reader - A function symbol which will `read' an object. :type - The type of data allowed in this slot (see `typep'). :documentation - A string documenting use of this slot. The following are extensions on CLOS: :custom - When customizing an object, the custom :type. Public only. :label - A text string label used for a slot when customizing. :group - Name of a customization group this slot belongs in. :printer - A function to call to print the value of a slot. See `eieio-override-prin1' as an example. A class can also have optional options. These options happen in place of documentation (including a :documentation tag), in addition to documentation, or not at all. Supported options are: :documentation - The doc-string used for this class. Options added to EIEIO: :allow-nil-initform - Non-nil to skip typechecking of null initforms. :custom-groups - List of custom group names. Organizes slots into reasonable groups for customizations. :abstract - Non-nil to prevent instances of this class. If a string, use as an error string if someone does try to make an instance. :method-invocation-order - Control the method invocation order if there is multiple inheritance. Valid values are: :breadth-first - The default. :depth-first Options in CLOS not supported in EIEIO: :metaclass - Class to use in place of `standard-class' :default-initargs - Initargs to use when initializing new objects of this class. Due to the way class options are set up, you can add any tags you wish, and reference them using the function `class-option'. (fn NAME SUPERCLASSES SLOTS &rest OPTIONS-AND-DOC) (defalias 'defclass '(macro . #[899 "<\204 \303\304\305\306E\"\210\211@;\203# \211G\307\246\310U\204# \311\312!\210\2026 \211@9\2036 \211G\307\246\313U\2046 \311\312!\210\211@;\203A \314B\262\315>A\242\211\203U \211\316\235\204U \311\317\"\210\210\320\321!\322P!\320\323\324\"!\325\211\203\253\211@\211@A\211\326\327\"\326\330\"\326\331\"\326\332\"\326\333\"\326\334\"\335\"\204\231 \211B\210 \203\273 \211\203\272 \211@\336\235\204\262 \303\337@C\"\210\211AA\262\202\240 \210\340>\204\310 \303\337\333D\"\210\211\203\330 \211;\204\330 \303\337\334D\"\210\203\346 \341=\203\346 \342\343!\210\203]\344\345D\346\347DD\350\347\351\fD\352BBBF B\262 \344\347DC\323\353#\354\355\347\351DE\356\347\351DEE\257 B\262 \n\203]\341=\203]\344\347\357DDC\323\360#\354\355\347\351DE\361\347\351DEE\257 B\262 \203\202\344\347D\362B\323\363#\345\364\347\351DE\365BB\257 B\262 \203\242\344\347DC\323\366#\364\347\351 DE\257 B\262 \266\nA\266\202\202f \210\367\370\351D\371\351DDE\370\351D\372\351\fDDE\373\n\205\350\320\323\374 \"!\370\351D\351 DE\375\351D\323\376\"\377BBBD\262\201@ \351 D\201A \201B \nDF\201C \351D\351D\351D\351D\257D\201D >A\242\203K\201D >A\242\211;\2042\323\201E \"\262\201F \201G \323\201H \"\311D\257\262\202o\201F \201I \323\201J \"\201K \201L \201M \351D\201N BBB\257C$BBB\207" [eieio--known-slot-names eieio-error-unsupported-class-tags eieio-backward-compatibility signal wrong-type-argument list superclasses 2 1 error "Too many arguments to `defclass'" 0 :documentation :method-invocation-order (:depth-first :breadth-first :c3) "Method invocation order %s is not allowed" intern symbol-name "-p" format "%s--eieio-childp" nil plist-get :accessor :initarg :reader :writer :allocation :label memql (:accessor :initform :initarg :documentation :protection :reader :writer :allocation :type :custom :label :group :printer :allow-nil-initform :custom-groups) invalid-slot-type (nil :class :instance) :class message "Class allocated slots do not need :initarg" cl-defmethod setf value this eieio-oset quote (value) "Retrieve the slot `%S' from an object of class `%S'." if slot-boundp eieio-oref subclass "Retrieve the class slot `%S' from a class `%S'.\nThis method is obsolete." eieio-oref-default (value) "Set the slot `%S' of an object of class `%S'." slot-value (value) "Access the slot `%S' from object of class `%S'." progn defalias eieio-make-class-predicate eieio-make-child-predicate append "%s-child-p" make-obsolete "use (cl-typep ... '%s) instead" ("25.1") put 'cl-deftype-satisfies function eieio-defclass-internal :abstract "Class %s is abstract" defun (&rest _) "You cannot create a new object of type `%S'." (&rest slots) "Create a new object of class type `%S'." (declare (compiler-macro (lambda (whole) (if (not (stringp (car slots))) whole (macroexp--warn-and-return (format "Obsolete name arg %S to constructor %S" (car slots) (car whole)) `(,(car whole) (identity ,(car slots)) ,@(cdr slots))))))) apply #'make-instance (slots)] 29 (#$ . 635)])) (function-put 'defclass 'doc-string-elt 4) #@174 Retrieve the value stored in OBJ in the slot named by SLOT. Slot is the name of the slot when created by `defclass' or the label created by the :initarg tag. (fn OBJ SLOT) (defalias 'oref '(macro . #[514 "\300\301DE\207" [eieio-oref quote] 6 (#$ . 6322)])) (byte-code "\300\301\302\303#\210\304\305\306\"\210\304\307\310\"\210\311\307\312\313#\207" [put oref edebug-form-spec (form symbolp) defalias slot-value eieio-oref set-slot-value eieio-oset make-obsolete "use (setf (slot-value ..) ..) instead" "25.1"] 4) #@240 Get the default value of OBJ (maybe a class) for SLOT. The default value is the value installed in a class with the :initform tag. SLOT can be the slot name, or the tag specified by the :initarg tag in the `defclass' call. (fn OBJ SLOT) (defalias 'oref-default '(macro . #[514 "\300\301DE\207" [eieio-oref-default quote] 6 (#$ . 6845)])) (put 'oref-default 'edebug-form-spec '(form symbolp)) #@716 Bind SPEC-LIST lexically to slot values in OBJECT, and execute BODY. This establishes a lexical environment for referring to the slots in the instance named by the given slot-names as though they were variables. Within such a context the value of the slot can be specified by using its slot name, as if it were a lexically bound variable. Both setf and setq can be used to set the value of the slot. SPEC-LIST is of a form similar to `let'. For example: ((VAR1 SLOT1) SLOT2 SLOTN (VARN+1 SLOTN+1)) Where each VAR is the local variable given to the associated SLOT. A slot specified without a variable name is given a variable name of the same name as the slot. (fn SPEC-LIST OBJECT &rest BODY) (defalias 'with-slots '(macro . #[642 "\300\301!\210\302!\203 \211\202 \303\304!\305\306\307\310\311\312\313!\314\"\315\316%\"BB=\2031 \211\2028 \317DC\"\207" [require cl-lib macroexp-const-p make-symbol "object" cl-symbol-macrolet mapcar make-byte-code 257 "\211<\203\n \211@\202 \211<\203 A@\202 \301\300\302DED\207" vconcat vector [slot-value quote] 8 "\n\n(fn ENTRY)" macroexp-let*] 13 (#$ . 7248)])) (byte-code "\300\301\302\303#\210\304\301\305\306#\207" [function-put with-slots lisp-indent-function 2 put edebug-form-spec (sexp sexp def-body)] 4) #@83 Return some data structure from which can be extracted the slot offset. (fn OBJ) (defalias 'eieio-pcase-slot-index-table #[257 "\211\300HJ\301H\207" [0 5] 3 (#$ . 8546)]) #@73 Find the index to pass to `aref' to access SLOT. (fn INDEX-TABLE SLOT) (defalias 'eieio-pcase-slot-index-from-index-table #[514 "\300\"\211\205\n \211T\207" [gethash] 5 (#$ . 8724)]) #@243 Pcase patterns to match EIEIO objects. Elements of FIELDS can be of the form (NAME PAT) in which case the contents of field NAME is matched against PAT, or they can be of the form NAME which is a shorthand for (NAME NAME). (fn &rest FIELDS) (defalias 'eieio--pcase-macroexpander #[128 "\300\301!\302\303\304\305E\306\307\310\311\312\313 !\314\"\315\316%\"BBB\207" [make-symbol "table" and (pred eieio-object-p) app eieio-pcase-slot-index-table mapcar make-byte-code 257 "\211:\203\n \211@\202 \211:\203 A@\202 \301\302!\303\304\303\305BB\306\300\307DEE\310\311\312EEE\207" vconcat vector [make-symbol "index" and let ((pred natnump)) eieio-pcase-slot-index-from-index-table quote app pcase--flip aref] 11 "\n\n(fn FIELD)"] 12 (#$ . 8917)]) (byte-code "\300\301\302\303#\210\300\304\305\301#\210\306\307\310\311#\210\312\307\310\313#\210\312\314\315\316#\210\306\314\317\314\320\311#\321#\207" [put eieio--pcase-macroexpander edebug-form-spec (&rest [&or (sexp pcase-PAT) sexp]) eieio pcase-macroexpander defalias object-class-fast eieio-object-class nil make-obsolete "24.4" eieio-object-name-string eieio-named "25.1" cl-generic-define (obj) "Return a string which is OBJ's name.\n\n(fn OBJ)"] 6) #@146 Return a printed representation for object OBJ. If EXTRA, include that in the string returned to represent the symbol. (fn OBJ &optional EXTRA) (defalias 'eieio-object-name #[513 "\300!\204 \301\302\303\304E\"\210\305\306\307!\310!\206 \311$\207" [eieio-object-p signal wrong-type-argument eieio-object obj format "#<%s %s%s>" eieio-object-class eieio-object-name-string ""] 7 (#$ . 10138)]) (byte-code "\300\301\302\303#\210\304\301\302\305#\207" [defalias object-name eieio-object-name nil make-obsolete "24.4"] 4) (defconst eieio--object-names (make-hash-table :test 'eq :weakness 'key)) (byte-code "\300\301\302\303\302\304%\210\305\306\301\302#\210\307\306\301\310#\210\300\311\302\312\302\313%\210\305\314\311\302#\210\307\314\311\310#\207" [cl-generic-define-method eieio-object-name-string nil (obj) #[257 "\301\"\206\f \302\303!!\207" [eieio--object-names gethash symbol-name eieio-object-class] 4 "\n\n(fn OBJ)"] defalias object-name-string make-obsolete "24.4" eieio-object-set-name-string (obj name) #[514 "\211;\204 \301\302\303\304E\"\210\305#\207" [eieio--object-names signal wrong-type-argument string name puthash] 8 "Set the string which is OBJ's NAME.\n\n(fn OBJ NAME)"] object-set-name-string] 6) #@49 Return the class struct defining OBJ. (fn OBJ) (defalias 'eieio-object-class #[257 "\300!\204 \301\302\303\304E\"\210\211\211\305HJ\262\211\306H\207" [eieio-object-p signal wrong-type-argument eieio-object obj 0 1] 6 (#$ . 11379)]) (byte-code "\300\301\302\303#\210\304\301\302\305#\210\300\306\302\303#\210\304\306\302\305#\207" [defalias object-class eieio-object-class nil make-obsolete "24.4" class-of] 4) #@59 Return a Lisp like symbol name for OBJ's class. (fn OBJ) (defalias 'eieio-object-class-name #[257 "\300!\204 \301\302\303\304E\"\210\305\211\306HJ\262!\207" [eieio-object-p signal wrong-type-argument eieio-object obj eieio-class-name 0] 6 (#$ . 11800)]) (byte-code "\300\301\302\303#\210\304\301\302\305#\207" [defalias object-class-name eieio-object-class-name nil make-obsolete "24.4"] 4) #@146 Return parent classes to CLASS. (overload of variable). The CLOS function `class-direct-superclasses' is aliased to this function. (fn CLASS) (defalias 'eieio-class-parents #[257 "\211\2119\203 \211\300N\206 \202 \211\262\211\301H\207" [cl--class 3] 4 (#$ . 12204)]) (byte-code "\300\301\302\303#\210\304\301\302\305#\207" [defalias class-parents eieio-class-parents nil make-obsolete "24.4"] 4) #@117 Return child classes to CLASS. The CLOS function `class-direct-subclasses' is aliased to this function. (fn CLASS) (defalias 'eieio-class-children #[257 "\300!\204 \301\302\303\303E\"\210\211\304N\211\305H\207" [class-p signal wrong-type-argument class cl--class 6] 6 (#$ . 12614)]) (byte-code "\300\301\302\303#\210\304\301\302\305#\210\300\306\307\303#\210\304\306\307\305#\210\300\310\302\303#\210\304\310\302\305#\207" [defalias class-children eieio-class-children nil make-obsolete "24.4" class-direct-superclasses eieio-class-parents class-direct-subclasses] 4) #@74 Return first parent class to CLASS. (overload of variable). (fn CLASS) (defalias 'eieio-class-parent '(macro . #[257 "\300\301DD\207" [car eieio-class-parents] 4 (#$ . 13192)])) (byte-code "\300\301\302\303#\210\304\301\302\305#\207" [defalias class-parent eieio-class-parent nil make-obsolete "24.4"] 4) #@57 Return t if OBJ is of class-type CLASS. (fn OBJ CLASS) (defalias 'same-class-p #[514 "\211\2119\203 \211\301N\206 \202 \211\262\262\302!\203) \211G\303Y\203) \211\304H>\2041 \305\306\307\310E\"\210\311!\204? \305\306\312\313E\"\210\211\304HJ\262=\207" [cl-struct-eieio--class-tags cl--class vectorp 12 0 signal wrong-type-argument eieio--class class eieio-object-p eieio-object obj] 7 (#$ . 13506)]) #@85 Return non-nil if OBJ is an instance of CLASS or CLASS' subclasses. (fn OBJ CLASS) (defalias 'object-of-class-p #[514 "\300!\204 \301\302\303\304E\"\210\305\211\306HJ\262\"\207" [eieio-object-p signal wrong-type-argument eieio-object obj child-of-class-p 0] 7 (#$ . 13926)]) (defalias 'obj-of-class-p 'object-of-class-p) #@73 Return non-nil if CHILD class is a subclass of CLASS. (fn CHILD CLASS) (defalias 'child-of-class-p #[514 "\2119\203 \211\301N\206 \202 \211\262\262\302!\203) G\303Y\203) \304H>\2041 \305\306\307\310E\"\210\211\311=\206\215 \312\2119\203G \211\301N\206H \202J \211\262\262\302!\203a G\303Y\203a \304H>\204i \305\306\307\313E\"\210\203\206 =\204\206 \314\315H\"\262\211A\262\242\262\202i \205\213 \316\262\207" [cl-struct-eieio--class-tags cl--class vectorp 12 0 signal wrong-type-argument eieio--class child eieio-default-superclass nil class append 3 t] 8 (#$ . 14260)]) (defalias 'eieio-slot-descriptor-name #[257 "\211\301H>\204 \302\303\304D\"\210\211\305H\207" [cl-struct-cl-slot-descriptor-tags 0 signal wrong-type-argument cl-slot-descriptor 1] 5 "\n\n(fn SLOT)"]) #@67 Return list of slots available in instances of CLASS. (fn CLASS) (defalias 'eieio-class-slots #[257 "\211\2119\203 \211\301N\206 \202 \211\262\262\302!\203) \211G\303Y\203) \211\304H>\2041 \305\306\307\310E\"\210\311\312\313H\"\207" [cl-struct-eieio--class-tags cl--class vectorp 12 0 signal wrong-type-argument eieio--class class mapcar identity 4] 6 (#$ . 15071)]) #@55 Return list of slot names available in OBJ. (fn OBJ) (defalias 'object-slots #[257 "\300!\204 \301\302\303\304E\"\210\305\306\307\211\310HJ\262!\"\207" [eieio-object-p signal wrong-type-argument eieio-object obj mapcar cl--slot-descriptor-name eieio-class-slots 0] 7 (#$ . 15454)]) (make-obsolete 'object-slots 'eieio-class-slots "25.1") #@53 Fetch from CLASS, SLOT's :initarg. (fn CLASS SLOT) (defalias 'eieio--class-slot-initarg #[514 "\301!\203 G\302Y\203 \303H>\204 \304\305\306\307E\"\210\310H\311\203= \211\204= @A=\2036 @@\262A\262\202! \207" [cl-struct-eieio--class-tags vectorp 12 0 signal wrong-type-argument eieio--class class 7 nil] 7 (#$ . 15804)]) #@193 Set the value in OBJ for slot SLOT to VALUE. SLOT is the slot name as specified in `defclass' or the tag created with in the :initarg slot. VALUE can be any Lisp object. (fn OBJ SLOT VALUE) (defalias 'oset '(macro . #[771 "\300\301DF\207" [eieio-oset quote] 7 (#$ . 16147)])) (put 'oset 'edebug-form-spec '(form symbolp form)) #@237 Set the default slot in CLASS for SLOT to VALUE. The default value is usually set with the :initform tag during class creation. This allows users to change the default behavior of classes after they are created. (fn CLASS SLOT VALUE) (defalias 'oset-default '(macro . #[771 "\300\301DF\207" [eieio-oset-default quote] 7 (#$ . 16486)])) (put 'oset-default 'edebug-form-spec '(form symbolp form)) #@192 Return non-nil if OBJECT's SLOT is bound. Setting a slot's value makes it bound. Calling `slot-makeunbound' will make a slot unbound. OBJECT can be an instance or a class. (fn OBJECT SLOT) (defalias 'slot-boundp #[514 "\302\303!\203 \304\"\202! 9\203 \305\"\202! \306\307\303D\" )=?\207" [eieio-skip-typecheck eieio-unbound t eieio-object-p eieio-oref eieio-oref-default signal wrong-type-argument] 6 (#$ . 16893)]) #@49 In OBJECT, make SLOT unbound. (fn OBJECT SLOT) (defalias 'slot-makeunbound #[514 "\301#\207" [eieio-unbound eieio-oset] 6 (#$ . 17327)]) #@72 Return non-nil if OBJECT-OR-CLASS has SLOT. (fn OBJECT-OR-CLASS SLOT) (defalias 'slot-exists-p #[514 "\302!\203 \211\303HJ\262\202- \304!\203) G\305Y\203) \303H>\203) \202- \306\307\"\310\311H\"\206r \211\312H\313G\303\211W\203n \211H\303H >\204Z \314\315\316HD\"\210H\317H=\203f \320\262\210\211T\262\202= \266\262\207" [cl-struct-eieio--class-tags cl-struct-cl-slot-descriptor-tags eieio-object-p 0 vectorp 12 find-class error gethash 5 8 nil signal wrong-type-argument cl-slot-descriptor 1 t] 14 (#$ . 17474)]) #@185 Return the class that SYMBOL represents. If there is no class, nil is returned if ERRORP is nil. If ERRORP is non-nil, `wrong-argument-type' is signaled. (fn SYMBOL &optional ERRORP) (defalias 'find-class #[513 "\301N\302!\203 \211G\303Y\203 \211\304H>\203 \211\202&