]> git.eshelyaron.com Git - emacs.git/commitdiff
Refactoring: Factor out a function to set an mpz_t from a Lisp int.
authorPhilipp Stephani <phst@google.com>
Sat, 4 May 2019 21:31:40 +0000 (23:31 +0200)
committerPhilipp Stephani <phst@google.com>
Sat, 4 May 2019 21:31:40 +0000 (23:31 +0200)
* src/bignum.h (mpz_set_integer): New function.

* src/emacs-module.c (module_make_big_integer): Use it.

src/bignum.h
src/emacs-module.c

index 4c670bd906f92f8ec9afba3d7bdb91fc0a5f6e5b..743a18fc0f76b3d71f5dbec3473083422465ab60 100644 (file)
@@ -94,6 +94,18 @@ bignum_integer (mpz_t *tmp, Lisp_Object i)
   return &XBIGNUM (i)->value;
 }
 
+/* Set RESULT to the value stored in the Lisp integer I.  If I is a
+   big integer, copy it to RESULT.  RESULT must already be
+   initialized.  */
+INLINE void
+mpz_set_integer (mpz_t result, Lisp_Object i)
+{
+  if (FIXNUMP (i))
+    mpz_set_intmax (result, XFIXNUM (i));
+  else
+    mpz_set (result, XBIGNUM (i)->value);
+}
+
 INLINE_HEADER_END
 
 #endif /* BIGNUM_H */
index 6b56146ca011c29000bc3b6bb53603598745ebcc..1a7a21a4a8cded3fe4ec1c1c10331a6aafe3239a 100644 (file)
@@ -785,10 +785,7 @@ module_extract_big_integer (emacs_env *env, emacs_value value,
   MODULE_FUNCTION_BEGIN ();
   Lisp_Object o = value_to_lisp (value);
   CHECK_INTEGER (o);
-  if (FIXNUMP (o))
-    mpz_set_intmax (result->value, XFIXNUM (o));
-  else
-    mpz_set (result->value, XBIGNUM (o)->value);
+  mpz_set_integer (result->value, o);
 }
 
 static emacs_value