[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] master ba6cc1d: * lisp/net/soap-client.el (soap-type-of):
From: |
Stefan Monnier |
Subject: |
[Emacs-diffs] master ba6cc1d: * lisp/net/soap-client.el (soap-type-of): Optimize for Emacs≥26 |
Date: |
Tue, 17 Jul 2018 22:22:47 -0400 (EDT) |
branch: master
commit ba6cc1d04cef8e25534a72e90a8f0f8db0026c9f
Author: Stefan Monnier <address@hidden>
Commit: Stefan Monnier <address@hidden>
* lisp/net/soap-client.el (soap-type-of): Optimize for Emacs≥26
---
lisp/net/soap-client.el | 21 +++++++++++++--------
1 file changed, 13 insertions(+), 8 deletions(-)
diff --git a/lisp/net/soap-client.el b/lisp/net/soap-client.el
index 17f8308..f5de05d 100644
--- a/lisp/net/soap-client.el
+++ b/lisp/net/soap-client.el
@@ -685,14 +685,17 @@ This is a specialization of `soap-decode-type' for
(anyType (soap-decode-any-type node))
(Array (soap-decode-array node))))))
-(defun soap-type-of (element)
- "Return the type of ELEMENT."
- ;; Support Emacs < 26 byte-code running in Emacs >= 26 sessions
- ;; (Bug#31742).
- (let ((type (type-of element)))
- (if (eq type 'vector)
- (aref element 0) ; For Emacs 25 and earlier.
- type)))
+(defalias 'soap-type-of
+ (if (eq 'soap-xs-basic-type (type-of (make-soap-xs-basic-type)))
+ ;; `type-of' in Emacs ≥ 26 already does what we need.
+ #'type-of
+ ;; For Emacs < 26, use our own function.
+ (lambda (element)
+ "Return the type of ELEMENT."
+ (if (vectorp element)
+ (aref element 0) ;Assume this vector is actually a struct!
+ ;; This should never happen.
+ (type-of element)))))
;; Register methods for `soap-xs-basic-type'
(let ((tag (soap-type-of (make-soap-xs-basic-type))))
@@ -2881,6 +2884,8 @@ reference multiRef parts which are external to
RESPONSE-NODE."
;;;; SOAP type encoding
+;; FIXME: Use `cl-defmethod' (but this requires Emacs-25).
+
(defun soap-encode-attributes (value type)
"Encode XML attributes for VALUE according to TYPE.
This is a generic function which determines the attribute encoder
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] master ba6cc1d: * lisp/net/soap-client.el (soap-type-of): Optimize for Emacs≥26,
Stefan Monnier <=