diff options
Diffstat (limited to '')
219 files changed, 1619 insertions, 113 deletions
@@ -554,7 +554,8 @@ MAN3 =\ LIBJ2_POSITIVE_OVERFLOW_UNKNOWN.3\ LIBJ2_POSITIVE_OVERFLOW.3\ LIBJ2_NEGATIVE_OVERFLOW_UNKNOWN.3\ - LIBJ2_NEGATIVE_OVERFLOW.3 + LIBJ2_NEGATIVE_OVERFLOW.3\ + $(OBJ:.o=.3) all: libj2.a libj2.$(LIBEXT) $(TEST) @@ -293,7 +293,7 @@ Check whether a value is positive. .BR libj2_j2i_is_negative (3) Check whether a value is negative. .TP -.BR ibj2_sgn_j2i (3), +.BR libj2_sgn_j2i (3), .TQ .BR libj2_sgn_j2u (3) Perform three-way comparision against the value zero (get the @@ -856,7 +856,7 @@ Calculate the difference between two values. .BR libj2_j2u_rsub_ju (3) Calculate the difference between two values. These functions swap the position of the two operands. -.TQ +.TP .BR libj2_j2i_sub_j2i_overflow (3), .TQ .BR libj2_j2i_sub_j2i_to_j2i_overflow (3), @@ -880,7 +880,7 @@ swap the position of the two operands. .BR libj2_ju_sub_ju_to_j2u_overflow (3) Calculate the difference between two values, and detect overflow. -.TQ +.TP .BR libj2_j2i_rsub_j2i_overflow (3), .TQ .BR libj2_j2i_rsub_ji_overflow (3), diff --git a/libj2_cfs_j2u.3 b/libj2_cfs_j2u.3 new file mode 100644 index 0000000..ee31cac --- /dev/null +++ b/libj2_cfs_j2u.3 @@ -0,0 +1,51 @@ +.TH LIBJ2_CFS_J2U 3 LIBJ2 +.SH NAME +libj2_cfs_j2u \- Clear first set bit + +.SH SYNOPSIS +.nf +#include <libj2.h> + +void \fBlibj2_cfs_j2u\fP(struct libj2_j2u *\fIa\fP); +void \fBlibj2_cfs_j2u_to_j2u\fP(const struct libj2_j2u *\fIa\fP, struct libj2_j2u *\fIr\fP); +.fi +.PP +Link with +.IR -lj2 . + +.SH DESCRIPTION +The +.BR libj2_cfs_j2u () +function clears the first (least significant) +set bit in +.I a +(no modification if all bits are cleared). +.PP +The +.BR libj2_cfs_j2u_to_j2u () +function performs the same action as +.BR libj2_cfs_j2u () +but instead of modifying +.IR a , +the result is stored in +.IR r . +.PP +The arguments are assumed to be +.RI non- NULL . + +.SH RETURN VALUE +None. + +.SH ERRORS +The +.BR libj2_cfs_j2u () +and +.BR libj2_cfs_j2u_to_j2u () +functions cannot fail. + +.SH SEE ALSO +.BR libj2 (7), +.BR libj2_cls_j2u (3), +.BR libj2_ffs_j2u (3), +.BR libj2_kfs_j2u (3), +.BR libj2_sfc_j2u (3) diff --git a/libj2_cfs_j2u.c b/libj2_cfs_j2u.c index c2434e0..7a7793f 100644 --- a/libj2_cfs_j2u.c +++ b/libj2_cfs_j2u.c @@ -3,7 +3,6 @@ #ifndef TEST extern inline void libj2_cfs_j2u(struct libj2_j2u *a); -/* TODO Add man page */ #else diff --git a/libj2_cfs_j2u_to_j2u.3 b/libj2_cfs_j2u_to_j2u.3 new file mode 120000 index 0000000..6e0d9f9 --- /dev/null +++ b/libj2_cfs_j2u_to_j2u.3 @@ -0,0 +1 @@ +libj2_cfs_j2u.3
\ No newline at end of file diff --git a/libj2_cfs_j2u_to_j2u.c b/libj2_cfs_j2u_to_j2u.c index 2e0a11e..7b79314 100644 --- a/libj2_cfs_j2u_to_j2u.c +++ b/libj2_cfs_j2u_to_j2u.c @@ -3,7 +3,6 @@ #ifndef TEST extern inline void libj2_cfs_j2u_to_j2u(const struct libj2_j2u *a, struct libj2_j2u *res); -/* TODO Add man page */ #else diff --git a/libj2_clo_j2u.3 b/libj2_clo_j2u.3 new file mode 100644 index 0000000..50362ff --- /dev/null +++ b/libj2_clo_j2u.3 @@ -0,0 +1,53 @@ +.TH LIBJ2_CLO_J2U 3 LIBJ2 +.SH NAME +libj2_clo_j2u \- Count leading ones + +.SH SYNOPSIS +.nf +#include <libj2.h> + +unsigned \fBlibj2_clo_j2u\fP(const struct libj2_j2u *\fIa\fP); +.fi +.PP +Link with +.IR -lj2 . + +.SH DESCRIPTION +The +.BR libj2_clo_j2u () +function returns the number of leading set bits in +.IR a . +.PP +In the case that all bits in +.I a +are set, all of them are counted as leading. +.PP +.I a +is assumed to be +.RI non- NULL . + +.SH RETURN VALUE +The +.BR libj2_clo_j2u () +function returns the number of set bits that +are more significant than the most significant +cleared bits in +.IR a , +or the total number of bits in +.I a +if all its bits are set. + +.SH ERRORS +The +.BR libj2_clo_j2u () +function cannot fail. + +.SH SEE ALSO +.BR libj2 (7), +.BR libj2_clz_j2u (3), +.BR libj2_cto_j2u (3), +.BR libj2_co_j2u (3), +.BR libj2_fls_j2u (3), +.BR libj2_kls_j2u (3), +.BR libj2_cls_j2u (3), +.BR libj2_slc_j2u (3) diff --git a/libj2_clo_j2u.c b/libj2_clo_j2u.c index 8fa0d03..970f449 100644 --- a/libj2_clo_j2u.c +++ b/libj2_clo_j2u.c @@ -3,7 +3,6 @@ #ifndef TEST extern inline unsigned libj2_clo_j2u(const struct libj2_j2u *a); -/* TODO Add man page */ #else diff --git a/libj2_cls_j2u.3 b/libj2_cls_j2u.3 new file mode 100644 index 0000000..464a16a --- /dev/null +++ b/libj2_cls_j2u.3 @@ -0,0 +1,51 @@ +.TH LIBJ2_CLS_J2U 3 LIBJ2 +.SH NAME +libj2_cls_j2u \- Clear last set bit + +.SH SYNOPSIS +.nf +#include <libj2.h> + +void \fBlibj2_cls_j2u\fP(struct libj2_j2u *\fIa\fP); +void \fBlibj2_cls_j2u_to_j2u\fP(const struct libj2_j2u *\fIa\fP, struct libj2_j2u *\fIr\fP); +.fi +.PP +Link with +.IR -lj2 . + +.SH DESCRIPTION +The +.BR libj2_cls_j2u () +function clears the last (most significant) +set bit in +.I a +(no modification if all bits are cleared). +.PP +The +.BR libj2_cls_j2u_to_j2u () +function performs the same action as +.BR libj2_cls_j2u () +but instead of modifying +.IR a , +the result is stored in +.IR r . +.PP +The arguments are assumed to be +.RI non- NULL . + +.SH RETURN VALUE +None. + +.SH ERRORS +The +.BR libj2_cls_j2u () +and +.BR libj2_cls_j2u_to_j2u () +functions cannot fail. + +.SH SEE ALSO +.BR libj2 (7), +.BR libj2_cfs_j2u (3), +.BR libj2_fls_j2u (3), +.BR libj2_kls_j2u (3), +.BR libj2_slc_j2u (3) diff --git a/libj2_cls_j2u.c b/libj2_cls_j2u.c index 78d5033..56aa707 100644 --- a/libj2_cls_j2u.c +++ b/libj2_cls_j2u.c @@ -3,7 +3,6 @@ #ifndef TEST extern inline void libj2_cls_j2u(struct libj2_j2u *a); -/* TODO Add man page */ #else diff --git a/libj2_cls_j2u_to_j2u.3 b/libj2_cls_j2u_to_j2u.3 new file mode 120000 index 0000000..c29c72e --- /dev/null +++ b/libj2_cls_j2u_to_j2u.3 @@ -0,0 +1 @@ +libj2_cls_j2u.3
\ No newline at end of file diff --git a/libj2_cls_j2u_to_j2u.c b/libj2_cls_j2u_to_j2u.c index 2a8eca9..fda326d 100644 --- a/libj2_cls_j2u_to_j2u.c +++ b/libj2_cls_j2u_to_j2u.c @@ -3,7 +3,6 @@ #ifndef TEST extern inline void libj2_cls_j2u_to_j2u(const struct libj2_j2u *a, struct libj2_j2u *res); -/* TODO Add man page */ #else diff --git a/libj2_clz_j2u.3 b/libj2_clz_j2u.3 new file mode 100644 index 0000000..765c442 --- /dev/null +++ b/libj2_clz_j2u.3 @@ -0,0 +1,53 @@ +.TH LIBJ2_CLZ_J2U 3 LIBJ2 +.SH NAME +libj2_clz_j2u \- Count leading zeroes + +.SH SYNOPSIS +.nf +#include <libj2.h> + +unsigned \fBlibj2_clz_j2u\fP(const struct libj2_j2u *\fIa\fP); +.fi +.PP +Link with +.IR -lj2 . + +.SH DESCRIPTION +The +.BR libj2_clz_j2u () +function returns the number of leading cleared bits in +.IR a . +.PP +In the case that all bits in +.I a +are cleared, all of them are counted as leading. +.PP +.I a +is assumed to be +.RI non- NULL . + +.SH RETURN VALUE +The +.BR libj2_clz_j2u () +function returns the number of cleared bits that +are more significant than the most significant +set bits in +.IR a , +or the total number of bits in +.I a +if all its bits are cleared. + +.SH ERRORS +The +.BR libj2_clz_j2u () +function cannot fail. + +.SH SEE ALSO +.BR libj2 (7), +.BR libj2_clo_j2u (3), +.BR libj2_ctz_j2u (3), +.BR libj2_cz_j2u (3), +.BR libj2_flc_j2u (3), +.BR libj2_kls_j2u (3), +.BR libj2_cls_j2u (3), +.BR libj2_slc_j2u (3) diff --git a/libj2_clz_j2u.c b/libj2_clz_j2u.c index 5e6f1f4..7409aaf 100644 --- a/libj2_clz_j2u.c +++ b/libj2_clz_j2u.c @@ -3,7 +3,6 @@ #ifndef TEST extern inline unsigned libj2_clz_j2u(const struct libj2_j2u *a); -/* TODO Add man page */ #else diff --git a/libj2_co_j2u.3 b/libj2_co_j2u.3 new file mode 100644 index 0000000..afa7913 --- /dev/null +++ b/libj2_co_j2u.3 @@ -0,0 +1,41 @@ +.TH LIBJ2_CO_J2U 3 LIBJ2 +.SH NAME +libj2_co_j2u \- Count ones + +.SH SYNOPSIS +.nf +#include <libj2.h> + +unsigned \fBlibj2_co_j2u\fP(const struct libj2_j2u *\fIa\fP); +.fi +.PP +Link with +.IR -lj2 . + +.SH DESCRIPTION +The +.BR libj2_co_j2u () +function returns the number of set bits in +.IR a . +.PP +.I a +is assumed to be +.RI non- NULL . + +.SH RETURN VALUE +The +.BR libj2_co_j2u () +function returns the number of set bits in +.IR a . + +.SH ERRORS +The +.BR libj2_co_j2u () +function cannot fail. + +.SH SEE ALSO +.BR libj2 (7), +.BR libj2_cz_j2u (3), +.BR libj2_parity_j2u (3), +.BR libj2_clo_j2u (3), +.BR libj2_cto_j2u (3) diff --git a/libj2_co_j2u.c b/libj2_co_j2u.c index 6b1988a..72de832 100644 --- a/libj2_co_j2u.c +++ b/libj2_co_j2u.c @@ -3,7 +3,6 @@ #ifndef TEST extern inline unsigned libj2_co_j2u(const struct libj2_j2u *a); -/* TODO Add man page */ #else diff --git a/libj2_cto_j2u.3 b/libj2_cto_j2u.3 new file mode 100644 index 0000000..49acfb4 --- /dev/null +++ b/libj2_cto_j2u.3 @@ -0,0 +1,53 @@ +.TH LIBJ2_CTO_J2U 3 LIBJ2 +.SH NAME +libj2_cto_j2u \- Count trailing ones + +.SH SYNOPSIS +.nf +#include <libj2.h> + +unsigned \fBlibj2_cto_j2u\fP(const struct libj2_j2u *\fIa\fP); +.fi +.PP +Link with +.IR -lj2 . + +.SH DESCRIPTION +The +.BR libj2_cto_j2u () +function returns the number of trailing set bits in +.IR a . +.PP +In the case that all bits in +.I a +are set, all of them are counted as trailing. +.PP +.I a +is assumed to be +.RI non- NULL . + +.SH RETURN VALUE +The +.BR libj2_cto_j2u () +function returns the number of set bits that +are less significant than the least significant +cleared bits in +.IR a , +or the total number of bits in +.I a +if all its bits are set. + +.SH ERRORS +The +.BR libj2_cto_j2u () +function cannot fail. + +.SH SEE ALSO +.BR libj2 (7), +.BR libj2_ctz_j2u (3), +.BR libj2_clo_j2u (3), +.BR libj2_co_j2u (3), +.BR libj2_ffs_j2u (3), +.BR libj2_kfs_j2u (3), +.BR libj2_cfs_j2u (3), +.BR libj2_sfc_j2u (3) diff --git a/libj2_cto_j2u.c b/libj2_cto_j2u.c index 17ea8b6..729bded 100644 --- a/libj2_cto_j2u.c +++ b/libj2_cto_j2u.c @@ -3,7 +3,6 @@ #ifndef TEST extern inline unsigned libj2_cto_j2u(const struct libj2_j2u *a); -/* TODO Add man page */ #else diff --git a/libj2_ctz_j2u.3 b/libj2_ctz_j2u.3 new file mode 100644 index 0000000..997fbc2 --- /dev/null +++ b/libj2_ctz_j2u.3 @@ -0,0 +1,53 @@ +.TH LIBJ2_CTZ_J2U 3 LIBJ2 +.SH NAME +libj2_ctz_j2u \- Count trailing zeroes + +.SH SYNOPSIS +.nf +#include <libj2.h> + +unsigned \fBlibj2_ctz_j2u\fP(const struct libj2_j2u *\fIa\fP); +.fi +.PP +Link with +.IR -lj2 . + +.SH DESCRIPTION +The +.BR libj2_ctz_j2u () +function returns the number of trailing cleared bits in +.IR a . +.PP +In the case that all bits in +.I a +are cleared, all of them are counted as trailing. +.PP +.I a +is assumed to be +.RI non- NULL . + +.SH RETURN VALUE +The +.BR libj2_ctz_j2u () +function returns the number of cleared bits that +are less significant than the least significant +set bits in +.IR a , +or the total number of bits in +.I a +if all its bits are cleared. + +.SH ERRORS +The +.BR libj2_ctz_j2u () +function cannot fail. + +.SH SEE ALSO +.BR libj2 (7), +.BR libj2_cto_j2u (3), +.BR libj2_clz_j2u (3), +.BR libj2_cz_j2u (3), +.BR libj2_ffc_j2u (3), +.BR libj2_kfs_j2u (3), +.BR libj2_cfs_j2u (3), +.BR libj2_sfc_j2u (3) diff --git a/libj2_ctz_j2u.c b/libj2_ctz_j2u.c index 3c4ff87..2f41433 100644 --- a/libj2_ctz_j2u.c +++ b/libj2_ctz_j2u.c @@ -3,7 +3,6 @@ #ifndef TEST extern inline unsigned libj2_ctz_j2u(const struct libj2_j2u *a); -/* TODO Add man page */ #else diff --git a/libj2_cz_j2u.3 b/libj2_cz_j2u.3 new file mode 100644 index 0000000..1c95b54 --- /dev/null +++ b/libj2_cz_j2u.3 @@ -0,0 +1,41 @@ +.TH LIBJ2_CZ_J2U 3 LIBJ2 +.SH NAME +libj2_cz_j2u \- Count zeroes + +.SH SYNOPSIS +.nf +#include <libj2.h> + +unsigned \fBlibj2_cz_j2u\fP(const struct libj2_j2u *\fIa\fP); +.fi +.PP +Link with +.IR -lj2 . + +.SH DESCRIPTION +The +.BR libj2_cz_j2u () +function returns the number of cleared bits in +.IR a . +.PP +.I a +is assumed to be +.RI non- NULL . + +.SH RETURN VALUE +The +.BR libj2_cz_j2u () +function returns the number of cleared bits in +.IR a . + +.SH ERRORS +The +.BR libj2_cz_j2u () +function cannot fail. + +.SH SEE ALSO +.BR libj2 (7), +.BR libj2_co_j2u (3), +.BR libj2_parity_j2u (3), +.BR libj2_clz_j2u (3), +.BR libj2_ctz_j2u (3) diff --git a/libj2_cz_j2u.c b/libj2_cz_j2u.c index 60da659..dfabf74 100644 --- a/libj2_cz_j2u.c +++ b/libj2_cz_j2u.c @@ -3,7 +3,6 @@ #ifndef TEST extern inline unsigned libj2_cz_j2u(const struct libj2_j2u *a); -/* TODO Add man page */ #else diff --git a/libj2_ffc_j2u.3 b/libj2_ffc_j2u.3 new file mode 100644 index 0000000..acc2b7a --- /dev/null +++ b/libj2_ffc_j2u.3 @@ -0,0 +1,52 @@ +.TH LIBJ2_FFC_J2U 3 LIBJ2 +.SH NAME +libj2_ffc_j2u \- Find first cleared bit + +.SH SYNOPSIS +.nf +#include <libj2.h> + +unsigned \fBlibj2_ffc_j2u\fP(const struct libj2_j2u *\fIa\fP); +.fi +.PP +Link with +.IR -lj2 . + +.SH DESCRIPTION +The +.BR libj2_ffc_j2u () +function returns the index of the least +significant cleared bit in +.IR a , +where the index is counted from 1, +and from the the least significant bit. +.PP +In the case that no bit in +.I a +is cleared, 0 is returned. +.PP +.I a +is assumed to be +.RI non- NULL . + +.SH RETURN VALUE +The +.BR libj2_ffc_j2u () +function returns the one-based index of +the first cleared bit in +.IR a , +or 0 if no bit is cleared. + +.SH ERRORS +The +.BR libj2_ffc_j2u () +function cannot fail. + +.SH SEE ALSO +.BR libj2 (7), +.BR libj2_ffs_j2u (3), +.BR libj2_flc_j2u (3), +.BR libj2_cto_j2u (3), +.BR libj2_kfs_j2u (3), +.BR libj2_cfs_j2u (3), +.BR libj2_sfc_j2u (3) diff --git a/libj2_ffc_j2u.c b/libj2_ffc_j2u.c index 5d2c481..b31c3a0 100644 --- a/libj2_ffc_j2u.c +++ b/libj2_ffc_j2u.c @@ -3,7 +3,6 @@ #ifndef TEST extern inline unsigned libj2_ffc_j2u(const struct libj2_j2u *a); -/* TODO Add man page */ #else diff --git a/libj2_ffs_j2u.3 b/libj2_ffs_j2u.3 new file mode 100644 index 0000000..f064f32 --- /dev/null +++ b/libj2_ffs_j2u.3 @@ -0,0 +1,52 @@ +.TH LIBJ2_FFS_J2U 3 LIBJ2 +.SH NAME +libj2_ffs_j2u \- Find first set bit + +.SH SYNOPSIS +.nf +#include <libj2.h> + +unsigned \fBlibj2_ffs_j2u\fP(const struct libj2_j2u *\fIa\fP); +.fi +.PP +Link with +.IR -lj2 . + +.SH DESCRIPTION +The +.BR libj2_ffs_j2u () +function returns the index of the least +significant set bit in +.IR a , +where the index is counted from 1, +and from the the least significant bit. +.PP +In the case that no bit in +.I a +is set, 0 is returned. +.PP +.I a +is assumed to be +.RI non- NULL . + +.SH RETURN VALUE +The +.BR libj2_ffs_j2u () +function returns the one-based index of +the first set bit in +.IR a , +or 0 if no bit is set. + +.SH ERRORS +The +.BR libj2_ffs_j2u () +function cannot fail. + +.SH SEE ALSO +.BR libj2 (7), +.BR libj2_ffc_j2u (3), +.BR libj2_fls_j2u (3), +.BR libj2_ctz_j2u (3), +.BR libj2_kfs_j2u (3), +.BR libj2_cfs_j2u (3), +.BR libj2_sfc_j2u (3) diff --git a/libj2_ffs_j2u.c b/libj2_ffs_j2u.c index 59b5996..c496973 100644 --- a/libj2_ffs_j2u.c +++ b/libj2_ffs_j2u.c @@ -3,7 +3,6 @@ #ifndef TEST extern inline unsigned libj2_ffs_j2u(const struct libj2_j2u *a); -/* TODO Add man page */ #else diff --git a/libj2_flc_j2u.3 b/libj2_flc_j2u.3 new file mode 100644 index 0000000..3968746 --- /dev/null +++ b/libj2_flc_j2u.3 @@ -0,0 +1,52 @@ +.TH LIBJ2_FLC_J2U 3 LIBJ2 +.SH NAME +libj2_flc_j2u \- Find last cleared bit + +.SH SYNOPSIS +.nf +#include <libj2.h> + +unsigned \fBlibj2_flc_j2u\fP(const struct libj2_j2u *\fIa\fP); +.fi +.PP +Link with +.IR -lj2 . + +.SH DESCRIPTION +The +.BR libj2_flc_j2u () +function returns the index of the most +significant cleared bit in +.IR a , +where the index is counted from 1, +and from the the least significant bit. +.PP +In the case that no bit in +.I a +is cleared, 0 is returned. +.PP +.I a +is assumed to be +.RI non- NULL . + +.SH RETURN VALUE +The +.BR libj2_flc_j2u () +function returns the one-based index of +the last cleared bit in +.IR a , +or 0 if no bit is set. + +.SH ERRORS +The +.BR libj2_flc_j2u () +function cannot fail. + +.SH SEE ALSO +.BR libj2 (7), +.BR libj2_fls_j2u (3), +.BR libj2_ffc_j2u (3), +.BR libj2_clo_j2u (3), +.BR libj2_kls_j2u (3), +.BR libj2_cls_j2u (3), +.BR libj2_slc_j2u (3) diff --git a/libj2_flc_j2u.c b/libj2_flc_j2u.c index 905c350..8401cf3 100644 --- a/libj2_flc_j2u.c +++ b/libj2_flc_j2u.c @@ -3,7 +3,6 @@ #ifndef TEST extern inline unsigned libj2_flc_j2u(const struct libj2_j2u *a); -/* TODO Add man page */ #else diff --git a/libj2_fls_j2u.3 b/libj2_fls_j2u.3 new file mode 100644 index 0000000..9b63423 --- /dev/null +++ b/libj2_fls_j2u.3 @@ -0,0 +1,52 @@ +.TH LIBJ2_FLS_J2U 3 LIBJ2 +.SH NAME +libj2_fls_j2u \- Find last set bit + +.SH SYNOPSIS +.nf +#include <libj2.h> + +unsigned \fBlibj2_fls_j2u\fP(const struct libj2_j2u *\fIa\fP); +.fi +.PP +Link with +.IR -lj2 . + +.SH DESCRIPTION +The +.BR libj2_fls_j2u () +function returns the index of the most +significant set bit in +.IR a , +where the index is counted from 1, +and from the the least significant bit. +.PP +In the case that no bit in +.I a +is set, 0 is returned. +.PP +.I a +is assumed to be +.RI non- NULL . + +.SH RETURN VALUE +The +.BR libj2_fls_j2u () +function returns the one-based index of +the last set bit in +.IR a , +or 0 if no bit is set. + +.SH ERRORS +The +.BR libj2_fls_j2u () +function cannot fail. + +.SH SEE ALSO +.BR libj2 (7), +.BR libj2_flc_j2u (3), +.BR libj2_ffs_j2u (3), +.BR libj2_clz_j2u (3), +.BR libj2_kls_j2u (3), +.BR libj2_cls_j2u (3), +.BR libj2_slc_j2u (3) diff --git a/libj2_fls_j2u.c b/libj2_fls_j2u.c index fe2d439..333e85b 100644 --- a/libj2_fls_j2u.c +++ b/libj2_fls_j2u.c @@ -3,7 +3,6 @@ #ifndef TEST extern inline unsigned libj2_fls_j2u(const struct libj2_j2u *a); -/* TODO Add man page */ #else diff --git a/libj2_j2i_cmp_j2i.3 b/libj2_j2i_cmp_j2i.3 new file mode 100644 index 0000000..2230fd0 --- /dev/null +++ b/libj2_j2i_cmp_j2i.3 @@ -0,0 +1,65 @@ +.TH LIBJ2_J2I_CMP_J2I 3 LIBJ2 +.SH NAME +libj2_j2i_cmp_j2i \- Compare two values + +.SH SYNOPSIS +.nf +#include <libj2.h> + +int \fBlibj2_j2i_cmp_j2i\fP(const struct libj2_j2i *\fIa\fP, const struct libj2_j2i *\fIb\fP); +int \fBlibj2_j2i_cmp_ji\fP(const struct libj2_j2i *\fIa\fP, intmax_t \fIb\fP); +int \fBlibj2_ji_cmp_j2i\fP(intmax_t \fIa\fP, const struct libj2_j2i *\fIb\fP); +int \fBlibj2_j2i_cmp_j2u\fP(const struct libj2_j2i *\fIa\fP, const struct libj2_j2u *\fIb\fP); +int \fBlibj2_j2i_cmp_ju\fP(const struct libj2_j2i *\fIa\fP, uintmax_t \fIb\fP); +int \fBlibj2_ji_cmp_j2u\fP(intmax_t \fIa\fP, const struct libj2_j2u *\fIb\fP); +int \fBlibj2_j2u_cmp_j2i\fP(const struct libj2_j2u *\fIa\fP, const struct libj2_j2i *\fIb\fP); +int \fBlibj2_j2u_cmp_ji\fP(const struct libj2_j2u *\fIa\fP, intmax_t \fIb\fP); +int \fBlibj2_ju_cmp_j2i\fP(uintmax_t \fIa\fP, const struct libj2_j2i *\fIb\fP); +int \fBlibj2_j2u_cmp_j2u\fP(const struct libj2_j2u *\fIa\fP, const struct libj2_j2u *\fIb\fP); +int \fBlibj2_j2u_cmp_ju\fP(const struct libj2_j2u *\fIa\fP, uintmax_t \fIb\fP); +int \fBlibj2_ju_cmp_j2u\fP(uintmax_t \fIa\fP, const struct libj2_j2u *\fIb\fP); +.fi +.PP +Link with +.IR -lj2 . + +.SH DESCRIPTION +The above listed functions return compare the of +.I a +to the value of +.IR b , +and return the signum of the difference +between +.I a +and +.IR b . +.PP +The arguments are assumed to be +.RI non- NULL . + +.SH RETURN VALUE +The functions return -1 if +.I a +is less than +.IR b , ++1 if +.I a +is greater than +.IR b , +and 0 if +.I a +and +.I b +are equals. + +.SH ERRORS +The functions cannot fail. + +.SH SEE ALSO +.BR libj2 (7), +.BR libj2_j2i_eq_j2i (3), +.BR libj2_j2i_ne_j2i (3), +.BR libj2_j2i_lt_j2i (3), +.BR libj2_j2i_le_j2i (3), +.BR libj2_j2i_gt_j2i (3), +.BR libj2_j2i_ge_j2i (3) diff --git a/libj2_j2i_cmp_j2i.c b/libj2_j2i_cmp_j2i.c index 7c750c3..bc26e62 100644 --- a/libj2_j2i_cmp_j2i.c +++ b/libj2_j2i_cmp_j2i.c @@ -3,7 +3,6 @@ #ifndef TEST extern inline int libj2_j2i_cmp_j2i(const struct libj2_j2i *a, const struct libj2_j2i *b); -/* TODO Add man page */ #else diff --git a/libj2_j2i_cmp_j2u.3 b/libj2_j2i_cmp_j2u.3 new file mode 120000 index 0000000..3e9997a --- /dev/null +++ b/libj2_j2i_cmp_j2u.3 @@ -0,0 +1 @@ +libj2_j2i_cmp_j2i.3
\ No newline at end of file diff --git a/libj2_j2i_cmp_j2u.c b/libj2_j2i_cmp_j2u.c index d8071a7..6199b4c 100644 --- a/libj2_j2i_cmp_j2u.c +++ b/libj2_j2i_cmp_j2u.c @@ -3,7 +3,6 @@ #ifndef TEST extern inline int libj2_j2i_cmp_j2u(const struct libj2_j2i *a, const struct libj2_j2u *b); -/* TODO Add man page */ #else diff --git a/libj2_j2i_cmp_ji.3 b/libj2_j2i_cmp_ji.3 new file mode 120000 index 0000000..3e9997a --- /dev/null +++ b/libj2_j2i_cmp_ji.3 @@ -0,0 +1 @@ +libj2_j2i_cmp_j2i.3
\ No newline at end of file diff --git a/libj2_j2i_cmp_ji.c b/libj2_j2i_cmp_ji.c index 371b382..f447daf 100644 --- a/libj2_j2i_cmp_ji.c +++ b/libj2_j2i_cmp_ji.c @@ -3,7 +3,6 @@ #ifndef TEST extern inline int libj2_j2i_cmp_ji(const struct libj2_j2i *a, intmax_t b); -/* TODO Add man page */ #else diff --git a/libj2_j2i_cmp_ju.3 b/libj2_j2i_cmp_ju.3 new file mode 120000 index 0000000..3e9997a --- /dev/null +++ b/libj2_j2i_cmp_ju.3 @@ -0,0 +1 @@ +libj2_j2i_cmp_j2i.3
\ No newline at end of file diff --git a/libj2_j2i_cmp_ju.c b/libj2_j2i_cmp_ju.c index aa29cb8..77ee9ca 100644 --- a/libj2_j2i_cmp_ju.c +++ b/libj2_j2i_cmp_ju.c @@ -3,7 +3,6 @@ #ifndef TEST extern inline int libj2_j2i_cmp_ju(const struct libj2_j2i *a, uintmax_t b); -/* TODO Add man page */ #else diff --git a/libj2_j2i_eq_j2i.3 b/libj2_j2i_eq_j2i.3 new file mode 100644 index 0000000..e6aaacf --- /dev/null +++ b/libj2_j2i_eq_j2i.3 @@ -0,0 +1,53 @@ +.TH LIBJ2_J2I_EQ_J2I 3 LIBJ2 +.SH NAME +libj2_j2i_eq_j2i \- Check two values for equality + +.SH SYNOPSIS +.nf +#include <libj2.h> + +int \fBlibj2_j2i_eq_j2i\fP(const struct libj2_j2i *\fIa\fP, const struct libj2_j2i *\fIb\fP); +int \fBlibj2_j2i_eq_ji\fP(const struct libj2_j2i *\fIa\fP, intmax_t \fIb\fP); +int \fBlibj2_ji_eq_j2i\fP(intmax_t \fIa\fP, const struct libj2_j2i *\fIb\fP); +int \fBlibj2_j2i_eq_j2u\fP(const struct libj2_j2i *\fIa\fP, const struct libj2_j2u *\fIb\fP); +int \fBlibj2_j2i_eq_ju\fP(const struct libj2_j2i *\fIa\fP, uintmax_t \fIb\fP); +int \fBlibj2_ji_eq_j2u\fP(intmax_t \fIa\fP, const struct libj2_j2u *\fIb\fP); +int \fBlibj2_j2u_eq_j2i\fP(const struct libj2_j2u *\fIa\fP, const struct libj2_j2i *\fIb\fP); +int \fBlibj2_j2u_eq_ji\fP(const struct libj2_j2u *\fIa\fP, intmax_t \fIb\fP); +int \fBlibj2_ju_eq_j2i\fP(uintmax_t \fIa\fP, const struct libj2_j2i *\fIb\fP); +int \fBlibj2_j2u_eq_j2u\fP(const struct libj2_j2u *\fIa\fP, const struct libj2_j2u *\fIb\fP); +int \fBlibj2_j2u_eq_ju\fP(const struct libj2_j2u *\fIa\fP, uintmax_t \fIb\fP); +int \fBlibj2_ju_eq_j2u\fP(uintmax_t \fIa\fP, const struct libj2_j2u *\fIb\fP); +.fi +.PP +Link with +.IR -lj2 . + +.SH DESCRIPTION +The above listed function checks whether +the value +.I a +is equal to the value of +.IR b . +.PP +The arguments are assumed to be +.RI non- NULL . + +.SH RETURN VALUE +The functions return 1 if +.I a +is equal to +.IR b , +and 0 otherwise. + +.SH ERRORS +The functions cannot fail. + +.SH SEE ALSO +.BR libj2 (7), +.BR libj2_j2i_cmp_j2i (3), +.BR libj2_j2i_ne_j2i (3), +.BR libj2_j2i_lt_j2i (3), +.BR libj2_j2i_le_j2i (3), +.BR libj2_j2i_gt_j2i (3), +.BR libj2_j2i_ge_j2i (3) diff --git a/libj2_j2i_eq_j2i.c b/libj2_j2i_eq_j2i.c index e73e91c..66c4aa7 100644 --- a/libj2_j2i_eq_j2i.c +++ b/libj2_j2i_eq_j2i.c @@ -3,7 +3,6 @@ #ifndef TEST extern inline int libj2_j2i_eq_j2i(const struct libj2_j2i *a, const struct libj2_j2i *b); -/* TODO Add man page */ #else diff --git a/libj2_j2i_eq_j2u.3 b/libj2_j2i_eq_j2u.3 new file mode 120000 index 0000000..8b297dd --- /dev/null +++ b/libj2_j2i_eq_j2u.3 @@ -0,0 +1 @@ +libj2_j2i_eq_j2i.3
\ No newline at end of file diff --git a/libj2_j2i_eq_j2u.c b/libj2_j2i_eq_j2u.c index d4ab711..2617e9f 100644 --- a/libj2_j2i_eq_j2u.c +++ b/libj2_j2i_eq_j2u.c @@ -3,7 +3,6 @@ #ifndef TEST extern inline int libj2_j2i_eq_j2u(const struct libj2_j2i *a, const struct libj2_j2u *b); -/* TODO Add man page */ #else diff --git a/libj2_j2i_eq_ji.3 b/libj2_j2i_eq_ji.3 new file mode 120000 index 0000000..8b297dd --- /dev/null +++ b/libj2_j2i_eq_ji.3 @@ -0,0 +1 @@ +libj2_j2i_eq_j2i.3
\ No newline at end of file diff --git a/libj2_j2i_eq_ji.c b/libj2_j2i_eq_ji.c index b22cad8..2b77a37 100644 --- a/libj2_j2i_eq_ji.c +++ b/libj2_j2i_eq_ji.c @@ -3,7 +3,6 @@ #ifndef TEST extern inline int libj2_j2i_eq_ji(const struct libj2_j2i *a, intmax_t b); -/* TODO Add man page */ #else diff --git a/libj2_j2i_eq_ju.3 b/libj2_j2i_eq_ju.3 new file mode 120000 index 0000000..8b297dd --- /dev/null +++ b/libj2_j2i_eq_ju.3 @@ -0,0 +1 @@ +libj2_j2i_eq_j2i.3
\ No newline at end of file diff --git a/libj2_j2i_eq_ju.c b/libj2_j2i_eq_ju.c index 8f3c119..00a7877 100644 --- a/libj2_j2i_eq_ju.c +++ b/libj2_j2i_eq_ju.c @@ -3,7 +3,6 @@ #ifndef TEST extern inline int libj2_j2i_eq_ju(const struct libj2_j2i *a, uintmax_t b); -/* TODO Add man page */ #else diff --git a/libj2_j2i_ge_j2i.3 b/libj2_j2i_ge_j2i.3 new file mode 100644 index 0000000..d6e03b3 --- /dev/null +++ b/libj2_j2i_ge_j2i.3 @@ -0,0 +1,53 @@ +.TH LIBJ2_J2I_GE_J2I 3 LIBJ2 +.SH NAME +libj2_j2i_ge_j2i \- Check value greater than or equal to another value + +.SH SYNOPSIS +.nf +#include <libj2.h> + +int \fBlibj2_j2i_ge_j2i\fP(const struct libj2_j2i *\fIa\fP, const struct libj2_j2i *\fIb\fP); +int \fBlibj2_j2i_ge_ji\fP(const struct libj2_j2i *\fIa\fP, intmax_t \fIb\fP); +int \fBlibj2_ji_ge_j2i\fP(intmax_t \fIa\fP, const struct libj2_j2i *\fIb\fP); +int \fBlibj2_j2i_ge_j2u\fP(const struct libj2_j2i *\fIa\fP, const struct libj2_j2u *\fIb\fP); +int \fBlibj2_j2i_ge_ju\fP(const struct libj2_j2i *\fIa\fP, uintmax_t \fIb\fP); +int \fBlibj2_ji_ge_j2u\fP(intmax_t \fIa\fP, const struct libj2_j2u *\fIb\fP); +int \fBlibj2_j2u_ge_j2i\fP(const struct libj2_j2u *\fIa\fP, const struct libj2_j2i *\fIb\fP); +int \fBlibj2_j2u_ge_ji\fP(const struct libj2_j2u *\fIa\fP, intmax_t \fIb\fP); +int \fBlibj2_ju_ge_j2i\fP(uintmax_t \fIa\fP, const struct libj2_j2i *\fIb\fP); +int \fBlibj2_j2u_ge_j2u\fP(const struct libj2_j2u *\fIa\fP, const struct libj2_j2u *\fIb\fP); +int \fBlibj2_j2u_ge_ju\fP(const struct libj2_j2u *\fIa\fP, uintmax_t \fIb\fP); +int \fBlibj2_ju_ge_j2u\fP(uintmax_t \fIa\fP, const struct libj2_j2u *\fIb\fP); +.fi +.PP +Link with +.IR -lj2 . + +.SH DESCRIPTION +The above listed function checks whether +the value +.I a +is greater than or equal to the value of +.IR b . +.PP +The arguments are assumed to be +.RI non- NULL . + +.SH RETURN VALUE +The functions return 1 if +.I a +is greater than or equal to +.IR b , +and 0 otherwise. + +.SH ERRORS +The functions cannot fail. + +.SH SEE ALSO +.BR libj2 (7), +.BR libj2_j2i_cmp_j2i (3), +.BR libj2_j2i_eq_j2i (3), +.BR libj2_j2i_ne_j2i (3), +.BR libj2_j2i_lt_j2i (3), +.BR libj2_j2i_le_j2i (3), +.BR libj2_j2i_gt_j2i (3) diff --git a/libj2_j2i_ge_j2i.c b/libj2_j2i_ge_j2i.c index cff7aef..c5c3fa8 100644 --- a/libj2_j2i_ge_j2i.c +++ b/libj2_j2i_ge_j2i.c @@ -3,7 +3,6 @@ #ifndef TEST extern inline int libj2_j2i_ge_j2i(const struct libj2_j2i *a, const struct libj2_j2i *b); -/* TODO Add man page */ #else diff --git a/libj2_j2i_ge_j2u.3 b/libj2_j2i_ge_j2u.3 new file mode 120000 index 0000000..e67e404 --- /dev/null +++ b/libj2_j2i_ge_j2u.3 @@ -0,0 +1 @@ +libj2_j2i_ge_j2i.3
\ No newline at end of file diff --git a/libj2_j2i_ge_j2u.c b/libj2_j2i_ge_j2u.c index b582faf..1c2d94c 100644 --- a/libj2_j2i_ge_j2u.c +++ b/libj2_j2i_ge_j2u.c @@ -3,7 +3,6 @@ #ifndef TEST extern inline int libj2_j2i_ge_j2u(const struct libj2_j2i *a, const struct libj2_j2u *b); -/* TODO Add man page */ #else diff --git a/libj2_j2i_ge_ji.3 b/libj2_j2i_ge_ji.3 new file mode 120000 index 0000000..e67e404 --- /dev/null +++ b/libj2_j2i_ge_ji.3 @@ -0,0 +1 @@ +libj2_j2i_ge_j2i.3
\ No newline at end of file diff --git a/libj2_j2i_ge_ji.c b/libj2_j2i_ge_ji.c index b74f642..ba3b007 100644 --- a/libj2_j2i_ge_ji.c +++ b/libj2_j2i_ge_ji.c @@ -3,7 +3,6 @@ #ifndef TEST extern inline int libj2_j2i_ge_ji(const struct libj2_j2i *a, intmax_t b); -/* TODO Add man page */ #else diff --git a/libj2_j2i_ge_ju.3 b/libj2_j2i_ge_ju.3 new file mode 120000 index 0000000..e67e404 --- /dev/null +++ b/libj2_j2i_ge_ju.3 @@ -0,0 +1 @@ +libj2_j2i_ge_j2i.3
\ No newline at end of file diff --git a/libj2_j2i_ge_ju.c b/libj2_j2i_ge_ju.c index 8b07a01..e2335bb 100644 --- a/libj2_j2i_ge_ju.c +++ b/libj2_j2i_ge_ju.c @@ -3,7 +3,6 @@ #ifndef TEST extern inline int libj2_j2i_ge_ju(const struct libj2_j2i *a, uintmax_t b); -/* TODO Add man page */ #else diff --git a/libj2_j2i_gt_j2i.3 b/libj2_j2i_gt_j2i.3 new file mode 100644 index 0000000..9af2511 --- /dev/null +++ b/libj2_j2i_gt_j2i.3 @@ -0,0 +1,53 @@ +.TH LIBJ2_J2I_GT_J2I 3 LIBJ2 +.SH NAME +libj2_j2i_gt_j2i \- Check value greater than another value + +.SH SYNOPSIS +.nf +#include <libj2.h> + +int \fBlibj2_j2i_gt_j2i\fP(const struct libj2_j2i *\fIa\fP, const struct libj2_j2i *\fIb\fP); +int \fBlibj2_j2i_gt_ji\fP(const struct libj2_j2i *\fIa\fP, intmax_t \fIb\fP); +int \fBlibj2_ji_gt_j2i\fP(intmax_t \fIa\fP, const struct libj2_j2i *\fIb\fP); +int \fBlibj2_j2i_gt_j2u\fP(const struct libj2_j2i *\fIa\fP, const struct libj2_j2u *\fIb\fP); +int \fBlibj2_j2i_gt_ju\fP(const struct libj2_j2i *\fIa\fP, uintmax_t \fIb\fP); +int \fBlibj2_ji_gt_j2u\fP(intmax_t \fIa\fP, const struct libj2_j2u *\fIb\fP); +int \fBlibj2_j2u_gt_j2i\fP(const struct libj2_j2u *\fIa\fP, const struct libj2_j2i *\fIb\fP); +int \fBlibj2_j2u_gt_ji\fP(const struct libj2_j2u *\fIa\fP, intmax_t \fIb\fP); +int \fBlibj2_ju_gt_j2i\fP(uintmax_t \fIa\fP, const struct libj2_j2i *\fIb\fP); +int \fBlibj2_j2u_gt_j2u\fP(const struct libj2_j2u *\fIa\fP, const struct libj2_j2u *\fIb\fP); +int \fBlibj2_j2u_gt_ju\fP(const struct libj2_j2u *\fIa\fP, uintmax_t \fIb\fP); +int \fBlibj2_ju_gt_j2u\fP(uintmax_t \fIa\fP, const struct libj2_j2u *\fIb\fP); +.fi +.PP +Link with +.IR -lj2 . + +.SH DESCRIPTION +The above listed function checks whether +the value +.I a +is greater than the value of +.IR b . +.PP +The arguments are assumed to be +.RI non- NULL . + +.SH RETURN VALUE +The functions return 1 if +.I a +is greater than +.IR b , +and 0 otherwise. + +.SH ERRORS +The functions cannot fail. + +.SH SEE ALSO +.BR libj2 (7), +.BR libj2_j2i_cmp_j2i (3), +.BR libj2_j2i_eq_j2i (3), +.BR libj2_j2i_ne_j2i (3), +.BR libj2_j2i_lt_j2i (3), +.BR libj2_j2i_le_j2i (3), +.BR libj2_j2i_ge_j2i (3) diff --git a/libj2_j2i_gt_j2i.c b/libj2_j2i_gt_j2i.c index 4d3f68c..5667477 100644 --- a/libj2_j2i_gt_j2i.c +++ b/libj2_j2i_gt_j2i.c @@ -3,7 +3,6 @@ #ifndef TEST extern inline int libj2_j2i_gt_j2i(const struct libj2_j2i *a, const struct libj2_j2i *b); -/* TODO Add man page */ #else diff --git a/libj2_j2i_gt_j2u.3 b/libj2_j2i_gt_j2u.3 new file mode 120000 index 0000000..2f99f07 --- /dev/null +++ b/libj2_j2i_gt_j2u.3 @@ -0,0 +1 @@ +libj2_j2i_gt_j2i.3
\ No newline at end of file diff --git a/libj2_j2i_gt_j2u.c b/libj2_j2i_gt_j2u.c index de3282e..4915ae7 100644 --- a/libj2_j2i_gt_j2u.c +++ b/libj2_j2i_gt_j2u.c @@ -3,7 +3,6 @@ #ifndef TEST extern inline int libj2_j2i_gt_j2u(const struct libj2_j2i *a, const struct libj2_j2u *b); -/* TODO Add man page */ #else diff --git a/libj2_j2i_gt_ji.3 b/libj2_j2i_gt_ji.3 new file mode 120000 index 0000000..2f99f07 --- /dev/null +++ b/libj2_j2i_gt_ji.3 @@ -0,0 +1 @@ +libj2_j2i_gt_j2i.3
\ No newline at end of file diff --git a/libj2_j2i_gt_ji.c b/libj2_j2i_gt_ji.c index f43b2cf..0836d3d 100644 --- a/libj2_j2i_gt_ji.c +++ b/libj2_j2i_gt_ji.c @@ -3,7 +3,6 @@ #ifndef TEST extern inline int libj2_j2i_gt_ji(const struct libj2_j2i *a, intmax_t b); -/* TODO Add man page */ #else diff --git a/libj2_j2i_gt_ju.3 b/libj2_j2i_gt_ju.3 new file mode 120000 index 0000000..2f99f07 --- /dev/null +++ b/libj2_j2i_gt_ju.3 @@ -0,0 +1 @@ +libj2_j2i_gt_j2i.3
\ No newline at end of file diff --git a/libj2_j2i_gt_ju.c b/libj2_j2i_gt_ju.c index 89975e2..e452bd8 100644 --- a/libj2_j2i_gt_ju.c +++ b/libj2_j2i_gt_ju.c @@ -3,7 +3,6 @@ #ifndef TEST extern inline int libj2_j2i_gt_ju(const struct libj2_j2i *a, uintmax_t b); -/* TODO Add man page */ #else diff --git a/libj2_j2i_le_j2i.3 b/libj2_j2i_le_j2i.3 new file mode 100644 index 0000000..4c309ea --- /dev/null +++ b/libj2_j2i_le_j2i.3 @@ -0,0 +1,53 @@ +.TH LIBJ2_J2I_LE_J2I 3 LIBJ2 +.SH NAME +libj2_j2i_le_j2i \- Check value less than or equal to another value + +.SH SYNOPSIS +.nf +#include <libj2.h> + +int \fBlibj2_j2i_le_j2i\fP(const struct libj2_j2i *\fIa\fP, const struct libj2_j2i *\fIb\fP); +int \fBlibj2_j2i_le_ji\fP(const struct libj2_j2i *\fIa\fP, intmax_t \fIb\fP); +int \fBlibj2_ji_le_j2i\fP(intmax_t \fIa\fP, const struct libj2_j2i *\fIb\fP); +int \fBlibj2_j2i_le_j2u\fP(const struct libj2_j2i *\fIa\fP, const struct libj2_j2u *\fIb\fP); +int \fBlibj2_j2i_le_ju\fP(const struct libj2_j2i *\fIa\fP, uintmax_t \fIb\fP); +int \fBlibj2_ji_le_j2u\fP(intmax_t \fIa\fP, const struct libj2_j2u *\fIb\fP); +int \fBlibj2_j2u_le_j2i\fP(const struct libj2_j2u *\fIa\fP, const struct libj2_j2i *\fIb\fP); +int \fBlibj2_j2u_le_ji\fP(const struct libj2_j2u *\fIa\fP, intmax_t \fIb\fP); +int \fBlibj2_ju_le_j2i\fP(uintmax_t \fIa\fP, const struct libj2_j2i *\fIb\fP); +int \fBlibj2_j2u_le_j2u\fP(const struct libj2_j2u *\fIa\fP, const struct libj2_j2u *\fIb\fP); +int \fBlibj2_j2u_le_ju\fP(const struct libj2_j2u *\fIa\fP, uintmax_t \fIb\fP); +int \fBlibj2_ju_le_j2u\fP(uintmax_t \fIa\fP, const struct libj2_j2u *\fIb\fP); +.fi +.PP +Link with +.IR -lj2 . + +.SH DESCRIPTION +The above listed function checks whether +the value +.I a +is less than or equal to the value of +.IR b . +.PP +The arguments are assumed to be +.RI non- NULL . + +.SH RETURN VALUE +The functions return 1 if +.I a +is less than or equal to +.IR b , +and 0 otherwise. + +.SH ERRORS +The functions cannot fail. + +.SH SEE ALSO +.BR libj2 (7), +.BR libj2_j2i_cmp_j2i (3), +.BR libj2_j2i_eq_j2i (3), +.BR libj2_j2i_ne_j2i (3), +.BR libj2_j2i_lt_j2i (3), +.BR libj2_j2i_gt_j2i (3), +.BR libj2_j2i_ge_j2i (3) diff --git a/libj2_j2i_le_j2i.c b/libj2_j2i_le_j2i.c index 3569d7a..6eab5b4 100644 --- a/libj2_j2i_le_j2i.c +++ b/libj2_j2i_le_j2i.c @@ -3,7 +3,6 @@ #ifndef TEST extern inline int libj2_j2i_le_j2i(const struct libj2_j2i *a, const struct libj2_j2i *b); -/* TODO Add man page */ #else diff --git a/libj2_j2i_le_j2u.3 b/libj2_j2i_le_j2u.3 new file mode 120000 index 0000000..98e4335 --- /dev/null +++ b/libj2_j2i_le_j2u.3 @@ -0,0 +1 @@ +libj2_j2i_le_j2i.3
\ No newline at end of file diff --git a/libj2_j2i_le_j2u.c b/libj2_j2i_le_j2u.c index f29aa40..7a41ed4 100644 --- a/libj2_j2i_le_j2u.c +++ b/libj2_j2i_le_j2u.c @@ -3,7 +3,6 @@ #ifndef TEST extern inline int libj2_j2i_le_j2u(const struct libj2_j2i *a, const struct libj2_j2u *b); -/* TODO Add man page */ #else diff --git a/libj2_j2i_le_ji.3 b/libj2_j2i_le_ji.3 new file mode 120000 index 0000000..98e4335 --- /dev/null +++ b/libj2_j2i_le_ji.3 @@ -0,0 +1 @@ +libj2_j2i_le_j2i.3
\ No newline at end of file diff --git a/libj2_j2i_le_ji.c b/libj2_j2i_le_ji.c index 1ccd14b..ecd202c 100644 --- a/libj2_j2i_le_ji.c +++ b/libj2_j2i_le_ji.c @@ -3,7 +3,6 @@ #ifndef TEST extern inline int libj2_j2i_le_ji(const struct libj2_j2i *a, intmax_t b); -/* TODO Add man page */ #else diff --git a/libj2_j2i_le_ju.3 b/libj2_j2i_le_ju.3 new file mode 120000 index 0000000..98e4335 --- /dev/null +++ b/libj2_j2i_le_ju.3 @@ -0,0 +1 @@ +libj2_j2i_le_j2i.3
\ No newline at end of file diff --git a/libj2_j2i_le_ju.c b/libj2_j2i_le_ju.c index 10e77ad..51bdbd6 100644 --- a/libj2_j2i_le_ju.c +++ b/libj2_j2i_le_ju.c @@ -3,7 +3,6 @@ #ifndef TEST extern inline int libj2_j2i_le_ju(const struct libj2_j2i *a, uintmax_t b); -/* TODO Add man page */ #else diff --git a/libj2_j2i_lt_j2i.3 b/libj2_j2i_lt_j2i.3 new file mode 100644 index 0000000..cdb7265 --- /dev/null +++ b/libj2_j2i_lt_j2i.3 @@ -0,0 +1,53 @@ +.TH LIBJ2_J2I_LT_J2I 3 LIBJ2 +.SH NAME +libj2_j2i_lt_j2i \- Check value less than another value + +.SH SYNOPSIS +.nf +#include <libj2.h> + +int \fBlibj2_j2i_lt_j2i\fP(const struct libj2_j2i *\fIa\fP, const struct libj2_j2i *\fIb\fP); +int \fBlibj2_j2i_lt_ji\fP(const struct libj2_j2i *\fIa\fP, intmax_t \fIb\fP); +int \fBlibj2_ji_lt_j2i\fP(intmax_t \fIa\fP, const struct libj2_j2i *\fIb\fP); +int \fBlibj2_j2i_lt_j2u\fP(const struct libj2_j2i *\fIa\fP, const struct libj2_j2u *\fIb\fP); +int \fBlibj2_j2i_lt_ju\fP(const struct libj2_j2i *\fIa\fP, uintmax_t \fIb\fP); +int \fBlibj2_ji_lt_j2u\fP(intmax_t \fIa\fP, const struct libj2_j2u *\fIb\fP); +int \fBlibj2_j2u_lt_j2i\fP(const struct libj2_j2u *\fIa\fP, const struct libj2_j2i *\fIb\fP); +int \fBlibj2_j2u_lt_ji\fP(const struct libj2_j2u *\fIa\fP, intmax_t \fIb\fP); +int \fBlibj2_ju_lt_j2i\fP(uintmax_t \fIa\fP, const struct libj2_j2i *\fIb\fP); +int \fBlibj2_j2u_lt_j2u\fP(const struct libj2_j2u *\fIa\fP, const struct libj2_j2u *\fIb\fP); +int \fBlibj2_j2u_lt_ju\fP(const struct libj2_j2u *\fIa\fP, uintmax_t \fIb\fP); +int \fBlibj2_ju_lt_j2u\fP(uintmax_t \fIa\fP, const struct libj2_j2u *\fIb\fP); +.fi +.PP +Link with +.IR -lj2 . + +.SH DESCRIPTION +The above listed function checks whether +the value +.I a +is less than the value of +.IR b . +.PP +The arguments are assumed to be +.RI non- NULL . + +.SH RETURN VALUE +The functions return 1 if +.I a +is less than +.IR b , +and 0 otherwise. + +.SH ERRORS +The functions cannot fail. + +.SH SEE ALSO +.BR libj2 (7), +.BR libj2_j2i_cmp_j2i (3), +.BR libj2_j2i_eq_j2i (3), +.BR libj2_j2i_ne_j2i (3), +.BR libj2_j2i_le_j2i (3), +.BR libj2_j2i_gt_j2i (3), +.BR libj2_j2i_ge_j2i (3) diff --git a/libj2_j2i_lt_j2i.c b/libj2_j2i_lt_j2i.c index 7da3b21..63fa0d4 100644 --- a/libj2_j2i_lt_j2i.c +++ b/libj2_j2i_lt_j2i.c @@ -3,7 +3,6 @@ #ifndef TEST extern inline int libj2_j2i_lt_j2i(const struct libj2_j2i *a, const struct libj2_j2i *b); -/* TODO Add man page */ #else diff --git a/libj2_j2i_lt_j2u.3 b/libj2_j2i_lt_j2u.3 new file mode 120000 index 0000000..3bfb749 --- /dev/null +++ b/libj2_j2i_lt_j2u.3 @@ -0,0 +1 @@ +libj2_j2i_lt_j2i.3
\ No newline at end of file diff --git a/libj2_j2i_lt_j2u.c b/libj2_j2i_lt_j2u.c index 7cc4f25..d99d05f 100644 --- a/libj2_j2i_lt_j2u.c +++ b/libj2_j2i_lt_j2u.c @@ -3,7 +3,6 @@ #ifndef TEST extern inline int libj2_j2i_lt_j2u(const struct libj2_j2i *a, const struct libj2_j2u *b); -/* TODO Add man page */ #else diff --git a/libj2_j2i_lt_ji.3 b/libj2_j2i_lt_ji.3 new file mode 120000 index 0000000..3bfb749 --- /dev/null +++ b/libj2_j2i_lt_ji.3 @@ -0,0 +1 @@ +libj2_j2i_lt_j2i.3
\ No newline at end of file diff --git a/libj2_j2i_lt_ji.c b/libj2_j2i_lt_ji.c index d2ae65b..a4e5441 100644 --- a/libj2_j2i_lt_ji.c +++ b/libj2_j2i_lt_ji.c @@ -3,7 +3,6 @@ #ifndef TEST extern inline int libj2_j2i_lt_ji(const struct libj2_j2i *a, intmax_t b); -/* TODO Add man page */ #else diff --git a/libj2_j2i_lt_ju.3 b/libj2_j2i_lt_ju.3 new file mode 120000 index 0000000..3bfb749 --- /dev/null +++ b/libj2_j2i_lt_ju.3 @@ -0,0 +1 @@ +libj2_j2i_lt_j2i.3
\ No newline at end of file diff --git a/libj2_j2i_lt_ju.c b/libj2_j2i_lt_ju.c index 71fdb93..9aa1a01 100644 --- a/libj2_j2i_lt_ju.c +++ b/libj2_j2i_lt_ju.c @@ -3,7 +3,6 @@ #ifndef TEST extern inline int libj2_j2i_lt_ju(const struct libj2_j2i *a, uintmax_t b); -/* TODO Add man page */ #else diff --git a/libj2_j2i_mul_j2i.c b/libj2_j2i_mul_j2i.c index 4794843..51b3dc6 100644 --- a/libj2_j2i_mul_j2i.c +++ b/libj2_j2i_mul_j2i.c @@ -8,7 +8,277 @@ extern inline void libj2_j2i_mul_j2i(struct libj2_j2i *a, const struct libj2_j2i #else -CONST int main(void) { return 0; } -/* TODO test libj2_j2i_mul_j2i, libj2_j2i_mul_j2i_to_j2i_overflow_p_quick, libj2_j2i_mul_j2i_to_j2i_overflow_p, libj2_j2i_mul_j2i_to_j2i_overflow, libj2_j2i_mul_j2i_overflow_p_quick, libj2_j2i_mul_j2i_overflow_p, libj2_j2i_mul_j2i_overflow */ +#define CONST_ARG (const struct libj2_j2i *) + + +static uintmax_t +random_ju(void) +{ + size_t n = LIBJ2_JU_BIT; + uintmax_t r = 0; + while (n--) + if (rand() < rand()) + r |= (uintmax_t)1 << n; + return r; +} + + +static int +refmul(const struct libj2_j2i *a, const struct libj2_j2i *b, struct libj2_j2i *r) +{ + int overflow, neg = libj2_j2i_is_negative(a) ^ libj2_j2i_is_negative(b); + struct libj2_j2u ulimit, u, v, w; + struct libj2_j2i ilimit; + + libj2_abs_j2i_to_j2u(a, &u); + libj2_abs_j2i_to_j2u(b, &v); + overflow = libj2_j2u_mul_j2u_to_j2u_overflow(&u, &v, &w); + libj2_j2u_to_j2i(&w, r); + if (neg) + libj2_j2i_min(&ilimit); + else + libj2_j2i_max(&ilimit); + libj2_abs_j2i_to_j2u(&ilimit, &ulimit); + if (libj2_j2u_gt_j2u(&w, &ulimit)) + overflow = 1; + if (neg) + libj2_minus_j2i(r); + + return neg ? -overflow : +overflow; +} + + +static int +check_double(uintmax_t a_high, uintmax_t a_low, struct libj2_j2i *r_out) +{ + struct libj2_j2i a = {.high = a_high, .low = a_low}, a_saved = a; + struct libj2_j2i r, expected; + int expected_overflow, r_set; + enum libj2_overflow overflow; + + expected_overflow = refmul(&a, &a, &expected); + EXPECT(libj2_j2i_eq_j2i(&a, &a_saved)); + EXPECT(expected_overflow >= 0); + + r = (struct libj2_j2i){111, 222}; + EXPECT(libj2_j2i_mul_j2i_to_j2i_overflow(CONST_ARG &a, CONST_ARG &a, &r) == expected_overflow); + EXPECT(libj2_j2i_eq_j2i(&a, &a_saved)); + EXPECT(libj2_j2i_eq_j2i(&r, &expected)); + + r = a; + EXPECT(libj2_j2i_mul_j2i_to_j2i_overflow(CONST_ARG &r, CONST_ARG &r, &r) == expected_overflow); + EXPECT(libj2_j2i_eq_j2i(&r, &expected)); + + r = a; + EXPECT(libj2_j2i_mul_j2i_overflow(&r, CONST_ARG &r) == expected_overflow); + EXPECT(libj2_j2i_eq_j2i(&r, &expected)); + + r = (struct libj2_j2i){111, 222}; + libj2_j2i_mul_j2i_to_j2i(CONST_ARG &a, CONST_ARG &a, &r); + EXPECT(libj2_j2i_eq_j2i(&a, &a_saved)); + EXPECT(libj2_j2i_eq_j2i(&r, &expected)); + + r = a; + libj2_j2i_mul_j2i_to_j2i(CONST_ARG &r, CONST_ARG &r, &r); + EXPECT(libj2_j2i_eq_j2i(&r, &expected)); + + r = a; + libj2_j2i_mul_j2i(&r, CONST_ARG &r); + EXPECT(libj2_j2i_eq_j2i(&r, &expected)); + + EXPECT(libj2_j2i_mul_j2i_overflow_p(CONST_ARG &a, CONST_ARG &a) == expected_overflow); + EXPECT(libj2_j2i_eq_j2i(&a, &a_saved)); + + r = (struct libj2_j2i){111, 222}; + r_set = 999; + EXPECT(libj2_j2i_mul_j2i_to_j2i_overflow_p(CONST_ARG &a, CONST_ARG &a, &r, &r_set) == expected_overflow); + EXPECT(libj2_j2i_eq_j2i(&a, &a_saved)); + EXPECT(libj2_j2i_eq_j2i(&r, &expected)); + EXPECT(r_set == 0 || r_set == 1); + EXPECT(libj2_j2i_eq_j2i(&r, r_set ? &expected : &(struct libj2_j2i){111, 222})); + + r = a; + r_set = 999; + EXPECT(libj2_j2i_mul_j2i_to_j2i_overflow_p(CONST_ARG &r, CONST_ARG &r, &r, &r_set) == expected_overflow); + EXPECT(libj2_j2i_eq_j2i(&r, &expected)); + EXPECT(r_set == 0 || r_set == 1); + EXPECT(libj2_j2i_eq_j2i(&r, r_set ? &expected : &a_saved)); + + overflow = libj2_j2i_mul_j2i_overflow_p_quick(CONST_ARG &a, CONST_ARG &a); + EXPECT(libj2_j2i_eq_j2i(&a, &a_saved)); + EXPECT(overflow == LIBJ2_POSITIVE_OVERFLOW_UNKNOWN || (int)overflow == expected_overflow); + + *r_out = expected; + return expected_overflow; +} + + +static void +check(uintmax_t a_high, uintmax_t a_low, uintmax_t b_high, uintmax_t b_low) +{ + struct libj2_j2i a = {.high = a_high, .low = a_low}, a_saved = a; + struct libj2_j2i b = {.high = b_high, .low = b_low}, b_saved = b; + struct libj2_j2i r, expected; + int expected_overflow, r_set; + enum libj2_overflow overflow; + + expected_overflow = refmul(&a, &b, &expected); + EXPECT(libj2_j2i_eq_j2i(&a, &a_saved)); + EXPECT(libj2_j2i_eq_j2i(&b, &b_saved)); + + if (a_high == b_high && a_low == b_low) { + r = (struct libj2_j2i){111, 222}; + EXPECT(check_double(a_high, a_low, &r) == expected_overflow); + EXPECT(libj2_j2i_eq_j2i(&r, &expected)); + } + + r = (struct libj2_j2i){111, 222}; + EXPECT(libj2_j2i_mul_j2i_to_j2i_overflow(CONST_ARG &a, CONST_ARG &b, &r) == expected_overflow); + EXPECT(libj2_j2i_eq_j2i(&a, &a_saved)); + EXPECT(libj2_j2i_eq_j2i(&b, &b_saved)); + EXPECT(libj2_j2i_eq_j2i(&r, &expected)); + + r = (struct libj2_j2i){111, 222}; + libj2_j2i_mul_j2i_to_j2i(CONST_ARG &a, CONST_ARG &b, &r); + EXPECT(libj2_j2i_eq_j2i(&a, &a_saved)); + EXPECT(libj2_j2i_eq_j2i(&b, &b_saved)); + EXPECT(libj2_j2i_eq_j2i(&r, &expected)); + + r = a; + EXPECT(libj2_j2i_mul_j2i_to_j2i_overflow(CONST_ARG &r, CONST_ARG &b, &r) == expected_overflow); + EXPECT(libj2_j2i_eq_j2i(&b, &b_saved)); + EXPECT(libj2_j2i_eq_j2i(&r, &expected)); + + r = a; + libj2_j2i_mul_j2i_to_j2i(CONST_ARG &r, CONST_ARG &b, &r); + EXPECT(libj2_j2i_eq_j2i(&b, &b_saved)); + EXPECT(libj2_j2i_eq_j2i(&r, &expected)); + + r = b; + EXPECT(libj2_j2i_mul_j2i_to_j2i_overflow(CONST_ARG &a, CONST_ARG &r, &r) == expected_overflow); + EXPECT(libj2_j2i_eq_j2i(&a, &a_saved)); + EXPECT(libj2_j2i_eq_j2i(&r, &expected)); + + r = b; + libj2_j2i_mul_j2i_to_j2i(CONST_ARG &a, CONST_ARG &r, &r); + EXPECT(libj2_j2i_eq_j2i(&a, &a_saved)); + EXPECT(libj2_j2i_eq_j2i(&r, &expected)); + + r = a; + EXPECT(libj2_j2i_mul_j2i_overflow(&r, CONST_ARG &b) == expected_overflow); + EXPECT(libj2_j2i_eq_j2i(&b, &b_saved)); + EXPECT(libj2_j2i_eq_j2i(&r, &expected)); + + r = a; + libj2_j2i_mul_j2i(&r, CONST_ARG &b); + EXPECT(libj2_j2i_eq_j2i(&b, &b_saved)); + EXPECT(libj2_j2i_eq_j2i(&r, &expected)); + + EXPECT(libj2_j2i_mul_j2i_overflow_p(CONST_ARG &a, CONST_ARG &b) == expected_overflow); + EXPECT(libj2_j2i_eq_j2i(&a, &a_saved)); + EXPECT(libj2_j2i_eq_j2i(&b, &b_saved)); + + r = (struct libj2_j2i){111, 222}; + r_set = 999; + EXPECT(libj2_j2i_mul_j2i_to_j2i_overflow_p(CONST_ARG &a, CONST_ARG &b, &r, &r_set) == expected_overflow); + EXPECT(libj2_j2i_eq_j2i(&a, &a_saved)); + EXPECT(libj2_j2i_eq_j2i(&b, &b_saved)); + EXPECT(r_set == 0 || r_set == 1); + EXPECT(libj2_j2i_eq_j2i(&r, r_set ? &expected : &(struct libj2_j2i){111, 222})); + + r = a; + r_set = 999; + EXPECT(libj2_j2i_mul_j2i_to_j2i_overflow_p(CONST_ARG &r, CONST_ARG &b, &r, &r_set) == expected_overflow); + EXPECT(libj2_j2i_eq_j2i(&b, &b_saved)); + EXPECT(r_set == 0 || r_set == 1); + EXPECT(libj2_j2i_eq_j2i(&r, r_set ? &expected : &a_saved)); + + r = b; + r_set = 999; + EXPECT(libj2_j2i_mul_j2i_to_j2i_overflow_p(CONST_ARG &a, CONST_ARG &r, &r, &r_set) == expected_overflow); + EXPECT(libj2_j2i_eq_j2i(&a, &a_saved)); + EXPECT(r_set == 0 || r_set == 1); + EXPECT(libj2_j2i_eq_j2i(&r, r_set ? &expected : &b_saved)); + + overflow = libj2_j2i_mul_j2i_overflow_p_quick(CONST_ARG &a, CONST_ARG &b); + EXPECT(libj2_j2i_eq_j2i(&a, &a_saved)); + EXPECT(libj2_j2i_eq_j2i(&b, &b_saved)); + if (libj2_j2i_is_zero(&a) || libj2_j2i_is_zero(&b)) + EXPECT(overflow == LIBJ2_NO_OVERFLOW); + if (overflow == LIBJ2_POSITIVE_OVERFLOW_UNKNOWN) { + EXPECT(expected_overflow >= 0); + EXPECT(libj2_sgn_j2i(&a) == libj2_sgn_j2i(&b)); + } else if (overflow == LIBJ2_NEGATIVE_OVERFLOW_UNKNOWN) { + EXPECT(expected_overflow <= 0); + EXPECT(libj2_sgn_j2i(&a) == -libj2_sgn_j2i(&b)); + } else { + EXPECT((int)overflow == expected_overflow); + } +} + + +int +main(void) +{ + uintmax_t a, b, c, d, max, min, umax, vs[12]; + unsigned i, ii, iii, iv, k, j; + + srand((unsigned)time(NULL)); + + umax = UINTMAX_MAX; + max = umax >> 1; + min = ~max; + + vs[0] = 0U; + vs[1] = 1U; + vs[2] = 2U; + vs[3] = umax - 0U; + vs[4] = umax - 1U; + vs[5] = umax - 2U; + vs[6] = max - 0U; + vs[7] = max - 1U; + vs[8] = max - 2U; + vs[9] = min + 0U; + vs[10] = min + 1U; + vs[11] = min + 2U; + + for (j = 0; j < 32U; j++) { + for (k = 0; k < 16U; k++) { + a = random_ju() >> 1; + b = random_ju() >> 1; + c = random_ju() >> 1; + d = random_ju() >> 1; + if (k & 1U) a = ~a; + if (k & 2U) b = ~b; + if (k & 4U) c = ~c; + if (k & 8U) d = ~d; + check(a, b, c, d); + for (i = 0; k < 8U && i < 12U; i++) { + check(vs[i], a, b, c); + check(a, vs[i], b, c); + check(a, b, vs[i], c); + check(a, b, c, vs[i]); + for (ii = 0; k < 4U && ii < 12U; ii++) { + check(vs[i], vs[ii], a, b); + check(vs[i], a, vs[ii], b); + check(vs[i], a, b, vs[ii]); + check(a, vs[i], vs[ii], b); + check(a, vs[i], b, vs[ii]); + check(a, b, vs[i], vs[ii]); + for (iii = 0; k < 2U && iii < 12U; iii++) { + check(vs[i], vs[ii], vs[iii], a); + check(vs[i], vs[ii], a, vs[iii]); + check(vs[i], a, vs[ii], vs[iii]); + check(a, vs[i], vs[ii], vs[iii]); + for (iv = 0; !j && k < 1U && iv < 12U; iv++) + check(vs[i], vs[ii], vs[iii], vs[iv]); + } + } + } + } + } + + return 0; +} #endif diff --git a/libj2_j2i_ne_j2i.3 b/libj2_j2i_ne_j2i.3 new file mode 100644 index 0000000..bf58b50 --- /dev/null +++ b/libj2_j2i_ne_j2i.3 @@ -0,0 +1,53 @@ +.TH LIBJ2_J2I_NE_J2I 3 LIBJ2 +.SH NAME +libj2_j2i_ne_j2i \- Check two values for inequality + +.SH SYNOPSIS +.nf +#include <libj2.h> + +int \fBlibj2_j2i_ne_j2i\fP(const struct libj2_j2i *\fIa\fP, const struct libj2_j2i *\fIb\fP); +int \fBlibj2_j2i_ne_ji\fP(const struct libj2_j2i *\fIa\fP, intmax_t \fIb\fP); +int \fBlibj2_ji_ne_j2i\fP(intmax_t \fIa\fP, const struct libj2_j2i *\fIb\fP); +int \fBlibj2_j2i_ne_j2u\fP(const struct libj2_j2i *\fIa\fP, const struct libj2_j2u *\fIb\fP); +int \fBlibj2_j2i_ne_ju\fP(const struct libj2_j2i *\fIa\fP, uintmax_t \fIb\fP); +int \fBlibj2_ji_ne_j2u\fP(intmax_t \fIa\fP, const struct libj2_j2u *\fIb\fP); +int \fBlibj2_j2u_ne_j2i\fP(const struct libj2_j2u *\fIa\fP, const struct libj2_j2i *\fIb\fP); +int \fBlibj2_j2u_ne_ji\fP(const struct libj2_j2u *\fIa\fP, intmax_t \fIb\fP); +int \fBlibj2_ju_ne_j2i\fP(uintmax_t \fIa\fP, const struct libj2_j2i *\fIb\fP); +int \fBlibj2_j2u_ne_j2u\fP(const struct libj2_j2u *\fIa\fP, const struct libj2_j2u *\fIb\fP); +int \fBlibj2_j2u_ne_ju\fP(const struct libj2_j2u *\fIa\fP, uintmax_t \fIb\fP); +int \fBlibj2_ju_ne_j2u\fP(uintmax_t \fIa\fP, const struct libj2_j2u *\fIb\fP); +.fi +.PP +Link with +.IR -lj2 . + +.SH DESCRIPTION +The above listed function checks whether +the value +.I a +is different from the value of +.IR b . +.PP +The arguments are assumed to be +.RI non- NULL . + +.SH RETURN VALUE +The functions return 0 if +.I a +is equal to +.IR b , +and 1 otherwise. + +.SH ERRORS +The functions cannot fail. + +.SH SEE ALSO +.BR libj2 (7), +.BR libj2_j2i_cmp_j2i (3), +.BR libj2_j2i_eq_j2i (3), +.BR libj2_j2i_lt_j2i (3), +.BR libj2_j2i_le_j2i (3), +.BR libj2_j2i_gt_j2i (3), +.BR libj2_j2i_ge_j2i (3) diff --git a/libj2_j2i_ne_j2i.c b/libj2_j2i_ne_j2i.c index 887d4eb..ec503e7 100644 --- a/libj2_j2i_ne_j2i.c +++ b/libj2_j2i_ne_j2i.c @@ -3,7 +3,6 @@ #ifndef TEST extern inline int libj2_j2i_ne_j2i(const struct libj2_j2i *a, const struct libj2_j2i *b); -/* TODO Add man page */ #else diff --git a/libj2_j2i_ne_j2u.3 b/libj2_j2i_ne_j2u.3 new file mode 120000 index 0000000..f9c58c2 --- /dev/null +++ b/libj2_j2i_ne_j2u.3 @@ -0,0 +1 @@ +libj2_j2i_ne_j2i.3
\ No newline at end of file diff --git a/libj2_j2i_ne_j2u.c b/libj2_j2i_ne_j2u.c index a9ae130..6a2b7c6 100644 --- a/libj2_j2i_ne_j2u.c +++ b/libj2_j2i_ne_j2u.c @@ -3,7 +3,6 @@ #ifndef TEST extern inline int libj2_j2i_ne_j2u(const struct libj2_j2i *a, const struct libj2_j2u *b); -/* TODO Add man page */ #else diff --git a/libj2_j2i_ne_ji.3 b/libj2_j2i_ne_ji.3 new file mode 120000 index 0000000..f9c58c2 --- /dev/null +++ b/libj2_j2i_ne_ji.3 @@ -0,0 +1 @@ +libj2_j2i_ne_j2i.3
\ No newline at end of file diff --git a/libj2_j2i_ne_ji.c b/libj2_j2i_ne_ji.c index 95e330d..499f406 100644 --- a/libj2_j2i_ne_ji.c +++ b/libj2_j2i_ne_ji.c @@ -3,7 +3,6 @@ #ifndef TEST extern inline int libj2_j2i_ne_ji(const struct libj2_j2i *a, intmax_t b); -/* TODO Add man page */ #else diff --git a/libj2_j2i_ne_ju.3 b/libj2_j2i_ne_ju.3 new file mode 120000 index 0000000..f9c58c2 --- /dev/null +++ b/libj2_j2i_ne_ju.3 @@ -0,0 +1 @@ +libj2_j2i_ne_j2i.3
\ No newline at end of file diff --git a/libj2_j2i_ne_ju.c b/libj2_j2i_ne_ju.c index bb055ef..b90f964 100644 --- a/libj2_j2i_ne_ju.c +++ b/libj2_j2i_ne_ju.c @@ -3,7 +3,6 @@ #ifndef TEST extern inline int libj2_j2i_ne_ju(const struct libj2_j2i *a, uintmax_t b); -/* TODO Add man page */ #else diff --git a/libj2_j2i_sub_j2i.c b/libj2_j2i_sub_j2i.c index d26c290..92a344a 100644 --- a/libj2_j2i_sub_j2i.c +++ b/libj2_j2i_sub_j2i.c @@ -43,19 +43,31 @@ validate(uintmax_t a_high, uintmax_t a_low, uintmax_t b_high, uintmax_t b_low, u overflow = 0; libj2_minus_j2u(&a); libj2_j2u_add_j2u_to_j2u_overflow(&a, &b, (void *)&r); + EXPECT(libj2_j2i_gt_j2i(&r, (const void *)&a)); } else if (a_neg) { overflow = -libj2_j2u_add_j2u_to_j2u_overflow(&a, &b, (void *)&r); + EXPECT(overflow == 0 || overflow == -1); libj2_minus_j2i(&r); if (!libj2_j2i_is_negative(&r)) overflow = -1; + else if (overflow) + EXPECT(libj2_j2i_gt_j2i(&r, (const void *)&a)); + if (!overflow) + EXPECT(libj2_j2i_le_j2i(&r, (const void *)&a)); } else if (b_neg) { overflow = +libj2_j2u_add_j2u_to_j2u_overflow(&a, &b, (void *)&r); + EXPECT(overflow == 0 || overflow == +1); if (!libj2_j2i_is_positive(&r)) overflow = +1; + else if (overflow) + EXPECT(libj2_j2i_lt_j2i(&r, (const void *)&a)); + if (!overflow) + EXPECT(libj2_j2i_gt_j2i(&r, (const void *)&a)); } else { overflow = 0; libj2_minus_j2u(&b); libj2_j2u_add_j2u_to_j2u(&a, &b, (void *)&r); + EXPECT(libj2_j2i_le_j2u(&r, &a)); } EXPECT(r.high == r_high); diff --git a/libj2_j2i_sub_ji.c b/libj2_j2i_sub_ji.c index b65d6ae..27bf013 100644 --- a/libj2_j2i_sub_ji.c +++ b/libj2_j2i_sub_ji.c @@ -43,19 +43,31 @@ validate(uintmax_t a_high, uintmax_t a_low, uintmax_t b_high, uintmax_t b_low, u overflow = 0; libj2_minus_j2u(&a); libj2_j2u_add_j2u_to_j2u_overflow(&a, &b, (void *)&r); + EXPECT(libj2_j2i_gt_j2i(&r, (const void *)&a)); } else if (a_neg) { overflow = -libj2_j2u_add_j2u_to_j2u_overflow(&a, &b, (void *)&r); + EXPECT(overflow == 0 || overflow == -1); libj2_minus_j2i(&r); if (!libj2_j2i_is_negative(&r)) overflow = -1; + else if (overflow) + EXPECT(libj2_j2i_gt_j2i(&r, (const void *)&a)); + if (!overflow) + EXPECT(libj2_j2i_le_j2i(&r, (const void *)&a)); } else if (b_neg) { overflow = +libj2_j2u_add_j2u_to_j2u_overflow(&a, &b, (void *)&r); + EXPECT(overflow == 0 || overflow == +1); if (!libj2_j2i_is_positive(&r)) overflow = +1; + else if (overflow) + EXPECT(libj2_j2i_lt_j2i(&r, (const void *)&a)); + if (!overflow) + EXPECT(libj2_j2i_gt_j2i(&r, (const void *)&a)); } else { overflow = 0; libj2_minus_j2u(&b); libj2_j2u_add_j2u_to_j2u(&a, &b, (void *)&r); + EXPECT(libj2_j2i_le_j2u(&r, &a)); } EXPECT(r.high == r_high); diff --git a/libj2_j2u_cmp_j2i.3 b/libj2_j2u_cmp_j2i.3 new file mode 120000 index 0000000..3e9997a --- /dev/null +++ b/libj2_j2u_cmp_j2i.3 @@ -0,0 +1 @@ +libj2_j2i_cmp_j2i.3
\ No newline at end of file diff --git a/libj2_j2u_cmp_j2i.c b/libj2_j2u_cmp_j2i.c index 2ba1475..10c4d65 100644 --- a/libj2_j2u_cmp_j2i.c +++ b/libj2_j2u_cmp_j2i.c @@ -3,7 +3,6 @@ #ifndef TEST extern inline int libj2_j2u_cmp_j2i(const struct libj2_j2u *a, const struct libj2_j2i *b); -/* TODO Add man page */ #else diff --git a/libj2_j2u_cmp_j2u.3 b/libj2_j2u_cmp_j2u.3 new file mode 120000 index 0000000..3e9997a --- /dev/null +++ b/libj2_j2u_cmp_j2u.3 @@ -0,0 +1 @@ +libj2_j2i_cmp_j2i.3
\ No newline at end of file diff --git a/libj2_j2u_cmp_j2u.c b/libj2_j2u_cmp_j2u.c index d096c33..ab780be 100644 --- a/libj2_j2u_cmp_j2u.c +++ b/libj2_j2u_cmp_j2u.c @@ -3,7 +3,6 @@ #ifndef TEST extern inline int libj2_j2u_cmp_j2u(const struct libj2_j2u *a, const struct libj2_j2u *b); -/* TODO Add man page */ #else diff --git a/libj2_j2u_cmp_ji.3 b/libj2_j2u_cmp_ji.3 new file mode 120000 index 0000000..3e9997a --- /dev/null +++ b/libj2_j2u_cmp_ji.3 @@ -0,0 +1 @@ +libj2_j2i_cmp_j2i.3
\ No newline at end of file diff --git a/libj2_j2u_cmp_ji.c b/libj2_j2u_cmp_ji.c index e851830..c8afe64 100644 --- a/libj2_j2u_cmp_ji.c +++ b/libj2_j2u_cmp_ji.c @@ -3,7 +3,6 @@ #ifndef TEST extern inline int libj2_j2u_cmp_ji(const struct libj2_j2u *a, intmax_t b); -/* TODO Add man page */ #else diff --git a/libj2_j2u_cmp_ju.3 b/libj2_j2u_cmp_ju.3 new file mode 120000 index 0000000..3e9997a --- /dev/null +++ b/libj2_j2u_cmp_ju.3 @@ -0,0 +1 @@ +libj2_j2i_cmp_j2i.3
\ No newline at end of file diff --git a/libj2_j2u_cmp_ju.c b/libj2_j2u_cmp_ju.c index d64d5ce..5832408 100644 --- a/libj2_j2u_cmp_ju.c +++ b/libj2_j2u_cmp_ju.c @@ -3,7 +3,6 @@ #ifndef TEST extern inline int libj2_j2u_cmp_ju(const struct libj2_j2u *a, uintmax_t b); -/* TODO Add man page */ #else diff --git a/libj2_j2u_eq_j2i.3 b/libj2_j2u_eq_j2i.3 new file mode 120000 index 0000000..8b297dd --- /dev/null +++ b/libj2_j2u_eq_j2i.3 @@ -0,0 +1 @@ +libj2_j2i_eq_j2i.3
\ No newline at end of file diff --git a/libj2_j2u_eq_j2i.c b/libj2_j2u_eq_j2i.c index 95369c2..92e2106 100644 --- a/libj2_j2u_eq_j2i.c +++ b/libj2_j2u_eq_j2i.c @@ -3,7 +3,6 @@ #ifndef TEST extern inline int libj2_j2u_eq_j2i(const struct libj2_j2u *a, const struct libj2_j2i *b); -/* TODO Add man page */ #else diff --git a/libj2_j2u_eq_j2u.3 b/libj2_j2u_eq_j2u.3 new file mode 120000 index 0000000..8b297dd --- /dev/null +++ b/libj2_j2u_eq_j2u.3 @@ -0,0 +1 @@ +libj2_j2i_eq_j2i.3
\ No newline at end of file diff --git a/libj2_j2u_eq_j2u.c b/libj2_j2u_eq_j2u.c index 847f942..f527c18 100644 --- a/libj2_j2u_eq_j2u.c +++ b/libj2_j2u_eq_j2u.c @@ -3,7 +3,6 @@ #ifndef TEST extern inline int libj2_j2u_eq_j2u(const struct libj2_j2u *a, const struct libj2_j2u *b); -/* TODO Add man page */ #else diff --git a/libj2_j2u_eq_ji.3 b/libj2_j2u_eq_ji.3 new file mode 120000 index 0000000..8b297dd --- /dev/null +++ b/libj2_j2u_eq_ji.3 @@ -0,0 +1 @@ +libj2_j2i_eq_j2i.3
\ No newline at end of file diff --git a/libj2_j2u_eq_ji.c b/libj2_j2u_eq_ji.c index 4a794ee..ebb1484 100644 --- a/libj2_j2u_eq_ji.c +++ b/libj2_j2u_eq_ji.c @@ -3,7 +3,6 @@ #ifndef TEST extern inline int libj2_j2u_eq_ji(const struct libj2_j2u *a, intmax_t b); -/* TODO Add man page */ #else diff --git a/libj2_j2u_eq_ju.3 b/libj2_j2u_eq_ju.3 new file mode 120000 index 0000000..8b297dd --- /dev/null +++ b/libj2_j2u_eq_ju.3 @@ -0,0 +1 @@ +libj2_j2i_eq_j2i.3
\ No newline at end of file diff --git a/libj2_j2u_eq_ju.c b/libj2_j2u_eq_ju.c index 9012baa..e45a885 100644 --- a/libj2_j2u_eq_ju.c +++ b/libj2_j2u_eq_ju.c @@ -3,7 +3,6 @@ #ifndef TEST extern inline int libj2_j2u_eq_ju(const struct libj2_j2u *a, uintmax_t b); -/* TODO Add man page */ #else diff --git a/libj2_j2u_ge_j2i.3 b/libj2_j2u_ge_j2i.3 new file mode 120000 index 0000000..e67e404 --- /dev/null +++ b/libj2_j2u_ge_j2i.3 @@ -0,0 +1 @@ +libj2_j2i_ge_j2i.3
\ No newline at end of file diff --git a/libj2_j2u_ge_j2i.c b/libj2_j2u_ge_j2i.c index adcaee9..bb9f313 100644 --- a/libj2_j2u_ge_j2i.c +++ b/libj2_j2u_ge_j2i.c @@ -3,7 +3,6 @@ #ifndef TEST extern inline int libj2_j2u_ge_j2i(const struct libj2_j2u *a, const struct libj2_j2i *b); -/* TODO Add man page */ #else diff --git a/libj2_j2u_ge_j2u.3 b/libj2_j2u_ge_j2u.3 new file mode 120000 index 0000000..e67e404 --- /dev/null +++ b/libj2_j2u_ge_j2u.3 @@ -0,0 +1 @@ +libj2_j2i_ge_j2i.3
\ No newline at end of file diff --git a/libj2_j2u_ge_j2u.c b/libj2_j2u_ge_j2u.c index 031b7dd..534a34a 100644 --- a/libj2_j2u_ge_j2u.c +++ b/libj2_j2u_ge_j2u.c @@ -3,7 +3,6 @@ #ifndef TEST extern inline int libj2_j2u_ge_j2u(const struct libj2_j2u *a, const struct libj2_j2u *b); -/* TODO Add man page */ #else diff --git a/libj2_j2u_ge_ji.3 b/libj2_j2u_ge_ji.3 new file mode 120000 index 0000000..e67e404 --- /dev/null +++ b/libj2_j2u_ge_ji.3 @@ -0,0 +1 @@ +libj2_j2i_ge_j2i.3
\ No newline at end of file diff --git a/libj2_j2u_ge_ji.c b/libj2_j2u_ge_ji.c index aef8ee7..f463a27 100644 --- a/libj2_j2u_ge_ji.c +++ b/libj2_j2u_ge_ji.c @@ -3,7 +3,6 @@ #ifndef TEST extern inline int libj2_j2u_ge_ji(const struct libj2_j2u *a, intmax_t b); -/* TODO Add man page */ #else diff --git a/libj2_j2u_ge_ju.3 b/libj2_j2u_ge_ju.3 new file mode 120000 index 0000000..e67e404 --- /dev/null +++ b/libj2_j2u_ge_ju.3 @@ -0,0 +1 @@ +libj2_j2i_ge_j2i.3
\ No newline at end of file diff --git a/libj2_j2u_ge_ju.c b/libj2_j2u_ge_ju.c index a348fa6..8acdd04 100644 --- a/libj2_j2u_ge_ju.c +++ b/libj2_j2u_ge_ju.c @@ -3,7 +3,6 @@ #ifndef TEST extern inline int libj2_j2u_ge_ju(const struct libj2_j2u *a, uintmax_t b); -/* TODO Add man page */ #else diff --git a/libj2_j2u_gt_j2i.3 b/libj2_j2u_gt_j2i.3 new file mode 120000 index 0000000..2f99f07 --- /dev/null +++ b/libj2_j2u_gt_j2i.3 @@ -0,0 +1 @@ +libj2_j2i_gt_j2i.3
\ No newline at end of file diff --git a/libj2_j2u_gt_j2i.c b/libj2_j2u_gt_j2i.c index 757f71b..01d9b39 100644 --- a/libj2_j2u_gt_j2i.c +++ b/libj2_j2u_gt_j2i.c @@ -3,7 +3,6 @@ #ifndef TEST extern inline int libj2_j2u_gt_j2i(const struct libj2_j2u *a, const struct libj2_j2i *b); -/* TODO Add man page */ #else diff --git a/libj2_j2u_gt_j2u.3 b/libj2_j2u_gt_j2u.3 new file mode 120000 index 0000000..2f99f07 --- /dev/null +++ b/libj2_j2u_gt_j2u.3 @@ -0,0 +1 @@ +libj2_j2i_gt_j2i.3
\ No newline at end of file diff --git a/libj2_j2u_gt_j2u.c b/libj2_j2u_gt_j2u.c index bd4da14..7647b1a 100644 --- a/libj2_j2u_gt_j2u.c +++ b/libj2_j2u_gt_j2u.c @@ -3,7 +3,6 @@ #ifndef TEST extern inline int libj2_j2u_gt_j2u(const struct libj2_j2u *a, const struct libj2_j2u *b); -/* TODO Add man page */ #else diff --git a/libj2_j2u_gt_ji.3 b/libj2_j2u_gt_ji.3 new file mode 120000 index 0000000..2f99f07 --- /dev/null +++ b/libj2_j2u_gt_ji.3 @@ -0,0 +1 @@ +libj2_j2i_gt_j2i.3
\ No newline at end of file diff --git a/libj2_j2u_gt_ji.c b/libj2_j2u_gt_ji.c index a3ae3ec..62beb9b 100644 --- a/libj2_j2u_gt_ji.c +++ b/libj2_j2u_gt_ji.c @@ -3,7 +3,6 @@ #ifndef TEST extern inline int libj2_j2u_gt_ji(const struct libj2_j2u *a, intmax_t b); -/* TODO Add man page */ #else diff --git a/libj2_j2u_gt_ju.3 b/libj2_j2u_gt_ju.3 new file mode 120000 index 0000000..2f99f07 --- /dev/null +++ b/libj2_j2u_gt_ju.3 @@ -0,0 +1 @@ +libj2_j2i_gt_j2i.3
\ No newline at end of file diff --git a/libj2_j2u_gt_ju.c b/libj2_j2u_gt_ju.c index e7947d0..a750754 100644 --- a/libj2_j2u_gt_ju.c +++ b/libj2_j2u_gt_ju.c @@ -3,7 +3,6 @@ #ifndef TEST extern inline int libj2_j2u_gt_ju(const struct libj2_j2u *a, uintmax_t b); -/* TODO Add man page */ #else diff --git a/libj2_j2u_le_j2i.3 b/libj2_j2u_le_j2i.3 new file mode 120000 index 0000000..98e4335 --- /dev/null +++ b/libj2_j2u_le_j2i.3 @@ -0,0 +1 @@ +libj2_j2i_le_j2i.3
\ No newline at end of file diff --git a/libj2_j2u_le_j2i.c b/libj2_j2u_le_j2i.c index 8bfb213..bf202a5 100644 --- a/libj2_j2u_le_j2i.c +++ b/libj2_j2u_le_j2i.c @@ -3,7 +3,6 @@ #ifndef TEST extern inline int libj2_j2u_le_j2i(const struct libj2_j2u *a, const struct libj2_j2i *b); -/* TODO Add man page */ #else diff --git a/libj2_j2u_le_j2u.3 b/libj2_j2u_le_j2u.3 new file mode 120000 index 0000000..98e4335 --- /dev/null +++ b/libj2_j2u_le_j2u.3 @@ -0,0 +1 @@ +libj2_j2i_le_j2i.3
\ No newline at end of file diff --git a/libj2_j2u_le_j2u.c b/libj2_j2u_le_j2u.c index 9403271..87b3dfa 100644 --- a/libj2_j2u_le_j2u.c +++ b/libj2_j2u_le_j2u.c @@ -3,7 +3,6 @@ #ifndef TEST extern inline int libj2_j2u_le_j2u(const struct libj2_j2u *a, const struct libj2_j2u *b); -/* TODO Add man page */ #else diff --git a/libj2_j2u_le_ji.3 b/libj2_j2u_le_ji.3 new file mode 120000 index 0000000..98e4335 --- /dev/null +++ b/libj2_j2u_le_ji.3 @@ -0,0 +1 @@ +libj2_j2i_le_j2i.3
\ No newline at end of file diff --git a/libj2_j2u_le_ji.c b/libj2_j2u_le_ji.c index 96546e1..e78a2f2 100644 --- a/libj2_j2u_le_ji.c +++ b/libj2_j2u_le_ji.c @@ -3,7 +3,6 @@ #ifndef TEST extern inline int libj2_j2u_le_ji(const struct libj2_j2u *a, intmax_t b); -/* TODO Add man page */ #else diff --git a/libj2_j2u_le_ju.3 b/libj2_j2u_le_ju.3 new file mode 120000 index 0000000..98e4335 --- /dev/null +++ b/libj2_j2u_le_ju.3 @@ -0,0 +1 @@ +libj2_j2i_le_j2i.3
\ No newline at end of file diff --git a/libj2_j2u_le_ju.c b/libj2_j2u_le_ju.c index a55bfff..b614ac4 100644 --- a/libj2_j2u_le_ju.c +++ b/libj2_j2u_le_ju.c @@ -3,7 +3,6 @@ #ifndef TEST extern inline int libj2_j2u_le_ju(const struct libj2_j2u *a, uintmax_t b); -/* TODO Add man page */ #else diff --git a/libj2_j2u_lt_j2i.3 b/libj2_j2u_lt_j2i.3 new file mode 120000 index 0000000..3bfb749 --- /dev/null +++ b/libj2_j2u_lt_j2i.3 @@ -0,0 +1 @@ +libj2_j2i_lt_j2i.3
\ No newline at end of file diff --git a/libj2_j2u_lt_j2i.c b/libj2_j2u_lt_j2i.c index 0fcf201..3711e55 100644 --- a/libj2_j2u_lt_j2i.c +++ b/libj2_j2u_lt_j2i.c @@ -3,7 +3,6 @@ #ifndef TEST extern inline int libj2_j2u_lt_j2i(const struct libj2_j2u *a, const struct libj2_j2i *b); -/* TODO Add man page */ #else diff --git a/libj2_j2u_lt_j2u.3 b/libj2_j2u_lt_j2u.3 new file mode 120000 index 0000000..3bfb749 --- /dev/null +++ b/libj2_j2u_lt_j2u.3 @@ -0,0 +1 @@ +libj2_j2i_lt_j2i.3
\ No newline at end of file diff --git a/libj2_j2u_lt_j2u.c b/libj2_j2u_lt_j2u.c index 3dddb5e..4c1304b 100644 --- a/libj2_j2u_lt_j2u.c +++ b/libj2_j2u_lt_j2u.c @@ -3,7 +3,6 @@ #ifndef TEST extern inline int libj2_j2u_lt_j2u(const struct libj2_j2u *a, const struct libj2_j2u *b); -/* TODO Add man page */ #else diff --git a/libj2_j2u_lt_ji.3 b/libj2_j2u_lt_ji.3 new file mode 120000 index 0000000..3bfb749 --- /dev/null +++ b/libj2_j2u_lt_ji.3 @@ -0,0 +1 @@ +libj2_j2i_lt_j2i.3
\ No newline at end of file diff --git a/libj2_j2u_lt_ji.c b/libj2_j2u_lt_ji.c index b4b4f64..38eb435 100644 --- a/libj2_j2u_lt_ji.c +++ b/libj2_j2u_lt_ji.c @@ -3,7 +3,6 @@ #ifndef TEST extern inline int libj2_j2u_lt_ji(const struct libj2_j2u *a, intmax_t b); -/* TODO Add man page */ #else diff --git a/libj2_j2u_lt_ju.3 b/libj2_j2u_lt_ju.3 new file mode 120000 index 0000000..3bfb749 --- /dev/null +++ b/libj2_j2u_lt_ju.3 @@ -0,0 +1 @@ +libj2_j2i_lt_j2i.3
\ No newline at end of file diff --git a/libj2_j2u_lt_ju.c b/libj2_j2u_lt_ju.c index e467f58..02c5566 100644 --- a/libj2_j2u_lt_ju.c +++ b/libj2_j2u_lt_ju.c @@ -3,7 +3,6 @@ #ifndef TEST extern inline int libj2_j2u_lt_ju(const struct libj2_j2u *a, uintmax_t b); -/* TODO Add man page */ #else diff --git a/libj2_j2u_ne_j2i.3 b/libj2_j2u_ne_j2i.3 new file mode 120000 index 0000000..f9c58c2 --- /dev/null +++ b/libj2_j2u_ne_j2i.3 @@ -0,0 +1 @@ +libj2_j2i_ne_j2i.3
\ No newline at end of file diff --git a/libj2_j2u_ne_j2i.c b/libj2_j2u_ne_j2i.c index 462862e..8894e83 100644 --- a/libj2_j2u_ne_j2i.c +++ b/libj2_j2u_ne_j2i.c @@ -3,7 +3,6 @@ #ifndef TEST extern inline int libj2_j2u_ne_j2i(const struct libj2_j2u *a, const struct libj2_j2i *b); -/* TODO Add man page */ #else diff --git a/libj2_j2u_ne_j2u.3 b/libj2_j2u_ne_j2u.3 new file mode 120000 index 0000000..f9c58c2 --- /dev/null +++ b/libj2_j2u_ne_j2u.3 @@ -0,0 +1 @@ +libj2_j2i_ne_j2i.3
\ No newline at end of file diff --git a/libj2_j2u_ne_j2u.c b/libj2_j2u_ne_j2u.c index 539d481..6a6d125 100644 --- a/libj2_j2u_ne_j2u.c +++ b/libj2_j2u_ne_j2u.c @@ -3,7 +3,6 @@ #ifndef TEST extern inline int libj2_j2u_ne_j2u(const struct libj2_j2u *a, const struct libj2_j2u *b); -/* TODO Add man page */ #else diff --git a/libj2_j2u_ne_ji.3 b/libj2_j2u_ne_ji.3 new file mode 120000 index 0000000..f9c58c2 --- /dev/null +++ b/libj2_j2u_ne_ji.3 @@ -0,0 +1 @@ +libj2_j2i_ne_j2i.3
\ No newline at end of file diff --git a/libj2_j2u_ne_ji.c b/libj2_j2u_ne_ji.c index 3b56e07..09b1308 100644 --- a/libj2_j2u_ne_ji.c +++ b/libj2_j2u_ne_ji.c @@ -3,7 +3,6 @@ #ifndef TEST extern inline int libj2_j2u_ne_ji(const struct libj2_j2u *a, intmax_t b); -/* TODO Add man page */ #else diff --git a/libj2_j2u_ne_ju.3 b/libj2_j2u_ne_ju.3 new file mode 120000 index 0000000..f9c58c2 --- /dev/null +++ b/libj2_j2u_ne_ju.3 @@ -0,0 +1 @@ +libj2_j2i_ne_j2i.3
\ No newline at end of file diff --git a/libj2_j2u_ne_ju.c b/libj2_j2u_ne_ju.c index 128f3f6..30cc88f 100644 --- a/libj2_j2u_ne_ju.c +++ b/libj2_j2u_ne_ju.c @@ -3,7 +3,6 @@ #ifndef TEST extern inline int libj2_j2u_ne_ju(const struct libj2_j2u *a, uintmax_t b); -/* TODO Add man page */ #else diff --git a/libj2_ji_cmp_j2i.3 b/libj2_ji_cmp_j2i.3 new file mode 120000 index 0000000..3e9997a --- /dev/null +++ b/libj2_ji_cmp_j2i.3 @@ -0,0 +1 @@ +libj2_j2i_cmp_j2i.3
\ No newline at end of file diff --git a/libj2_ji_cmp_j2i.c b/libj2_ji_cmp_j2i.c index ff006b1..93ca067 100644 --- a/libj2_ji_cmp_j2i.c +++ b/libj2_ji_cmp_j2i.c @@ -3,7 +3,6 @@ #ifndef TEST extern inline int libj2_ji_cmp_j2i(intmax_t a, const struct libj2_j2i *b); -/* TODO Add man page */ #else diff --git a/libj2_ji_cmp_j2u.3 b/libj2_ji_cmp_j2u.3 new file mode 120000 index 0000000..3e9997a --- /dev/null +++ b/libj2_ji_cmp_j2u.3 @@ -0,0 +1 @@ +libj2_j2i_cmp_j2i.3
\ No newline at end of file diff --git a/libj2_ji_cmp_j2u.c b/libj2_ji_cmp_j2u.c index 11a8d0d..052c6c1 100644 --- a/libj2_ji_cmp_j2u.c +++ b/libj2_ji_cmp_j2u.c @@ -3,7 +3,6 @@ #ifndef TEST extern inline int libj2_ji_cmp_j2u(intmax_t a, const struct libj2_j2u *b); -/* TODO Add man page */ #else diff --git a/libj2_ji_eq_j2i.3 b/libj2_ji_eq_j2i.3 new file mode 120000 index 0000000..8b297dd --- /dev/null +++ b/libj2_ji_eq_j2i.3 @@ -0,0 +1 @@ +libj2_j2i_eq_j2i.3
\ No newline at end of file diff --git a/libj2_ji_eq_j2i.c b/libj2_ji_eq_j2i.c index 4c7d0b1..e5f270f 100644 --- a/libj2_ji_eq_j2i.c +++ b/libj2_ji_eq_j2i.c @@ -3,7 +3,6 @@ #ifndef TEST extern inline int libj2_ji_eq_j2i(intmax_t a, const struct libj2_j2i *b); -/* TODO Add man page */ #else diff --git a/libj2_ji_eq_j2u.3 b/libj2_ji_eq_j2u.3 new file mode 120000 index 0000000..8b297dd --- /dev/null +++ b/libj2_ji_eq_j2u.3 @@ -0,0 +1 @@ +libj2_j2i_eq_j2i.3
\ No newline at end of file diff --git a/libj2_ji_eq_j2u.c b/libj2_ji_eq_j2u.c index e38bed3..ebc4598 100644 --- a/libj2_ji_eq_j2u.c +++ b/libj2_ji_eq_j2u.c @@ -3,7 +3,6 @@ #ifndef TEST extern inline int libj2_ji_eq_j2u(intmax_t a, const struct libj2_j2u *b); -/* TODO Add man page */ #else diff --git a/libj2_ji_ge_j2i.3 b/libj2_ji_ge_j2i.3 new file mode 120000 index 0000000..e67e404 --- /dev/null +++ b/libj2_ji_ge_j2i.3 @@ -0,0 +1 @@ +libj2_j2i_ge_j2i.3
\ No newline at end of file diff --git a/libj2_ji_ge_j2i.c b/libj2_ji_ge_j2i.c index b2d2104..c3797bd 100644 --- a/libj2_ji_ge_j2i.c +++ b/libj2_ji_ge_j2i.c @@ -3,7 +3,6 @@ #ifndef TEST extern inline int libj2_ji_ge_j2i(intmax_t a, const struct libj2_j2i *b); -/* TODO Add man page */ #else diff --git a/libj2_ji_ge_j2u.3 b/libj2_ji_ge_j2u.3 new file mode 120000 index 0000000..e67e404 --- /dev/null +++ b/libj2_ji_ge_j2u.3 @@ -0,0 +1 @@ +libj2_j2i_ge_j2i.3
\ No newline at end of file diff --git a/libj2_ji_ge_j2u.c b/libj2_ji_ge_j2u.c index e4d38c5..4a8399b 100644 --- a/libj2_ji_ge_j2u.c +++ b/libj2_ji_ge_j2u.c @@ -3,7 +3,6 @@ #ifndef TEST extern inline int libj2_ji_ge_j2u(intmax_t a, const struct libj2_j2u *b); -/* TODO Add man page */ #else diff --git a/libj2_ji_gt_j2i.3 b/libj2_ji_gt_j2i.3 new file mode 120000 index 0000000..2f99f07 --- /dev/null +++ b/libj2_ji_gt_j2i.3 @@ -0,0 +1 @@ +libj2_j2i_gt_j2i.3
\ No newline at end of file diff --git a/libj2_ji_gt_j2i.c b/libj2_ji_gt_j2i.c index 2b982ca..19ec236 100644 --- a/libj2_ji_gt_j2i.c +++ b/libj2_ji_gt_j2i.c @@ -3,7 +3,6 @@ #ifndef TEST extern inline int libj2_ji_gt_j2i(intmax_t a, const struct libj2_j2i *b); -/* TODO Add man page */ #else diff --git a/libj2_ji_gt_j2u.3 b/libj2_ji_gt_j2u.3 new file mode 120000 index 0000000..2f99f07 --- /dev/null +++ b/libj2_ji_gt_j2u.3 @@ -0,0 +1 @@ +libj2_j2i_gt_j2i.3
\ No newline at end of file diff --git a/libj2_ji_gt_j2u.c b/libj2_ji_gt_j2u.c index 6ed0474..b5c572a 100644 --- a/libj2_ji_gt_j2u.c +++ b/libj2_ji_gt_j2u.c @@ -3,7 +3,6 @@ #ifndef TEST extern inline int libj2_ji_gt_j2u(intmax_t a, const struct libj2_j2u *b); -/* TODO Add man page */ #else diff --git a/libj2_ji_le_j2i.3 b/libj2_ji_le_j2i.3 new file mode 120000 index 0000000..98e4335 --- /dev/null +++ b/libj2_ji_le_j2i.3 @@ -0,0 +1 @@ +libj2_j2i_le_j2i.3
\ No newline at end of file diff --git a/libj2_ji_le_j2i.c b/libj2_ji_le_j2i.c index 653b6f8..43efec0 100644 --- a/libj2_ji_le_j2i.c +++ b/libj2_ji_le_j2i.c @@ -3,7 +3,6 @@ #ifndef TEST extern inline int libj2_ji_le_j2i(intmax_t a, const struct libj2_j2i *b); -/* TODO Add man page */ #else diff --git a/libj2_ji_le_j2u.3 b/libj2_ji_le_j2u.3 new file mode 120000 index 0000000..98e4335 --- /dev/null +++ b/libj2_ji_le_j2u.3 @@ -0,0 +1 @@ +libj2_j2i_le_j2i.3
\ No newline at end of file diff --git a/libj2_ji_le_j2u.c b/libj2_ji_le_j2u.c index f765f80..c0d5ec1 100644 --- a/libj2_ji_le_j2u.c +++ b/libj2_ji_le_j2u.c @@ -3,7 +3,6 @@ #ifndef TEST extern inline int libj2_ji_le_j2u(intmax_t a, const struct libj2_j2u *b); -/* TODO Add man page */ #else diff --git a/libj2_ji_lt_j2i.3 b/libj2_ji_lt_j2i.3 new file mode 120000 index 0000000..3bfb749 --- /dev/null +++ b/libj2_ji_lt_j2i.3 @@ -0,0 +1 @@ +libj2_j2i_lt_j2i.3
\ No newline at end of file diff --git a/libj2_ji_lt_j2i.c b/libj2_ji_lt_j2i.c index 2a4397b..4709d8e 100644 --- a/libj2_ji_lt_j2i.c +++ b/libj2_ji_lt_j2i.c @@ -3,7 +3,6 @@ #ifndef TEST extern inline int libj2_ji_lt_j2i(intmax_t a, const struct libj2_j2i *b); -/* TODO Add man page */ #else diff --git a/libj2_ji_lt_j2u.3 b/libj2_ji_lt_j2u.3 new file mode 120000 index 0000000..3bfb749 --- /dev/null +++ b/libj2_ji_lt_j2u.3 @@ -0,0 +1 @@ +libj2_j2i_lt_j2i.3
\ No newline at end of file diff --git a/libj2_ji_lt_j2u.c b/libj2_ji_lt_j2u.c index 0a6096d..f874bf5 100644 --- a/libj2_ji_lt_j2u.c +++ b/libj2_ji_lt_j2u.c @@ -3,7 +3,6 @@ #ifndef TEST extern inline int libj2_ji_lt_j2u(intmax_t a, const struct libj2_j2u *b); -/* TODO Add man page */ #else diff --git a/libj2_ji_ne_j2i.3 b/libj2_ji_ne_j2i.3 new file mode 120000 index 0000000..f9c58c2 --- /dev/null +++ b/libj2_ji_ne_j2i.3 @@ -0,0 +1 @@ +libj2_j2i_ne_j2i.3
\ No newline at end of file diff --git a/libj2_ji_ne_j2i.c b/libj2_ji_ne_j2i.c index 88087a4..fccd668 100644 --- a/libj2_ji_ne_j2i.c +++ b/libj2_ji_ne_j2i.c @@ -3,7 +3,6 @@ #ifndef TEST extern inline int libj2_ji_ne_j2i(intmax_t a, const struct libj2_j2i *b); -/* TODO Add man page */ #else diff --git a/libj2_ji_ne_j2u.3 b/libj2_ji_ne_j2u.3 new file mode 120000 index 0000000..f9c58c2 --- /dev/null +++ b/libj2_ji_ne_j2u.3 @@ -0,0 +1 @@ +libj2_j2i_ne_j2i.3
\ No newline at end of file diff --git a/libj2_ji_ne_j2u.c b/libj2_ji_ne_j2u.c index 4591c92..6391e7d 100644 --- a/libj2_ji_ne_j2u.c +++ b/libj2_ji_ne_j2u.c @@ -3,7 +3,6 @@ #ifndef TEST extern inline int libj2_ji_ne_j2u(intmax_t a, const struct libj2_j2u *b); -/* TODO Add man page */ #else diff --git a/libj2_ju_cmp_j2i.3 b/libj2_ju_cmp_j2i.3 new file mode 120000 index 0000000..3e9997a --- /dev/null +++ b/libj2_ju_cmp_j2i.3 @@ -0,0 +1 @@ +libj2_j2i_cmp_j2i.3
\ No newline at end of file diff --git a/libj2_ju_cmp_j2i.c b/libj2_ju_cmp_j2i.c index 4ffbadf..93ba66d 100644 --- a/libj2_ju_cmp_j2i.c +++ b/libj2_ju_cmp_j2i.c @@ -3,7 +3,6 @@ #ifndef TEST extern inline int libj2_ju_cmp_j2i(uintmax_t a, const struct libj2_j2i *b); -/* TODO Add man page */ #else diff --git a/libj2_ju_cmp_j2u.3 b/libj2_ju_cmp_j2u.3 new file mode 120000 index 0000000..3e9997a --- /dev/null +++ b/libj2_ju_cmp_j2u.3 @@ -0,0 +1 @@ +libj2_j2i_cmp_j2i.3
\ No newline at end of file diff --git a/libj2_ju_cmp_j2u.c b/libj2_ju_cmp_j2u.c index e97d9be..57f1be0 100644 --- a/libj2_ju_cmp_j2u.c +++ b/libj2_ju_cmp_j2u.c @@ -3,7 +3,6 @@ #ifndef TEST extern inline int libj2_ju_cmp_j2u(uintmax_t a, const struct libj2_j2u *b); -/* TODO Add man page */ #else diff --git a/libj2_ju_eq_j2i.3 b/libj2_ju_eq_j2i.3 new file mode 120000 index 0000000..8b297dd --- /dev/null +++ b/libj2_ju_eq_j2i.3 @@ -0,0 +1 @@ +libj2_j2i_eq_j2i.3
\ No newline at end of file diff --git a/libj2_ju_eq_j2i.c b/libj2_ju_eq_j2i.c index 4adfc55..bcdbf61 100644 --- a/libj2_ju_eq_j2i.c +++ b/libj2_ju_eq_j2i.c @@ -3,7 +3,6 @@ #ifndef TEST extern inline int libj2_ju_eq_j2i(uintmax_t a, const struct libj2_j2i *b); -/* TODO Add man page */ #else diff --git a/libj2_ju_eq_j2u.3 b/libj2_ju_eq_j2u.3 new file mode 120000 index 0000000..8b297dd --- /dev/null +++ b/libj2_ju_eq_j2u.3 @@ -0,0 +1 @@ +libj2_j2i_eq_j2i.3
\ No newline at end of file diff --git a/libj2_ju_eq_j2u.c b/libj2_ju_eq_j2u.c index c13e1b0..aa4e9f9 100644 --- a/libj2_ju_eq_j2u.c +++ b/libj2_ju_eq_j2u.c @@ -3,7 +3,6 @@ #ifndef TEST extern inline int libj2_ju_eq_j2u(uintmax_t a, const struct libj2_j2u *b); -/* TODO Add man page */ #else diff --git a/libj2_ju_ge_j2i.3 b/libj2_ju_ge_j2i.3 new file mode 120000 index 0000000..e67e404 --- /dev/null +++ b/libj2_ju_ge_j2i.3 @@ -0,0 +1 @@ +libj2_j2i_ge_j2i.3
\ No newline at end of file diff --git a/libj2_ju_ge_j2i.c b/libj2_ju_ge_j2i.c index 25e2d95..c14eb3a 100644 --- a/libj2_ju_ge_j2i.c +++ b/libj2_ju_ge_j2i.c @@ -3,7 +3,6 @@ #ifndef TEST extern inline int libj2_ju_ge_j2i(uintmax_t a, const struct libj2_j2i *b); -/* TODO Add man page */ #else diff --git a/libj2_ju_ge_j2u.3 b/libj2_ju_ge_j2u.3 new file mode 120000 index 0000000..e67e404 --- /dev/null +++ b/libj2_ju_ge_j2u.3 @@ -0,0 +1 @@ +libj2_j2i_ge_j2i.3
\ No newline at end of file diff --git a/libj2_ju_ge_j2u.c b/libj2_ju_ge_j2u.c index 0787166..7e82611 100644 --- a/libj2_ju_ge_j2u.c +++ b/libj2_ju_ge_j2u.c @@ -3,7 +3,6 @@ #ifndef TEST extern inline int libj2_ju_ge_j2u(uintmax_t a, const struct libj2_j2u *b); -/* TODO Add man page */ #else diff --git a/libj2_ju_gt_j2i.3 b/libj2_ju_gt_j2i.3 new file mode 120000 index 0000000..2f99f07 --- /dev/null +++ b/libj2_ju_gt_j2i.3 @@ -0,0 +1 @@ +libj2_j2i_gt_j2i.3
\ No newline at end of file diff --git a/libj2_ju_gt_j2i.c b/libj2_ju_gt_j2i.c index a649307..17f0e2b 100644 --- a/libj2_ju_gt_j2i.c +++ b/libj2_ju_gt_j2i.c @@ -3,7 +3,6 @@ #ifndef TEST extern inline int libj2_ju_gt_j2i(uintmax_t a, const struct libj2_j2i *b); -/* TODO Add man page */ #else diff --git a/libj2_ju_gt_j2u.3 b/libj2_ju_gt_j2u.3 new file mode 120000 index 0000000..2f99f07 --- /dev/null +++ b/libj2_ju_gt_j2u.3 @@ -0,0 +1 @@ +libj2_j2i_gt_j2i.3
\ No newline at end of file diff --git a/libj2_ju_gt_j2u.c b/libj2_ju_gt_j2u.c index a7a4a2d..c152053 100644 --- a/libj2_ju_gt_j2u.c +++ b/libj2_ju_gt_j2u.c @@ -3,7 +3,6 @@ #ifndef TEST extern inline int libj2_ju_gt_j2u(uintmax_t a, const struct libj2_j2u *b); -/* TODO Add man page */ #else diff --git a/libj2_ju_le_j2i.3 b/libj2_ju_le_j2i.3 new file mode 120000 index 0000000..98e4335 --- /dev/null +++ b/libj2_ju_le_j2i.3 @@ -0,0 +1 @@ +libj2_j2i_le_j2i.3
\ No newline at end of file diff --git a/libj2_ju_le_j2i.c b/libj2_ju_le_j2i.c index 57665ae..55300c9 100644 --- a/libj2_ju_le_j2i.c +++ b/libj2_ju_le_j2i.c @@ -3,7 +3,6 @@ #ifndef TEST extern inline int libj2_ju_le_j2i(uintmax_t a, const struct libj2_j2i *b); -/* TODO Add man page */ #else diff --git a/libj2_ju_le_j2u.3 b/libj2_ju_le_j2u.3 new file mode 120000 index 0000000..98e4335 --- /dev/null +++ b/libj2_ju_le_j2u.3 @@ -0,0 +1 @@ +libj2_j2i_le_j2i.3
\ No newline at end of file diff --git a/libj2_ju_le_j2u.c b/libj2_ju_le_j2u.c index 0e428c2..ceaee9e 100644 --- a/libj2_ju_le_j2u.c +++ b/libj2_ju_le_j2u.c @@ -3,7 +3,6 @@ #ifndef TEST extern inline int libj2_ju_le_j2u(uintmax_t a, const struct libj2_j2u *b); -/* TODO Add man page */ #else diff --git a/libj2_ju_lt_j2i.3 b/libj2_ju_lt_j2i.3 new file mode 120000 index 0000000..3bfb749 --- /dev/null +++ b/libj2_ju_lt_j2i.3 @@ -0,0 +1 @@ +libj2_j2i_lt_j2i.3
\ No newline at end of file diff --git a/libj2_ju_lt_j2i.c b/libj2_ju_lt_j2i.c index fed9aa2..b23ce6b 100644 --- a/libj2_ju_lt_j2i.c +++ b/libj2_ju_lt_j2i.c @@ -3,7 +3,6 @@ #ifndef TEST extern inline int libj2_ju_lt_j2i(uintmax_t a, const struct libj2_j2i *b); -/* TODO Add man page */ #else diff --git a/libj2_ju_lt_j2u.3 b/libj2_ju_lt_j2u.3 new file mode 120000 index 0000000..3bfb749 --- /dev/null +++ b/libj2_ju_lt_j2u.3 @@ -0,0 +1 @@ +libj2_j2i_lt_j2i.3
\ No newline at end of file diff --git a/libj2_ju_lt_j2u.c b/libj2_ju_lt_j2u.c index b9d88e2..5c53c66 100644 --- a/libj2_ju_lt_j2u.c +++ b/libj2_ju_lt_j2u.c @@ -3,7 +3,6 @@ #ifndef TEST extern inline int libj2_ju_lt_j2u(uintmax_t a, const struct libj2_j2u *b); -/* TODO Add man page */ #else diff --git a/libj2_ju_ne_j2i.3 b/libj2_ju_ne_j2i.3 new file mode 120000 index 0000000..f9c58c2 --- /dev/null +++ b/libj2_ju_ne_j2i.3 @@ -0,0 +1 @@ +libj2_j2i_ne_j2i.3
\ No newline at end of file diff --git a/libj2_ju_ne_j2i.c b/libj2_ju_ne_j2i.c index 8cb6962..80a512e 100644 --- a/libj2_ju_ne_j2i.c +++ b/libj2_ju_ne_j2i.c @@ -3,7 +3,6 @@ #ifndef TEST extern inline int libj2_ju_ne_j2i(uintmax_t a, const struct libj2_j2i *b); -/* TODO Add man page */ #else diff --git a/libj2_ju_ne_j2u.3 b/libj2_ju_ne_j2u.3 new file mode 120000 index 0000000..f9c58c2 --- /dev/null +++ b/libj2_ju_ne_j2u.3 @@ -0,0 +1 @@ +libj2_j2i_ne_j2i.3
\ No newline at end of file diff --git a/libj2_ju_ne_j2u.c b/libj2_ju_ne_j2u.c index 556d553..d7e1644 100644 --- a/libj2_ju_ne_j2u.c +++ b/libj2_ju_ne_j2u.c @@ -3,7 +3,6 @@ #ifndef TEST extern inline int libj2_ju_ne_j2u(uintmax_t a, const struct libj2_j2u *b); -/* TODO Add man page */ #else diff --git a/libj2_kfs_j2u.3 b/libj2_kfs_j2u.3 new file mode 100644 index 0000000..de3841a --- /dev/null +++ b/libj2_kfs_j2u.3 @@ -0,0 +1,52 @@ +.TH LIBJ2_KFS_J2U 3 LIBJ2 +.SH NAME +libj2_kfs_j2u \- Keep first set bit, clear the rest + +.SH SYNOPSIS +.nf +#include <libj2.h> + +void \fBlibj2_kfs_j2u\fP(struct libj2_j2u *\fIa\fP); +void \fBlibj2_kfs_j2u_to_j2u\fP(const struct libj2_j2u *\fIa\fP, struct libj2_j2u *\fIr\fP); +.fi +.PP +Link with +.IR -lj2 . + +.SH DESCRIPTION +The +.BR libj2_kfs_j2u () +function clears all bits in +.I a +except the first (least significant) +set bit (no modification if all bits +are cleared). +.PP +The +.BR libj2_kfs_j2u_to_j2u () +function performs the same action as +.BR libj2_kfs_j2u () +but instead of modifying +.IR a , +the result is stored in +.IR r . +.PP +The arguments are assumed to be +.RI non- NULL . + +.SH RETURN VALUE +None. + +.SH ERRORS +The +.BR libj2_kfs_j2u () +and +.BR libj2_kfs_j2u_to_j2u () +functions cannot fail. + +.SH SEE ALSO +.BR libj2 (7), +.BR libj2_kls_j2u (3), +.BR libj2_ffs_j2u (3), +.BR libj2_cfs_j2u (3), +.BR libj2_sfc_j2u (3) diff --git a/libj2_kfs_j2u.c b/libj2_kfs_j2u.c index af07619..7ed355a 100644 --- a/libj2_kfs_j2u.c +++ b/libj2_kfs_j2u.c @@ -3,7 +3,6 @@ #ifndef TEST extern inline void libj2_kfs_j2u(struct libj2_j2u *a); -/* TODO Add man page */ #else diff --git a/libj2_kfs_j2u_to_j2u.3 b/libj2_kfs_j2u_to_j2u.3 new file mode 120000 index 0000000..e202a7c --- /dev/null +++ b/libj2_kfs_j2u_to_j2u.3 @@ -0,0 +1 @@ +libj2_kfs_j2u.3
\ No newline at end of file diff --git a/libj2_kfs_j2u_to_j2u.c b/libj2_kfs_j2u_to_j2u.c index afc09fe..5b0ce92 100644 --- a/libj2_kfs_j2u_to_j2u.c +++ b/libj2_kfs_j2u_to_j2u.c @@ -3,7 +3,6 @@ #ifndef TEST extern inline void libj2_kfs_j2u_to_j2u(const struct libj2_j2u *a, struct libj2_j2u *res); -/* TODO Add man page */ #else diff --git a/libj2_kls_j2u.3 b/libj2_kls_j2u.3 new file mode 100644 index 0000000..c327102 --- /dev/null +++ b/libj2_kls_j2u.3 @@ -0,0 +1,52 @@ +.TH LIBJ2_KLS_J2U 3 LIBJ2 +.SH NAME +libj2_kls_j2u \- Keep last set bit, clear the rest + +.SH SYNOPSIS +.nf +#include <libj2.h> + +void \fBlibj2_kls_j2u\fP(struct libj2_j2u *\fIa\fP); +void \fBlibj2_kls_j2u_to_j2u\fP(const struct libj2_j2u *\fIa\fP, struct libj2_j2u *\fIr\fP); +.fi +.PP +Link with +.IR -lj2 . + +.SH DESCRIPTION +The +.BR libj2_kls_j2u () +function clears all bits in +.I a +except the last (most significant) +set bit (no modification if all bits +are cleared). +.PP +The +.BR libj2_kls_j2u_to_j2u () +function performs the same action as +.BR libj2_kls_j2u () +but instead of modifying +.IR a , +the result is stored in +.IR r . +.PP +The arguments are assumed to be +.RI non- NULL . + +.SH RETURN VALUE +None. + +.SH ERRORS +The +.BR libj2_kls_j2u () +and +.BR libj2_kls_j2u_to_j2u () +functions cannot fail. + +.SH SEE ALSO +.BR libj2 (7), +.BR libj2_kfs_j2u (3), +.BR libj2_fls_j2u (3), +.BR libj2_cls_j2u (3), +.BR libj2_slc_j2u (3) diff --git a/libj2_kls_j2u.c b/libj2_kls_j2u.c index 1c52f36..ee1b6c3 100644 --- a/libj2_kls_j2u.c +++ b/libj2_kls_j2u.c @@ -3,7 +3,6 @@ #ifndef TEST extern inline void libj2_kls_j2u(struct libj2_j2u *a); -/* TODO Add man page */ #else diff --git a/libj2_kls_j2u_to_j2u.3 b/libj2_kls_j2u_to_j2u.3 new file mode 120000 index 0000000..bf6f801 --- /dev/null +++ b/libj2_kls_j2u_to_j2u.3 @@ -0,0 +1 @@ +libj2_kls_j2u.3
\ No newline at end of file diff --git a/libj2_kls_j2u_to_j2u.c b/libj2_kls_j2u_to_j2u.c index 4b13153..5251d21 100644 --- a/libj2_kls_j2u_to_j2u.c +++ b/libj2_kls_j2u_to_j2u.c @@ -3,7 +3,6 @@ #ifndef TEST extern inline void libj2_kls_j2u_to_j2u(const struct libj2_j2u *a, struct libj2_j2u *res); -/* TODO Add man page */ #else diff --git a/libj2_parity_j2u.3 b/libj2_parity_j2u.3 new file mode 100644 index 0000000..067c0cf --- /dev/null +++ b/libj2_parity_j2u.3 @@ -0,0 +1,42 @@ +.TH LIBJ2_PARITY_J2U 3 LIBJ2 +.SH NAME +libj2_parity_j2u \- Calculate bit parity + +.SH SYNOPSIS +.nf +#include <libj2.h> + +unsigned \fBlibj2_parity_j2u\fP(const struct libj2_j2u *\fIa\fP); +.fi +.PP +Link with +.IR -lj2 . + +.SH DESCRIPTION +The +.BR libj2_parity_j2u () +function returns the parity of the bits in +.IR a . +.PP +.I a +is assumed to be +.RI non- NULL . + +.SH RETURN VALUE +The +.BR libj2_parity_j2u () +function returns the 1 if the number of +set bits (or equivalently the cleared bits) +in +.I a +is odd, and 0 otherwise. + +.SH ERRORS +The +.BR libj2_parity_j2u () +function cannot fail. + +.SH SEE ALSO +.BR libj2 (7), +.BR libj2_co_j2u (3), +.BR libj2_cz_j2u (3) diff --git a/libj2_parity_j2u.c b/libj2_parity_j2u.c index 5adafc6..fda18ad 100644 --- a/libj2_parity_j2u.c +++ b/libj2_parity_j2u.c @@ -3,7 +3,6 @@ #ifndef TEST extern inline unsigned libj2_parity_j2u(const struct libj2_j2u *a); -/* TODO Add man page */ #else diff --git a/libj2_sfc_j2u.3 b/libj2_sfc_j2u.3 new file mode 100644 index 0000000..ec993c8 --- /dev/null +++ b/libj2_sfc_j2u.3 @@ -0,0 +1,51 @@ +.TH LIBJ2_SFC_J2U 3 LIBJ2 +.SH NAME +libj2_sfc_j2u \- Set first cleared bit + +.SH SYNOPSIS +.nf +#include <libj2.h> + +void \fBlibj2_sfc_j2u\fP(struct libj2_j2u *\fIa\fP); +void \fBlibj2_sfc_j2u_to_j2u\fP(const struct libj2_j2u *\fIa\fP, struct libj2_j2u *\fIr\fP); +.fi +.PP +Link with +.IR -lj2 . + +.SH DESCRIPTION +The +.BR libj2_sfc_j2u () +function sets the first (least significant) +cleared bit in +.I a +(no modification if all bits are set). +.PP +The +.BR libj2_sfc_j2u_to_j2u () +function performs the same action as +.BR libj2_sfc_j2u () +but instead of modifying +.IR a , +the result is stored in +.IR r . +.PP +The arguments are assumed to be +.RI non- NULL . + +.SH RETURN VALUE +None. + +.SH ERRORS +The +.BR libj2_sfc_j2u () +and +.BR libj2_sfc_j2u_to_j2u () +functions cannot fail. + +.SH SEE ALSO +.BR libj2 (7), +.BR libj2_slc_j2u (3), +.BR libj2_ffc_j2u (3), +.BR libj2_kfs_j2u (3), +.BR libj2_cfs_j2u (3) diff --git a/libj2_sfc_j2u.c b/libj2_sfc_j2u.c index 1b91a7e..9bc09ea 100644 --- a/libj2_sfc_j2u.c +++ b/libj2_sfc_j2u.c @@ -3,7 +3,6 @@ #ifndef TEST extern inline void libj2_sfc_j2u(struct libj2_j2u *a); -/* TODO Add man page */ #else diff --git a/libj2_sfc_j2u_to_j2u.3 b/libj2_sfc_j2u_to_j2u.3 new file mode 120000 index 0000000..8824875 --- /dev/null +++ b/libj2_sfc_j2u_to_j2u.3 @@ -0,0 +1 @@ +libj2_sfc_j2u.3
\ No newline at end of file diff --git a/libj2_sfc_j2u_to_j2u.c b/libj2_sfc_j2u_to_j2u.c index a1a9e17..b2d6f72 100644 --- a/libj2_sfc_j2u_to_j2u.c +++ b/libj2_sfc_j2u_to_j2u.c @@ -3,7 +3,6 @@ #ifndef TEST extern inline void libj2_sfc_j2u_to_j2u(const struct libj2_j2u *a, struct libj2_j2u *res); -/* TODO Add man page */ #else diff --git a/libj2_slc_j2u.3 b/libj2_slc_j2u.3 new file mode 100644 index 0000000..d65b13a --- /dev/null +++ b/libj2_slc_j2u.3 @@ -0,0 +1,51 @@ +.TH LIBJ2_SLC_J2U 3 LIBJ2 +.SH NAME +libj2_slc_j2u \- Set last cleared bit + +.SH SYNOPSIS +.nf +#include <libj2.h> + +void \fBlibj2_slc_j2u\fP(struct libj2_j2u *\fIa\fP); +void \fBlibj2_slc_j2u_to_j2u\fP(const struct libj2_j2u *\fIa\fP, struct libj2_j2u *\fIr\fP); +.fi +.PP +Link with +.IR -lj2 . + +.SH DESCRIPTION +The +.BR libj2_slc_j2u () +function sets the last (most significant) +cleared bit in +.I a +(no modification if all bits are set). +.PP +The +.BR libj2_slc_j2u_to_j2u () +function performs the same action as +.BR libj2_slc_j2u () +but instead of modifying +.IR a , +the result is stored in +.IR r . +.PP +The arguments are assumed to be +.RI non- NULL . + +.SH RETURN VALUE +None. + +.SH ERRORS +The +.BR libj2_slc_j2u () +and +.BR libj2_slc_j2u_to_j2u () +functions cannot fail. + +.SH SEE ALSO +.BR libj2 (7), +.BR libj2_sfc_j2u (3), +.BR libj2_flc_j2u (3), +.BR libj2_kls_j2u (3), +.BR libj2_cls_j2u (3) diff --git a/libj2_slc_j2u.c b/libj2_slc_j2u.c index 500f633..7f65df4 100644 --- a/libj2_slc_j2u.c +++ b/libj2_slc_j2u.c @@ -3,7 +3,6 @@ #ifndef TEST extern inline void libj2_slc_j2u(struct libj2_j2u *a); -/* TODO Add man page */ #else diff --git a/libj2_slc_j2u_to_j2u.3 b/libj2_slc_j2u_to_j2u.3 new file mode 120000 index 0000000..96f60b0 --- /dev/null +++ b/libj2_slc_j2u_to_j2u.3 @@ -0,0 +1 @@ +libj2_slc_j2u.3
\ No newline at end of file diff --git a/libj2_slc_j2u_to_j2u.c b/libj2_slc_j2u_to_j2u.c index 874be05..933843e 100644 --- a/libj2_slc_j2u_to_j2u.c +++ b/libj2_slc_j2u_to_j2u.c @@ -3,7 +3,6 @@ #ifndef TEST extern inline void libj2_slc_j2u_to_j2u(const struct libj2_j2u *a, struct libj2_j2u *res); -/* TODO Add man page */ #else |
