]> git.eshelyaron.com Git - emacs.git/commitdiff
Mapping over symbols in a package, mapatoms
authorGerd Möllmann <gerd@gnu.org>
Fri, 14 Oct 2022 11:15:24 +0000 (13:15 +0200)
committerGerd Möllmann <gerd@gnu.org>
Fri, 14 Oct 2022 11:15:24 +0000 (13:15 +0200)
src/lisp.h
src/lread.c
src/pkg.c

index 5fde67310e3d377f16e2ee4a365af96abeda500a..9bd66eaedca570d8fd3cecf464ceff3a6c88b4b1 100644 (file)
@@ -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;
 
index 365e47d14680b991e3ce06246cc2fab798952c58..d72fa3471fb152c8cc09e875a212e6ac705fdfa7 100644 (file)
@@ -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;
 }
 
index 09fe8408e3ef61605ec21b2661efca9dd15b6764..fc11388f5d5985108f93d5d57ab953ab8da86b0f 100644 (file)
--- 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);
+}
+
 \f
 /***********************************************************************
                            Lisp functions