Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
;ELC ;;; Compiled by leavens@CMC3251632-A on Thu Sep 04 23:07:33 2003 ;;; from file d:/emacs/eieio/eieio.el ;;; in Emacs version 21.2.1 ;;; with bytecomp version 2.85.4.1 ;;; with all optimizations. ;;; This file uses dynamic docstrings, first added in Emacs 19.29. (if (and (boundp 'emacs-version) (< (aref emacs-version (1- (length emacs-version))) ?A) (or (and (boundp 'epoch::version) epoch::version) (string-lessp emacs-version "19.29"))) (error "`eieio.el' was compiled for Emacs 19.29 or later")) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; #@27 Current version of EIEIO. (defvar eieio-version "0.17" (#$ . 592)) (byte-code "\300\301!\210\302\303\304\305#\207" [require cl load "cl-macs" nil t] 4) #@39 Display the current version of EIEIO. (defalias 'eieio-version #[nil "\301!\207" [eieio-version message] 2 (#$ . 750) nil]) #@392 Non-nil if this version of EIEIO does not satisfy a specific version. Arguments can be: (MAJOR MINOR &optional BETA) Values MAJOR and MINOR must be integers. BETA can be an integer, or excluded if a released version is required. It is assumed that if the current version is newer than that specified, everything passes. Exceptions occur when known incompatibilities are introduced. (defalias 'eieio-require-version #[(major minor &optional beta) "\306\307\"\205W\310\311\312\"!\310\311\313\"!\311\314\" \203\"\310 !\f V\206V\f U\2034 \nV\206V\f U\205V \nU\205V \204I \206V \205V \205V V+\207" [eieio-version vbeta vminor vmajor major minor string-match "\\([0-9]+\\)\\.\\([0-9]+\\)\\( ?beta ?\\([0-9]+\\)\\)?" string-to-int match-string 1 2 4 beta] 5 (#$ . 882)]) (byte-code "\300\301!\203\302\303\301\"\210\202\303\304M\210\300\207" [fboundp compiled-function-arglist defalias eieio-compiled-function-arglist #[(func) "\301H\207" [func 0] 2 "Return the argument list for the compiled function FUNC."]] 3) #@288 *This hook is executed, then cleared each time `defclass' is called. The immediate effect is that I can safely keep track of common-lisp `setf' definitions regardless of the order. Users can add hooks to this variable without worrying about weather this package has been loaded or not. (defvar eieio-hook nil (#$ . -1932)) #@185 *Non nil to throw an error if an encountered tag us unsupported. This may prevent classes from CLOS applications from being used with EIEIO since EIEIO does not support all CLOS tags. (defvar eieio-error-unsupported-class-tags nil (#$ . -2263)) #@224 *If non-nil, skip all slot typechecking. Set this to t permanently if a program is functioning well to get a small speed increase. This variable is also used internally to handle default setting for optimization purposes. (defvar eieio-skip-typecheck nil (#$ . -2515)) #@282 Inside a method, this variable is the object in question. DO NOT SET THIS YOURSELF unless you are trying to simulate friendly fields. Note: Embedded methods are no longer supported. The variable THIS is still set for CLOS methods for the sake of routines like `call-next-method' (defvar this nil (#$ . 2792)) #@174 This is set to a class when a method is running. This is so we know we are allowed to check private parts or how to execute a `call-next-method'. DO NOT SET THIS YOURSELF! (defvar scoped-class nil (#$ . 3110)) #@46 Set to non-nil while initializing an object. (defvar eieio-initializing-object nil (#$ . 3327)) #@62 Uninterned symbol representing an unbound slot in an object. (defconst eieio-unbound (make-symbol "unbound") (#$ . 3429)) (byte-code "\301B\302\301!\204\f\303\303\207" [current-load-list eieio-default-superclass boundp nil] 2) #@37 Class's symbol (self-referencing.). (defconst class-symbol 1 (#$ . 3666)) #@21 Class parent field. (defconst class-parent 2 (#$ . 3746)) #@29 Class children class field. (defconst class-children 3 (#$ . 3810)) #@62 Obarray permitting fast access to variable position indexes. (defconst class-symbol-obarray 4 (#$ . 3884)) #@31 Class public attribute index. (defconst class-public-a 5 (#$ . 3997)) #@40 Class public attribute defaults index. (defconst class-public-d 6 (#$ . 4073)) #@52 Class public documentation strings for attributes. (defconst class-public-doc 7 (#$ . 4158)) #@31 Class public type for a slot. (defconst class-public-type 8 (#$ . 4257)) #@38 Class public custom type for a slot. (defconst class-public-custom 9 (#$ . 4336)) #@39 Class public custom group for a slot. (defconst class-public-custom-label 10 (#$ . 4424)) #@39 Class public custom group for a slot. (defconst class-public-custom-group 11 (#$ . 4520)) #@30 Class protection for a slot. (defconst class-protection 12 (#$ . 4616)) #@28 Class initarg tuples list. (defconst class-initarg-tuples 13 (#$ . 4694)) #@29 Class allocated attributes. (defconst class-class-allocation-a 14 (#$ . 4774)) #@32 Class allocated documentation. (defconst class-class-allocation-doc 15 (#$ . 4859)) #@29 Class allocated value type. (defconst class-class-allocation-type 16 (#$ . 4949)) #@36 Class allocated custom descriptor. (defconst class-class-allocation-custom 17 (#$ . 5037)) #@36 Class allocated custom descriptor. (defconst class-class-allocation-custom-label 18 (#$ . 5134)) #@31 Class allocated custom group. (defconst class-class-allocation-custom-group 19 (#$ . 5237)) #@34 Class allocated protection list. (defconst class-class-allocation-protection 20 (#$ . 5335)) #@31 Class allocated value vector. (defconst class-class-allocation-values 21 (#$ . 5434)) #@215 Cache index of what a newly created object would look like. This will speed up instantiation time as only a `copy-sequence' will be needed, instead of looping over all the values and setting them from the default. (defconst class-default-object-cache 22 (#$ . 5527)) #@95 Storage location of tagged class options. Stored outright without modifications or stripping. (defconst class-options 23 (#$ . 5800)) #@50 Number of fields in the class definition object. (defconst class-num-fields 24 (#$ . 5940)) #@54 Index in an object vector where the class is stored. (defconst object-class 1 (#$ . 6038)) #@46 Index in an object where the name is stored. (defconst object-name 2 (#$ . 6135)) #@37 Index into :STATIC tag on a method. (defconst method-static 0 (#$ . 6223)) #@37 Index into :BEFORE tag on a method. (defconst method-before 1 (#$ . 6304)) #@38 Index into :PRIMARY tag on a method. (defconst method-primary 2 (#$ . 6385)) #@36 Index into :AFTER tag on a method. (defconst method-after 3 (#$ . 6468)) #@78 Number of indexes into methods vector in which groups of functions are kept. (defconst method-num-lists 4 (#$ . 6547)) #@45 Index into generic :BEFORE tag on a method. (defconst method-generic-before 4 (#$ . 6672)) #@46 Index into generic :PRIMARY tag on a method. (defconst method-generic-primary 5 (#$ . 6769)) #@44 Index into generic :AFTER tag on a method. (defconst method-generic-after 6 (#$ . 6868)) #@43 Number of indexes into a method's vector. (defconst method-num-fields 7 (#$ . 6963)) #@62 This function is used to byte compile methods in a nice way. (autoload 'byte-compile-file-form-defmethod "eieio-comp" '(#$ . 7054)) (put 'defmethod 'byte-hunk-handler 'byte-compile-file-form-defmethod) #@58 Internal: Return the class vector from the CLASS symbol. (defalias 'class-v '(macro . #[(class) "\301\302BB\207" [class get ('eieio-class-definition)] 3 (#$ . 7262)])) #@195 Return t if CLASS is a valid class vector. CLASS is a symbol. Defclass will assign the class symbol to itself, so the shortcut (class-p foo) will work. The form (class-p 'foo) is more robust. (defalias 'class-p '(macro . #[(class) "\301\302\303\304\305D\306BB\307BB\310BBB\207" [class condition-case nil eq aref class-v (0) ('defclass) ((error nil))] 6 (#$ . 7438)])) #@38 Return t if OBJ is an object vector. (defalias 'object-p '(macro . #[(obj) "\301\302\303\304DC\305BB\306BBB\207" [obj condition-case nil let tobj ((and (eq (aref tobj 0) 'object) (class-p (aref tobj object-class)))) ((error nil))] 5 (#$ . 7815)])) #@58 Return the symbol representing the constructor of CLASS. (defalias 'class-constructor '(macro . #[(class) "\301\302D\303BB\207" [class aref class-v (class-symbol)] 3 (#$ . 8070)])) #@177 Return t if symbol METHOD is a generic function. Only methods have the symbol `eieio-method-obarray' as a property (which contains a list of all bindings to that method type.) (defalias 'generic-p '(macro . #[(method) "\301\302D\303\304BBE\207" [method and fboundp get ('eieio-method-obarray)] 5 (#$ . 8259)])) #@62 Return from LIST the found OPTION. Nil if it doesn't exist. (defalias 'class-option-assoc '(macro . #[(list option) "\302\303\304 EDD\207" [option list car-safe cdr memq] 5 (#$ . 8578)])) #@85 Return the value stored for CLASS' OPTION. Return nil if that option doesn't exist. (defalias 'class-option '(macro . #[(class option) "\302\303\304D\305BB\306 DE\207" [class option class-option-assoc aref class-v (class-options) quote] 4 (#$ . 8774)])) #@79 Return non-nil if CLASS is abstract. Abstract classes cannot be instantiated. (defalias 'class-abstract-p '(macro . #[(class) "\301\302BB\207" [class class-option (:abstract)] 3 (#$ . 9035)])) #@2307 Define NAME as a new class derived from SUPERCLASS with FIELDS. OPTIONS-AND-DOC is used as the class' options and base documentation. SUPERCLASS is a list of superclasses to inherit from, with FIELDS being the fields residing in that class definition. NOTE: Currently only one field may exist in SUPERCLASS as multiple inheritance is not yet supported. Supported tags are: :initform - initializing form :initarg - tag used during initialization :accessor - tag used to create a function to access this field :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: :protection - Specify protection for this slot. Defaults to `:public'. Also use `:protected', or `:private' :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. 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 initforms if nil. :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. 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 in you wish, and reference them using the function `class-option'. (defalias 'defclass '(macro . #[(name superclass fields &rest options-and-doc) "\304\305\306D\306 D\306\nD\306 D\257D\207" [name superclass fields options-and-doc eval-and-compile eieio-defclass quote] 7 (#$ . 9237)])) #@246 See `defclass' for more information. Define CNAME as a new subclass of SUPERCLASSES, with FIELDS being the fields residing in that class definition, and with options or documentation OPTIONS-AND-DOC as the toplevel documentation for this class. (defalias 'eieio-defclass #[(cname superclasses fields options-and-doc) "\306\300!\210\307\310\311!\204\312\300\313\"\210 9\204\314\315\316\"\210\n<\204%\314\315\317\"\210\n\205*\n\320\f\307\"\307\321\322\217\205: \323N@\307A\307B\307C \324\325I\210 D I\210@\203_ E@EHI\210F@;\203wFG\326\246\327U\204w\330\331!\210\202\214F@9\203\214FG\326\246\324U\204\214\330\331!\210F@;\203\232\332FB\202\234FB \203 \203 @\203\374 @9\203\374\307\333\334\217\204\301\330\335 @\"\210\202 @\323NEH\235\204\336 @\323NE @\323NEHBI\210\336\337\340 @\323NGH>A\242\"\210 H @ HHBI\210\202\330\341 \"\210 A\211\204\246 H HH\237I\210\202@ \342=\204@\343C \342\323NEH\235\2048\342\323NE \342\323NEHBI\210 H\"CI\210 \211L\210\344\345 !\346P!\211I\347\350C\351\352 \"\353\354\355\350 EEFM\210)\344\345 !\356P!\211I\347\357\351\360 \"\353\361\362\350 EEFM\210\363\364 \307\365\366\344\345 !\356P!DDF!\210)\367 \n\"\210\370 \323 #\210J\203\333J@\211K@LKAM\371M\372\"N\371M\373\"\206\304\373M\235?\205\304OP\371M\374\"Q\371M\332\"R\371M\375\"S\371M\376\"T\371M\377\"U\371M\201y\"V\371M\201z\"W\371M\201{\"X\371M\201|\"Y\371M\201}\"Z\201~B>A\242[\\\203LM\211]\203K]@\201\235\204A\314\201\200]@C\"\210]AA\211]\204-)S\201\201=\204^S\201\202=\203d\307S\202\251S\201\203=\204vS\201\204=\203~\201\203S\202\251S\201\205=\204\220S\201\206=\203\230\201\205S\202\251S\307=\204\251\314\201\200\375SD\"\210V\203\314V\201\207=\204\314V\201\210=\204\314\314\201\200\201yVD\"\210W\204\324\343WY\203\353Y;\204\353\314\201\200\201|YD\"\210Q\203V\201\207=\203\201\211\201\212!\210Q\203 Q\211L\210Z\204\201\213Z\202#Z<\204#ZCZ\336\201\214Z\"\210\201\215 LPRWXYZSQV\201\216[& \210\336\201\217Z\"\210N\203y\201\220N\201\221 DC\351\201\222L #\201\223\201\221\365LDEE\"\210U\203\252\201\220U\201\221 D\201\224D\351\201\225L #\201\226\201\227\201\221\365LDE\201\230BBE\"\210T\203\320\201\220T\201\221 DC\351\201\231L #\201\227\201\221\365LDEE\"\210.JA\211J\204\235 ^ ^H\237I\210 _ _H\237I\210 ` `H\237I\210 a\201\232\201\233 aH\237\"I\210 b bH\237I\210 c cH\237I\210 d dH\237I\210 e eH\237I\210 f fH\237I\210 g\201\232\201\233 gH\"I\210 h\201\232\201\233 hH\"I\210\324i ^Hj eHkjGl\201\234mm@lW\203\207mA\211m\204um@)n\320n\324\"o\307pj\203\317\344\345j@!o\"\211piL\210iTik@\203\302\370p\201\235k@#\210jAjkAk\202\227 qoI\210.\201\236B>A\242\203\201\236B>A\242\211r;\204\372\351\201\237 \"r \347\201\240\351\201\241 \"\330rDFM\210)\202+ \347\201\242\351\201\243 \"\201\232\201\244 \201\245BBBFM\210\370 \201\246\332B>A\242#\210\340B>A\242s\336\201\247A\"\210\340B>\203[\340B>As\240\210\202d\340sBBBB) GBI\210C\203w H\307I\210\320 ^HG\201\250\\\307\"\211t\324\201\251I\210tu I\210tv\201\252I\210\343w\201\253t\343\"\210) xtI\210) .\207" [eieio-hook cname superclasses pname class-num-fields newc run-hooks nil featurep cl add-hook eieio-cl-run-defsetf signal wrong-type-argument (symbolp cname) (listp superclasses) make-vector (byte-code "\301N\302H\303=\207" [cname eieio-class-definition 0 defclass] 2) ((error)) eieio-class-definition 0 defclass 2 1 error "Too many arguments to `defclass'" :documentation (byte-code "@\301N\302H\303=\207" [pname eieio-class-definition 0 defclass] 2) ((error)) "Given parent class %s is not a class" mapcar #[(g) "\301\302\"\207" [g add-to-list groups] 3] :custom-groups "Invalid parent class %s" eieio-default-superclass t intern symbol-name "-p" lambda obj format "Test OBJ to see if it an object of type %s" and (object-p obj) same-class-p "-child-p" (obj) "Test OBJ to see if it an object is a child of type %s" (object-p obj) object-of-class-p eval deftype quote satisfies eieio-copy-parents-into-subclass put plist-get :accessor :initform :initarg :protection :reader :writer oldc groups options clearparent class-symbol class-children options-and-doc class-options class-parent csym fields field1 name field acces eieio-unbound init initarg docstr prot reader writer alloc type custom label customg skip-nil eieio-error-unsupported-class-tags tmp class-public-a class-public-d class-public-doc class-public-type class-public-custom class-public-custom-label class-public-custom-group class-protection class-initarg-tuples class-class-allocation-type class-class-allocation-values cnt pubsyms prots l primes vl oa newsym class-symbol-obarray abs g cache object-class object-name eieio-skip-typecheck class-default-object-cache :allocation :type :custom :label :group :allow-nil-initform (:accessor :initform :initarg :documentation :protection :reader :writer :allocation :type :custom :label :group :allow-nil-initform :custom-groups) invalid-slot-type public :public protected :protected private :private :class :instance message "Class allocated slots do not need :initarg" (default) #[(cg) "9?\205\f\301\302\303D\"\207" [cg signal invalid-slot-type :group] 4] eieio-add-new-field defaultoverride #[(cg) "\301\302\"\207" [cg add-to-list groups] 3] eieio-defmethod this "Retrieves the slot `%s' from an object of class `%s'" eieio-oref value "Set the slot `%s' of an object of class `%s'" setf slot-value (value) "Access the slot `%s' from object of class `%s'" apply vector (3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 101) protection :abstract "Class %s is abstract" (&rest stuff) "You cannot create a new object of type %s" (newname &rest fields) "Create a new object with name NAME of class type %s" 'constructor (newname fields) variable-documentation #[(cg) "\301\302\"\207" [cg add-to-list g] 3] 3 object default-cache-object eieio-set-defaults] 15 (#$ . 11771)]) #@104 For FIELD, signal if SPEC does not match VALUE. If SKIPNIL is non-nil, then if VALUE is nil, return t. (defalias 'eieio-perform-slot-validation-for-default #[(field spec value skipnil) "\306!\n?\205\" \205 ??\205\"\307\f \"?\205\"\310\311 \f E\")\207" [value val eieio-skip-typecheck skipnil spec field eieio-default-eval-maybe eieio-perform-slot-validation signal invalid-slot-type] 5 (#$ . 17891)]) #@461 Add into NEWC attribute A. If A already exists in NEWC, then do nothing. If it doesn't exist, then also add in D (defualt), DOC, TYPE, CUST, LABEL, CUSTG, PROT, and INIT arg. Argument ALLOC specifies if the field is allocated per instance, or per class. If optional DEFAULTOVERRIDE is non-nil, then if A exists in NEWC, we must override it's value for a default. Optional argument SKIPNIL indicates if type checking should be skipped if default value is nil. (defalias 'eieio-add-new-field #[(newc a d doc type cust label custg prot init alloc &optional defaultoverride skipnil) "\306!\203\n\307!\306 !\203\307 !\306\n!\203\307\n!\306 !\203(\307 !\f H\235\2034\310\203F9\203&\311=\203&\f H\235\204\300\312\f $\210 \f HBI\210  HBI\210  HBI\210  HBI\210 \n HBI\210  HBI\210  HBI\210  HBI\210 \fB HBI\207 \205% H!\f!\235\"!G\"GZ#\"\205\346# H\233$\"\205\364# H8%\"\204\313\314\f\"\202$ \315=\204 %\232\204\313\316 %\f$\210\312\f%$\210$\240-\207\317!&\f H\235\204\233\312\f &$\210 \f HBI\210 ' 'HBI\210 ( (HBI\210 )\n )HBI\210 * *HBI\210 + +HBI\210 , ,HBI\210 -& -HBI\202 \205 H!\f!\235\"!G\"GZ#\"\205\301# -H\233$\"\205\317# (H8%\"\204\335\313\314\f\"\202 \315=\204\362 %\232\204\362\313\316 %\f$\210\312\f%&$\210$&\240-)\207" [d type cust custg a newc sequencep copy-sequence :class :instance eieio-perform-slot-validation-for-default error "Eieio internal error overriding default value for %s" t "Child slot type `%s' does not match inherited type `%s' for `%s'" eieio-default-eval-maybe class-class-allocation-a alloc class-public-a skipnil class-public-d class-public-doc doc class-public-type class-public-custom class-public-custom-label label class-public-custom-group class-protection prot class-initarg-tuples init defaultoverride ca np num dp tp value class-class-allocation-doc class-class-allocation-type class-class-allocation-custom class-class-allocation-custom-label class-class-allocation-custom-group class-class-allocation-protection class-class-allocation-values] 5 (#$ . 18306)]) #@128 Copy into NEWC the fields of PARENTS. Follow the rules of not overwritting early parents when applying to the new child class. (defalias 'eieio-copy-parents-into-subclass #[(newc parents) " H\306\nH>A\242\211\2057\f@\307N\211\fH  H H H H H H H H\310\203\251\311@@@H@@@@@\242\312\211 & \210AAATAAAAA\202N.\n H  H !H \"H #H $H %H &H\310'\203-\311@'H@H@@@@\312\313 &\f\210AAAAAAT\202\336.\n\fA\211\204\312*\207" [newc class-parent class-options sn ps pcv :allow-nil-initform eieio-class-definition 0 eieio-add-new-field nil :class class-public-a class-public-d class-public-doc class-public-type class-public-custom class-public-custom-label class-public-custom-group class-protection class-initarg-tuples i pinit pprot pcustg plabel pcust ptype pdoc pd pa class-class-allocation-a class-class-allocation-doc class-class-allocation-type class-class-allocation-custom class-class-allocation-custom-label class-class-allocation-custom-group class-class-allocation-protection class-class-allocation-values pval] 15 (#$ . 20502)]) #@628 Make a new instance of CLASS with NAME and initialization based on INITARGS. The class' constructor requires a name for use when printing. `make-instance' in CLOS doesn't use names the way Emacs does, so the class is used as the name slot instead when INITARGS doesn't start with a string. The rest of INITARGS are label/value pairs. The label's are the symbols created with the :initarg tag from the `defclass' call. The value is the value stored in that slot. CLASS is a symbol. Defclass will assign the class symbol to itself, so the shortcut (make-instance foo) will work. The form (make-instance 'foo) is more robust. (defalias 'make-instance #[(class &rest initargs) "@\203@;\203\303 \304N\nH\"\207\303 \304N\nH #\207" [initargs class class-symbol apply eieio-class-definition] 4 (#$ . 21717)]) #@425 Create a generic function METHOD. ARGS is ignored. DOC-STRING is the base documentation for this class. A generic function has no body, as it's purpose is to decide which method body is appropriate to use. Use `defmethod' to create methods, and it calls defgeneric for you. With this implementation the arguments are currently ignored. You can use `defgeneric' to apply specialized top level documentation to a method. (defalias 'defgeneric '(macro . #[(method args &optional doc-string) "\302\303D E\207" [method doc-string eieio-defgeneric quote] 3 (#$ . 22537)])) #@185 The lambda form that would be used as the function defined on METHOD. All methods should call the same EIEIO function for dispatch. DOC-STRING is the documentation attached to METHOD. (defalias 'eieio-defgeneric-form #[(method doc-string) "\302\303\304\305 D\306BBF\207" [doc-string method lambda (&rest local-args) eieio-generic-call quote (local-args)] 6 (#$ . 23117)]) #@68 Engine part to `defgeneric' macro defining METHOD with DOC-STRING. (defalias 'eieio-defgeneric #[(method doc-string) "\303 \"\304!\203\304!\203\305N\204\306\307!\210\nM\210)\300\207" [method doc-string lambda-form eieio-defgeneric-form fboundp eieio-method-obarray error "You cannot create a generic/method over an existing symbol"] 3 (#$ . 23496)]) #@274 Create a new METHOD through `defgeneric' with ARGS. ARGS lists any keys (such as :BEFORE, :PRIMARY, :AFTER, or :STATIC), the arglst, and doc string, and eventually the body, such as: (defmethod mymethod [:BEFORE | :PRIMARY | :AFTER | :STATIC] (args) doc-string body) (defalias 'defmethod '(macro . #[(method &rest args) "\302\303D\303 DE\207" [method args eieio-defmethod quote] 4 (#$ . 23865)])) #@63 Work part of the `defmethod' macro defining METHOD with ARGS. (defalias 'eieio-defmethod #[(method args) "\306\211\211\211\211\211@\307=\203A\202V@\310=\2030A\202V@\311=\203BA \202V@\312=\203TA!\202V A@\211\211\203~@<\203r@@\202t@\nBA\211\204f\313\"!\204\232\314\"\f@;\203\223\f@\202\230\315\316\"\"\"\210@\211<\203\270 A@\306\317\320\217\204\311\321\322 A@\"\210\202\311 \323U\203\305\324\325\312\326D\"\210 \327\\\330\f\242!\203\334\331\"\f\242 $\210\202\353\331\"\332\333\334\n!D\f\" $\210.\"\207" [loopa argclass argfix firstarg body key nil :BEFORE :AFTER :PRIMARY :STATIC fboundp eieio-defgeneric format "Generically created method `%s'" (byte-code "\301N\302H\303=\207" [argclass eieio-class-definition 0 defclass] 2) ((error)) error "Unknown class type %s in method parameters" -1 signal wrong-type-argument non-class-arg 3 byte-code-function-p eieiomt-add append lambda reverse args method-before method-after method-primary method-static method] 7 (#$ . 24275)]) #@46 Return non-nil if SPEC does not match VALUE. (defalias 'eieio-perform-slot-validation #[(spec value) "\303=\206 \n=\206\304 \"\207" [spec value eieio-unbound t typep] 3 (#$ . 25343)]) #@182 Make sure that for CLASS referencing FIELD-IDX, that VALUE is valid. Checks the :type specifier. FIELD is the field that is being checked, and is only used when throwing and error. (defalias 'eieio-validate-slot-value #[(class field-idx value field) "?\205# \306Z\n\307N H H\310\f \"?\205\"\311\312\n \f F\")\207" [eieio-skip-typecheck field-idx class class-public-type st value 3 eieio-class-definition eieio-perform-slot-validation signal invalid-slot-type field] 6 (#$ . 25540)]) #@182 Make sure that for CLASS referencing FIELD-IDX, that VALUE is valid. Checks the :type specifier. FIELD is the field that is being checked, and is only used when throwing and error. (defalias 'eieio-validate-class-slot-value #[(class field-idx value field) "?\205 \306N\nH H\307\f \"?\205\310\311 \n\f F\")\207" [eieio-skip-typecheck class class-class-allocation-type field-idx st value eieio-class-definition eieio-perform-slot-validation signal invalid-slot-type field] 6 (#$ . 26036)]) #@224 Throw a signal if VALUE is a representation of an UNBOUND slot. INSTANCE is the object being referenced. SLOTNAME is the offending slot. If the slot is ok, return VALUE. Argument FN is the function calling this verifier. (defalias 'eieio-barf-if-slot-unbound #[(value instance slotname fn) " =\203\n\204\306 \307 !\f $\207\207" [value eieio-unbound eieio-skip-typecheck instance slotname fn slot-unbound object-class] 5 (#$ . 26538)]) #@37 Return non-nil if BOOL is nil or t. (defalias 'boolean-p #[(bool) "?\206\301=\207" [bool t] 2 (#$ . 26987)]) #@161 Retrieve the value stored in OBJ in the slot named by FIELD. Field is the name of the slot when created by `defclass' or the label created by the :initarg tag. (defalias 'oref '(macro . #[(obj field) "\302\303 DE\207" [obj field eieio-oref quote] 4 (#$ . 27107)])) #@56 Return the value in OBJ at FIELD in the object vector. (defalias 'eieio-oref #[(obj field) "\306\307\310\217\204\306\311\312\217\204\313\314\315D\"\210 9\204!\313\314\316 D\"\210\306\317\320\217\203,\202/\nH\321 \"\211\204T\322 \"\211\203L \323N H\fH\202j\324 \325#\202j\306\326\327\217\204b\313\314\330D\"\210\331\fH \325$*\207" [obj field object-class class c class-class-allocation-values nil (byte-code "\211\302H\303=\205\304\305\306\217)\207" [obj tobj 0 object nil (byte-code " H\302N\303H\304=\207" [tobj object-class eieio-class-definition 0 defclass] 2) ((error))] 4) ((error)) (byte-code "\301N\302H\303=\207" [obj eieio-class-definition 0 defclass] 2) ((error)) signal wrong-type-argument (or object-p class-p) symbolp (byte-code "\301N\302H\303=\207" [obj eieio-class-definition 0 defclass] 2) ((error)) eieio-field-name-index eieio-class-field-name-index eieio-class-definition slot-missing oref (byte-code "\211\302H\303=\205\304\305\306\217)\207" [obj tobj 0 object nil (byte-code " H\302N\303H\304=\207" [tobj object-class eieio-class-definition 0 defclass] 2) ((error))] 4) ((error)) object-p eieio-barf-if-slot-unbound] 6 (#$ . 27379)]) (byte-code "\300\301\302\"\210\300\303\304\"\207" [defalias slot-value eieio-oref set-slot-value eieio-oset] 3) #@500 The same as `lambda' but is used as a default value in `defclass'. As such, the form (lambda-default ARGS DOCSTRING INTERACTIVE BODY) is self quoting. This macro is meant for the sole purpose of quoting lambda expressions into class defaults. Any `lambda-default' expression is automatically transformed into a `lambda' expression when copied from the defaults into a new object. The use of `oref-default', however, will return a `lambda-default' expression. CDR is function definition and body. (defalias 'lambda-default '(macro . #[(&rest cdr) "\301\302BD\207" [cdr function lambda-default] 3 (#$ . 28690)])) (byte-code "\300\301\302\303#\210\300\301\304\305#\207" [put lambda-default lisp-indent-function defun byte-compile byte-compile-lambda-form] 4) #@228 Gets the default value of OBJ (maybe a class) for FIELD. The default value is the value installed in a class with the :initform tag. FIELD can be the slot name, or the tag specified by the :initarg tag in the `defclass' call. (defalias 'oref-default '(macro . #[(obj field) "\302\303 DE\207" [obj field eieio-oref-default quote] 4 (#$ . 29457)])) #@115 Does the work for the macro `oref-default' with similar parameters. Fills in OBJ's FIELD with it's default value. (defalias 'eieio-oref-default #[(obj field) "\306\307\310\217\204\306\311\312\217\204\313\314\315D\"\210 9\204!\313\314\316 D\"\210\306\317\320\217\203.\nH\202/\321 \"\211\204T\322 \"\211\203L \323N H\fH\202j\324 \325#\202j\326\f\327Z \323NH8\330!) \325$*\207" [obj field object-class cl c class-class-allocation-values nil (byte-code "\211\302H\303=\205\304\305\306\217)\207" [obj tobj 0 object nil (byte-code " H\302N\303H\304=\207" [tobj object-class eieio-class-definition 0 defclass] 2) ((error))] 4) ((error)) (byte-code "\301N\302H\303=\207" [obj eieio-class-definition 0 defclass] 2) ((error)) signal wrong-type-argument object-p symbolp (byte-code "\211\302H\303=\205\304\305\306\217)\207" [obj tobj 0 object nil (byte-code " H\302N\303H\304=\207" [tobj object-class eieio-class-definition 0 defclass] 2) ((error))] 4) ((error)) eieio-field-name-index eieio-class-field-name-index eieio-class-definition slot-missing oref-default eieio-barf-if-slot-unbound 3 eieio-default-eval-maybe class-public-d val] 6 (#$ . 29813)]) #@58 Check VAL, and return what `oref-default' would provide. (defalias 'eieio-default-eval-maybe #[(val) "<\203@\302\232\203 \207<\203@\303=\203A@\207<\2036@\304=\2036\305!\211\302\240\210 )\207\207" [val s lambda quote lambda-default copy-sequence] 3 (#$ . 31001)]) #@174 Set the value in OBJ for slot FIELD to VALUE. FIELD is the slot name as specified in `defclass' or the tag created with in the :initarg slot. VALUE can be any Lisp object. (defalias 'oset '(macro . #[(obj field value) "\303\304 D\nF\207" [obj field value eieio-oset quote] 4 (#$ . 31292)])) #@70 Does the work for the macro `oset'. Fills in OBJ's FIELD with VALUE. (defalias 'eieio-oset #[(obj field value) "\306\307\310\217\204\311\312\313D\"\210 9\204\311\312\314 D\"\210\315\nH \"\211\204O\316\nH \"\211\203F\317\nH \f $\210\nH\320N H \fI\202\\\321 \322\f$\202\\\323\nH \f $\210 \fI)\207" [obj field object-class c value class-class-allocation-values nil (byte-code "\211\302H\303=\205\304\305\306\217)\207" [obj tobj 0 object nil (byte-code " H\302N\303H\304=\207" [tobj object-class eieio-class-definition 0 defclass] 2) ((error))] 4) ((error)) signal wrong-type-argument object-p symbolp eieio-field-name-index eieio-class-field-name-index eieio-validate-class-slot-value eieio-class-definition slot-missing oset eieio-validate-slot-value] 6 (#$ . 31591)]) #@215 Set the default slot in CLASS for FIELD 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. (defalias 'oset-default '(macro . #[(class field value) "\303\304 D\nF\207" [class field value eieio-oset-default quote] 4 (#$ . 32388)])) #@103 Does the work for the macro `oset-default'. Fills in the default value in CLASS' in FIELD with VALUE. (defalias 'eieio-oset-default #[(class field value) "\306\307\310\217\204\311\312\313D\"\210 9\204\311\312\314 D\"\210\315 \"\211\204K\316 \"\211\203@\317 \f $\210\320N H \fI\202i\311\321\322! D\"\202i\323 \f $\210 \324Z\320NH\233\f\240\210\325\320NH \f#*\207" [class field scoped-class c value class-class-allocation-values nil (byte-code "\301N\302H\303=\207" [class eieio-class-definition 0 defclass] 2) ((error)) signal wrong-type-argument class-p symbolp eieio-field-name-index eieio-class-field-name-index eieio-validate-class-slot-value eieio-class-definition invalid-slot-name class-name eieio-validate-slot-value 3 eieio-oset class-public-d class-default-object-cache] 6 (#$ . 32749)]) #@348 The macro with-slots 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. (defalias 'with-slots '(macro . #[(spec-list object &rest body) "\303\304\"\305\306 D\n\")\207" [spec-list mappings body mapcar #[(entry) "<\203\n@\202 <\203\211A@)\202\211\305\f\306\nDE*D\207" [entry x slot var object slot-value quote] 6] append symbol-macrolet] 3 (#$ . 33579)])) (put 'with-slots 'lisp-indent-function 2) #@53 Return the class struct defining OBJ with no check. (defalias 'object-class-fast '(macro . #[(obj) "\301\302BB\207" [obj aref (object-class)] 3 (#$ . 34273)])) #@43 Return a Lisp like symbol name for CLASS. (defalias 'class-name #[(class) "\301\302\303\217\204\304\305\306D\"\210\307\310\311!\"\207" [class nil (byte-code "\301N\302H\303=\207" [class eieio-class-definition 0 defclass] 2) ((error)) signal wrong-type-argument class-p format "#" symbol-name] 4 (#$ . 34440)]) #@121 Return a Lisp like symbol string for object OBJ. If EXTRA, include that in the string returned to represent the symbol. (defalias 'object-name #[(obj &optional extra) "\304\305\306\217\204\307\310\311D\"\210\312\313\314 H!\nH \206\315$\207" [obj object-class object-name extra nil (byte-code "\211\302H\303=\205\304\305\306\217)\207" [obj tobj 0 object nil (byte-code " H\302N\303H\304=\207" [tobj object-class eieio-class-definition 0 defclass] 2) ((error))] 4) ((error)) signal wrong-type-argument object-p format "#<%s %s%s>" symbol-name ""] 5 (#$ . 34772)]) #@38 Return a string which is OBJ's name. (defalias 'object-name-string #[(obj) "\302\303\304\217\204\305\306\307D\"\210 H\207" [obj object-name nil (byte-code "\211\302H\303=\205\304\305\306\217)\207" [obj tobj 0 object nil (byte-code " H\302N\303H\304=\207" [tobj object-class eieio-class-definition 0 defclass] 2) ((error))] 4) ((error)) signal wrong-type-argument object-p] 4 (#$ . 35352)]) #@37 Set the string which is OBJ's NAME. (defalias 'object-set-name-string #[(obj name) "\303\304\305\217\204\306\307\310D\"\210 ;\204\306\307\311 D\"\210\n I\207" [obj name object-name nil (byte-code "\211\302H\303=\205\304\305\306\217)\207" [obj tobj 0 object nil (byte-code " H\302N\303H\304=\207" [tobj object-class eieio-class-definition 0 defclass] 2) ((error))] 4) ((error)) signal wrong-type-argument object-p stringp] 4 (#$ . 35757)]) #@39 Return the class struct defining OBJ. (defalias 'object-class #[(obj) "\302\303\304\217\204\305\306\307D\"\210 H\207" [obj object-class nil (byte-code "\211\302H\303=\205\304\305\306\217)\207" [obj tobj 0 object nil (byte-code " H\302N\303H\304=\207" [tobj object-class eieio-class-definition 0 defclass] 2) ((error))] 4) ((error)) signal wrong-type-argument object-p] 4 (#$ . 36213)]) (defalias 'class-of 'object-class) #@49 Return a Lisp like symbol name for OBJ's class. (defalias 'object-class-name #[(obj) "\302\303\304\217\204\305\306\307D\"\210\310 H!\207" [obj object-class nil (byte-code "\211\302H\303=\205\304\305\306\217)\207" [obj tobj 0 object nil (byte-code " H\302N\303H\304=\207" [tobj object-class eieio-class-definition 0 defclass] 2) ((error))] 4) ((error)) signal wrong-type-argument object-p class-name] 4 (#$ . 36649)]) #@47 Return parent classes to CLASS with no check. (defalias 'class-parents-fast '(macro . #[(class) "\301\302D\303BB\207" [class aref class-v (class-parent)] 3 (#$ . 37081)])) #@58 Return parent classes to CLASS. (overload of variable). (defalias 'class-parents #[(class) "\302\303\304\217\204\305\306\307D\"\210\310N H\207" [class class-parent nil (byte-code "\301N\302H\303=\207" [class eieio-class-definition 0 defclass] 2) ((error)) signal wrong-type-argument class-p eieio-class-definition] 4 (#$ . 37260)]) #@46 Return child classes to CLASS with no check. (defalias 'class-children-fast '(macro . #[(class) "\301\302D\303BB\207" [class aref class-v (class-children)] 3 (#$ . 37604)])) #@33 Return child classses to CLASS. (defalias 'class-children #[(class) "\302\303\304\217\204\305\306\307D\"\210\310N H\207" [class class-children nil (byte-code "\301N\302H\303=\207" [class eieio-class-definition 0 defclass] 2) ((error)) signal wrong-type-argument class-p eieio-class-definition] 4 (#$ . 37785)]) #@51 Return first parent class to CLASS with no check. (defalias 'class-parent-fast '(macro . #[(class) "\301\302DD\207" [class car class-parents-fast] 3 (#$ . 38107)])) #@62 Return first parent class to CLASS. (overload of variable). (defalias 'class-parent '(macro . #[(class) "\301\302DD\207" [class car class-parents] 3 (#$ . 38279)])) #@64 Return t if OBJ is of class-type CLASS with no error checking. (defalias 'same-class-fast-p '(macro . #[(obj class) "\302\303\304BB E\207" [obj class eq aref (object-class)] 4 (#$ . 38452)])) #@41 Return t if OBJ is of class-type CLASS. (defalias 'same-class-p #[(obj class) "\303\304\305\217\204\306\307\310D\"\210\303\311\312\217\204\306\307\313 D\"\210 \nH=\207" [class obj object-class nil (byte-code "\301N\302H\303=\207" [class eieio-class-definition 0 defclass] 2) ((error)) signal wrong-type-argument class-p (byte-code "\211\302H\303=\205\304\305\306\217)\207" [obj tobj 0 object nil (byte-code " H\302N\303H\304=\207" [tobj object-class eieio-class-definition 0 defclass] 2) ((error))] 4) ((error)) object-p] 4 (#$ . 38651)]) #@69 Return non-nil if OBJ is an instance of CLASS or CLASS' subclasses. (defalias 'object-of-class-p #[(obj class) "\303\304\305\217\204\306\307\310D\"\210\311 H\n\"\207" [obj object-class class nil (byte-code "\211\302H\303=\205\304\305\306\217)\207" [obj tobj 0 object nil (byte-code " H\302N\303H\304=\207" [tobj object-class eieio-class-definition 0 defclass] 2) ((error))] 4) ((error)) signal wrong-type-argument object-p child-of-class-p] 4 (#$ . 39208)]) (defalias 'obj-of-class-p 'object-of-class-p) #@40 If CHILD class is a subclass of CLASS. (defalias 'child-of-class-p #[(child class) "\304\305\306\217\204\307\310\311D\"\210\304\312\313\217\204\307\310\311 D\"\210\304 \203: =\204:\314\n \315N H\"\211@\nA\202 \205?\316)\207" [class child p class-parent nil (byte-code "\301N\302H\303=\207" [class eieio-class-definition 0 defclass] 2) ((error)) signal wrong-type-argument class-p (byte-code "\301N\302H\303=\207" [child eieio-class-definition 0 defclass] 2) ((error)) append eieio-class-definition t] 5 (#$ . 39727)]) #@33 List of slots available in OBJ. (defalias 'object-slots #[(obj) "\303\304\305\217\204\306\307\310D\"\210 H\311N\nH\207" [obj object-class class-public-a nil (byte-code "\211\302H\303=\205\304\305\306\217)\207" [obj tobj 0 object nil (byte-code " H\302N\303H\304=\207" [tobj object-class eieio-class-definition 0 defclass] 2) ((error))] 4) ((error)) signal wrong-type-argument object-p eieio-class-definition] 4 (#$ . 40268)]) #@36 Fetch from CLASS, SLOT's :initarg. (defalias 'class-slot-initarg #[(class slot) "\305\306\307\217\204\310\311\312D\"\210\313N H\305\211\2031\n\2041 @A\f=\203* @@ A\211\204\n*\207" [class class-initarg-tuples f ia slot nil (byte-code "\301N\302H\303=\207" [class eieio-class-definition 0 defclass] 2) ((error)) signal wrong-type-argument class-p eieio-class-definition] 5 (#$ . 40709)]) #@167 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. (defalias 'slot-boundp #[(object slot) "\304\305\306\307\217\203\310 \n\" =?\2052\304\2022\305\311\312\217\203,\313 \n\" =?\2052\304\2022\314\315\316 D\")\207" [eieio-skip-typecheck object slot eieio-unbound t nil (byte-code "\211\302H\300=\205\303\304\305\217)\207" [object tobj 0 nil (byte-code " H\302N\303H\304=\207" [tobj object-class eieio-class-definition 0 defclass] 2) ((error))] 4) ((error)) eieio-oref (byte-code "\301N\302H\303=\207" [object eieio-class-definition 0 defclass] 2) ((error)) eieio-oref-default signal wrong-type-argument object-p] 4 (#$ . 41116)]) #@31 In OBJECT, make SLOT unbound. (defalias 'slot-makeunbound #[(object slot) "\303 \n#\207" [object slot eieio-unbound eieio-oset] 4 (#$ . 41877)]) #@38 Non-nil if OBJECT-OR-CLASS has SLOT. (defalias 'slot-exists-p #[(object-or-class slot) "\305\306\307\217\203 \310!\202\305\311\312\217\205\313N\n H>\206%\n \fH>)\207" [object-or-class cv slot class-public-a class-class-allocation-a nil (byte-code "\211\302H\303=\205\304\305\306\217)\207" [object-or-class tobj 0 object nil (byte-code " H\302N\303H\304=\207" [tobj object-class eieio-class-definition 0 defclass] 2) ((error))] 4) ((error)) object-class (byte-code "\301N\302H\303=\207" [object-or-class eieio-class-definition 0 defclass] 2) ((error)) eieio-class-definition] 3 (#$ . 42029)]) #@114 Return the class that SYMBOL represents. (CLOS function) If there is no class, nil is returned if ERRORP is nil. (defalias 'find-class #[(symbol &optional errorp) "\302\303\304\217\204\205\305\306\307 D\"\207 \310N\207" [errorp symbol nil (byte-code "\301N\302H\303=\207" [symbol eieio-class-definition 0 defclass] 2) ((error)) signal wrong-type-argument class-p eieio-class-definition] 4 (#$ . 42644)]) #@144 Return non-nil if KEY is `equal' to the FIELD of the car of objects in LIST. The value is actually the element of LIST whose field equals KEY. (defalias 'object-assoc #[(key field list) "<\204\f\301\302\303D\"\210\203\304\305\306\217\204A\211\204@\207" [list signal wrong-type-argument listp nil (byte-code "\303 @\n\"\232\207" [key list field eieio-oref] 4) ((error))] 5 (#$ . 43061)]) #@195 Return an association list with the contents of FIELD as the key element. LIST must be a list of objects with FIELD in it. This is useful when you need to do completing read on an object group. (defalias 'object-assoc-list #[(field list) "<\204\f\303\304\305D\"\210\306\203$\307@\n\"@B BA\211\204 \237)\207" [list assoclist field signal wrong-type-argument listp nil eieio-oref] 5 (#$ . 43469)]) #@230 Return an association list with the contents of FIELD as the key element. LIST must be a list of objects, but those objects do not need to have FIELD in it. If it does not, then that element is left out of the association list. (defalias 'object-assoc-list-safe #[(field list) "<\204\f\303\304\305D\"\210\306\203,\307@\n\"\203%\310@\n\"@B BA\211\204 \237)\207" [list assoclist field signal wrong-type-argument listp nil slot-exists-p eieio-oref] 5 (#$ . 43885)]) #@323 In OBJECT's SLOT, add ITEM to the pre-existing list of elements. Optional argument APPEND indicates we need to append to the list. If ITEM already exists in the list in SLOT, then it is not added. Comparison is done with `equal' through the `member' function call. If SLOT is unbound, bind it to the list containing ITEM. (defalias 'object-add-to-list #[(object slot item &optional append) "\305\306 \n\"\204 C\2022\307 \n\"\211<\204C \235\2042\f\203.\304 C\"\2021 B\310 \n#)\207" [ov object slot item append nil slot-boundp eieio-oref eieio-oset] 5 (#$ . 44371)]) #@210 In OBJECT's SLOT, remove occurrences ITEM. If ITEM already exists in the list in SLOT, then it is not added. Comparison is done with `equal' through the `delete' function call. If SLOT is unbound, do nothing. (defalias 'object-remove-from-list #[(object slot item) "\303 \"\205\304 \305\n\306 \"\"#\207" [object slot item slot-boundp eieio-oset delete eieio-oref] 8 (#$ . 44961)]) #@175 Return Non-nil if START-CLASS is the first class to define FIELD. This is for testing if `scoped-class' is the class that defines FIELD so that we can protect private slots. (defalias 'eieio-field-originating-class-p #[(start-class field) "\305!\306\211\204\306\202.\n\203- \203-\307\310 !\n@\311N\fH\"\203&\312\nA\211\204 *\207" [start-class ret par field class-symbol-obarray class-parents t intern-soft symbol-name eieio-class-definition nil] 5 (#$ . 45354)]) #@243 In CLASS find the index of the named FIELD. The field is a symbol which is installed in CLASS by the `defclass' call. If FIELD is the value created with :initarg instead, reverse-lookup that name, and recurse with the associated slot value. (defalias 'eieio-field-name-index #[(class field) "\306\307! \310N\nH\"\2119\205 J\211\250\203_ \311N\204$\f\312\\\202o \311N\313=\203= \203=\314 \"\203=\f\312\\\202o \311N\315=\203[ \203P\316 \"\204U\203[\f\312\\\202o\317\202o\320 \"\211\205n\321 \")*\207" [field class class-symbol-obarray fsym fsi scoped-class intern-soft symbol-name eieio-class-definition protection 3 protected child-of-class-p private eieio-field-originating-class-p nil eieio-initarg-to-attribute eieio-field-name-index eieio-initializing-object fn] 5 (#$ . 45837)]) #@243 In CLASS find the index of the named FIELD. The field is a symbol which is installed in CLASS by the `defclass' call. If FIELD is the value created with :initarg instead, reverse-lookup that name, and recurse with the associated slot value. (defalias 'eieio-class-field-name-index #[(class field) "\306N H\211G\f\n>\211G \205 Z,\207" [class class-class-allocation-a a l1 field af eieio-class-definition l2] 3 (#$ . 46656)]) #@68 When using `call-next-method', provides a context on how to do it. (defvar eieio-generic-call-methodname nil (#$ . 47097)) #@67 When using `call-next-method', provides a context for parameters. (defvar eieio-generic-call-arglst nil (#$ . 47226)) #@142 When using `call-next-method', provides a context for the current key. Keys are a number representing :BEFORE, :PRIMARY, and :AFTER methods. (defvar eieio-generic-call-key nil (#$ . 47351)) #@134 Call METHOD with ARGS. ARGS provides the context on which implementation to use. This should only be called from a generic function. (defalias 'eieio-generic-call #[(method args) "\306\211\211\211\211\211  \306\307\310\217\203)@H\2027\306\311\312\217\2037@\313\f\203R\314#\211B B\202\270\203a\314#\206g\314\306#\211B B\203\203\314#\206\211\314\306#\211B B\203\245\314#\206\253\314\306#\211B B\306\211\203\354@\203\341@A @\313\315@@\"*A A\202\276\204 \306\316\317\217\203\320 @\"\202 \321\322 D\"\210.\n\207" [method args eieio-generic-call-arglst eieio-generic-call-methodname static keys nil (byte-code "@\211\302H\303=\205\304\305\306\217)\207" [newargs tobj 0 object nil (byte-code " H\302N\303H\304=\207" [tobj object-class eieio-class-definition 0 defclass] 2) ((error))] 4) ((error)) (byte-code "@\301N\302H\303=\207" [newargs eieio-class-definition 0 defclass] 2) ((error)) t eieio-generic-form apply (byte-code "@\211\302H\303=\205\304\305\306\217)\207" [args tobj 0 object nil (byte-code " H\302N\303H\304=\207" [tobj object-class eieio-class-definition 0 defclass] 2) ((error))] 4) ((error)) no-applicable-method signal no-method-definition tlambdas lambdas mclass newargs object-class method-static method-after method-primary method-before found rval eieio-generic-call-key scoped-class] 9 (#$ . 47548)]) #@62 Return a list of lambdas which qualify as the `next-method'. (defalias 'next-method-p #[nil "\305\306!\n\204 \203\307 \f @# A\202\n\205 \310*\207" [scoped-class mclass lambdas eieio-generic-call-methodname eieio-generic-call-key nil eieiomt-next eieio-generic-form t] 4 (#$ . 49032)]) #@304 Call the next logical method from another method. The next logical method is the method belong to the parent class of the currently running method. If REPLACEMENT-ARGS is non-nil, then use them instead of `eieio-generic-call-arglst'. The generic arg list are the arguments passed in at the top level. (defalias 'call-next-method #[(&rest replacement-args) "\204\306\307!\210 \206 \n\310\311!\310\211 \203F\f\204F\312 @#\211\203?A\313\314@\") A\211\204\f\204l\312\310#\211\203d\310\314@\")\202m\315@!\202m -\207" [scoped-class replacement-args eieio-generic-call-arglst returnval callsomething mclass error "Call-next-method not called within a class specific method" nil eieiomt-next eieio-generic-form t apply no-next-method lambdas newargs eieio-generic-call-methodname eieio-generic-call-key] 6 (#$ . 49336)]) #@64 While mapping atoms, this contain the obarray being optimized. (defvar eieiomt-optimizing-obarray nil (#$ . 50207)) #@410 Add to METHOD-NAME the forms METHOD in a call position KEY for CLASS. METHOD-NAME is the name created by a call to `defgeneric'. METHOD are the forms for a given implementation. KEY is an integer (see comment in eieio.el near this function) which is associated with the :STATIC :BEFORE :PRIMARY and :AFTER tags. It also indicates if CLASS is defined or not. CLASS is the class this method is associated with. (defalias 'eieiomt-add #[(method-name method key class) " V\204\f\306W\203\307\310!\210\n\311N\n\312N\211\203 \204R\313\n\311\314 \315\"#\313\n\312\314 \315\"#\211\306\314\316\306\"I\210 \317\314\316\306\"I\210 \320\314\321\306\"I\210 \322\314\316\306\"I\210 \fH\236\203f \fH\236\241\210\202r\f B\fHBI\210W\203\211\323\324 ! H\"\211M\210)W\205\233 H\325\326\")*\207" [key method-num-fields method-name emto emtv class 0 error "Eieiomt-add: method key error!" eieio-method-tree eieio-method-obarray put make-vector nil 11 1 2 41 3 intern symbol-name mapatoms eieiomt-sym-optimize method method-num-lists nsym eieiomt-optimizing-obarray] 7 (#$ . 50330)]) #@120 Get the implementation for METHOD-NAME for int KEY matching CLASS. See `eieiomt-add' for details on how these are set. (defalias 'eieiomt-get #[(method-name key class) " Y\203 \305W\210\202\306\307!\210\n\310N\211\205!\311\312\f! H\")\207" [key method-num-fields method-name emto class 0 error "eieiomt-get: method key error!" eieio-method-obarray intern-soft symbol-name] 5 (#$ . 51439)]) #@313 Return the next parent class for CLASS. If CLASS is a superclass, return variable `eieio-default-superclass'. If CLASS is variable `eieio-default-superclass' then return nil. This is different from function `class-parent' as class parent returns nil for superclasses. This function performs no type checking! (defalias 'eieiomt-next #[(class) "\302N H\206\303=?\205\304\207" [class class-parent eieio-class-definition eieio-default-superclass (eieio-default-superclass)] 2 (#$ . 51844)]) #@74 Find the next class above S which has a function body for the optimizer. (defalias 'eieiomt-sym-optimize #[(s) "\305\306!!\307\310\311 ! \203: \203:\305\306 @!\f\"\312\n!\203-\nL\210\307\202\313 A\311 @!\"\211\204 ?\205B\307L+\207" [s cont ov es eieiomt-optimizing-obarray intern-soft symbol-name nil t eieiomt-next fboundp append] 5 (#$ . 52347)]) #@308 Return the lambda form belonging to METHOD using KEY based upon CLASS. If CLASS is not a class then use `generic' instead. If class has no form, but has a parent class, then trace to that parent class. The first time a form is requested from a symbol, an optimized path is memoized for future faster use. (defalias 'eieio-generic-form #[(method key class) "\306N \203 \n\202\n\307\\H\310\311\312\217\203`\313\314 ! \"\211\2040\315\314 ! \" \316\f!\210)\317\f!\203A\f \320NHB\202\\\fJ\205\\\fJ\313\314 ! \"\211\315\314 !!\320NHB)\202|\321N \203k\n\202n\n\307\\H\211\205{@A\310B))\207" [method class key emto cs eieiomt-optimizing-obarray eieio-method-obarray 3 nil (byte-code "\301N\302H\303=\207" [class eieio-class-definition 0 defclass] 2) ((error)) intern-soft symbol-name intern eieiomt-sym-optimize fboundp eieio-class-definition eieio-method-tree class-symbol emtl] 5 (#$ . 52721)]) #@203 Take object OBJ, and reset all fields to their defaults. If SET-ALL is non-nil, then when a default is nil, that value is reset. If SET-ALL is nil, the fields are only reset if the default is not nil. (defalias 'eieio-set-defaults #[(obj &optional set-all) " H\306 H\307N\nH \205K\310 @\"\211<\2030@\311=\2030\312!\211\313\240\210\204:\203B\314 @#\210) A\211\204\315+\207" [obj object-class class-public-a pub eieio-initializing-object scoped-class t eieio-class-definition eieio-oref-default lambda-default copy-sequence lambda eieio-oset nil df set-all] 5 (#$ . 53648)]) #@162 For CLASS, convert INITARG to the actual attribute name. If there is no translation, pass it in directly (so we can cheat if need be.. May remove that later...) (defalias 'eieio-initarg-to-attribute #[(class initarg) "\304 \305N\nH\"\211\205 A)\207" [initarg class class-initarg-tuples tuple assoc eieio-class-definition] 5 (#$ . 54258)]) #@122 In CLASS, convert the ATTRIBUTE into the corresponding init argument tag. This is usually a symbol that starts with `:'. (defalias 'eieio-attribute-to-initarg #[(class attribute) "\304 \305N\nH\"\211\205 @)\207" [attribute class class-initarg-tuples tuple rassoc eieio-class-definition] 5 (#$ . 54608)]) (byte-code "\300\301!\210\302\303\304\305#\210\302\303\306\307#\210\300\310!\210\302\311\304\312#\210\302\311\306\313#\210\300\314!\210\302\315\304\316#\210\302\315\306\317#\210\300\320!\210\302\321\304\322#\210\302\321\306\323#\210\300\324!\210\302\325\304\326#\210\302\325\306\327#\207" [intern "no-method-definition" put no-method-definition error-conditions (no-method-definition error) error-message "No method definition" "no-next-method" no-next-method (no-next-method error) "No next method" "invalid-slot-name" invalid-slot-name (invalid-slot-name error) "Invalid slot name" "invalid-slot-type" invalid-slot-type (invalid-slot-type error nil) "Invalid slot type" "unbound-slot" unbound-slot (unbound-slot error nil) "Unbound slot"] 4) #@57 Execute many `defsetf's when the 'cl package is loaded. (defalias 'eieio-cl-run-defsetf #[nil "\300\301!\205\302\303\304\305#\210\302\306\304\307#\210\302\310\304\311#\207" [featurep cl put slot-value setf-method #[(obj field) "\306\307!\306\310!\306\311! D \fD\nC \n\312 \f F+\313 E\257+\207" [--obj--temp-- --field--temp-- --store--temp-- obj field store gensym "--obj--" "--field--" "--store--" eieio-oset slot-value] 7] eieio-oref #[(obj field) "\306\307!\306\310!\306\311! D \fD\nC \n\312 \f F+\313 E\257+\207" [--obj--temp-- --field--temp-- --store--temp-- obj field store gensym "--obj--" "--field--" "--store--" eieio-oset eieio-oref] 7] oref #[(obj field) "\305 \305 \305 \211 D \306\fDDC\307\n F\310\n E\257+\207" [store-temp field-temp obj-temp obj field gensym quote set-slot-value slot-value] 8]] 4 (#$ . 55666)]) (byte-code "\300\301\302\"\210\303\304\305\211\306$\210\307\310\304\"\207" [add-hook eieio-hook eieio-cl-run-defsetf eieio-defclass eieio-default-superclass nil ("Default class used as parent class for superclasses.\nIts fields are automatically adopted by such superclasses but not\nstored in the `parent' field. When searching for attributes or\nmethods, when the last parent is found, the search will recurse to\nthis class." :abstract t) defalias standard-class] 5) (eieio-defmethod 'constructor '(:STATIC ((class eieio-default-superclass) newname &rest fields) #[(class newname &rest fields) "\306\307N H!\211 I\210\310 \"\210 )\207" [class class-default-object-cache new-object object-name newname fields copy-sequence eieio-class-definition initialize-instance] 4 "Default constructor for CLASS `eieio-defualt-superclass'. NEWNAME is the name to be given to the constructed object. FIELDS are the initialization fields used by `shared-initialize'. This static method is called when an object is constructed. It allocates the vector used to represent an EIEIO object, and then calls `shared-initialize' on that object."])) (eieio-defmethod 'shared-initialize '(((obj eieio-default-superclass) fields) #[(obj fields) " H \2050\305 H @\"\211\204\306 @\307 A@$\210\310 A@#\210) AA\211\204\311)\207" [obj object-class scoped-class fields rn eieio-initarg-to-attribute slot-missing oset eieio-oset nil] 6 "Set fields of OBJ with FIELDS which is a list of name/value pairs. Called from the constructor routine."])) (eieio-defmethod 'initialize-instance '(((this eieio-default-superclass) &optional fields) #[(this &optional fields) " H\306N\211 H H \2038 @<\203- @@\307=\203-\310 @ @ #\210 A A \202+\311 \"\207" [this object-class scoped-class class-public-a slot class-public-d eieio-class-definition lambda eieio-oset shared-initialize defaults fields] 5 "Constructs the new object THIS based on FIELDS. FIELDS is a tagged list where odd numbered elements are tags, and even numbered elements are the values to store in the tagged slot. If you overload the `initialize-instance', there you will need to call `shared-initialize' yourself, or you can call `call-next-method' to have this constructor called automatically. If these steps are not taken, then new objects of your class will not have their values dynamically set from FIELDS."])) (eieio-defmethod 'slot-missing '(((object eieio-default-superclass) slot-name operation &optional new-value) #[(object slot-name operation &optional new-value) "\302\303\304! D\"\207" [object slot-name signal invalid-slot-name object-name] 4 "Slot missing is invoked when an attempt to access a slot in OBJECT fails. SLOT-NAME is the name of the failed slot, OPERATION is the type of access that was requested, and optional NEW-VALUE is the value that was desired to be set."])) (eieio-defmethod 'slot-unbound '(((object eieio-default-superclass) class slot-name fn) #[(object class slot-name fn) "\304\305\306!\307 ! F\"\207" [class object slot-name fn signal unbound-slot class-name object-name] 6 "Slot unbound is invoked during an attempt to reference an unbound slot. OBJECT is the instance of the object being reference. CLASS is the class of OBJECT, and SLOT-NAME is the offending slot. This function throws the signal `unbound-slot'. You can overload this function and return the value to use in place of the unbound value. Argument FN is the function signaling this error. Use `slot-boundp' to determine if a slot is bound or not."])) (eieio-defmethod 'no-applicable-method '(((object eieio-default-superclass) method) #[(object method) "\302\303\304 !D\"\207" [method object signal no-method-definition object-name] 5 "Called if there are no implementations for OBJECT in METHOD. OBJECT is the object which has no method implementation."])) (eieio-defmethod 'no-next-method '(((object eieio-default-superclass) &rest args) #[(object &rest args) "\302\303\304! D\"\207" [object args signal no-next-method object-name] 4 "Called from `call-next-method' when no additional methods are available. OBJECT is othe object being called on `call-next-method'. ARGS are the arguments it is called by. This method throws `no-next-method' by default. Override this method to not throw an error, and it's return value becomes the return value of `call-next-method'."])) (eieio-defmethod 'clone '(((obj eieio-default-superclass) &rest params) #[(obj &rest params) "\306! H \205 @;\307 \203&\310 \203# A\202$ \"\210 \204T\311 \312\216\313\314 \"\203E\315\316\307 \"!T \317\211\224O \320\321 !QI\210*\202[ @I\210,\207" [obj object-name params num passname nm copy-sequence 1 shared-initialize match-data ((set-match-data save-match-data-internal)) string-match "-\\([0-9]+\\)" string-to-int match-string 0 "-" int-to-string nobj save-match-data-internal] 6 "Make a deep copy of OBJ, and then apply PARAMS. PARAMS is a parameter list of the same form as INITIALIZE-INSTANCE which are applied to change the object. When overloading `clone', be sure to call `call-next-method' first and modify the returned object."])) (eieio-defmethod 'destructor '(((this eieio-default-superclass) &rest params) #[(this &rest params) "\300\207" ["Destructor for cleaning up any dynamic links to our object. Argument THIS is the object being destroyed. PARAMS are additional ignored parameters."] 1 "Destructor for cleaning up any dynamic links to our object. Argument THIS is the object being destroyed. PARAMS are additional ignored parameters."])) (eieio-defmethod 'object-print '(((this eieio-default-superclass) &rest strings) #[(this &rest strings) "\302\303\304 \"\"\207" [this strings object-name apply concat] 5 "Pretty printer for object THIS. Call function `object-name' with STRINGS. The default method for printing object THIS is to use the function `object-name'. At times it could be useful to put a summary of the object into the default # string. Overload this function to allow summaries of your objects to be used by eieio browsing tools. The optional parameter STRINGS is for additional summary parts to put into the name string. When passing in extra strings from child classes, always remember to prepend a space."])) #@61 When printing, keep track of the current indentation depth. (defvar eieio-print-depth 0 (#$ . 62783)) (eieio-defmethod 'object-write '(((this eieio-default-superclass) &optional comment) #[(this &optional comment) "\203\306\307!\210\306\310 !!\210\306\311!\210\306!\210\306\311!\210\312 !\211\313N\306\314 \211\\\315\\\316\"!\210\306\317!\210\306\320\312 !\313N H!!\210\306\321!\210\306\310 !!\210\306\322!\210 H H T\203\273\323 @\"\203\256\324 @\"\325 @\"\211\203\255@\232\204\255\306\314 \211\\\315\\\316\"!\210\306\320!!\210\306\326!\210\325 @\"\327!\210)\306\311!\210*AA\202Z\306\314 \211\\\315\\\316\"!\210+\306\330!*\207" [comment this cl cv eieio-print-depth class-symbol princ ";; Object " object-name-string " " object-class eieio-class-definition make-string 0 32 "(" symbol-name " \"" "\" " slot-boundp class-slot-initarg eieio-oref " " eieio-override-prin1 ") " class-public-a class-public-d publd publa v i o] 5 "Write object THIS out to the current stream. This writes out the vector version of this object. Complex and recursive object are discouraged from being written. If optional COMMENT is non-nil, include comments when outputting this object."])) #@64 Perform a prin1 on THING taking advantage of object knowledge. (defalias 'eieio-override-prin1 #[(thing) "\301\302\303\217\203 \304!\207<\203\305!\207\301\306\307\217\203!\310\311!!\2079\203.\310\312\313!P!\207\314!\207" [thing nil (byte-code "\211\302H\303=\205\304\305\306\217)\207" [thing tobj 0 object nil (byte-code " H\302N\303H\304=\207" [tobj object-class eieio-class-definition 0 defclass] 2) ((error))] 4) ((error)) object-write eieio-list-prin1 (byte-code "\301N\302H\303=\207" [thing eieio-class-definition 0 defclass] 2) ((error)) princ class-name "'" symbol-name prin1] 4 (#$ . 64013)]) #@46 Display LIST where list may contain objects. (defalias 'eieio-list-prin1 #[(list) "\302\303\304\217\204\305\306!\210\307!\207\305\310!\210\302\311\312\217\203\305\313!\210\203E\302\314\315\217\2031\316@!\210\202:\305\306!\210\307@!\210\305\317!\210A\211\204\"\305\320 \211\\\321\\\322\"!\210\305\323!\207" [list eieio-print-depth nil (byte-code "@\211\302H\303=\205\304\305\306\217)\207" [list tobj 0 object nil (byte-code " H\302N\303H\304=\207" [tobj object-class eieio-class-definition 0 defclass] 2) ((error))] 4) ((error)) princ "'" prin1 "(list " (byte-code "@\211\302H\303=\205\304\305\306\217)\207" [list tobj 0 object nil (byte-code " H\302N\303H\304=\207" [tobj object-class eieio-class-definition 0 defclass] 2) ((error))] 4) ((error)) "\n " (byte-code "@\211\302H\303=\205\304\305\306\217)\207" [list tobj 0 object nil (byte-code " H\302N\303H\304=\207" [tobj object-class eieio-class-definition 0 defclass] 2) ((error))] 4) ((error)) object-write " " make-string 0 32 ")"] 5 (#$ . 64638)]) #@119 Change the class of OBJ to type CLASS. This may create or delete slots, but does not affect the return value of `eq'. (defalias 'change-class #[(obj class) "\300\301!\207" [error "Eieio: `change-class' is unimplemented"] 2 (#$ . 65677)]) #@146 Display eieio OBJECT in fancy format. Overrides the edebug default. Optional argument NOESCAPE is passed to `prin1-to-string' when appropriate. (defalias 'eieio-edebug-prin1-to-string #[(object &optional noescape) "\302\303\304\217\203 \305!\207\302\306\307\217\203\310!\207<\2032\302\311\312\217\204)\302\313\314\217\2032\315\316\317\320#\321Q\207\322 \"\207" [object noescape nil (byte-code "\301N\302H\303=\207" [object eieio-class-definition 0 defclass] 2) ((error)) class-name (byte-code "\211\302H\300=\205\303\304\305\217)\207" [object tobj 0 nil (byte-code " H\302N\303H\304=\207" [tobj object-class eieio-class-definition 0 defclass] 2) ((error))] 4) ((error)) object-print (byte-code "@\301N\302H\303=\207" [object eieio-class-definition 0 defclass] 2) ((error)) (byte-code "@\211\302H\300=\205\303\304\305\217)\207" [object tobj 0 nil (byte-code " H\302N\303H\304=\207" [tobj object-class eieio-class-definition 0 defclass] 2) ((error))] 4) ((error)) "(" mapconcat eieio-edebug-prin1-to-string " " ")" prin1-to-string] 5 (#$ . 65922)]) (add-hook 'edebug-setup-hook #[nil "\300\301\302\303#\210\300\304\302\305#\210\300\306\302\307#\210\300\310\302\311#\210\300\312\302\313#\210\300\314\302\315#\210\300\316\302\315#\210\300\317\302\315#\210\300\320\302\315#\210\300\321\302\315#\210\300\322\302\323#\210\324\325\326\"\207" [put defmethod edebug-form-spec (&define [&or name ("setf" :name setf name)] [&optional symbolp] list [&optional stringp] def-body) oref (form quote) oref-default (form quote) oset (form quote form) oset-default (form quote form) class-v form class-p object-p class-constructor generic-p with-slots (list list def-body) defalias edebug-prin1-to-string eieio-edebug-prin1-to-string] 4]) #@55 For buffers thrown into help mode, augment for eieio. (autoload 'eieio-help-mode-augmentation-maybee "eieio-opt" '(#$ . 67672)) #@33 Create an object browser window (autoload 'eieio-browse "eieio-opt" '(#$ . 67806) t) #@46 Describe CLASS defined by a string or symbol (autoload 'eieio-describe-class "eieio-opt" '(#$ . 67897) t) #@46 Describe CLASS defined by a string or symbol (autoload 'describe-class "eieio-opt" '(#$ . 68009) t) #@48 Describe GENERIC defined by a string or symbol (autoload 'eieio-describe-generic "eieio-opt" '(#$ . 68115) t) #@48 Describe GENERIC defined by a string or symbol (autoload 'describe-generic "eieio-opt" '(#$ . 68231) t) #@55 Create texinfo documentation about a class hierarchy. (autoload 'eieiodoc-class "eieio-doc" '(#$ . 68341) t) #@37 Create a custom buffer editing OBJ. (autoload 'customize-object "eieio-custom" '(#$ . 68456)) (byte-code "\300\301\302\303#\210\304\305!\210\306\307\310\311\312$\210\313\307\312\"\210\306\314\315\311\312$\210\313\314\312\"\210\316\317!\207" [add-hook temp-buffer-show-hook eieio-help-mode-augmentation-maybee t require advice ad-add-advice describe-variable (eieio-describe nil t (advice lambda nil "Display the full documentation of VARIABLE (a symbol).\nReturns the documentation as a string, also." (if (class-p (ad-get-arg 0)) (eieio-describe-class (ad-get-arg 0)) ad-do-it))) around nil ad-activate describe-function (eieio-describe nil t (advice lambda nil "Display the full documentation of VARIABLE (a symbol).\nReturns the documentation as a string, also." (if (generic-p (ad-get-arg 0)) (eieio-describe-generic (ad-get-arg 0)) ad-do-it))) provide eieio] 5)