]> git.eshelyaron.com Git - emacs.git/commit
Add conversions to and from struct timespec to module interface.
authorPhilipp Stephani <phst@google.com>
Thu, 18 Apr 2019 15:42:45 +0000 (17:42 +0200)
committerPhilipp Stephani <phst@google.com>
Wed, 24 Apr 2019 09:33:52 +0000 (11:33 +0200)
commitbffceab6339fb4042588b893ef754c6264379e75
tree03747b5cb5275a24418aa9fb421977eb6c0ee063
parent5ae407aad4f2564fae7ddce077eb01aa8efa37fb
Add conversions to and from struct timespec to module interface.

Time values are a fundamental data type, and such conversions are hard
to implement within modules because of the various forms of time
values in Emacs Lisp.  Adding dedicated conversion functions can
significantly simplify module code dealing with times.

This approach uses nanosecond precision.  While Emacs in theory has
support for higher-precision time values, in practice most languages
and standards, such as POSIX, C, Java, and Go, have settled on
nanosecond-precision integers to represent time.

* src/emacs-module.h.in: Add header for struct timespec.

* src/module-env-27.h: Add module functions for time conversion.

* src/emacs-module.c (module_extract_time, module_make_time): New
functions.
(initialize_environment): Use them.

* test/data/emacs-module/mod-test.c (Fmod_test_add_nanosecond): New
test function.
(emacs_module_init): Define it.

* test/src/emacs-module-tests.el (mod-test-add-nanosecond/valid)
(mod-test-add-nanosecond/nil, mod-test-add-nanosecond/invalid): New
unit tests.

* doc/lispref/internals.texi (Module Values): Document time
conversion functions.
doc/lispref/internals.texi
etc/NEWS
src/emacs-module.c
src/emacs-module.h.in
src/module-env-27.h
test/data/emacs-module/mod-test.c
test/src/emacs-module-tests.el