Begin cleanup of source files
This commit is contained in:
parent
5643e388ee
commit
e9d29f4792
|
@ -1,4 +1,4 @@
|
||||||
/* libiso8601/src/libiso8601/TopHeader.h
|
/* libiso8601/src/libiso8601/000_TopHeader.h
|
||||||
*
|
*
|
||||||
* (c)2006, Laurence Withers, <l@lwithers.me.uk>.
|
* (c)2006, Laurence Withers, <l@lwithers.me.uk>.
|
||||||
* Released under the GNU GPLv2. See file COPYING or
|
* Released under the GNU GPLv2. See file COPYING or
|
||||||
|
@ -8,7 +8,7 @@
|
||||||
#ifndef HEADER_libiso8601
|
#ifndef HEADER_libiso8601
|
||||||
#define HEADER_libiso8601
|
#define HEADER_libiso8601
|
||||||
|
|
||||||
// standard includes, or includes needed for type declarations
|
/* standard includes, or includes needed for type declarations */
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* libiso8601/src/libiso8601/TopSource.c
|
/* libiso8601/src/libiso8601/000_TopSource.c
|
||||||
*
|
*
|
||||||
* (c)2006, Laurence Withers, <l@lwithers.me.uk>.
|
* (c)2006, Laurence Withers, <l@lwithers.me.uk>.
|
||||||
* Released under the GNU GPLv2. See file COPYING or
|
* Released under the GNU GPLv2. See file COPYING or
|
||||||
|
@ -13,6 +13,7 @@
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
|
/* Useful define to alleviate typos */
|
||||||
#define BILLION (1000000000L)
|
#define BILLION (1000000000L)
|
||||||
|
|
||||||
/* options for text editors
|
/* options for text editors
|
|
@ -1,4 +1,4 @@
|
||||||
/* libiso8601/src/libiso8601/calc.c
|
/* libiso8601/src/libiso8601/100_calc.c
|
||||||
*
|
*
|
||||||
* (c)2006, Laurence Withers, <l@lwithers.me.uk>.
|
* (c)2006, Laurence Withers, <l@lwithers.me.uk>.
|
||||||
* Released under the GNU GPLv2. See file COPYING or
|
* Released under the GNU GPLv2. See file COPYING or
|
|
@ -0,0 +1,109 @@
|
||||||
|
/* libiso8601/src/libiso8601/100_types.h
|
||||||
|
*
|
||||||
|
* (c)2006, Laurence Withers, <l@lwithers.me.uk>.
|
||||||
|
* Released under the GNU GPLv2. See file COPYING or
|
||||||
|
* http://www.gnu.org/copyleft/gpl.html for details.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*! \brief Date/time point.
|
||||||
|
|
||||||
|
This structure contains the details to represent a specific instant on the UTC timescale. It uses
|
||||||
|
Jan 1, year 0000 as the origin (when \a day will be 0). \a sec is the number of seconds elapsed
|
||||||
|
since start of day, and \a nsec is the number of nanoseconds elapsed since the start of the current
|
||||||
|
second.
|
||||||
|
|
||||||
|
We correctly deal with leap seconds by encoding 23:59:60 as having a \a sec field of 86400.
|
||||||
|
|
||||||
|
*/
|
||||||
|
struct iso8601_date {
|
||||||
|
/*! \brief Number of nanoseconds elapsed since start of second. */
|
||||||
|
int32_t nsec;
|
||||||
|
|
||||||
|
/*! \brief Number of days elapsed since Jan 1, year 0000. May be negative. */
|
||||||
|
int32_t day;
|
||||||
|
|
||||||
|
/*! \brief Number of seconds elapsed since start of day. */
|
||||||
|
int32_t sec;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*! \brief Date (day portion) precision.
|
||||||
|
|
||||||
|
This enumeration will record how precisely the date was specified, as well as the format in use. It
|
||||||
|
allows the library to determine the earliest and latest dates that could possibly be represented
|
||||||
|
with the given input and also allows the output format to match the input format.
|
||||||
|
|
||||||
|
*/
|
||||||
|
enum iso8601_date_prec {
|
||||||
|
/*! \brief Only year specified. */
|
||||||
|
iso8601_prec_year,
|
||||||
|
|
||||||
|
/*! \brief Year and month specified (calendar format). */
|
||||||
|
iso8601_prec_month,
|
||||||
|
|
||||||
|
/*! \brief Year, month and day specified (calendar format). */
|
||||||
|
iso8601_prec_day,
|
||||||
|
|
||||||
|
/*! \brief Year and ordinal day specified (ordinal format). */
|
||||||
|
iso8601_prec_ord,
|
||||||
|
|
||||||
|
/*! \brief Year and week specified (week format). */
|
||||||
|
iso8601_prec_week,
|
||||||
|
|
||||||
|
/*! \brief Year, week and weekday specified (week format). */
|
||||||
|
iso8601_prec_wday
|
||||||
|
}date_prec;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*! \brief Time precision.
|
||||||
|
|
||||||
|
This enumeration records how precisely the time was specified as well as its format. The fractional
|
||||||
|
format will record whether it was the hour, minute or second that was specified with a fractional
|
||||||
|
part, allowing a processed date/time to be presented to the user in the format it was originally
|
||||||
|
encountered.
|
||||||
|
|
||||||
|
*/
|
||||||
|
enum iso8601_time_prec {
|
||||||
|
iso8601_prec_none,
|
||||||
|
iso8601_prec_hour,
|
||||||
|
iso8601_prec_min,
|
||||||
|
iso8601_prec_sec,
|
||||||
|
iso8601_prec_hourfrac,
|
||||||
|
iso8601_prec_minfrac,
|
||||||
|
iso8601_prec_secfrac
|
||||||
|
}time_prec;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*! \brief Date/time formatting details.
|
||||||
|
|
||||||
|
This structure simply records details related to the formatting (and precision) of a date/time
|
||||||
|
structure. The structure can be filled out by the parser so that a program's output can match
|
||||||
|
the format of its input. Alternatively it can be controlled by the program to provide a consistent
|
||||||
|
output format.
|
||||||
|
|
||||||
|
*/
|
||||||
|
struct iso8601_details {
|
||||||
|
/*! \brief Date precision (enum iso8601_date_prec). */
|
||||||
|
uint8_t date_prec;
|
||||||
|
|
||||||
|
/*! \brief Time precision (enum iso8601_time_prec). */
|
||||||
|
uint8_t time_prec;
|
||||||
|
|
||||||
|
/*! \brief Flag: non-zero if extended format should be used. */
|
||||||
|
uint8_t extended;
|
||||||
|
|
||||||
|
/*! \brief Time zone offset in seconds. */
|
||||||
|
int32_t tz_sec;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* options for text editors
|
||||||
|
kate: replace-trailing-space-save true; space-indent true; tab-width 4;
|
||||||
|
vim: expandtab:ts=4:sw=4
|
||||||
|
*/
|
|
@ -1,4 +1,4 @@
|
||||||
/* libiso8601/src/libiso8601/parser.c
|
/* libiso8601/src/libiso8601/200_parser.c
|
||||||
*
|
*
|
||||||
* (c)2006, Laurence Withers, <l@lwithers.me.uk>.
|
* (c)2006, Laurence Withers, <l@lwithers.me.uk>.
|
||||||
* Released under the GNU GPLv2. See file COPYING or
|
* Released under the GNU GPLv2. See file COPYING or
|
|
@ -0,0 +1,58 @@
|
||||||
|
/* libiso8601/src/libiso8601/200_parser.h
|
||||||
|
*
|
||||||
|
* (c)2006, Laurence Withers, <l@lwithers.me.uk>.
|
||||||
|
* Released under the GNU GPLv2. See file COPYING or
|
||||||
|
* http://www.gnu.org/copyleft/gpl.html for details.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*! \defgroup parser Parsing and validation routines.
|
||||||
|
|
||||||
|
These routines are used for parsing an ISO8601 date/time string into the internal structure used
|
||||||
|
to represent them, and for validating such dates/times.
|
||||||
|
|
||||||
|
*/
|
||||||
|
/*!@{*/
|
||||||
|
|
||||||
|
/*! \brief Parse ISO8601 date/time.
|
||||||
|
|
||||||
|
\param str The input string.
|
||||||
|
\param[out] earliest The earliest possible time the string could represent. May be 0.
|
||||||
|
\param[out] latest The latest possible time the string could represent. May be 0.
|
||||||
|
\param[out] details Stores details such as the precision to which the time/date were specified. May
|
||||||
|
be 0.
|
||||||
|
\retval -1 on error (and see \a errno).
|
||||||
|
\retval 0 on success.
|
||||||
|
|
||||||
|
Parses a string containing the ISO8601 date/time. Deals with any format of date, optionally storing
|
||||||
|
the details in \a details. The time may be partial, in which case this function returns the earliest
|
||||||
|
and latest times that could possibly be represented by the string.
|
||||||
|
|
||||||
|
Note that this function will accept leap seconds (23:59:60) on days on which they occurred.
|
||||||
|
|
||||||
|
\todo Strip whitespace.
|
||||||
|
|
||||||
|
*/
|
||||||
|
int iso8601_parse(const char* str, struct iso8601_date* earliest, struct iso8601_date* latest,
|
||||||
|
struct iso8601_details* details);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*! \brief Validate ISO8601 date/time.
|
||||||
|
|
||||||
|
\param date The date to validate.
|
||||||
|
\retval -1 if not valid.
|
||||||
|
\retval 0 if valid.
|
||||||
|
|
||||||
|
*/
|
||||||
|
int iso8601_valid(const struct iso8601_date* date);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*!@}*/
|
||||||
|
|
||||||
|
/* options for text editors
|
||||||
|
kate: replace-trailing-space-save true; space-indent true; tab-width 4;
|
||||||
|
vim: expandtab:ts=4:sw=4
|
||||||
|
*/
|
|
@ -7,43 +7,6 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*! \defgroup parse Parsing and validation routines.
|
|
||||||
|
|
||||||
These routines are used for parsing an ISO8601 date/time string into the internal structure used
|
|
||||||
to represent them, and for validating such dates/times.
|
|
||||||
|
|
||||||
*/
|
|
||||||
/*!@{*/
|
|
||||||
|
|
||||||
/*! \brief Parse ISO8601 date/time.
|
|
||||||
|
|
||||||
\param str The input string.
|
|
||||||
\param[out] earliest ...
|
|
||||||
\param[out] latest The latest possible time the string could represent. May be 0.
|
|
||||||
\param[out] details Stores details such as the precision to which the time/date were specified. May
|
|
||||||
be 0.
|
|
||||||
\retval -1 on error (and see \a errno).
|
|
||||||
\retval 0 on success.
|
|
||||||
|
|
||||||
Parses a string containing the ISO8601 date/time. Deals with any format of date, optionally storing
|
|
||||||
the details in \a details. The time may be partial, in which case this function returns the earliest
|
|
||||||
and latest times that could possibly be represented by the string.
|
|
||||||
|
|
||||||
Note that this function will accept leap seconds (23:59:60) on days on which they occurred. It will
|
|
||||||
also accept the 24:00:00 representation of midnight (end of day).
|
|
||||||
|
|
||||||
\todo Strip whitespace.
|
|
||||||
|
|
||||||
*/
|
|
||||||
int iso8601_parse(const char* str, struct iso8601_date* earliest, struct iso8601_date* latest,
|
|
||||||
struct iso8601_details* details);
|
|
||||||
|
|
||||||
int iso8601_valid(const struct iso8601_date* date);
|
|
||||||
|
|
||||||
/*!@}*/
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* c_library.c */
|
/* c_library.c */
|
||||||
void iso8601_now(struct iso8601_date* date, struct iso8601_details* details);
|
void iso8601_now(struct iso8601_date* date, struct iso8601_details* details);
|
||||||
void iso8601_from_ts(struct iso8601_date* date, const struct timespec* ts);
|
void iso8601_from_ts(struct iso8601_date* date, const struct timespec* ts);
|
|
@ -1,4 +1,4 @@
|
||||||
/* libiso8601/src/libiso8601/BottomHeader.h
|
/* libiso8601/src/libiso8601/999_BottomHeader.h
|
||||||
*
|
*
|
||||||
* (c)2006, Laurence Withers, <l@lwithers.me.uk>.
|
* (c)2006, Laurence Withers, <l@lwithers.me.uk>.
|
||||||
* Released under the GNU GPLv2. See file COPYING or
|
* Released under the GNU GPLv2. See file COPYING or
|
|
@ -8,10 +8,10 @@ MONOLITHIC_TESTS="src/libiso8601/build.lib src/libiso8601/build.monolithic"
|
||||||
|
|
||||||
if [ -z "${libiso8601_MONOLITHIC}" ]
|
if [ -z "${libiso8601_MONOLITHIC}" ]
|
||||||
then
|
then
|
||||||
MONOLITHIC_SOURCE="$(echo src/libiso8601/{TopHeader,types,functions,BottomHeader}.h)"
|
MONOLITHIC_SOURCE="$(echo src/libiso8601/*.h)"
|
||||||
make_monolithic ${HDR} Ch || return 1
|
make_monolithic ${HDR} Ch || return 1
|
||||||
|
|
||||||
MONOLITHIC_SOURCE="$(echo src/libiso8601/{TopSource,leap,c_library,calc,parser,print,manip}.c)"
|
MONOLITHIC_SOURCE="$(echo src/libiso8601/*.c)"
|
||||||
make_monolithic ${SRC} C || return 1
|
make_monolithic ${SRC} C || return 1
|
||||||
|
|
||||||
libiso8601_MONOLITHIC=1
|
libiso8601_MONOLITHIC=1
|
||||||
|
|
|
@ -1,45 +0,0 @@
|
||||||
/* libiso8601/src/libiso8601/types.h
|
|
||||||
*
|
|
||||||
* (c)2006, Laurence Withers, <l@lwithers.me.uk>.
|
|
||||||
* Released under the GNU GPLv2. See file COPYING or
|
|
||||||
* http://www.gnu.org/copyleft/gpl.html for details.
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
struct iso8601_date {
|
|
||||||
int32_t nsec;
|
|
||||||
int32_t day;
|
|
||||||
int32_t sec; // special value: 86400 == leap second 23:59:60
|
|
||||||
};
|
|
||||||
|
|
||||||
enum iso8601_date_prec {
|
|
||||||
iso8601_prec_year,
|
|
||||||
iso8601_prec_month,
|
|
||||||
iso8601_prec_day,
|
|
||||||
iso8601_prec_ord,
|
|
||||||
iso8601_prec_week,
|
|
||||||
iso8601_prec_wday
|
|
||||||
}date_prec;
|
|
||||||
|
|
||||||
enum iso8601_time_prec {
|
|
||||||
iso8601_prec_none,
|
|
||||||
iso8601_prec_hour,
|
|
||||||
iso8601_prec_min,
|
|
||||||
iso8601_prec_sec,
|
|
||||||
iso8601_prec_hourfrac,
|
|
||||||
iso8601_prec_minfrac,
|
|
||||||
iso8601_prec_secfrac
|
|
||||||
}time_prec;
|
|
||||||
|
|
||||||
struct iso8601_details {
|
|
||||||
uint8_t date_prec, time_prec, extended;
|
|
||||||
int32_t tz_sec;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* options for text editors
|
|
||||||
kate: replace-trailing-space-save true; space-indent true; tab-width 4;
|
|
||||||
vim: expandtab:ts=4:sw=4
|
|
||||||
*/
|
|
Loading…
Reference in New Issue