summaryrefslogtreecommitdiff
path: root/src/lisp.h
diff options
context:
space:
mode:
authorPaul Eggert <eggert@cs.ucla.edu>2018-08-31 00:25:07 -0700
committerPaul Eggert <eggert@cs.ucla.edu>2018-08-31 00:28:58 -0700
commitdb2fed3bdfb351c3283e481829ce687931d27a3d (patch)
tree4f2674ec4f4fe450fd483132b9ddcca48f9eaf81 /src/lisp.h
parenta451c6ec12b7b024f347364becb10c49807513ed (diff)
downloademacs-db2fed3bdfb351c3283e481829ce687931d27a3d.tar.gz
emacs-db2fed3bdfb351c3283e481829ce687931d27a3d.tar.bz2
emacs-db2fed3bdfb351c3283e481829ce687931d27a3d.zip
Several fixes for formatting bignums
* src/bignum.c: Include stdlib.h, for abs. (bignum_bufsize, bignum_to_c_string): New functions. * src/bignum.c (bignum_to_string): * src/print.c (print_vectorlike): Use them. * src/editfns.c (styled_format): Instead of having a separate buffer for sprintf (which does not work for bignums), just append to the main buffer. When formatting bignums, add support for the standard integer flags -, #, 0, + and space. Fix some comments. Capitalize properly when formatting bignums with %X. Use functions like c_isdigit rather than reinventing the wheel. Simplify computation of excess precision. * src/print.c: Do not include bignum.h; no longer needed. (print_vectorlike): Avoid recalculating string length. * test/src/editfns-tests.el (format-bignum): Test some of the above fixes.
Diffstat (limited to 'src/lisp.h')
-rw-r--r--src/lisp.h5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/lisp.h b/src/lisp.h
index c5b51ba3b35..36ca32c3c05 100644
--- a/src/lisp.h
+++ b/src/lisp.h
@@ -3278,9 +3278,12 @@ set_sub_char_table_contents (Lisp_Object table, ptrdiff_t idx, Lisp_Object val)
XSUB_CHAR_TABLE (table)->contents[idx] = val;
}
-/* Defined in bignum.c. */
+/* Defined in bignum.c. This part of bignum.c's API does not require
+ the caller to access bignum internals; see bignum.h for that. */
extern intmax_t bignum_to_intmax (Lisp_Object);
extern uintmax_t bignum_to_uintmax (Lisp_Object);
+extern ptrdiff_t bignum_bufsize (Lisp_Object, int);
+extern ptrdiff_t bignum_to_c_string (char *, ptrdiff_t, Lisp_Object, int);
extern Lisp_Object bignum_to_string (Lisp_Object, int);
extern Lisp_Object make_bignum_str (char const *, int);
extern Lisp_Object double_to_bignum (double);