Add documentation for leap second table functions
This commit is contained in:
parent
ddaa9a8f8d
commit
711872660b
|
@ -9,7 +9,27 @@
|
||||||
|
|
||||||
/*! \defgroup leap Leap second support.
|
/*! \defgroup leap Leap second support.
|
||||||
|
|
||||||
A set of functions for explicitly dealing with leap seconds.
|
A set of functions for explicitly dealing with leap seconds. All library functions are implicitly
|
||||||
|
leap second aware, but there are occasions when leap seconds must be dealt with explicitly. These
|
||||||
|
functions permit this.
|
||||||
|
|
||||||
|
Internally, leap seconds are represented as a table of day numbers; each day number present in the
|
||||||
|
table means that the corresponding day has 86401 seconds (a leap second).
|
||||||
|
|
||||||
|
\note The library does not (yet) have support for negative leap seconds. This support will be added
|
||||||
|
should a day with a negative leap second ever come. This will need to addressed in the API as
|
||||||
|
the current API does not support loading a table of negative leap seconds.
|
||||||
|
|
||||||
|
It is possible to create a disk file containing an updated table and to load that file using
|
||||||
|
\ref iso8601_leap_table_load (or to explicitly use an existing in-memory table with
|
||||||
|
\ref iso8601_leap_table_set). The format of the on-disk file is:
|
||||||
|
|
||||||
|
<pre># integers are stored big-endian
|
||||||
|
[8*char] signature, "/O9PdPZI"
|
||||||
|
[uint32] number of entries, 'n'
|
||||||
|
|
||||||
|
# entries are repeated 'n' times, and stored lowest day number first
|
||||||
|
[uint32] day number of entry</pre>
|
||||||
|
|
||||||
*/
|
*/
|
||||||
/*!@{*/
|
/*!@{*/
|
||||||
|
@ -50,8 +70,43 @@ int iso8601_leap_elapsed(const struct iso8601_date* start, const struct iso8601_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*! \brief Update table of leap seconds.
|
||||||
|
|
||||||
|
\param new_table Array of day numbers on which leap seconds occur.
|
||||||
|
\param new_size Number of entries in array.
|
||||||
|
|
||||||
|
This function can be used to update the table of leap seconds at runtime. The \a new_table argument
|
||||||
|
points to an array of integers, each entry being the day number containing a leap second. The array
|
||||||
|
must be sorted so that lower day numbers appear towards the start of the array. \a new_size gives
|
||||||
|
the number of entries in the array. \a new_table must persist in memory as long as library functions
|
||||||
|
are in use.
|
||||||
|
|
||||||
|
\warning If negative leap seconds are ever used, this function will not support them. There may need
|
||||||
|
to be an ABI change in future to solve this problem.
|
||||||
|
|
||||||
|
*/
|
||||||
|
void iso8601_leap_table_set(int* new_table, int new_size) __attribute__((nonnull));
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*! \brief Load new table of leap seconds from disk.
|
||||||
|
|
||||||
|
\param fname Filename.
|
||||||
|
\retval 0 on success.
|
||||||
|
\retval -1 on error (and see \a errno).
|
||||||
|
|
||||||
|
This function attempts to load a new table of leap seconds from disk, using the filename \a fname.
|
||||||
|
If the table is loaded successfully, it will be set with \ref iso8601_leap_table_set(). On any
|
||||||
|
error, -1 will be returned, and \a errno will be set appropriately. If \a errno is \c EINVAL, then
|
||||||
|
the file does not contain a valid leap second table.
|
||||||
|
|
||||||
|
*/
|
||||||
|
int iso8601_leap_table_load(const char* fname) __attribute__((nonnull));
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*!@}*/
|
/*!@}*/
|
||||||
/* options for text editors
|
/* options for text editors
|
||||||
kate: replace-trailing-space-save true; space-indent true; tab-width 4;
|
kate: replace-trailing-space-save true; space-indent true; tab-width 4;
|
||||||
vim: expandtab:ts=4:sw=4
|
vim: expandtab:ts=4:sw=4:syntax=ch.doxygen
|
||||||
*/
|
*/
|
||||||
|
|
Loading…
Reference in New Issue