%PDF- %PDF-
Direktori : /usr/local/share/emacs/27.2/lisp/emacs-lisp/ |
Current File : //usr/local/share/emacs/27.2/lisp/emacs-lisp/eieio.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. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; #@27 Current version of EIEIO. (defvar eieio-version "1.4" (#$ . 408)) #@39 Display the current version of EIEIO. (defalias 'eieio-version #[0 "\301!\207" [eieio-version message] 2 (#$ . 480) 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>\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>\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") define-symbol-prop '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 (#$ . 633)])) (byte-code "\300\301\302\303#\300\207" [function-put defclass doc-string-elt 4] 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 (#$ . 6372)])) (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 (#$ . 6895)])) (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 (#$ . 7298)])) (byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put with-slots lisp-indent-function 2 put edebug-form-spec (sexp sexp def-body)] 5) #@83 Return some data structure from which can be extracted the slot offset. (fn OBJ) (defalias 'eieio-pcase-slot-index-table #[257 "\211\211\211\301H\262\203! \211\2119\203 \211\302N\206 \211\202 \211\262\202\"