Followup changes to cl-type-of
These changes came up while working on `cl-type-of` but are not directly related to the new `cl-type-of`. The BASE_PURESIZE bump was needed at some point on one of my machine, not sure why. * src/puresize.h (BASE_PURESIZE): Bump up. * src/sqlite.c (bind_value): Don't use `Ftype_of`. * lisp/emacs-lisp/seq.el (seq-remove-at-position): Simplify. * lisp/emacs-lisp/cl-preloaded.el (finalizer): New (previously missing) type. * doc/lispref/objects.texi (Type Predicates): Minor tweaks.
This commit is contained in:
parent
e624bc6275
commit
63e67916b0
6 changed files with 14 additions and 21 deletions
|
@ -1485,8 +1485,8 @@ types that are not built into Emacs.
|
|||
@subsection Type Descriptors
|
||||
|
||||
A @dfn{type descriptor} is a @code{record} which holds information
|
||||
about a type. Slot 1 in the record must be a symbol naming the type, and
|
||||
@code{type-of} relies on this to return the type of @code{record}
|
||||
about a type. The first slot in the record must be a symbol naming the type,
|
||||
and @code{type-of} relies on this to return the type of @code{record}
|
||||
objects. No other type descriptor slot is used by Emacs; they are
|
||||
free for use by Lisp extensions.
|
||||
|
||||
|
@ -2175,7 +2175,7 @@ with references to further information.
|
|||
function @code{type-of}. Recall that each object belongs to one and
|
||||
only one primitive type; @code{type-of} tells you which one (@pxref{Lisp
|
||||
Data Types}). But @code{type-of} knows nothing about non-primitive
|
||||
types. In most cases, it is more convenient to use type predicates than
|
||||
types. In most cases, it is preferable to use type predicates than
|
||||
@code{type-of}.
|
||||
|
||||
@defun type-of object
|
||||
|
|
|
@ -365,6 +365,7 @@
|
|||
(cl--define-built-in-type buffer atom)
|
||||
(cl--define-built-in-type window atom)
|
||||
(cl--define-built-in-type process atom)
|
||||
(cl--define-built-in-type finalizer atom)
|
||||
(cl--define-built-in-type window-configuration atom)
|
||||
(cl--define-built-in-type overlay atom)
|
||||
(cl--define-built-in-type number-or-marker atom
|
||||
|
|
|
@ -362,8 +362,7 @@ the result.
|
|||
|
||||
The result is a sequence of the same type as SEQUENCE."
|
||||
(seq-concatenate
|
||||
(let ((type (type-of sequence)))
|
||||
(if (eq type 'cons) 'list type))
|
||||
(if (listp sequence) 'list (type-of sequence))
|
||||
(seq-subseq sequence 0 n)
|
||||
(seq-subseq sequence (1+ n))))
|
||||
|
||||
|
|
|
@ -569,10 +569,8 @@ enum Lisp_Fwd_Type
|
|||
your object -- this way, the same object could be used to represent
|
||||
several disparate C structures.
|
||||
|
||||
In addition, you need to add switch branches in data.c for Ftype_of.
|
||||
|
||||
You also need to add the new type to the constant
|
||||
`cl--typeof-types' in lisp/emacs-lisp/cl-preloaded.el. */
|
||||
In addition, you need to add switch branches in data.c for Fcl_type_of
|
||||
and `cl--define-builtin-type` in lisp/emacs-lisp/cl-preloaded.el. */
|
||||
|
||||
|
||||
/* A Lisp_Object is a tagged pointer or integer. Ordinarily it is a
|
||||
|
|
|
@ -47,7 +47,7 @@ INLINE_HEADER_BEGIN
|
|||
#endif
|
||||
|
||||
#ifndef BASE_PURESIZE
|
||||
#define BASE_PURESIZE (2750000 + SYSTEM_PURESIZE_EXTRA + SITELOAD_PURESIZE_EXTRA)
|
||||
#define BASE_PURESIZE (3000000 + SYSTEM_PURESIZE_EXTRA + SITELOAD_PURESIZE_EXTRA)
|
||||
#endif
|
||||
|
||||
/* Increase BASE_PURESIZE by a ratio depending on the machine's word size. */
|
||||
|
|
17
src/sqlite.c
17
src/sqlite.c
|
@ -349,9 +349,7 @@ bind_values (sqlite3 *db, sqlite3_stmt *stmt, Lisp_Object values)
|
|||
value = XCAR (values);
|
||||
values = XCDR (values);
|
||||
}
|
||||
Lisp_Object type = Ftype_of (value);
|
||||
|
||||
if (EQ (type, Qstring))
|
||||
if (STRINGP (value))
|
||||
{
|
||||
Lisp_Object encoded;
|
||||
bool blob = false;
|
||||
|
@ -385,14 +383,11 @@ bind_values (sqlite3 *db, sqlite3_stmt *stmt, Lisp_Object values)
|
|||
SSDATA (encoded), SBYTES (encoded),
|
||||
NULL);
|
||||
}
|
||||
else if (EQ (type, Qinteger))
|
||||
{
|
||||
if (BIGNUMP (value))
|
||||
ret = sqlite3_bind_int64 (stmt, i + 1, bignum_to_intmax (value));
|
||||
else
|
||||
ret = sqlite3_bind_int64 (stmt, i + 1, XFIXNUM (value));
|
||||
}
|
||||
else if (EQ (type, Qfloat))
|
||||
else if (FIXNUMP (value))
|
||||
ret = sqlite3_bind_int64 (stmt, i + 1, XFIXNUM (value));
|
||||
else if (BIGNUMP (value))
|
||||
ret = sqlite3_bind_int64 (stmt, i + 1, bignum_to_intmax (value));
|
||||
else if (FLOATP (value))
|
||||
ret = sqlite3_bind_double (stmt, i + 1, XFLOAT_DATA (value));
|
||||
else if (NILP (value))
|
||||
ret = sqlite3_bind_null (stmt, i + 1);
|
||||
|
|
Loading…
Add table
Reference in a new issue