[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
pkg 85bd8cfcdb 18/76: Mapping over symbols in a package, mapatoms
From: |
Gerd Moellmann |
Subject: |
pkg 85bd8cfcdb 18/76: Mapping over symbols in a package, mapatoms |
Date: |
Fri, 21 Oct 2022 00:16:10 -0400 (EDT) |
branch: pkg
commit 85bd8cfcdbf530e2aabc39494ec2f2a70507c245
Author: Gerd Möllmann <gerd@gnu.org>
Commit: Gerd Möllmann <gerd@gnu.org>
Mapping over symbols in a package, mapatoms
---
src/lisp.h | 1 +
src/lread.c | 13 +------------
src/pkg.c | 12 ++++++++++++
3 files changed, 14 insertions(+), 12 deletions(-)
diff --git a/src/lisp.h b/src/lisp.h
index 5fde67310e..9bd66eaedc 100644
--- a/src/lisp.h
+++ b/src/lisp.h
@@ -2263,6 +2263,7 @@ extern bool pkg_intern_name_c_string (const char *p,
ptrdiff_t len, Lisp_Object
extern void pkg_early_intern_symbol (Lisp_Object symbol);
extern Lisp_Object pkg_lookup_c_string (const char *ptr, ptrdiff_t nchars,
ptrdiff_t nbytes);
extern void pkg_break (void);
+extern void pkg_map_symbols (Lisp_Object function, Lisp_Object oackage);
extern bool package_system_ready;
diff --git a/src/lread.c b/src/lread.c
index 365e47d146..d72fa3471f 100644
--- a/src/lread.c
+++ b/src/lread.c
@@ -4948,23 +4948,12 @@ map_obarray (Lisp_Object obarray, void (*fn)
(Lisp_Object, Lisp_Object), Lisp_Ob
}
}
-static void
-mapatoms_1 (Lisp_Object sym, Lisp_Object function)
-{
- eassert (package_system_ready);
- call1 (function, sym);
-}
-
DEFUN ("mapatoms", Fmapatoms, Smapatoms, 1, 2, 0,
doc: /* Call FUNCTION on every symbol in OBARRAY.
OBARRAY defaults to the value of `obarray'. */)
(Lisp_Object function, Lisp_Object obarray)
{
- eassert (package_system_ready);
- if (NILP (obarray)) obarray = Vobarray;
- obarray = check_obarray (obarray);
-
- map_obarray (obarray, mapatoms_1, function);
+ pkg_map_symbols (function, obarray);
return Qnil;
}
diff --git a/src/pkg.c b/src/pkg.c
index 09fe8408e3..fc11388f5d 100644
--- a/src/pkg.c
+++ b/src/pkg.c
@@ -721,6 +721,18 @@ pkg_keywordp (Lisp_Object obj)
return !NILP (Fmemq (obj, early_keywords));
}
+
+/* Map FUNCTION over all symbols in PACKAGE. */
+
+void
+pkg_map_symbols (Lisp_Object function, Lisp_Object package)
+{
+ eassert (package_system_ready);
+ package = package_or_default (package);
+ FOR_EACH_KEY_VALUE (it, XPACKAGE (package)->symbols)
+ call1 (function, it.key);
+}
+
/***********************************************************************
Lisp functions
- pkg 02e1214f23 06/76: More stuff in pkg.c, (continued)
- pkg 02e1214f23 06/76: More stuff in pkg.c, Gerd Moellmann, 2022/10/21
- pkg 2821ca31ae 20/76: Use packages instead of obarrays in obarray.el, Gerd Moellmann, 2022/10/21
- pkg 7ecfc3ca69 13/76: Can now pdump, Gerd Moellmann, 2022/10/21
- pkg b3cdb8a3d3 11/76: Intern keywords differently, Gerd Moellmann, 2022/10/21
- pkg 47a2e75c1c 07/76: Read symbols differently, Gerd Moellmann, 2022/10/21
- pkg b5c199b118 08/76: Check for keywords differently, Gerd Moellmann, 2022/10/21
- pkg bb6b5db2b7 24/76: Dpn't assume symbol-name of keywords starts with colon, Gerd Moellmann, 2022/10/21
- pkg c025885c33 41/76: symbol-name returning ':' for keywords, Gerd Moellmann, 2022/10/21
- pkg 8561667124 33/76: Handle packages in completion, Gerd Moellmann, 2022/10/21
- pkg df9417ac57 66/76: Remove Lisp_Symbol::external, Gerd Moellmann, 2022/10/21
- pkg 85bd8cfcdb 18/76: Mapping over symbols in a package, mapatoms,
Gerd Moellmann <=
- pkg 62c7059adc 19/76: Initialize package system earlier, Gerd Moellmann, 2022/10/21
- pkg a19917468c 04/76: Don't fix symbols here, Gerd Moellmann, 2022/10/21
- pkg 072e89afa1 23/76: Use make-package instead of make-vector, Gerd Moellmann, 2022/10/21
- pkg f6b80ef5a5 25/76: Blabla, Gerd Moellmann, 2022/10/21
- pkg 2ed1ac6639 09/76: Fixing stuff, Gerd Moellmann, 2022/10/21
- pkg 1d02e7a48b 02/76: Add xprint command, Gerd Moellmann, 2022/10/21
- pkg a3f99fde48 22/76: Remove Lisp_Symbol::next pointer, Gerd Moellmann, 2022/10/21
- pkg 2518bc249c 39/76: Fix printing symbols, Gerd Moellmann, 2022/10/21
- pkg bbb2609103 40/76: Recognize vectors as obarrays, Gerd Moellmann, 2022/10/21
- pkg 76d59f8a03 60/76: Fix missing ')', Gerd Moellmann, 2022/10/21