aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--libsimple/abs.h48
-rw-r--r--libsimple/ascii.h69
-rw-r--r--libsimple/exec.h22
-rw-r--r--libsimple/net.h2
-rw-r--r--libsimple/path.h42
-rw-r--r--libsimple/printf.h8
-rw-r--r--libsimple/random.h6
-rw-r--r--libsimple/sort.h576
8 files changed, 757 insertions, 16 deletions
diff --git a/libsimple/abs.h b/libsimple/abs.h
index c1a9123..86ec95f 100644
--- a/libsimple/abs.h
+++ b/libsimple/abs.h
@@ -41,150 +41,198 @@
#define LIBSIMPLE_SIGN_(UTYPE, STYPE, VALUE) ((VALUE) >> (sizeof(UTYPE) * CHAR_BIT - 1) ? (STYPE)(VALUE) : -(STYPE)-(VALUE))
+/* @since 1.6 */
inline unsigned char libsimple_hhdiff(signed char max, signed char min)
{ return LIBSIMPLE_DIFF_(unsigned char, max, min); }
+/* @since 1.6 */
inline unsigned short int libsimple_hdiff(short int max, short int min)
{ return LIBSIMPLE_DIFF_(unsigned short int, max, min); }
+/* @since 1.6 */
inline unsigned int libsimple_diff(int max, int min)
{ return LIBSIMPLE_DIFF_(unsigned int, max, min); }
+/* @since 1.6 */
inline unsigned long int libsimple_ldiff(long int max, long int min)
{ return LIBSIMPLE_DIFF_(unsigned long int, max, min); }
+/* @since 1.6 */
inline unsigned long long int libsimple_lldiff(long long int max, long long int min)
{ return LIBSIMPLE_DIFF_(unsigned long long int, max, min); }
+/* @since 1.6 */
inline size_t libsimple_zdiff(ssize_t max, ssize_t min)
{ return LIBSIMPLE_DIFF_(size_t, max, min); }
+/* @since 1.6 */
inline uint_least8_t libsimple_i8diff(int_least8_t max, int_least8_t min)
{ return LIBSIMPLE_DIFF_(uint_least8_t, max, min); }
+/* @since 1.6 */
inline uint_least16_t libsimple_i16diff(int_least16_t max, int_least16_t min)
{ return LIBSIMPLE_DIFF_(uint_least16_t, max, min); }
+/* @since 1.6 */
inline uint_least32_t libsimple_i32diff(int_least32_t max, int_least32_t min)
{ return LIBSIMPLE_DIFF_(uint_least32_t, max, min); }
+/* @since 1.6 */
inline uint_least64_t libsimple_i64diff(int_least64_t max, int_least64_t min)
{ return LIBSIMPLE_DIFF_(uint_least64_t, max, min); }
+/* @since 1.6 */
inline uintmax_t libsimple_imaxdiff(intmax_t max, intmax_t min)
{ return LIBSIMPLE_DIFF_(uintmax_t, max, min); }
+/* @since 1.6 */
inline uintptr_t libsimple_iptrdiff(intptr_t max, intptr_t min)
{ return LIBSIMPLE_DIFF_(uintptr_t, max, min); }
+/* @since 1.6 */
inline unsigned char libsimple_hhabs(signed char a, signed char b)
{ return LIBSIMPLE_IABS_(unsigned char, a, b); }
+/* @since 1.6 */
inline unsigned short int libsimple_habs(short int a, short int b)
{ return LIBSIMPLE_IABS_(unsigned short int, a, b); }
+/* @since 1.6 */
inline unsigned int libsimple_abs(int a, int b)
{ return LIBSIMPLE_IABS_(unsigned int, a, b); }
+/* @since 1.6 */
inline unsigned long int libsimple_labs(long int a, long int b)
{ return LIBSIMPLE_IABS_(unsigned long int, a, b); }
+/* @since 1.6 */
inline unsigned long long int libsimple_llabs(long long int a, long long int b)
{ return LIBSIMPLE_IABS_(unsigned long long int, a, b); }
+/* @since 1.6 */
inline size_t libsimple_zabs(ssize_t a, ssize_t b)
{ return LIBSIMPLE_IABS_(size_t, a, b); }
+/* @since 1.6 */
inline uint_least8_t libsimple_i8abs(int_least8_t a, int_least8_t b)
{ return LIBSIMPLE_IABS_(uint_least8_t, a, b); }
+/* @since 1.6 */
inline uint_least16_t libsimple_i16abs(int_least16_t a, int_least16_t b)
{ return LIBSIMPLE_IABS_(uint_least16_t, a, b); }
+/* @since 1.6 */
inline uint_least32_t libsimple_i32abs(int_least32_t a, int_least32_t b)
{ return LIBSIMPLE_IABS_(uint_least32_t, a, b); }
+/* @since 1.6 */
inline uint_least64_t libsimple_i64abs(int_least64_t a, int_least64_t b)
{ return LIBSIMPLE_IABS_(uint_least64_t, a, b); }
+/* @since 1.6 */
inline uintmax_t libsimple_imaxabs(intmax_t a, intmax_t b)
{ return LIBSIMPLE_IABS_(uintmax_t, a, b); }
+/* @since 1.6 */
inline uintptr_t libsimple_iptrabs(intptr_t a, intptr_t b)
{ return LIBSIMPLE_IABS_(uintptr_t, a, b); }
+/* @since 1.6 */
inline unsigned char libsimple_uhhabs(unsigned char a, unsigned char b)
{ return LIBSIMPLE_UABS_(unsigned char, a, b); }
+/* @since 1.6 */
inline unsigned short int libsimple_uhabs(unsigned short int a, unsigned short int b)
{ return LIBSIMPLE_UABS_(unsigned short int, a, b); }
+/* @since 1.6 */
inline unsigned int libsimple_uabs(unsigned int a, unsigned int b)
{ return LIBSIMPLE_UABS_(unsigned int, a, b); }
+/* @since 1.6 */
inline unsigned long int libsimple_ulabs(unsigned long int a, unsigned long int b)
{ return LIBSIMPLE_UABS_(unsigned long int, a, b); }
+/* @since 1.6 */
inline unsigned long long int libsimple_ullabs(unsigned long long int a, unsigned long long int b)
{ return LIBSIMPLE_UABS_(unsigned long long int, a, b); }
+/* @since 1.6 */
inline size_t libsimple_uzabs(size_t a, size_t b)
{ return LIBSIMPLE_UABS_(size_t, a, b); }
+/* @since 1.6 */
inline uint_least8_t libsimple_u8abs(uint_least8_t a, uint_least8_t b)
{ return LIBSIMPLE_UABS_(uint_least8_t, a, b); }
+/* @since 1.6 */
inline uint_least16_t libsimple_u16abs(uint_least16_t a, uint_least16_t b)
{ return LIBSIMPLE_UABS_(uint_least16_t, a, b); }
+/* @since 1.6 */
inline uint_least32_t libsimple_u32abs(uint_least32_t a, uint_least32_t b)
{ return LIBSIMPLE_UABS_(uint_least32_t, a, b); }
+/* @since 1.6 */
inline uint_least64_t libsimple_u64abs(uint_least64_t a, uint_least64_t b)
{ return LIBSIMPLE_UABS_(uint_least64_t, a, b); }
+/* @since 1.6 */
inline uintmax_t libsimple_umaxabs(uintmax_t a, uintmax_t b)
{ return LIBSIMPLE_UABS_(uintmax_t, a, b); }
+/* @since 1.6 */
inline uintptr_t libsimple_uptrabs(uintptr_t a, uintptr_t b)
{ return LIBSIMPLE_UABS_(uintptr_t, a, b); }
+/* @since 1.6 */
inline signed char libsimple_toihh(unsigned char value)
{ return LIBSIMPLE_SIGN_(unsigned char, signed char, value); }
+/* @since 1.6 */
inline short int libsimple_toih(unsigned short int value)
{ return LIBSIMPLE_SIGN_(unsigned short int, short int, value); }
+/* @since 1.6 */
inline int libsimple_toi(unsigned int value)
{ return LIBSIMPLE_SIGN_(unsigned int, int, value); }
+/* @since 1.6 */
inline long int libsimple_toil(unsigned long int value)
{ return LIBSIMPLE_SIGN_(unsigned long int, long int, value); }
+/* @since 1.6 */
inline long long int libsimple_toill(unsigned long long int value)
{ return LIBSIMPLE_SIGN_(unsigned long long int, long long int, value); }
+/* @since 1.6 */
inline ssize_t libsimple_toiz(size_t value)
{ return LIBSIMPLE_SIGN_(size_t, ssize_t, value); }
+/* @since 1.6 */
inline int_least8_t libsimple_toi8(uint_least8_t value)
{ return LIBSIMPLE_SIGN_(uint_least8_t, int_least8_t, value); }
+/* @since 1.6 */
inline int_least16_t libsimple_toi16(uint_least16_t value)
{ return LIBSIMPLE_SIGN_(uint_least16_t, int_least16_t, value); }
+/* @since 1.6 */
inline int_least32_t libsimple_toi32(uint_least32_t value)
{ return LIBSIMPLE_SIGN_(uint_least32_t, int_least32_t, value); }
+/* @since 1.6 */
inline int_least64_t libsimple_toi64(uint_least64_t value)
{ return LIBSIMPLE_SIGN_(uint_least32_t, int_least32_t, value); }
+/* @since 1.6 */
inline intmax_t libsimple_toimax(uintmax_t value)
{ return LIBSIMPLE_SIGN_(uintmax_t, intmax_t, value); }
+/* @since 1.6 */
inline intptr_t libsimple_toiptr(uintptr_t value)
{ return LIBSIMPLE_SIGN_(uintptr_t, intptr_t, value); }
diff --git a/libsimple/ascii.h b/libsimple/ascii.h
index faaa99e..7415fac 100644
--- a/libsimple/ascii.h
+++ b/libsimple/ascii.h
@@ -3,6 +3,7 @@
/* TODO man, doc, test */
+/* @since 1.6 */
#define LIBSIMPLE_CHAR_NUL '\x00'
#ifndef CHAR_NUL
# define CHAR_NUL LIBSIMPLE_CHAR_NUL
@@ -12,6 +13,7 @@
# define CHAR_NULL LIBSIMPLE_CHAR_NULL
#endif
+/* @since 1.6 */
#define LIBSIMPLE_CHAR_SOH '\x01'
#ifndef CHAR_SOH
# define CHAR_SOH LIBSIMPLE_CHAR_SOH
@@ -21,6 +23,7 @@
# define CHAR_START_OF_HEADING LIBSIMPLE_CHAR_START_OF_HEADING
#endif
+/* @since 1.6 */
#define LIBSIMPLE_CHAR_STX '\x02'
#ifndef CHAR_STX
# define CHAR_STX LIBSIMPLE_CHAR_STX
@@ -30,6 +33,7 @@
# define CHAR_START_OF_TEXT LIBSIMPLE_CHAR_START_OF_TEXT
#endif
+/* @since 1.6 */
#define LIBSIMPLE_CHAR_ETX '\x03'
#ifndef CHAR_ETX
# define CHAR_ETX LIBSIMPLE_CHAR_ETX
@@ -39,6 +43,7 @@
# define CHAR_END_OF_TEXT LIBSIMPLE_CHAR_END_OF_TEXT
#endif
+/* @since 1.6 */
#define LIBSIMPLE_CHAR_EOT '\x04'
#ifndef CHAR_EOT
# define CHAR_EOT LIBSIMPLE_CHAR_EOT
@@ -48,6 +53,7 @@
# define CHAR_END_OF_TRANSMISSION LIBSIMPLE_CHAR_END_OF_TRANSMISSION
#endif
+/* @since 1.6 */
#define LIBSIMPLE_CHAR_ENQ '\x05'
#ifndef CHAR_ENQ
# define CHAR_ENQ LIBSIMPLE_CHAR_ENQ
@@ -57,6 +63,7 @@
# define CHAR_ENQUIRY LIBSIMPLE_CHAR_ENQUIRY
#endif
+/* @since 1.6 */
#define LIBSIMPLE_CHAR_ACK '\x06'
#ifndef CHAR_ACK
# define CHAR_ACK LIBSIMPLE_CHAR_ACK
@@ -66,6 +73,7 @@
# define CHAR_ACKNOWLEDGE LIBSIMPLE_CHAR_ACKNOWLEDGE
#endif
+/* @since 1.6 */
#define LIBSIMPLE_CHAR_BEL '\x07'
#ifndef CHAR_BEL
# define CHAR_BEL LIBSIMPLE_CHAR_BEL
@@ -75,6 +83,7 @@
# define CHAR_BELL LIBSIMPLE_CHAR_BELL
#endif
+/* @since 1.6 */
#define LIBSIMPLE_CHAR_BS '\x08'
#ifndef CHAR_BS
# define CHAR_BS LIBSIMPLE_CHAR_BS
@@ -84,6 +93,7 @@
# define CHAR_BACKSPACE LIBSIMPLE_CHAR_BACKSPACE
#endif
+/* @since 1.6 */
#define LIBSIMPLE_CHAR_HT '\x09'
#ifndef CHAR_HT
# define CHAR_HT LIBSIMPLE_CHAR_HT
@@ -93,6 +103,7 @@
# define CHAR_HORIZONTAL_TABULATION LIBSIMPLE_CHAR_HORIZONTAL_TABULATION
#endif
+/* @since 1.6 */
#define LIBSIMPLE_CHAR_LF '\x0A'
#ifndef CHAR_LF
# define CHAR_LF LIBSIMPLE_CHAR_LF
@@ -102,6 +113,7 @@
# define CHAR_LINE_FEED LIBSIMPLE_CHAR_LINE_FEED
#endif
+/* @since 1.6 */
#define LIBSIMPLE_CHAR_VT '\x0B'
#ifndef CHAR_VT
# define CHAR_VT LIBSIMPLE_CHAR_VT
@@ -111,6 +123,7 @@
# define CHAR_VERTICAL_TABULATION LIBSIMPLE_CHAR_VERTICAL_TABULATION
#endif
+/* @since 1.6 */
#define LIBSIMPLE_CHAR_FF '\x0C'
#ifndef CHAR_FF
# define CHAR_FF LIBSIMPLE_CHAR_FF
@@ -120,6 +133,7 @@
# define CHAR_FORM_FEED LIBSIMPLE_CHAR_FORM_FEED
#endif
+/* @since 1.6 */
#define LIBSIMPLE_CHAR_CR '\x0D'
#ifndef CHAR_CR
# define CHAR_CR LIBSIMPLE_CHAR_CR
@@ -129,6 +143,7 @@
# define CHAR_CARRIAGE_RETURN LIBSIMPLE_CHAR_CARRIAGE_RETURN
#endif
+/* @since 1.6 */
#define LIBSIMPLE_CHAR_SO '\x0E'
#ifndef CHAR_SO
# define CHAR_SO LIBSIMPLE_CHAR_SO
@@ -138,6 +153,7 @@
# define CHAR_SHIFT_OUT LIBSIMPLE_CHAR_SHIFT_OUT
#endif
+/* @since 1.6 */
#define LIBSIMPLE_CHAR_SI '\x0F'
#ifndef CHAR_SI
# define CHAR_SI LIBSIMPLE_CHAR_SI
@@ -147,6 +163,7 @@
# define CHAR_SHIFT_IN LIBSIMPLE_CHAR_SHIFT_IN
#endif
+/* @since 1.6 */
#define LIBSIMPLE_CHAR_DLE '\x10'
#ifndef CHAR_DLE
# define CHAR_DLE LIBSIMPLE_CHAR_DLE
@@ -156,6 +173,7 @@
# define CHAR_DATA_LINK_ESCAPE LIBSIMPLE_CHAR_DATA_LINK_ESCAPE
#endif
+/* @since 1.6 */
#define LIBSIMPLE_CHAR_DC1 '\x11'
#ifndef CHAR_DC1
# define CHAR_DC1 LIBSIMPLE_CHAR_DC1
@@ -165,6 +183,7 @@
# define CHAR_DEVICE_CONTROL_1 LIBSIMPLE_CHAR_DEVICE_CONTROL_1
#endif
+/* @since 1.6 */
#define LIBSIMPLE_CHAR_DC2 '\x12'
#ifndef CHAR_DC2
# define CHAR_DC2 LIBSIMPLE_CHAR_DC2
@@ -174,6 +193,7 @@
# define CHAR_DEVICE_CONTROL_2 LIBSIMPLE_CHAR_DEVICE_CONTROL_2
#endif
+/* @since 1.6 */
#define LIBSIMPLE_CHAR_DC3 '\x13'
#ifndef CHAR_DC3
# define CHAR_DC3 LIBSIMPLE_CHAR_DC3
@@ -183,6 +203,7 @@
# define CHAR_DEVICE_CONTROL_3 LIBSIMPLE_CHAR_DEVICE_CONTROL_3
#endif
+/* @since 1.6 */
#define LIBSIMPLE_CHAR_DC4 '\x14'
#ifndef CHAR_DC4
# define CHAR_DC4 LIBSIMPLE_CHAR_DC4
@@ -192,6 +213,7 @@
# define CHAR_DEVICE_CONTROL_4 LIBSIMPLE_CHAR_DEVICE_CONTROL_4
#endif
+/* @since 1.6 */
#define LIBSIMPLE_CHAR_NAK '\x15'
#ifndef CHAR_NAK
# define CHAR_NAK LIBSIMPLE_CHAR_NAK
@@ -201,6 +223,7 @@
# define CHAR_NEGATIVE_ACKNOWLEDGE LIBSIMPLE_CHAR_NEGATIVE_ACKNOWLEDGE
#endif
+/* @since 1.6 */
#define LIBSIMPLE_CHAR_SYN '\x16'
#ifndef CHAR_SYN
# define CHAR_SYN LIBSIMPLE_CHAR_SYN
@@ -210,6 +233,7 @@
# define CHAR_SYNCHRONOUS_IDLE LIBSIMPLE_CHAR_SYNCHRONOUS_IDLE
#endif
+/* @since 1.6 */
#define LIBSIMPLE_CHAR_ETB '\x17'
#ifndef CHAR_ETB
# define CHAR_ETB LIBSIMPLE_CHAR_ETB
@@ -219,6 +243,7 @@
# define CHAR_END_OF_TRANSMISSION_BLOCK LIBSIMPLE_CHAR_END_OF_TRANSMISSION_BLOCK
#endif
+/* @since 1.6 */
#define LIBSIMPLE_CHAR_CAN '\x18'
#ifndef CHAR_CAN
# define CHAR_CAN LIBSIMPLE_CHAR_CAN
@@ -228,6 +253,7 @@
# define CHAR_CANCEL LIBSIMPLE_CHAR_CANCEL
#endif
+/* @since 1.6 */
#define LIBSIMPLE_CHAR_EM '\x19'
#ifndef CHAR_EM
# define CHAR_EM LIBSIMPLE_CHAR_EM
@@ -237,6 +263,7 @@
# define CHAR_END_OF_MEDIUM LIBSIMPLE_CHAR_END_OF_MEDIUM
#endif
+/* @since 1.6 */
#define LIBSIMPLE_CHAR_SUB '\x1A'
#ifndef CHAR_SUB
# define CHAR_SUB LIBSIMPLE_CHAR_SUB
@@ -246,6 +273,7 @@
# define CHAR_SUBSTITUTE LIBSIMPLE_CHAR_SUBSTITUTE
#endif
+/* @since 1.6 */
#define LIBSIMPLE_CHAR_ESC '\x1B'
#ifndef CHAR_ESC
# define CHAR_ESC LIBSIMPLE_CHAR_ESC
@@ -255,6 +283,7 @@
# define CHAR_ESCAPE LIBSIMPLE_CHAR_ESCAPE
#endif
+/* @since 1.6 */
#define LIBSIMPLE_CHAR_FS '\x1C'
#ifndef CHAR_FS
# define CHAR_FS LIBSIMPLE_CHAR_FS
@@ -264,6 +293,7 @@
# define CHAR_FILE_SEPARATOR LIBSIMPLE_CHAR_FILE_SEPARATOR
#endif
+/* @since 1.6 */
#define LIBSIMPLE_CHAR_GS '\x1D'
#ifndef CHAR_GS
# define CHAR_GS LIBSIMPLE_CHAR_GS
@@ -273,6 +303,7 @@
# define CHAR_GROUP_SEPARATOR LIBSIMPLE_CHAR_GROUP_SEPARATOR
#endif
+/* @since 1.6 */
#define LIBSIMPLE_CHAR_RS '\x1E'
#ifndef CHAR_RS
# define CHAR_RS LIBSIMPLE_CHAR_RS
@@ -282,6 +313,7 @@
# define CHAR_RECORD_SEPARATOR LIBSIMPLE_CHAR_RECORD_SEPARATOR
#endif
+/* @since 1.6 */
#define LIBSIMPLE_CHAR_US '\x1F'
#ifndef CHAR_US
# define CHAR_US LIBSIMPLE_CHAR_US
@@ -291,6 +323,7 @@
# define CHAR_UNIT_SEPARATOR LIBSIMPLE_CHAR_UNIT_SEPARATOR
#endif
+/* @since 1.6 */
#define LIBSIMPLE_CHAR_SP '\x20'
#ifndef CHAR_SP
# define CHAR_SP LIBSIMPLE_CHAR_SP
@@ -300,6 +333,7 @@
# define CHAR_SPACE LIBSIMPLE_CHAR_SPACE
#endif
+/* @since 1.6 */
#define LIBSIMPLE_CHAR_DEL '\x7F'
#ifndef CHAR_DEL
# define CHAR_DEL LIBSIMPLE_CHAR_DEL
@@ -310,6 +344,7 @@
#endif
+/* @since 1.6 */
#define LIBSIMPLE_STR_CHAR_NUL "\x00"
#ifndef STR_CHAR_NUL
# define STR_CHAR_NUL LIBSIMPLE_STR_CHAR_NUL
@@ -319,6 +354,7 @@
# define STR_CHAR_NULL LIBSIMPLE_STR_CHAR_NULL
#endif
+/* @since 1.6 */
#define LIBSIMPLE_STR_CHAR_SOH "\x01"
#ifndef STR_CHAR_SOH
# define STR_CHAR_SOH LIBSIMPLE_STR_CHAR_SOH
@@ -328,6 +364,7 @@
# define STR_CHAR_START_OF_HEADING LIBSIMPLE_STR_CHAR_START_OF_HEADING
#endif
+/* @since 1.6 */
#define LIBSIMPLE_STR_CHAR_STX "\x02"
#ifndef STR_CHAR_STX
# define STR_CHAR_STX LIBSIMPLE_STR_CHAR_STX
@@ -337,6 +374,7 @@
# define STR_CHAR_START_OF_TEXT LIBSIMPLE_STR_CHAR_START_OF_TEXT
#endif
+/* @since 1.6 */
#define LIBSIMPLE_STR_CHAR_ETX "\x03"
#ifndef STR_CHAR_ETX
# define STR_CHAR_ETX LIBSIMPLE_STR_CHAR_ETX
@@ -346,6 +384,7 @@
# define STR_CHAR_END_OF_TEXT LIBSIMPLE_STR_CHAR_END_OF_TEXT
#endif
+/* @since 1.6 */
#define LIBSIMPLE_STR_CHAR_EOT "\x04"
#ifndef STR_CHAR_EOT
# define STR_CHAR_EOT LIBSIMPLE_STR_CHAR_EOT
@@ -355,6 +394,7 @@
# define STR_CHAR_END_OF_TRANSMISSION LIBSIMPLE_STR_CHAR_END_OF_TRANSMISSION
#endif
+/* @since 1.6 */
#define LIBSIMPLE_STR_CHAR_ENQ "\x05"
#ifndef STR_CHAR_ENQ
# define STR_CHAR_ENQ LIBSIMPLE_STR_CHAR_ENQ
@@ -364,6 +404,7 @@
# define STR_CHAR_ENQUIRY LIBSIMPLE_STR_CHAR_ENQUIRY
#endif
+/* @since 1.6 */
#define LIBSIMPLE_STR_CHAR_ACK "\x06"
#ifndef STR_CHAR_ACK
# define STR_CHAR_ACK LIBSIMPLE_STR_CHAR_ACK
@@ -373,6 +414,7 @@
# define STR_CHAR_ACKNOWLEDGE LIBSIMPLE_STR_CHAR_ACKNOWLEDGE
#endif
+/* @since 1.6 */
#define LIBSIMPLE_STR_CHAR_BEL "\x07"
#ifndef STR_CHAR_BEL
# define STR_CHAR_BEL LIBSIMPLE_STR_CHAR_BEL
@@ -382,6 +424,7 @@
# define STR_CHAR_BELL LIBSIMPLE_STR_CHAR_BELL
#endif
+/* @since 1.6 */
#define LIBSIMPLE_STR_CHAR_BS "\x08"
#ifndef STR_CHAR_BS
# define STR_CHAR_BS LIBSIMPLE_STR_CHAR_BS
@@ -391,6 +434,7 @@
# define STR_CHAR_BACKSPACE LIBSIMPLE_STR_CHAR_BACKSPACE
#endif
+/* @since 1.6 */
#define LIBSIMPLE_STR_CHAR_HT "\x09"
#ifndef STR_CHAR_HT
# define STR_CHAR_HT LIBSIMPLE_STR_CHAR_HT
@@ -400,6 +444,7 @@
# define STR_CHAR_HORIZONTAL_TABULATION LIBSIMPLE_STR_CHAR_HORIZONTAL_TABULATION
#endif
+/* @since 1.6 */
#define LIBSIMPLE_STR_CHAR_LF "\x0A"
#ifndef STR_CHAR_LF
# define STR_CHAR_LF LIBSIMPLE_STR_CHAR_LF
@@ -409,6 +454,7 @@
# define STR_CHAR_LINE_FEED LIBSIMPLE_STR_CHAR_LINE_FEED
#endif
+/* @since 1.6 */
#define LIBSIMPLE_STR_CHAR_VT "\x0B"
#ifndef STR_CHAR_VT
# define STR_CHAR_VT LIBSIMPLE_STR_CHAR_VT
@@ -418,6 +464,7 @@
# define STR_CHAR_VERTICAL_TABULATION LIBSIMPLE_STR_CHAR_VERTICAL_TABULATION
#endif
+/* @since 1.6 */
#define LIBSIMPLE_STR_CHAR_FF "\x0C"
#ifndef STR_CHAR_FF
# define STR_CHAR_FF LIBSIMPLE_STR_CHAR_FF
@@ -427,6 +474,7 @@
# define STR_CHAR_FORM_FEED LIBSIMPLE_STR_CHAR_FORM_FEED
#endif
+/* @since 1.6 */
#define LIBSIMPLE_STR_CHAR_CR "\x0D"
#ifndef STR_CHAR_CR
# define STR_CHAR_CR LIBSIMPLE_STR_CHAR_CR
@@ -436,6 +484,7 @@
# define STR_CHAR_CARRIAGE_RETURN LIBSIMPLE_STR_CHAR_CARRIAGE_RETURN
#endif
+/* @since 1.6 */
#define LIBSIMPLE_STR_CHAR_SO "\x0E"
#ifndef STR_CHAR_SO
# define STR_CHAR_SO LIBSIMPLE_STR_CHAR_SO
@@ -445,6 +494,7 @@
# define STR_CHAR_SHIFT_OUT LIBSIMPLE_STR_CHAR_SHIFT_OUT
#endif
+/* @since 1.6 */
#define LIBSIMPLE_STR_CHAR_SI "\x0F"
#ifndef STR_CHAR_SI
# define STR_CHAR_SI LIBSIMPLE_STR_CHAR_SI
@@ -454,6 +504,7 @@
# define STR_CHAR_SHIFT_IN LIBSIMPLE_STR_CHAR_SHIFT_IN
#endif
+/* @since 1.6 */
#define LIBSIMPLE_STR_CHAR_DLE "\x10"
#ifndef STR_CHAR_DLE
# define STR_CHAR_DLE LIBSIMPLE_STR_CHAR_DLE
@@ -463,6 +514,7 @@
# define STR_CHAR_DATA_LINK_ESCAPE LIBSIMPLE_STR_CHAR_DATA_LINK_ESCAPE
#endif
+/* @since 1.6 */
#define LIBSIMPLE_STR_CHAR_DC1 "\x11"
#ifndef STR_CHAR_DC1
# define STR_CHAR_DC1 LIBSIMPLE_STR_CHAR_DC1
@@ -472,6 +524,7 @@
# define STR_CHAR_DEVICE_CONTROL_1 LIBSIMPLE_STR_CHAR_DEVICE_CONTROL_1
#endif
+/* @since 1.6 */
#define LIBSIMPLE_STR_CHAR_DC2 "\x12"
#ifndef STR_CHAR_DC2
# define STR_CHAR_DC2 LIBSIMPLE_STR_CHAR_DC2
@@ -481,6 +534,7 @@
# define STR_CHAR_DEVICE_CONTROL_2 LIBSIMPLE_STR_CHAR_DEVICE_CONTROL_2
#endif
+/* @since 1.6 */
#define LIBSIMPLE_STR_CHAR_DC3 "\x13"
#ifndef STR_CHAR_DC3
# define STR_CHAR_DC3 LIBSIMPLE_STR_CHAR_DC3
@@ -490,6 +544,7 @@
# define STR_CHAR_DEVICE_CONTROL_3 LIBSIMPLE_STR_CHAR_DEVICE_CONTROL_3
#endif
+/* @since 1.6 */
#define LIBSIMPLE_STR_CHAR_DC4 "\x14"
#ifndef STR_CHAR_DC4
# define STR_CHAR_DC4 LIBSIMPLE_STR_CHAR_DC4
@@ -499,6 +554,7 @@
# define STR_CHAR_DEVICE_CONTROL_4 LIBSIMPLE_STR_CHAR_DEVICE_CONTROL_4
#endif
+/* @since 1.6 */
#define LIBSIMPLE_STR_CHAR_NAK "\x15"
#ifndef STR_CHAR_NAK
# define STR_CHAR_NAK LIBSIMPLE_STR_CHAR_NAK
@@ -508,6 +564,7 @@
# define STR_CHAR_NEGATIVE_ACKNOWLEDGE LIBSIMPLE_STR_CHAR_NEGATIVE_ACKNOWLEDGE
#endif
+/* @since 1.6 */
#define LIBSIMPLE_STR_CHAR_SYN "\x16"
#ifndef STR_CHAR_SYN
# define STR_CHAR_SYN LIBSIMPLE_STR_CHAR_SYN
@@ -517,6 +574,7 @@
# define STR_CHAR_SYNCHRONOUS_IDLE LIBSIMPLE_STR_CHAR_SYNCHRONOUS_IDLE
#endif
+/* @since 1.6 */
#define LIBSIMPLE_STR_CHAR_ETB "\x17"
#ifndef STR_CHAR_ETB
# define STR_CHAR_ETB LIBSIMPLE_STR_CHAR_ETB
@@ -526,6 +584,7 @@
# define STR_CHAR_END_OF_TRANSMISSION_BLOCK LIBSIMPLE_STR_CHAR_END_OF_TRANSMISSION_BLOCK
#endif
+/* @since 1.6 */
#define LIBSIMPLE_STR_CHAR_CAN "\x18"
#ifndef STR_CHAR_CAN
# define STR_CHAR_CAN LIBSIMPLE_STR_CHAR_CAN
@@ -535,6 +594,7 @@
# define STR_CHAR_CANCEL LIBSIMPLE_STR_CHAR_CANCEL
#endif
+/* @since 1.6 */
#define LIBSIMPLE_STR_CHAR_EM "\x19"
#ifndef STR_CHAR_EM
# define STR_CHAR_EM LIBSIMPLE_STR_CHAR_EM
@@ -544,6 +604,7 @@
# define STR_CHAR_END_OF_MEDIUM LIBSIMPLE_STR_CHAR_END_OF_MEDIUM
#endif
+/* @since 1.6 */
#define LIBSIMPLE_STR_CHAR_SUB "\x1A"
#ifndef STR_CHAR_SUB
# define STR_CHAR_SUB LIBSIMPLE_STR_CHAR_SUB
@@ -553,6 +614,7 @@
# define STR_CHAR_SUBSTITUTE LIBSIMPLE_STR_CHAR_SUBSTITUTE
#endif
+/* @since 1.6 */
#define LIBSIMPLE_STR_CHAR_ESC "\x1B"
#ifndef STR_CHAR_ESC
# define STR_CHAR_ESC LIBSIMPLE_STR_CHAR_ESC
@@ -562,6 +624,7 @@
# define STR_CHAR_ESCAPE LIBSIMPLE_STR_CHAR_ESCAPE
#endif
+/* @since 1.6 */
#define LIBSIMPLE_STR_CHAR_FS "\x1C"
#ifndef STR_CHAR_FS
# define STR_CHAR_FS LIBSIMPLE_STR_CHAR_FS
@@ -571,6 +634,7 @@
# define STR_CHAR_FILE_SEPARATOR LIBSIMPLE_STR_CHAR_FILE_SEPARATOR
#endif
+/* @since 1.6 */
#define LIBSIMPLE_STR_CHAR_GS "\x1D"
#ifndef STR_CHAR_GS
# define STR_CHAR_GS LIBSIMPLE_STR_CHAR_GS
@@ -580,6 +644,7 @@
# define STR_CHAR_GROUP_SEPARATOR LIBSIMPLE_STR_CHAR_GROUP_SEPARATOR
#endif
+/* @since 1.6 */
#define LIBSIMPLE_STR_CHAR_RS "\x1E"
#ifndef STR_CHAR_RS
# define STR_CHAR_RS LIBSIMPLE_STR_CHAR_RS
@@ -589,6 +654,7 @@
# define STR_CHAR_RECORD_SEPARATOR LIBSIMPLE_STR_CHAR_RECORD_SEPARATOR
#endif
+/* @since 1.6 */
#define LIBSIMPLE_STR_CHAR_US "\x1F"
#ifndef STR_CHAR_US
# define STR_CHAR_US LIBSIMPLE_STR_CHAR_US
@@ -598,6 +664,7 @@
# define STR_CHAR_UNIT_SEPARATOR LIBSIMPLE_STR_CHAR_UNIT_SEPARATOR
#endif
+/* @since 1.6 */
#define LIBSIMPLE_STR_CHAR_SP "\x20"
#ifndef STR_CHAR_SP
# define STR_CHAR_SP LIBSIMPLE_STR_CHAR_SP
@@ -607,6 +674,7 @@
# define STR_CHAR_SPACE LIBSIMPLE_STR_CHAR_SPACE
#endif
+/* @since 1.6 */
#define LIBSIMPLE_STR_CHAR_DEL "\x7F"
#ifndef STR_CHAR_DEL
# define STR_CHAR_DEL LIBSIMPLE_STR_CHAR_DEL
@@ -620,6 +688,7 @@
#define LIBSIMPLE_LIST_ASCII_CONTROL_CHARS__(X, ABBR, FULL, NAME)\
X(LIBSIMPLE_CHAR_##ABBR, LIBSIMPLE_STR_CHAR_##ABBR, #ABBR, ABBR, #FULL, FULL, NAME)
+/* @since 1.6 */
#define LIBSIMPLE_LIST_ASCII_CONTROL_CHARS(X, D)\
LIBSIMPLE_LIST_ASCII_CONTROL_CHARS__(X, NUL, NULL, "null") D\
LIBSIMPLE_LIST_ASCII_CONTROL_CHARS__(X, SOH, START_OF_HEADING, "start of heading") D\
diff --git a/libsimple/exec.h b/libsimple/exec.h
index bc61628..5d27dc4 100644
--- a/libsimple/exec.h
+++ b/libsimple/exec.h
@@ -3,96 +3,118 @@
/* TODO man, doc, test */
+/* @since 1.6 */
const char *libsimple_which(const char *file, int cwdfd, const char *path, char **free_this_out);
+/* @since 1.6 */
int libsimple_xexecv(int dirfd, const char *file, int atflags, const char *path, char *const *envp, char *const *argv);
+/* @since 1.6 */
int libsimple_vxexecl(int dirfd, const char *file, int atflags, const char *path, char *const *envp, va_list argv_null);
+/* @since 1.6 */
int libsimple_xexecl(int dirfd, const char *file, int atflags, const char *path, char *const *envp, ... /* argv, NULL */);
+/* @since 1.6 */
int libsimple_vxexecle(int dirfd, const char *file, int atflags, const char *path, va_list argv_null_envp);
+/* @since 1.6 */
int libsimple_execlpe(const char *file, ... /* argv, NULL, char *const envp[] */);
#ifndef execlpe
# define execlpe libsimple_execlpe
#endif
+/* @since 1.6 */
int libsimple_vexecl(const char *pathname, va_list argv_null);
#ifndef vexecl
# define vexecl libsimple_vexecl
#endif
+/* @since 1.6 */
int libsimple_vexecle(const char *pathname, va_list argv_null_envp);
#ifndef vexecle
# define vexecle libsimple_vexecle
#endif
+/* @since 1.6 */
int libsimple_vexeclp(const char *file, va_list argv_null);
#ifndef vexeclp
# define vexeclp libsimple_vexeclp
#endif
+/* @since 1.6 */
int libsimple_vexeclpe(const char *file, va_list argv_null_envp);
#ifndef vexeclpe
# define vexeclpe libsimple_vexeclpe
#endif
+/* @since 1.6 */
int libsimple_execvpe(const char *file, char *const argv[], char *const envp[]);
#ifndef execvpe
# define execvpe libsimple_execvpe
#endif
+/* @since 1.6 */
int libsimple_vfexecl(int fd, va_list argv_null);
#ifndef vfexecl
# define vfexecl libsimple_vfexecl
#endif
+/* @since 1.6 */
int libsimple_vfexecle(int fd, va_list argv_null_envp);
#ifndef vfexecle
# define vfexecle libsimple_vfexecle
#endif
+/* @since 1.6 */
int libsimple_fexecl(int fd, ... /* argv, NULL */);
#ifndef fexecl
# define fexecl libsimple_fexecl
#endif
+/* @since 1.6 */
int libsimple_fexecle(int fd, ... /* argv, NULL, char *const envp[] */);
#ifndef fexecle
# define fexecle libsimple_fexecle
#endif
+/* @since 1.6 */
int libsimple_fexecv(int fd, char *const argv[]);
#ifndef fexecv
# define fexecv libsimple_fexecv
#endif
+/* @since 1.6 */
int libsimple_execveat(int dirfd, const char *pathname, char *const argv[], char *const envp[], int flags);
#ifndef execveat
# define execveat libsimple_execveat
#endif
+/* @since 1.6 */
int libsimple_execvat(int dirfd, const char *pathname, char *const argv[], int flags);
#ifndef execvat
# define execvat libsimple_execvat
#endif
+/* @since 1.6 */
int libsimple_execleat(int dirfd, const char *pathname, ... /* argv, NULL, char *const envp[], int flags */);
#ifndef execleat
# define execleat libsimple_execleat
#endif
+/* @since 1.6 */
int libsimple_execlat(int dirfd, const char *pathname, ... /* argv, NULL, int flags */);
#ifndef execlat
# define execlat libsimple_execlat
#endif
+/* @since 1.6 */
int libsimple_vexecleat(int dirfd, const char *pathname, va_list argv_null_envp_flags);
#ifndef vexecleat
# define vexecleat libsimple_execlpe
#endif
+/* @since 1.6 */
int libsimple_vexeclat(int dirfd, const char *pathname, va_list argv_null_flags);
#ifndef vexeclat
# define vexeclat libsimple_vexeclat
diff --git a/libsimple/net.h b/libsimple/net.h
index c30020b..bbe2a6c 100644
--- a/libsimple/net.h
+++ b/libsimple/net.h
@@ -12,5 +12,7 @@
* name of the file the socket will be bound to
* @param addrlen_out Output parameter for the size of the socket name (may be `NULL`)
* @return 0 on success, -1 on failure
+ *
+ * @since 1.6
*/
int libsimple_bindtemp_un(int fd, int dir_fd, struct sockaddr_un *addr_out, socklen_t *addrlen_out); /* TODO man */
diff --git a/libsimple/path.h b/libsimple/path.h
index cb78863..0d6e44c 100644
--- a/libsimple/path.h
+++ b/libsimple/path.h
@@ -5,6 +5,8 @@
* Get the current working directory
*
* @return The current working directory, or `NULL` on failure
+ *
+ * @since 1.6
*/
LIBSIMPLE_GCC_ONLY__(__attribute__((__malloc__, __assume_aligned__(1), __warn_unused_result__)))
char *libsimple_getcwd(void); /* TODO man */
@@ -14,6 +16,8 @@ char *libsimple_getcwd(void); /* TODO man */
*
* @param status Exit value in case of failure
* @return The current working directory
+ *
+ * @since 1.6
*/
LIBSIMPLE_GCC_ONLY__(__attribute__((__malloc__, __assume_aligned__(1), __warn_unused_result__, __returns_nonnull__)))
char *libsimple_engetcwd(int); /* TODO man */
@@ -22,6 +26,8 @@ char *libsimple_engetcwd(int); /* TODO man */
* Version of `libsimple_getcwd` that calls `libsimple_eprintf` on error
*
* @return The current working directory
+ *
+ * @since 1.6
*/
LIBSIMPLE_GCC_ONLY__(__attribute__((__malloc__, __assume_aligned__(1), __warn_unused_result__, __returns_nonnull__)))
inline char *
@@ -38,6 +44,8 @@ libsimple_egetcwd(void) /* TODO man */
* @param relto The directory `path` is relative to if it is a relative path,
* `NULL` for the current working directory
* @return `path` as an absolute path, or `NULL` on failure
+ *
+ * @since 1.6
*/
LIBSIMPLE_GCC_ONLY__(__attribute__((__malloc__, __assume_aligned__(1), __warn_unused_result__, __nonnull__(1))))
char *libsimple_abspath(const char *, const char *); /* TODO man */
@@ -50,6 +58,8 @@ char *libsimple_abspath(const char *, const char *); /* TODO man */
* @param relto The directory `path` is relative to if it is a relative path,
* `NULL` for the current working directory
* @return `path` as an absolute path
+ *
+ * @since 1.6
*/
LIBSIMPLE_GCC_ONLY__(__attribute__((__malloc__, __assume_aligned__(1), __warn_unused_result__, __nonnull__(2), __returns_nonnull__)))
char *libsimple_enabspath(int, const char *, const char *); /* TODO man */
@@ -61,6 +71,8 @@ char *libsimple_enabspath(int, const char *, const char *); /* TODO man */
* @param relto The directory `path` is relative to if it is a relative path,
* `NULL` for the current working directory
* @return `path` as an absolute path
+ *
+ * @since 1.6
*/
LIBSIMPLE_GCC_ONLY__(__attribute__((__malloc__, __assume_aligned__(1), __warn_unused_result__, __nonnull__(1), __returns_nonnull__)))
inline char *
@@ -71,14 +83,14 @@ libsimple_eabspath(const char *p__, const char *r__) /* TODO man */
LIBSIMPLE_GCC_ONLY__(__attribute__((__malloc__, __assume_aligned__(1), __warn_unused_result__, __nonnull__)))
-char *libsimple_readlinkat(int, const char *); /* TODO man, doc */
+char *libsimple_readlinkat(int, const char *); /* TODO man, doc (since 1.6) */
LIBSIMPLE_GCC_ONLY__(__attribute__((__malloc__, __assume_aligned__(1), __warn_unused_result__, __nonnull__, __returns_nonnull__)))
-char *libsimple_enreadlinkat(int, int, const char *); /* TODO man, doc */
+char *libsimple_enreadlinkat(int, int, const char *); /* TODO man, doc (since 1.6) */
LIBSIMPLE_GCC_ONLY__(__attribute__((__malloc__, __assume_aligned__(1), __warn_unused_result__, __nonnull__, __returns_nonnull__)))
inline char *
-libsimple_ereadlinkat(int dirfd__, const char *path__) /* TODO man, doc */
+libsimple_ereadlinkat(int dirfd__, const char *path__) /* TODO man, doc (since 1.6) */
{
return libsimple_enreadlinkat(libsimple_default_failure_exit, dirfd__, path__);
}
@@ -86,70 +98,70 @@ libsimple_ereadlinkat(int dirfd__, const char *path__) /* TODO man, doc */
LIBSIMPLE_GCC_ONLY__(__attribute__((__malloc__, __assume_aligned__(1), __warn_unused_result__, __nonnull__)))
inline char *
-libsimple_readlink(const char *path__) /* TODO man, doc */
+libsimple_readlink(const char *path__) /* TODO man, doc (since 1.6) */
{
return libsimple_readlinkat(AT_FDCWD, path__);
}
LIBSIMPLE_GCC_ONLY__(__attribute__((__malloc__, __assume_aligned__(1), __warn_unused_result__, __nonnull__, __returns_nonnull__)))
inline char *
-libsimple_enreadlink(int status__, const char *path__) /* TODO man, doc */
+libsimple_enreadlink(int status__, const char *path__) /* TODO man, doc (since 1.6) */
{
return libsimple_enreadlinkat(status__, AT_FDCWD, path__);
}
LIBSIMPLE_GCC_ONLY__(__attribute__((__malloc__, __assume_aligned__(1), __warn_unused_result__, __nonnull__, __returns_nonnull__)))
inline char *
-libsimple_ereadlink(const char *path__) /* TODO man, doc */
+libsimple_ereadlink(const char *path__) /* TODO man, doc (since 1.6) */
{
return libsimple_enreadlinkat(libsimple_default_failure_exit, AT_FDCWD, path__);
}
LIBSIMPLE_GCC_ONLY__(__attribute__((__malloc__, __assume_aligned__(1), __warn_unused_result__, __nonnull__)))
inline char *
-libsimple_freadlink(int fd__) /* TODO man, doc */
+libsimple_freadlink(int fd__) /* TODO man, doc (since 1.6) */
{
return libsimple_readlinkat(fd__, "");
}
LIBSIMPLE_GCC_ONLY__(__attribute__((__malloc__, __assume_aligned__(1), __warn_unused_result__, __nonnull__, __returns_nonnull__)))
inline char *
-libsimple_enfreadlink(int status__, int fd__) /* TODO man, doc */
+libsimple_enfreadlink(int status__, int fd__) /* TODO man, doc (since 1.6) */
{
return libsimple_enreadlinkat(status__, fd__, "");
}
LIBSIMPLE_GCC_ONLY__(__attribute__((__malloc__, __assume_aligned__(1), __warn_unused_result__, __nonnull__, __returns_nonnull__)))
inline char *
-libsimple_efreadlink(int fd__) /* TODO man, doc */
+libsimple_efreadlink(int fd__) /* TODO man, doc (since 1.6) */
{
return libsimple_enreadlinkat(libsimple_default_failure_exit, fd__, "");
}
LIBSIMPLE_GCC_ONLY__(__attribute__((__malloc__, __assume_aligned__(1), __warn_unused_result__, __nonnull__)))
-char *libsimple_readmagiclink(const char *); /* TODO man, doc */
+char *libsimple_readmagiclink(const char *); /* TODO man, doc (since 1.6) */
LIBSIMPLE_GCC_ONLY__(__attribute__((__malloc__, __assume_aligned__(1), __warn_unused_result__, __nonnull__, __returns_nonnull__)))
-char *libsimple_enreadmagiclink(int, const char *); /* TODO man, doc */
+char *libsimple_enreadmagiclink(int, const char *); /* TODO man, doc (since 1.6) */
LIBSIMPLE_GCC_ONLY__(__attribute__((__malloc__, __assume_aligned__(1), __warn_unused_result__, __nonnull__, __returns_nonnull__)))
inline char *
-libsimple_ereadmagiclink(const char *path__) /* TODO man, doc */
+libsimple_ereadmagiclink(const char *path__) /* TODO man, doc (since 1.6) */
{
return libsimple_enreadmagiclink(libsimple_default_failure_exit, path__);
}
LIBSIMPLE_GCC_ONLY__(__attribute__((__malloc__, __assume_aligned__(1), __warn_unused_result__, __nonnull__)))
-char *libsimple_getexecpath(void); /* TODO man, doc */
+char *libsimple_getexecpath(void); /* TODO man, doc (since 1.6) */
LIBSIMPLE_GCC_ONLY__(__attribute__((__malloc__, __assume_aligned__(1), __warn_unused_result__, __nonnull__, __returns_nonnull__)))
-char *libsimple_engetexecpath(int); /* TODO man, doc */
+char *libsimple_engetexecpath(int); /* TODO man, doc (since 1.6) */
LIBSIMPLE_GCC_ONLY__(__attribute__((__malloc__, __assume_aligned__(1), __warn_unused_result__, __nonnull__, __returns_nonnull__)))
inline char *
-libsimple_egetexecpath(void) /* TODO man, doc */
+libsimple_egetexecpath(void) /* TODO man, doc (since 1.6) */
{
return libsimple_engetexecpath(libsimple_default_failure_exit);
}
diff --git a/libsimple/printf.h b/libsimple/printf.h
index 90d15a8..b295eff 100644
--- a/libsimple/printf.h
+++ b/libsimple/printf.h
@@ -281,6 +281,8 @@ libsimple_venprintf(int status__, const char *fmt__, va_list ap__)
* @param status Exit value for the process
* @param fmt The format string
* @param ap The format argument
+ *
+ * @since 1.6
*/
LIBSIMPLE_GCC_ONLY__(__attribute__((__nonnull__(2), __format__(__printf__, 2, 0))))
inline LIBSIMPLE_NORETURN void
@@ -351,6 +353,8 @@ libsimple_enprintf(int status__, const char *fmt__, ...)
* @param status Exit value for the process
* @param fmt The format string
* @param ... The format argument
+ *
+ * @since 1.6
*/
LIBSIMPLE_GCC_ONLY__(__attribute__((__nonnull__(2), __format__(__printf__, 2, 3))))
inline LIBSIMPLE_NORETURN void
@@ -421,6 +425,8 @@ libsimple_veprintf(const char *fmt__, va_list ap__)
*
* @param fmt The format string
* @param ap The format argument
+ *
+ * @since 1.6
*/
LIBSIMPLE_GCC_ONLY__(__attribute__((__nonnull__(1), __format__(__printf__, 1, 0))))
inline LIBSIMPLE_NORETURN void
@@ -491,6 +497,8 @@ libsimple_eprintf(const char *fmt__, ...)
*
* @param fmt The format string
* @param ... The format argument
+ *
+ * @since 1.6
*/
LIBSIMPLE_GCC_ONLY__(__attribute__((__nonnull__(1), __format__(__printf__, 1, 2))))
inline LIBSIMPLE_NORETURN void
diff --git a/libsimple/random.h b/libsimple/random.h
index a3b1739..29e3bbf 100644
--- a/libsimple/random.h
+++ b/libsimple/random.h
@@ -5,6 +5,8 @@
* Creates a pseudo-random seed
*
* @return The pseudo-random seed
+ *
+ * @since 1.6
*/
LIBSIMPLE_GCC_ONLY__(__attribute__((__warn_unused_result__)))
unsigned int libsimple_generate_seed(void); /* TODO add man page */
@@ -14,6 +16,8 @@ unsigned int libsimple_generate_seed(void); /* TODO add man page */
* Wrapper for srand(3) that creates a pseudo-random
* seed with which it seeds the pseudo-random number
* generator
+ *
+ * @since 1.6
*/
inline void
libsimple_srand(void) /* TODO add man page */
@@ -22,7 +26,7 @@ libsimple_srand(void) /* TODO add man page */
}
-/* TODO doc, man (libsimple_random_float requires -lm) */
+/* TODO doc, man (since 1.6) (libsimple_random_float requires -lm) */
uintmax_t libsimple_random_bits(size_t bits, void *unused);
uintmax_t libsimple_random_unsigned(uintmax_t (*rng)(size_t bits, void *user), void *user, uintmax_t min, uintmax_t max);
intmax_t libsimple_random_signed(uintmax_t (*rng)(size_t bits, void *user), void *user, intmax_t min, intmax_t max);
diff --git a/libsimple/sort.h b/libsimple/sort.h
index 77929d1..4d8c4ce 100644
--- a/libsimple/sort.h
+++ b/libsimple/sort.h
@@ -117,1731 +117,2307 @@
return -FUNC(**L##_typed, **R##_typed)
+/* @since 1.6 */
inline int libsimple_cmp_ucharp(const unsigned char *a, const unsigned char *b)
{ LIBSIMPLE_CMP_NUMP__(unsigned char, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_uchar(unsigned char base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_ucharp); }
+/* @since 1.6 */
inline int libsimple_cmp_ucharpp(unsigned char *const *a, unsigned char *const *b)
{ LIBSIMPLE_CMP_NUMPP__(unsigned char, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_ucharp(unsigned char *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_ucharpp); }
+/* @since 1.6 */
inline int libsimple_cmp_nul_ucharpp(unsigned char *const *a, unsigned char *const *b)
{ LIBSIMPLE_CMP_NUL_NUMPP__(unsigned char, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_nul_ucharp(unsigned char *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_nul_ucharpp); }
+/* @since 1.6 */
inline int libsimple_cmp_ucharpp_nul(unsigned char *const *a, unsigned char *const *b)
{ LIBSIMPLE_CMP_NUMPP_NUL__(unsigned char, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_ucharp_nul(unsigned char *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_ucharpp_nul); }
+/* @since 1.6 */
inline int libsimple_cmp_rev_ucharp(const unsigned char *a, const unsigned char *b)
{ LIBSIMPLE_CMP_REV_NUMP__(unsigned char, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_rev_uchar(unsigned char base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_rev_ucharp); }
+/* @since 1.6 */
inline int libsimple_cmp_rev_ucharpp(unsigned char *const *a, unsigned char *const *b)
{ LIBSIMPLE_CMP_REV_NUMPP__(unsigned char, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_rev_ucharp(unsigned char *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_rev_ucharpp); }
+/* @since 1.6 */
inline int libsimple_cmp_nul_rev_ucharpp(unsigned char *const *a, unsigned char *const *b)
{ LIBSIMPLE_CMP_NUL_REV_NUMPP__(unsigned char, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_nul_rev_ucharp(unsigned char *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_nul_rev_ucharpp); }
+/* @since 1.6 */
inline int libsimple_cmp_rev_ucharpp_nul(unsigned char *const *a, unsigned char *const *b)
{ LIBSIMPLE_CMP_REV_NUMPP_NUL__(unsigned char, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_rev_ucharp_nul(unsigned char *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_rev_ucharpp_nul); }
+/* @since 1.6 */
inline int libsimple_cmp_scharp(const signed char *a, const signed char *b)
{ LIBSIMPLE_CMP_NUMP__(signed char, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_schar(signed char base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_scharp); }
+/* @since 1.6 */
inline int libsimple_cmp_scharpp(signed char *const *a, signed char *const *b)
{ LIBSIMPLE_CMP_NUMPP__(signed char, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_scharp(signed char *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_scharpp); }
+/* @since 1.6 */
inline int libsimple_cmp_nul_scharpp(signed char *const *a, signed char *const *b)
{ LIBSIMPLE_CMP_NUL_NUMPP__(signed char, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_nul_scharp(signed char *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_nul_scharpp); }
+/* @since 1.6 */
inline int libsimple_cmp_scharpp_nul(signed char *const *a, signed char *const *b)
{ LIBSIMPLE_CMP_NUMPP_NUL__(signed char, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_scharp_nul(signed char *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_scharpp_nul); }
+/* @since 1.6 */
inline int libsimple_cmp_rev_scharp(const signed char *a, const signed char *b)
{ LIBSIMPLE_CMP_REV_NUMP__(signed char, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_rev_schar(signed char base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_rev_scharp); }
+/* @since 1.6 */
inline int libsimple_cmp_rev_scharpp(signed char *const *a, signed char *const *b)
{ LIBSIMPLE_CMP_REV_NUMPP__(signed char, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_rev_scharp(signed char *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_rev_scharpp); }
+/* @since 1.6 */
inline int libsimple_cmp_nul_rev_scharpp(signed char *const *a, signed char *const *b)
{ LIBSIMPLE_CMP_NUL_REV_NUMPP__(signed char, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_nul_rev_scharp(signed char *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_nul_rev_scharpp); }
+/* @since 1.6 */
inline int libsimple_cmp_rev_scharpp_nul(signed char *const *a, signed char *const *b)
{ LIBSIMPLE_CMP_REV_NUMPP_NUL__(signed char, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_rev_scharp_nul(signed char *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_rev_scharpp_nul); }
+/* @since 1.6 */
inline int libsimple_cmp_shortp(const short int *a, const short int *b)
{ LIBSIMPLE_CMP_NUMP__(short int, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_short(short int base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_shortp); }
+/* @since 1.6 */
inline int libsimple_cmp_shortpp(short int *const *a, short int *const *b)
{ LIBSIMPLE_CMP_NUMPP__(short int, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_shortp(short int *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_shortpp); }
+/* @since 1.6 */
inline int libsimple_cmp_nul_shortpp(short int *const *a, short int *const *b)
{ LIBSIMPLE_CMP_NUL_NUMPP__(short int, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_nul_shortp(short int *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_nul_shortpp); }
+/* @since 1.6 */
inline int libsimple_cmp_shortpp_nul(short int *const *a, short int *const *b)
{ LIBSIMPLE_CMP_NUMPP_NUL__(short int, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_shortp_nul(short int *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_shortpp_nul); }
+/* @since 1.6 */
inline int libsimple_cmp_rev_shortp(const short int *a, const short int *b)
{ LIBSIMPLE_CMP_REV_NUMP__(short int, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_rev_short(short int base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_rev_shortp); }
+/* @since 1.6 */
inline int libsimple_cmp_rev_shortpp(short int *const *a, short int *const *b)
{ LIBSIMPLE_CMP_REV_NUMPP__(short int, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_rev_shortp(short int *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_rev_shortpp); }
+/* @since 1.6 */
inline int libsimple_cmp_nul_rev_shortpp(short int *const *a, short int *const *b)
{ LIBSIMPLE_CMP_NUL_REV_NUMPP__(short int, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_nul_rev_shortp(short int *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_nul_rev_shortpp); }
+/* @since 1.6 */
inline int libsimple_cmp_rev_shortpp_nul(short int *const *a, short int *const *b)
{ LIBSIMPLE_CMP_REV_NUMPP_NUL__(short int, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_rev_shortp_nul(short int *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_rev_shortpp_nul); }
+/* @since 1.6 */
inline int libsimple_cmp_ushortp(const unsigned short int *a, const unsigned short int *b)
{ LIBSIMPLE_CMP_NUMP__(unsigned short int, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_ushort(unsigned short int base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_ushortp); }
+/* @since 1.6 */
inline int libsimple_cmp_ushortpp(unsigned short int *const *a, unsigned short int *const *b)
{ LIBSIMPLE_CMP_NUMPP__(unsigned short int, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_ushortp(unsigned short int *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_ushortpp); }
+/* @since 1.6 */
inline int libsimple_cmp_nul_ushortpp(unsigned short int *const *a, unsigned short int *const *b)
{ LIBSIMPLE_CMP_NUL_NUMPP__(unsigned short int, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_nul_ushortp(unsigned short int *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_nul_ushortpp); }
+/* @since 1.6 */
inline int libsimple_cmp_ushortpp_nul(unsigned short int *const *a, unsigned short int *const *b)
{ LIBSIMPLE_CMP_NUMPP_NUL__(unsigned short int, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_ushortp_nul(unsigned short int *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_ushortpp_nul); }
+/* @since 1.6 */
inline int libsimple_cmp_rev_ushortp(const unsigned short int *a, const unsigned short int *b)
{ LIBSIMPLE_CMP_REV_NUMP__(unsigned short int, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_rev_ushort(unsigned short int base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_rev_ushortp); }
+/* @since 1.6 */
inline int libsimple_cmp_rev_ushortpp(unsigned short int *const *a, unsigned short int *const *b)
{ LIBSIMPLE_CMP_REV_NUMPP__(unsigned short int, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_rev_ushortp(unsigned short int *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_rev_ushortpp); }
+/* @since 1.6 */
inline int libsimple_cmp_nul_rev_ushortpp(unsigned short int *const *a, unsigned short int *const *b)
{ LIBSIMPLE_CMP_NUL_REV_NUMPP__(unsigned short int, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_nul_rev_ushortp(unsigned short int *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_nul_rev_ushortpp); }
+/* @since 1.6 */
inline int libsimple_cmp_rev_ushortpp_nul(unsigned short int *const *a, unsigned short int *const *b)
{ LIBSIMPLE_CMP_REV_NUMPP_NUL__(unsigned short int, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_rev_ushortp_nul(unsigned short int *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_rev_ushortpp_nul); }
+/* @since 1.6 */
inline int libsimple_cmp_intp(const int *a, const int *b)
{ LIBSIMPLE_CMP_NUMP__(int, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_int(int base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_intp); }
+/* @since 1.6 */
inline int libsimple_cmp_intpp(int *const *a, int *const *b)
{ LIBSIMPLE_CMP_NUMPP__(int, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_intp(int *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_intpp); }
+/* @since 1.6 */
inline int libsimple_cmp_nul_intpp(int *const *a, int *const *b)
{ LIBSIMPLE_CMP_NUL_NUMPP__(int, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_nul_intp(int *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_nul_intpp); }
+/* @since 1.6 */
inline int libsimple_cmp_intpp_nul(int *const *a, int *const *b)
{ LIBSIMPLE_CMP_NUMPP_NUL__(int, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_intp_nul(int *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_intpp_nul); }
+/* @since 1.6 */
inline int libsimple_cmp_rev_intp(const int *a, const int *b)
{ LIBSIMPLE_CMP_REV_NUMP__(int, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_rev_int(int base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_rev_intp); }
+/* @since 1.6 */
inline int libsimple_cmp_rev_intpp(int *const *a, int *const *b)
{ LIBSIMPLE_CMP_REV_NUMPP__(int, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_rev_intp(int *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_rev_intpp); }
+/* @since 1.6 */
inline int libsimple_cmp_nul_rev_intpp(int *const *a, int *const *b)
{ LIBSIMPLE_CMP_NUL_REV_NUMPP__(int, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_nul_rev_intp(int *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_nul_rev_intpp); }
+/* @since 1.6 */
inline int libsimple_cmp_rev_intpp_nul(int *const *a, int *const *b)
{ LIBSIMPLE_CMP_REV_NUMPP_NUL__(int, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_rev_intp_nul(int *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_rev_intpp_nul); }
+/* @since 1.6 */
inline int libsimple_cmp_uintp(const unsigned int *a, const unsigned int *b)
{ LIBSIMPLE_CMP_NUMP__(unsigned int, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_uint(unsigned int base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_uintp); }
+/* @since 1.6 */
inline int libsimple_cmp_uintpp(unsigned int *const *a, unsigned int *const *b)
{ LIBSIMPLE_CMP_NUMPP__(unsigned int, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_uintp(unsigned int *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_uintpp); }
+/* @since 1.6 */
inline int libsimple_cmp_nul_uintpp(unsigned int *const *a, unsigned int *const *b)
{ LIBSIMPLE_CMP_NUL_NUMPP__(unsigned int, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_nul_uintp(unsigned int *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_nul_uintpp); }
+/* @since 1.6 */
inline int libsimple_cmp_uintpp_nul(unsigned int *const *a, unsigned int *const *b)
{ LIBSIMPLE_CMP_NUMPP_NUL__(unsigned int, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_uintp_nul(unsigned int *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_uintpp_nul); }
+/* @since 1.6 */
inline int libsimple_cmp_rev_uintp(const unsigned int *a, const unsigned int *b)
{ LIBSIMPLE_CMP_REV_NUMP__(unsigned int, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_rev_uint(unsigned int base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_rev_uintp); }
+/* @since 1.6 */
inline int libsimple_cmp_rev_uintpp(unsigned int *const *a, unsigned int *const *b)
{ LIBSIMPLE_CMP_REV_NUMPP__(unsigned int, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_rev_uintp(unsigned int *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_rev_uintpp); }
+/* @since 1.6 */
inline int libsimple_cmp_nul_rev_uintpp(unsigned int *const *a, unsigned int *const *b)
{ LIBSIMPLE_CMP_NUL_REV_NUMPP__(unsigned int, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_nul_rev_uintp(unsigned int *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_nul_rev_uintpp); }
+/* @since 1.6 */
inline int libsimple_cmp_rev_uintpp_nul(unsigned int *const *a, unsigned int *const *b)
{ LIBSIMPLE_CMP_REV_NUMPP_NUL__(unsigned int, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_rev_uintp_nul(unsigned int *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_rev_uintpp_nul); }
+/* @since 1.6 */
inline int libsimple_cmp_longp(const long int *a, const long int *b)
{ LIBSIMPLE_CMP_NUMP__(long int, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_long(long int base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_longp); }
+/* @since 1.6 */
inline int libsimple_cmp_longpp(long int *const *a, long int *const *b)
{ LIBSIMPLE_CMP_NUMPP__(long int, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_longp(long int *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_longpp); }
+/* @since 1.6 */
inline int libsimple_cmp_nul_longpp(long int *const *a, long int *const *b)
{ LIBSIMPLE_CMP_NUL_NUMPP__(long int, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_nul_longp(long int *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_nul_longpp); }
+/* @since 1.6 */
inline int libsimple_cmp_longpp_nul(long int *const *a, long int *const *b)
{ LIBSIMPLE_CMP_NUMPP_NUL__(long int, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_longp_nul(long int *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_longpp_nul); }
+/* @since 1.6 */
inline int libsimple_cmp_rev_longp(const long int *a, const long int *b)
{ LIBSIMPLE_CMP_REV_NUMP__(long int, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_rev_long(long int base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_rev_longp); }
+/* @since 1.6 */
inline int libsimple_cmp_rev_longpp(long int *const *a, long int *const *b)
{ LIBSIMPLE_CMP_REV_NUMPP__(long int, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_rev_longp(long int *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_rev_longpp); }
+/* @since 1.6 */
inline int libsimple_cmp_nul_rev_longpp(long int *const *a, long int *const *b)
{ LIBSIMPLE_CMP_NUL_REV_NUMPP__(long int, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_nul_rev_longp(long int *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_nul_rev_longpp); }
+/* @since 1.6 */
inline int libsimple_cmp_rev_longpp_nul(long int *const *a, long int *const *b)
{ LIBSIMPLE_CMP_REV_NUMPP_NUL__(long int, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_rev_longp_nul(long int *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_rev_longpp_nul); }
+/* @since 1.6 */
inline int libsimple_cmp_ulongp(const unsigned long int *a, const unsigned long int *b)
{ LIBSIMPLE_CMP_NUMP__(unsigned long int, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_ulong(unsigned long int base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_ulongp); }
+/* @since 1.6 */
inline int libsimple_cmp_ulongpp(unsigned long int *const *a, unsigned long int *const *b)
{ LIBSIMPLE_CMP_NUMPP__(unsigned long int, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_ulongp(unsigned long int *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_ulongpp); }
+/* @since 1.6 */
inline int libsimple_cmp_nul_ulongpp(unsigned long int *const *a, unsigned long int *const *b)
{ LIBSIMPLE_CMP_NUL_NUMPP__(unsigned long int, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_nul_ulongp(unsigned long int *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_nul_ulongpp); }
+/* @since 1.6 */
inline int libsimple_cmp_ulongpp_nul(unsigned long int *const *a, unsigned long int *const *b)
{ LIBSIMPLE_CMP_NUMPP_NUL__(unsigned long int, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_ulongp_nul(unsigned long int *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_ulongpp_nul); }
+/* @since 1.6 */
inline int libsimple_cmp_rev_ulongp(const unsigned long int *a, const unsigned long int *b)
{ LIBSIMPLE_CMP_REV_NUMP__(unsigned long int, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_rev_ulong(unsigned long int base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_rev_ulongp); }
+/* @since 1.6 */
inline int libsimple_cmp_rev_ulongpp(unsigned long int *const *a, unsigned long int *const *b)
{ LIBSIMPLE_CMP_REV_NUMPP__(unsigned long int, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_rev_ulongp(unsigned long int *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_rev_ulongpp); }
+/* @since 1.6 */
inline int libsimple_cmp_nul_rev_ulongpp(unsigned long int *const *a, unsigned long int *const *b)
{ LIBSIMPLE_CMP_NUL_REV_NUMPP__(unsigned long int, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_nul_rev_ulongp(unsigned long int *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_nul_rev_ulongpp); }
+/* @since 1.6 */
inline int libsimple_cmp_rev_ulongpp_nul(unsigned long int *const *a, unsigned long int *const *b)
{ LIBSIMPLE_CMP_REV_NUMPP_NUL__(unsigned long int, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_rev_ulongp_nul(unsigned long int *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_rev_ulongpp_nul); }
+/* @since 1.6 */
inline int libsimple_cmp_llongp(const long long int *a, const long long int *b)
{ LIBSIMPLE_CMP_NUMP__(long long int, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_llong(long long int base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_llongp); }
+/* @since 1.6 */
inline int libsimple_cmp_llongpp(long long int *const *a, long long int *const *b)
{ LIBSIMPLE_CMP_NUMPP__(long long int, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_llongp(long long int *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_llongpp); }
+/* @since 1.6 */
inline int libsimple_cmp_nul_llongpp(long long int *const *a, long long int *const *b)
{ LIBSIMPLE_CMP_NUL_NUMPP__(long long int, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_nul_llongp(long long int *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_nul_llongpp); }
+/* @since 1.6 */
inline int libsimple_cmp_llongpp_nul(long long int *const *a, long long int *const *b)
{ LIBSIMPLE_CMP_NUMPP_NUL__(long long int, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_llongp_nul(long long int *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_llongpp_nul); }
+/* @since 1.6 */
inline int libsimple_cmp_rev_llongp(const long long int *a, const long long int *b)
{ LIBSIMPLE_CMP_REV_NUMP__(long long int, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_rev_llong(long long int base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_rev_llongp); }
+/* @since 1.6 */
inline int libsimple_cmp_rev_llongpp(long long int *const *a, long long int *const *b)
{ LIBSIMPLE_CMP_REV_NUMPP__(long long int, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_rev_llongp(long long int *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_rev_llongpp); }
+/* @since 1.6 */
inline int libsimple_cmp_nul_rev_llongpp(long long int *const *a, long long int *const *b)
{ LIBSIMPLE_CMP_NUL_REV_NUMPP__(long long int, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_nul_rev_llongp(long long int *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_nul_rev_llongpp); }
+/* @since 1.6 */
inline int libsimple_cmp_rev_llongpp_nul(long long int *const *a, long long int *const *b)
{ LIBSIMPLE_CMP_REV_NUMPP_NUL__(long long int, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_rev_llongp_nul(long long int *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_rev_llongpp_nul); }
+/* @since 1.6 */
inline int libsimple_cmp_ullongp(const unsigned long long int *a, const unsigned long long int *b)
{ LIBSIMPLE_CMP_NUMP__(unsigned long long int, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_ullong(unsigned long long int base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_ullongp); }
+/* @since 1.6 */
inline int libsimple_cmp_ullongpp(unsigned long long int *const *a, unsigned long long int *const *b)
{ LIBSIMPLE_CMP_NUMPP__(unsigned long long int, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_ullongp(unsigned long long int *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_ullongpp); }
+/* @since 1.6 */
inline int libsimple_cmp_nul_ullongpp(unsigned long long int *const *a, unsigned long long int *const *b)
{ LIBSIMPLE_CMP_NUL_NUMPP__(unsigned long long int, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_nul_ullongp(unsigned long long int *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_nul_ullongpp); }
+/* @since 1.6 */
inline int libsimple_cmp_ullongpp_nul(unsigned long long int *const *a, unsigned long long int *const *b)
{ LIBSIMPLE_CMP_NUMPP_NUL__(unsigned long long int, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_ullongp_nul(unsigned long long int *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_ullongpp_nul); }
+/* @since 1.6 */
inline int libsimple_cmp_rev_ullongp(const unsigned long long int *a, const unsigned long long int *b)
{ LIBSIMPLE_CMP_REV_NUMP__(unsigned long long int, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_rev_ullong(unsigned long long int base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_rev_ullongp); }
+/* @since 1.6 */
inline int libsimple_cmp_rev_ullongpp(unsigned long long int *const *a, unsigned long long int *const *b)
{ LIBSIMPLE_CMP_REV_NUMPP__(unsigned long long int, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_rev_ullongp(unsigned long long int *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_rev_ullongpp); }
+/* @since 1.6 */
inline int libsimple_cmp_nul_rev_ullongpp(unsigned long long int *const *a, unsigned long long int *const *b)
{ LIBSIMPLE_CMP_NUL_REV_NUMPP__(unsigned long long int, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_nul_rev_ullongp(unsigned long long int *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_nul_rev_ullongpp); }
+/* @since 1.6 */
inline int libsimple_cmp_rev_ullongpp_nul(unsigned long long int *const *a, unsigned long long int *const *b)
{ LIBSIMPLE_CMP_REV_NUMPP_NUL__(unsigned long long int, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_rev_ullongp_nul(unsigned long long int *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_rev_ullongpp_nul); }
+/* @since 1.6 */
inline int libsimple_cmp_int8p(const int8_t *a, const int8_t *b)
{ LIBSIMPLE_CMP_NUMP__(int8_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_int8(int8_t base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_int8p); }
+/* @since 1.6 */
inline int libsimple_cmp_int8pp(int8_t *const *a, int8_t *const *b)
{ LIBSIMPLE_CMP_NUMPP__(int8_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_int8p(int8_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_int8pp); }
+/* @since 1.6 */
inline int libsimple_cmp_nul_int8pp(int8_t *const *a, int8_t *const *b)
{ LIBSIMPLE_CMP_NUL_NUMPP__(int8_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_nul_int8p(int8_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_nul_int8pp); }
+/* @since 1.6 */
inline int libsimple_cmp_int8pp_nul(int8_t *const *a, int8_t *const *b)
{ LIBSIMPLE_CMP_NUMPP_NUL__(int8_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_int8p_nul(int8_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_int8pp_nul); }
+/* @since 1.6 */
inline int libsimple_cmp_rev_int8p(const int8_t *a, const int8_t *b)
{ LIBSIMPLE_CMP_REV_NUMP__(int8_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_rev_int8(int8_t base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_rev_int8p); }
+/* @since 1.6 */
inline int libsimple_cmp_rev_int8pp(int8_t *const *a, int8_t *const *b)
{ LIBSIMPLE_CMP_REV_NUMPP__(int8_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_rev_int8p(int8_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_rev_int8pp); }
+/* @since 1.6 */
inline int libsimple_cmp_nul_rev_int8pp(int8_t *const *a, int8_t *const *b)
{ LIBSIMPLE_CMP_NUL_REV_NUMPP__(int8_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_nul_rev_int8p(int8_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_nul_rev_int8pp); }
+/* @since 1.6 */
inline int libsimple_cmp_rev_int8pp_nul(int8_t *const *a, int8_t *const *b)
{ LIBSIMPLE_CMP_REV_NUMPP_NUL__(int8_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_rev_int8p_nul(int8_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_rev_int8pp_nul); }
+/* @since 1.6 */
inline int libsimple_cmp_uint8p(const uint8_t *a, const uint8_t *b)
{ LIBSIMPLE_CMP_NUMP__(uint8_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_uint8(uint8_t base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_uint8p); }
+/* @since 1.6 */
inline int libsimple_cmp_uint8pp(uint8_t *const *a, uint8_t *const *b)
{ LIBSIMPLE_CMP_NUMPP__(uint8_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_uint8p(uint8_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_uint8pp); }
+/* @since 1.6 */
inline int libsimple_cmp_nul_uint8pp(uint8_t *const *a, uint8_t *const *b)
{ LIBSIMPLE_CMP_NUL_NUMPP__(uint8_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_nul_uint8p(uint8_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_nul_uint8pp); }
+/* @since 1.6 */
inline int libsimple_cmp_uint8pp_nul(uint8_t *const *a, uint8_t *const *b)
{ LIBSIMPLE_CMP_NUMPP_NUL__(uint8_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_uint8p_nul(uint8_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_uint8pp_nul); }
+/* @since 1.6 */
inline int libsimple_cmp_rev_uint8p(const uint8_t *a, const uint8_t *b)
{ LIBSIMPLE_CMP_REV_NUMP__(uint8_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_rev_uint8(uint8_t base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_rev_uint8p); }
+/* @since 1.6 */
inline int libsimple_cmp_rev_uint8pp(uint8_t *const *a, uint8_t *const *b)
{ LIBSIMPLE_CMP_REV_NUMPP__(uint8_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_rev_uint8p(uint8_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_rev_uint8pp); }
+/* @since 1.6 */
inline int libsimple_cmp_nul_rev_uint8pp(uint8_t *const *a, uint8_t *const *b)
{ LIBSIMPLE_CMP_NUL_REV_NUMPP__(uint8_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_nul_rev_uint8p(uint8_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_nul_rev_uint8pp); }
+/* @since 1.6 */
inline int libsimple_cmp_rev_uint8pp_nul(uint8_t *const *a, uint8_t *const *b)
{ LIBSIMPLE_CMP_REV_NUMPP_NUL__(uint8_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_rev_uint8p_nul(uint8_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_rev_uint8pp_nul); }
+/* @since 1.6 */
inline int libsimple_cmp_int16p(const int16_t *a, const int16_t *b)
{ LIBSIMPLE_CMP_NUMP__(int16_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_int16(int16_t base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_int16p); }
+/* @since 1.6 */
inline int libsimple_cmp_int16pp(int16_t *const *a, int16_t *const *b)
{ LIBSIMPLE_CMP_NUMPP__(int16_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_int16p(int16_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_int16pp); }
+/* @since 1.6 */
inline int libsimple_cmp_nul_int16pp(int16_t *const *a, int16_t *const *b)
{ LIBSIMPLE_CMP_NUL_NUMPP__(int16_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_nul_int16p(int16_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_nul_int16pp); }
+/* @since 1.6 */
inline int libsimple_cmp_int16pp_nul(int16_t *const *a, int16_t *const *b)
{ LIBSIMPLE_CMP_NUMPP_NUL__(int16_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_int16p_nul(int16_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_int16pp_nul); }
+/* @since 1.6 */
inline int libsimple_cmp_rev_int16p(const int16_t *a, const int16_t *b)
{ LIBSIMPLE_CMP_REV_NUMP__(int16_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_rev_int16(int16_t base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_rev_int16p); }
+/* @since 1.6 */
inline int libsimple_cmp_rev_int16pp(int16_t *const *a, int16_t *const *b)
{ LIBSIMPLE_CMP_REV_NUMPP__(int16_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_rev_int16p(int16_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_rev_int16pp); }
+/* @since 1.6 */
inline int libsimple_cmp_nul_rev_int16pp(int16_t *const *a, int16_t *const *b)
{ LIBSIMPLE_CMP_NUL_REV_NUMPP__(int16_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_nul_rev_int16p(int16_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_nul_rev_int16pp); }
+/* @since 1.6 */
inline int libsimple_cmp_rev_int16pp_nul(int16_t *const *a, int16_t *const *b)
{ LIBSIMPLE_CMP_REV_NUMPP_NUL__(int16_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_rev_int16p_nul(int16_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_rev_int16pp_nul); }
+/* @since 1.6 */
inline int libsimple_cmp_uint16p(const uint16_t *a, const uint16_t *b)
{ LIBSIMPLE_CMP_NUMP__(uint16_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_uint16(uint16_t base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_uint16p); }
+/* @since 1.6 */
inline int libsimple_cmp_uint16pp(uint16_t *const *a, uint16_t *const *b)
{ LIBSIMPLE_CMP_NUMPP__(uint16_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_uint16p(uint16_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_uint16pp); }
+/* @since 1.6 */
inline int libsimple_cmp_nul_uint16pp(uint16_t *const *a, uint16_t *const *b)
{ LIBSIMPLE_CMP_NUL_NUMPP__(uint16_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_nul_uint16p(uint16_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_nul_uint16pp); }
+/* @since 1.6 */
inline int libsimple_cmp_uint16pp_nul(uint16_t *const *a, uint16_t *const *b)
{ LIBSIMPLE_CMP_NUMPP_NUL__(uint16_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_uint16p_nul(uint16_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_uint16pp_nul); }
+/* @since 1.6 */
inline int libsimple_cmp_rev_uint16p(const uint16_t *a, const uint16_t *b)
{ LIBSIMPLE_CMP_REV_NUMP__(uint16_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_rev_uint16(uint16_t base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_rev_uint16p); }
+/* @since 1.6 */
inline int libsimple_cmp_rev_uint16pp(uint16_t *const *a, uint16_t *const *b)
{ LIBSIMPLE_CMP_REV_NUMPP__(uint16_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_rev_uint16p(uint16_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_rev_uint16pp); }
+/* @since 1.6 */
inline int libsimple_cmp_nul_rev_uint16pp(uint16_t *const *a, uint16_t *const *b)
{ LIBSIMPLE_CMP_NUL_REV_NUMPP__(uint16_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_nul_rev_uint16p(uint16_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_nul_rev_uint16pp); }
+/* @since 1.6 */
inline int libsimple_cmp_rev_uint16pp_nul(uint16_t *const *a, uint16_t *const *b)
{ LIBSIMPLE_CMP_REV_NUMPP_NUL__(uint16_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_rev_uint16p_nul(uint16_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_rev_uint16pp_nul); }
+/* @since 1.6 */
inline int libsimple_cmp_int32p(const int32_t *a, const int32_t *b)
{ LIBSIMPLE_CMP_NUMP__(int32_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_int32(int32_t base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_int32p); }
+/* @since 1.6 */
inline int libsimple_cmp_int32pp(int32_t *const *a, int32_t *const *b)
{ LIBSIMPLE_CMP_NUMPP__(int32_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_int32p(int32_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_int32pp); }
+/* @since 1.6 */
inline int libsimple_cmp_nul_int32pp(int32_t *const *a, int32_t *const *b)
{ LIBSIMPLE_CMP_NUL_NUMPP__(int32_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_nul_int32p(int32_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_nul_int32pp); }
+/* @since 1.6 */
inline int libsimple_cmp_int32pp_nul(int32_t *const *a, int32_t *const *b)
{ LIBSIMPLE_CMP_NUMPP_NUL__(int32_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_int32p_nul(int32_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_int32pp_nul); }
+/* @since 1.6 */
inline int libsimple_cmp_rev_int32p(const int32_t *a, const int32_t *b)
{ LIBSIMPLE_CMP_REV_NUMP__(int32_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_rev_int32(int32_t base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_rev_int32p); }
+/* @since 1.6 */
inline int libsimple_cmp_rev_int32pp(int32_t *const *a, int32_t *const *b)
{ LIBSIMPLE_CMP_REV_NUMPP__(int32_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_rev_int32p(int32_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_rev_int32pp); }
+/* @since 1.6 */
inline int libsimple_cmp_nul_rev_int32pp(int32_t *const *a, int32_t *const *b)
{ LIBSIMPLE_CMP_NUL_REV_NUMPP__(int32_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_nul_rev_int32p(int32_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_nul_rev_int32pp); }
+/* @since 1.6 */
inline int libsimple_cmp_rev_int32pp_nul(int32_t *const *a, int32_t *const *b)
{ LIBSIMPLE_CMP_REV_NUMPP_NUL__(int32_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_rev_int32p_nul(int32_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_rev_int32pp_nul); }
+/* @since 1.6 */
inline int libsimple_cmp_uint32p(const uint32_t *a, const uint32_t *b)
{ LIBSIMPLE_CMP_NUMP__(uint32_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_uint32(uint32_t base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_uint32p); }
+/* @since 1.6 */
inline int libsimple_cmp_uint32pp(uint32_t *const *a, uint32_t *const *b)
{ LIBSIMPLE_CMP_NUMPP__(uint32_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_uint32p(uint32_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_uint32pp); }
+/* @since 1.6 */
inline int libsimple_cmp_nul_uint32pp(uint32_t *const *a, uint32_t *const *b)
{ LIBSIMPLE_CMP_NUL_NUMPP__(uint32_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_nul_uint32p(uint32_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_nul_uint32pp); }
+/* @since 1.6 */
inline int libsimple_cmp_uint32pp_nul(uint32_t *const *a, uint32_t *const *b)
{ LIBSIMPLE_CMP_NUMPP_NUL__(uint32_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_uint32p_nul(uint32_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_uint32pp_nul); }
+/* @since 1.6 */
inline int libsimple_cmp_rev_uint32p(const uint32_t *a, const uint32_t *b)
{ LIBSIMPLE_CMP_REV_NUMP__(uint32_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_rev_uint32(uint32_t base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_rev_uint32p); }
+/* @since 1.6 */
inline int libsimple_cmp_rev_uint32pp(uint32_t *const *a, uint32_t *const *b)
{ LIBSIMPLE_CMP_REV_NUMPP__(uint32_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_rev_uint32p(uint32_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_rev_uint32pp); }
+/* @since 1.6 */
inline int libsimple_cmp_nul_rev_uint32pp(uint32_t *const *a, uint32_t *const *b)
{ LIBSIMPLE_CMP_NUL_REV_NUMPP__(uint32_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_nul_rev_uint32p(uint32_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_nul_rev_uint32pp); }
+/* @since 1.6 */
inline int libsimple_cmp_rev_uint32pp_nul(uint32_t *const *a, uint32_t *const *b)
{ LIBSIMPLE_CMP_REV_NUMPP_NUL__(uint32_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_rev_uint32p_nul(uint32_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_rev_uint32pp_nul); }
+/* @since 1.6 */
inline int libsimple_cmp_int64p(const int64_t *a, const int64_t *b)
{ LIBSIMPLE_CMP_NUMP__(int64_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_int64(int64_t base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_int64p); }
+/* @since 1.6 */
inline int libsimple_cmp_int64pp(int64_t *const *a, int64_t *const *b)
{ LIBSIMPLE_CMP_NUMPP__(int64_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_int64p(int64_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_int64pp); }
+/* @since 1.6 */
inline int libsimple_cmp_nul_int64pp(int64_t *const *a, int64_t *const *b)
{ LIBSIMPLE_CMP_NUL_NUMPP__(int64_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_nul_int64p(int64_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_nul_int64pp); }
+/* @since 1.6 */
inline int libsimple_cmp_int64pp_nul(int64_t *const *a, int64_t *const *b)
{ LIBSIMPLE_CMP_NUMPP_NUL__(int64_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_int64p_nul(int64_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_int64pp_nul); }
+/* @since 1.6 */
inline int libsimple_cmp_rev_int64p(const int64_t *a, const int64_t *b)
{ LIBSIMPLE_CMP_REV_NUMP__(int64_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_rev_int64(int64_t base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_rev_int64p); }
+/* @since 1.6 */
inline int libsimple_cmp_rev_int64pp(int64_t *const *a, int64_t *const *b)
{ LIBSIMPLE_CMP_REV_NUMPP__(int64_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_rev_int64p(int64_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_rev_int64pp); }
+/* @since 1.6 */
inline int libsimple_cmp_nul_rev_int64pp(int64_t *const *a, int64_t *const *b)
{ LIBSIMPLE_CMP_NUL_REV_NUMPP__(int64_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_nul_rev_int64p(int64_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_nul_rev_int64pp); }
+/* @since 1.6 */
inline int libsimple_cmp_rev_int64pp_nul(int64_t *const *a, int64_t *const *b)
{ LIBSIMPLE_CMP_REV_NUMPP_NUL__(int64_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_rev_int64p_nul(int64_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_rev_int64pp_nul); }
+/* @since 1.6 */
inline int libsimple_cmp_uint64p(const uint64_t *a, const uint64_t *b)
{ LIBSIMPLE_CMP_NUMP__(uint64_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_uint64(uint64_t base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_uint64p); }
+/* @since 1.6 */
inline int libsimple_cmp_uint64pp(uint64_t *const *a, uint64_t *const *b)
{ LIBSIMPLE_CMP_NUMPP__(uint64_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_uint64p(uint64_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_uint64pp); }
+/* @since 1.6 */
inline int libsimple_cmp_nul_uint64pp(uint64_t *const *a, uint64_t *const *b)
{ LIBSIMPLE_CMP_NUL_NUMPP__(uint64_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_nul_uint64p(uint64_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_nul_uint64pp); }
+/* @since 1.6 */
inline int libsimple_cmp_uint64pp_nul(uint64_t *const *a, uint64_t *const *b)
{ LIBSIMPLE_CMP_NUMPP_NUL__(uint64_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_uint64p_nul(uint64_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_uint64pp_nul); }
+/* @since 1.6 */
inline int libsimple_cmp_rev_uint64p(const uint64_t *a, const uint64_t *b)
{ LIBSIMPLE_CMP_REV_NUMP__(uint64_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_rev_uint64(uint64_t base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_rev_uint64p); }
+/* @since 1.6 */
inline int libsimple_cmp_rev_uint64pp(uint64_t *const *a, uint64_t *const *b)
{ LIBSIMPLE_CMP_REV_NUMPP__(uint64_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_rev_uint64p(uint64_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_rev_uint64pp); }
+/* @since 1.6 */
inline int libsimple_cmp_nul_rev_uint64pp(uint64_t *const *a, uint64_t *const *b)
{ LIBSIMPLE_CMP_NUL_REV_NUMPP__(uint64_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_nul_rev_uint64p(uint64_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_nul_rev_uint64pp); }
+/* @since 1.6 */
inline int libsimple_cmp_rev_uint64pp_nul(uint64_t *const *a, uint64_t *const *b)
{ LIBSIMPLE_CMP_REV_NUMPP_NUL__(uint64_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_rev_uint64p_nul(uint64_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_rev_uint64pp_nul); }
+/* @since 1.6 */
inline int libsimple_cmp_int_least8p(const int_least8_t *a, const int_least8_t *b)
{ LIBSIMPLE_CMP_NUMP__(int_least8_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_int_least8(int_least8_t base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_int_least8p); }
+/* @since 1.6 */
inline int libsimple_cmp_int_least8pp(int_least8_t *const *a, int_least8_t *const *b)
{ LIBSIMPLE_CMP_NUMPP__(int_least8_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_int_least8p(int_least8_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_int_least8pp); }
+/* @since 1.6 */
inline int libsimple_cmp_nul_int_least8pp(int_least8_t *const *a, int_least8_t *const *b)
{ LIBSIMPLE_CMP_NUL_NUMPP__(int_least8_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_nul_int_least8p(int_least8_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_nul_int_least8pp); }
+/* @since 1.6 */
inline int libsimple_cmp_int_least8pp_nul(int_least8_t *const *a, int_least8_t *const *b)
{ LIBSIMPLE_CMP_NUMPP_NUL__(int_least8_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_int_least8p_nul(int_least8_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_int_least8pp_nul); }
+/* @since 1.6 */
inline int libsimple_cmp_rev_int_least8p(const int_least8_t *a, const int_least8_t *b)
{ LIBSIMPLE_CMP_REV_NUMP__(int_least8_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_rev_int_least8(int_least8_t base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_rev_int_least8p); }
+/* @since 1.6 */
inline int libsimple_cmp_rev_int_least8pp(int_least8_t *const *a, int_least8_t *const *b)
{ LIBSIMPLE_CMP_REV_NUMPP__(int_least8_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_rev_int_least8p(int_least8_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_rev_int_least8pp); }
+/* @since 1.6 */
inline int libsimple_cmp_nul_rev_int_least8pp(int_least8_t *const *a, int_least8_t *const *b)
{ LIBSIMPLE_CMP_NUL_REV_NUMPP__(int_least8_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_nul_rev_int_least8p(int_least8_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_nul_rev_int_least8pp); }
+/* @since 1.6 */
inline int libsimple_cmp_rev_int_least8pp_nul(int_least8_t *const *a, int_least8_t *const *b)
{ LIBSIMPLE_CMP_REV_NUMPP_NUL__(int_least8_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_rev_int_least8p_nul(int_least8_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_rev_int_least8pp_nul); }
+/* @since 1.6 */
inline int libsimple_cmp_uint_least8p(const uint_least8_t *a, const uint_least8_t *b)
{ LIBSIMPLE_CMP_NUMP__(uint_least8_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_uint_least8(uint_least8_t base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_uint_least8p); }
+/* @since 1.6 */
inline int libsimple_cmp_uint_least8pp(uint_least8_t *const *a, uint_least8_t *const *b)
{ LIBSIMPLE_CMP_NUMPP__(uint_least8_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_uint_least8p(uint_least8_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_uint_least8pp); }
+/* @since 1.6 */
inline int libsimple_cmp_nul_uint_least8pp(uint_least8_t *const *a, uint_least8_t *const *b)
{ LIBSIMPLE_CMP_NUL_NUMPP__(uint_least8_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_nul_uint_least8p(uint_least8_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_nul_uint_least8pp); }
+/* @since 1.6 */
inline int libsimple_cmp_uint_least8pp_nul(uint_least8_t *const *a, uint_least8_t *const *b)
{ LIBSIMPLE_CMP_NUMPP_NUL__(uint_least8_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_uint_least8p_nul(uint_least8_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_uint_least8pp_nul); }
+/* @since 1.6 */
inline int libsimple_cmp_rev_uint_least8p(const uint_least8_t *a, const uint_least8_t *b)
{ LIBSIMPLE_CMP_REV_NUMP__(uint_least8_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_rev_uint_least8(uint_least8_t base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_rev_uint_least8p); }
+/* @since 1.6 */
inline int libsimple_cmp_rev_uint_least8pp(uint_least8_t *const *a, uint_least8_t *const *b)
{ LIBSIMPLE_CMP_REV_NUMPP__(uint_least8_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_rev_uint_least8p(uint_least8_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_rev_uint_least8pp); }
+/* @since 1.6 */
inline int libsimple_cmp_nul_rev_uint_least8pp(uint_least8_t *const *a, uint_least8_t *const *b)
{ LIBSIMPLE_CMP_NUL_REV_NUMPP__(uint_least8_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_nul_rev_uint_least8p(uint_least8_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_nul_rev_uint_least8pp); }
+/* @since 1.6 */
inline int libsimple_cmp_rev_uint_least8pp_nul(uint_least8_t *const *a, uint_least8_t *const *b)
{ LIBSIMPLE_CMP_REV_NUMPP_NUL__(uint_least8_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_rev_uint_least8p_nul(uint_least8_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_rev_uint_least8pp_nul); }
+/* @since 1.6 */
inline int libsimple_cmp_int_least16p(const int_least16_t *a, const int_least16_t *b)
{ LIBSIMPLE_CMP_NUMP__(int_least16_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_int_least16(int_least16_t base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_int_least16p); }
+/* @since 1.6 */
inline int libsimple_cmp_int_least16pp(int_least16_t *const *a, int_least16_t *const *b)
{ LIBSIMPLE_CMP_NUMPP__(int_least16_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_int_least16p(int_least16_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_int_least16pp); }
+/* @since 1.6 */
inline int libsimple_cmp_nul_int_least16pp(int_least16_t *const *a, int_least16_t *const *b)
{ LIBSIMPLE_CMP_NUL_NUMPP__(int_least16_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_nul_int_least16p(int_least16_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_nul_int_least16pp); }
+/* @since 1.6 */
inline int libsimple_cmp_int_least16pp_nul(int_least16_t *const *a, int_least16_t *const *b)
{ LIBSIMPLE_CMP_NUMPP_NUL__(int_least16_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_int_least16p_nul(int_least16_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_int_least16pp_nul); }
+/* @since 1.6 */
inline int libsimple_cmp_rev_int_least16p(const int_least16_t *a, const int_least16_t *b)
{ LIBSIMPLE_CMP_REV_NUMP__(int_least16_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_rev_int_least16(int_least16_t base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_rev_int_least16p); }
+/* @since 1.6 */
inline int libsimple_cmp_rev_int_least16pp(int_least16_t *const *a, int_least16_t *const *b)
{ LIBSIMPLE_CMP_REV_NUMPP__(int_least16_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_rev_int_least16p(int_least16_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_rev_int_least16pp); }
+/* @since 1.6 */
inline int libsimple_cmp_nul_rev_int_least16pp(int_least16_t *const *a, int_least16_t *const *b)
{ LIBSIMPLE_CMP_NUL_REV_NUMPP__(int_least16_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_nul_rev_int_least16p(int_least16_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_nul_rev_int_least16pp); }
+/* @since 1.6 */
inline int libsimple_cmp_rev_int_least16pp_nul(int_least16_t *const *a, int_least16_t *const *b)
{ LIBSIMPLE_CMP_REV_NUMPP_NUL__(int_least16_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_rev_int_least16p_nul(int_least16_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_rev_int_least16pp_nul); }
+/* @since 1.6 */
inline int libsimple_cmp_uint_least16p(const uint_least16_t *a, const uint_least16_t *b)
{ LIBSIMPLE_CMP_NUMP__(uint_least16_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_uint_least16(uint_least16_t base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_uint_least16p); }
+/* @since 1.6 */
inline int libsimple_cmp_uint_least16pp(uint_least16_t *const *a, uint_least16_t *const *b)
{ LIBSIMPLE_CMP_NUMPP__(uint_least16_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_uint_least16p(uint_least16_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_uint_least16pp); }
+/* @since 1.6 */
inline int libsimple_cmp_nul_uint_least16pp(uint_least16_t *const *a, uint_least16_t *const *b)
{ LIBSIMPLE_CMP_NUL_NUMPP__(uint_least16_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_nul_uint_least16p(uint_least16_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_nul_uint_least16pp); }
+/* @since 1.6 */
inline int libsimple_cmp_uint_least16pp_nul(uint_least16_t *const *a, uint_least16_t *const *b)
{ LIBSIMPLE_CMP_NUMPP_NUL__(uint_least16_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_uint_least16p_nul(uint_least16_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_uint_least16pp_nul); }
+/* @since 1.6 */
inline int libsimple_cmp_rev_uint_least16p(const uint_least16_t *a, const uint_least16_t *b)
{ LIBSIMPLE_CMP_REV_NUMP__(uint_least16_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_rev_uint_least16(uint_least16_t base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_rev_uint_least16p); }
+/* @since 1.6 */
inline int libsimple_cmp_rev_uint_least16pp(uint_least16_t *const *a, uint_least16_t *const *b)
{ LIBSIMPLE_CMP_REV_NUMPP__(uint_least16_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_rev_uint_least16p(uint_least16_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_rev_uint_least16pp); }
+/* @since 1.6 */
inline int libsimple_cmp_nul_rev_uint_least16pp(uint_least16_t *const *a, uint_least16_t *const *b)
{ LIBSIMPLE_CMP_NUL_REV_NUMPP__(uint_least16_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_nul_rev_uint_least16p(uint_least16_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_nul_rev_uint_least16pp); }
+/* @since 1.6 */
inline int libsimple_cmp_rev_uint_least16pp_nul(uint_least16_t *const *a, uint_least16_t *const *b)
{ LIBSIMPLE_CMP_REV_NUMPP_NUL__(uint_least16_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_rev_uint_least16p_nul(uint_least16_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_rev_uint_least16pp_nul); }
+/* @since 1.6 */
inline int libsimple_cmp_int_least32p(const int_least32_t *a, const int_least32_t *b)
{ LIBSIMPLE_CMP_NUMP__(int_least32_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_int_least32(int_least32_t base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_int_least32p); }
+/* @since 1.6 */
inline int libsimple_cmp_int_least32pp(int_least32_t *const *a, int_least32_t *const *b)
{ LIBSIMPLE_CMP_NUMPP__(int_least32_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_int_least32p(int_least32_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_int_least32pp); }
+/* @since 1.6 */
inline int libsimple_cmp_nul_int_least32pp(int_least32_t *const *a, int_least32_t *const *b)
{ LIBSIMPLE_CMP_NUL_NUMPP__(int_least32_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_nul_int_least32p(int_least32_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_nul_int_least32pp); }
+/* @since 1.6 */
inline int libsimple_cmp_int_least32pp_nul(int_least32_t *const *a, int_least32_t *const *b)
{ LIBSIMPLE_CMP_NUMPP_NUL__(int_least32_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_int_least32p_nul(int_least32_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_int_least32pp_nul); }
+/* @since 1.6 */
inline int libsimple_cmp_rev_int_least32p(const int_least32_t *a, const int_least32_t *b)
{ LIBSIMPLE_CMP_REV_NUMP__(int_least32_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_rev_int_least32(int_least32_t base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_rev_int_least32p); }
+/* @since 1.6 */
inline int libsimple_cmp_rev_int_least32pp(int_least32_t *const *a, int_least32_t *const *b)
{ LIBSIMPLE_CMP_REV_NUMPP__(int_least32_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_rev_int_least32p(int_least32_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_rev_int_least32pp); }
+/* @since 1.6 */
inline int libsimple_cmp_nul_rev_int_least32pp(int_least32_t *const *a, int_least32_t *const *b)
{ LIBSIMPLE_CMP_NUL_REV_NUMPP__(int_least32_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_nul_rev_int_least32p(int_least32_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_nul_rev_int_least32pp); }
+/* @since 1.6 */
inline int libsimple_cmp_rev_int_least32pp_nul(int_least32_t *const *a, int_least32_t *const *b)
{ LIBSIMPLE_CMP_REV_NUMPP_NUL__(int_least32_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_rev_int_least32p_nul(int_least32_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_rev_int_least32pp_nul); }
+/* @since 1.6 */
inline int libsimple_cmp_uint_least32p(const uint_least32_t *a, const uint_least32_t *b)
{ LIBSIMPLE_CMP_NUMP__(uint_least32_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_uint_least32(uint_least32_t base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_uint_least32p); }
+/* @since 1.6 */
inline int libsimple_cmp_uint_least32pp(uint_least32_t *const *a, uint_least32_t *const *b)
{ LIBSIMPLE_CMP_NUMPP__(uint_least32_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_uint_least32p(uint_least32_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_uint_least32pp); }
+/* @since 1.6 */
inline int libsimple_cmp_nul_uint_least32pp(uint_least32_t *const *a, uint_least32_t *const *b)
{ LIBSIMPLE_CMP_NUL_NUMPP__(uint_least32_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_nul_uint_least32p(uint_least32_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_nul_uint_least32pp); }
+/* @since 1.6 */
inline int libsimple_cmp_uint_least32pp_nul(uint_least32_t *const *a, uint_least32_t *const *b)
{ LIBSIMPLE_CMP_NUMPP_NUL__(uint_least32_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_uint_least32p_nul(uint_least32_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_uint_least32pp_nul); }
+/* @since 1.6 */
inline int libsimple_cmp_rev_uint_least32p(const uint_least32_t *a, const uint_least32_t *b)
{ LIBSIMPLE_CMP_REV_NUMP__(uint_least32_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_rev_uint_least32(uint_least32_t base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_rev_uint_least32p); }
+/* @since 1.6 */
inline int libsimple_cmp_rev_uint_least32pp(uint_least32_t *const *a, uint_least32_t *const *b)
{ LIBSIMPLE_CMP_REV_NUMPP__(uint_least32_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_rev_uint_least32p(uint_least32_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_rev_uint_least32pp); }
+/* @since 1.6 */
inline int libsimple_cmp_nul_rev_uint_least32pp(uint_least32_t *const *a, uint_least32_t *const *b)
{ LIBSIMPLE_CMP_NUL_REV_NUMPP__(uint_least32_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_nul_rev_uint_least32p(uint_least32_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_nul_rev_uint_least32pp); }
+/* @since 1.6 */
inline int libsimple_cmp_rev_uint_least32pp_nul(uint_least32_t *const *a, uint_least32_t *const *b)
{ LIBSIMPLE_CMP_REV_NUMPP_NUL__(uint_least32_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_rev_uint_least32p_nul(uint_least32_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_rev_uint_least32pp_nul); }
+/* @since 1.6 */
inline int libsimple_cmp_int_least64p(const int_least64_t *a, const int_least64_t *b)
{ LIBSIMPLE_CMP_NUMP__(int_least64_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_int_least64(int_least64_t base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_int_least64p); }
+/* @since 1.6 */
inline int libsimple_cmp_int_least64pp(int_least64_t *const *a, int_least64_t *const *b)
{ LIBSIMPLE_CMP_NUMPP__(int_least64_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_int_least64p(int_least64_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_int_least64pp); }
+/* @since 1.6 */
inline int libsimple_cmp_nul_int_least64pp(int_least64_t *const *a, int_least64_t *const *b)
{ LIBSIMPLE_CMP_NUL_NUMPP__(int_least64_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_nul_int_least64p(int_least64_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_nul_int_least64pp); }
+/* @since 1.6 */
inline int libsimple_cmp_int_least64pp_nul(int_least64_t *const *a, int_least64_t *const *b)
{ LIBSIMPLE_CMP_NUMPP_NUL__(int_least64_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_int_least64p_nul(int_least64_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_int_least64pp_nul); }
+/* @since 1.6 */
inline int libsimple_cmp_rev_int_least64p(const int_least64_t *a, const int_least64_t *b)
{ LIBSIMPLE_CMP_REV_NUMP__(int_least64_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_rev_int_least64(int_least64_t base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_rev_int_least64p); }
+/* @since 1.6 */
inline int libsimple_cmp_rev_int_least64pp(int_least64_t *const *a, int_least64_t *const *b)
{ LIBSIMPLE_CMP_REV_NUMPP__(int_least64_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_rev_int_least64p(int_least64_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_rev_int_least64pp); }
+/* @since 1.6 */
inline int libsimple_cmp_nul_rev_int_least64pp(int_least64_t *const *a, int_least64_t *const *b)
{ LIBSIMPLE_CMP_NUL_REV_NUMPP__(int_least64_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_nul_rev_int_least64p(int_least64_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_nul_rev_int_least64pp); }
+/* @since 1.6 */
inline int libsimple_cmp_rev_int_least64pp_nul(int_least64_t *const *a, int_least64_t *const *b)
{ LIBSIMPLE_CMP_REV_NUMPP_NUL__(int_least64_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_rev_int_least64p_nul(int_least64_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_rev_int_least64pp_nul); }
+/* @since 1.6 */
inline int libsimple_cmp_uint_least64p(const uint_least64_t *a, const uint_least64_t *b)
{ LIBSIMPLE_CMP_NUMP__(uint_least64_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_uint_least64(uint_least64_t base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_uint_least64p); }
+/* @since 1.6 */
inline int libsimple_cmp_uint_least64pp(uint_least64_t *const *a, uint_least64_t *const *b)
{ LIBSIMPLE_CMP_NUMPP__(uint_least64_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_uint_least64p(uint_least64_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_uint_least64pp); }
+/* @since 1.6 */
inline int libsimple_cmp_nul_uint_least64pp(uint_least64_t *const *a, uint_least64_t *const *b)
{ LIBSIMPLE_CMP_NUL_NUMPP__(uint_least64_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_nul_uint_least64p(uint_least64_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_nul_uint_least64pp); }
+/* @since 1.6 */
inline int libsimple_cmp_uint_least64pp_nul(uint_least64_t *const *a, uint_least64_t *const *b)
{ LIBSIMPLE_CMP_NUMPP_NUL__(uint_least64_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_uint_least64p_nul(uint_least64_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_uint_least64pp_nul); }
+/* @since 1.6 */
inline int libsimple_cmp_rev_uint_least64p(const uint_least64_t *a, const uint_least64_t *b)
{ LIBSIMPLE_CMP_REV_NUMP__(uint_least64_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_rev_uint_least64(uint_least64_t base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_rev_uint_least64p); }
+/* @since 1.6 */
inline int libsimple_cmp_rev_uint_least64pp(uint_least64_t *const *a, uint_least64_t *const *b)
{ LIBSIMPLE_CMP_REV_NUMPP__(uint_least64_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_rev_uint_least64p(uint_least64_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_rev_uint_least64pp); }
+/* @since 1.6 */
inline int libsimple_cmp_nul_rev_uint_least64pp(uint_least64_t *const *a, uint_least64_t *const *b)
{ LIBSIMPLE_CMP_NUL_REV_NUMPP__(uint_least64_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_nul_rev_uint_least64p(uint_least64_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_nul_rev_uint_least64pp); }
+/* @since 1.6 */
inline int libsimple_cmp_rev_uint_least64pp_nul(uint_least64_t *const *a, uint_least64_t *const *b)
{ LIBSIMPLE_CMP_REV_NUMPP_NUL__(uint_least64_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_rev_uint_least64p_nul(uint_least64_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_rev_uint_least64pp_nul); }
+/* @since 1.6 */
inline int libsimple_cmp_intmaxp(const intmax_t *a, const intmax_t *b)
{ LIBSIMPLE_CMP_NUMP__(intmax_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_intmax(intmax_t base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_intmaxp); }
+/* @since 1.6 */
inline int libsimple_cmp_intmaxpp(intmax_t *const *a, intmax_t *const *b)
{ LIBSIMPLE_CMP_NUMPP__(intmax_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_intmaxp(intmax_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_intmaxpp); }
+/* @since 1.6 */
inline int libsimple_cmp_nul_intmaxpp(intmax_t *const *a, intmax_t *const *b)
{ LIBSIMPLE_CMP_NUL_NUMPP__(intmax_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_nul_intmaxp(intmax_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_nul_intmaxpp); }
+/* @since 1.6 */
inline int libsimple_cmp_intmaxpp_nul(intmax_t *const *a, intmax_t *const *b)
{ LIBSIMPLE_CMP_NUMPP_NUL__(intmax_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_intmaxp_nul(intmax_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_intmaxpp_nul); }
+/* @since 1.6 */
inline int libsimple_cmp_rev_intmaxp(const intmax_t *a, const intmax_t *b)
{ LIBSIMPLE_CMP_REV_NUMP__(intmax_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_rev_intmax(intmax_t base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_rev_intmaxp); }
+/* @since 1.6 */
inline int libsimple_cmp_rev_intmaxpp(intmax_t *const *a, intmax_t *const *b)
{ LIBSIMPLE_CMP_REV_NUMPP__(intmax_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_rev_intmaxp(intmax_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_rev_intmaxpp); }
+/* @since 1.6 */
inline int libsimple_cmp_nul_rev_intmaxpp(intmax_t *const *a, intmax_t *const *b)
{ LIBSIMPLE_CMP_NUL_REV_NUMPP__(intmax_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_nul_rev_intmaxp(intmax_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_nul_rev_intmaxpp); }
+/* @since 1.6 */
inline int libsimple_cmp_rev_intmaxpp_nul(intmax_t *const *a, intmax_t *const *b)
{ LIBSIMPLE_CMP_REV_NUMPP_NUL__(intmax_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_rev_intmaxp_nul(intmax_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_rev_intmaxpp_nul); }
+/* @since 1.6 */
inline int libsimple_cmp_uintmaxp(const uintmax_t *a, const uintmax_t *b)
{ LIBSIMPLE_CMP_NUMP__(uintmax_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_uintmax(uintmax_t base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_uintmaxp); }
+/* @since 1.6 */
inline int libsimple_cmp_uintmaxpp(uintmax_t *const *a, uintmax_t *const *b)
{ LIBSIMPLE_CMP_NUMPP__(uintmax_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_uintmaxp(uintmax_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_uintmaxpp); }
+/* @since 1.6 */
inline int libsimple_cmp_nul_uintmaxpp(uintmax_t *const *a, uintmax_t *const *b)
{ LIBSIMPLE_CMP_NUL_NUMPP__(uintmax_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_nul_uintmaxp(uintmax_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_nul_uintmaxpp); }
+/* @since 1.6 */
inline int libsimple_cmp_uintmaxpp_nul(uintmax_t *const *a, uintmax_t *const *b)
{ LIBSIMPLE_CMP_NUMPP_NUL__(uintmax_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_uintmaxp_nul(uintmax_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_uintmaxpp_nul); }
+/* @since 1.6 */
inline int libsimple_cmp_rev_uintmaxp(const uintmax_t *a, const uintmax_t *b)
{ LIBSIMPLE_CMP_REV_NUMP__(uintmax_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_rev_uintmax(uintmax_t base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_rev_uintmaxp); }
+/* @since 1.6 */
inline int libsimple_cmp_rev_uintmaxpp(uintmax_t *const *a, uintmax_t *const *b)
{ LIBSIMPLE_CMP_REV_NUMPP__(uintmax_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_rev_uintmaxp(uintmax_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_rev_uintmaxpp); }
+/* @since 1.6 */
inline int libsimple_cmp_nul_rev_uintmaxpp(uintmax_t *const *a, uintmax_t *const *b)
{ LIBSIMPLE_CMP_NUL_REV_NUMPP__(uintmax_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_nul_rev_uintmaxp(uintmax_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_nul_rev_uintmaxpp); }
+/* @since 1.6 */
inline int libsimple_cmp_rev_uintmaxpp_nul(uintmax_t *const *a, uintmax_t *const *b)
{ LIBSIMPLE_CMP_REV_NUMPP_NUL__(uintmax_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_rev_uintmaxp_nul(uintmax_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_rev_uintmaxpp_nul); }
+/* @since 1.6 */
inline int libsimple_cmp_sizep(const size_t *a, const size_t *b)
{ LIBSIMPLE_CMP_NUMP__(size_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_size(size_t base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_sizep); }
+/* @since 1.6 */
inline int libsimple_cmp_sizepp(size_t *const *a, size_t *const *b)
{ LIBSIMPLE_CMP_NUMPP__(size_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_sizep(size_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_sizepp); }
+/* @since 1.6 */
inline int libsimple_cmp_nul_sizepp(size_t *const *a, size_t *const *b)
{ LIBSIMPLE_CMP_NUL_NUMPP__(size_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_nul_sizep(size_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_nul_sizepp); }
+/* @since 1.6 */
inline int libsimple_cmp_sizepp_nul(size_t *const *a, size_t *const *b)
{ LIBSIMPLE_CMP_NUMPP_NUL__(size_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_sizep_nul(size_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_sizepp_nul); }
+/* @since 1.6 */
inline int libsimple_cmp_rev_sizep(const size_t *a, const size_t *b)
{ LIBSIMPLE_CMP_REV_NUMP__(size_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_rev_size(size_t base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_rev_sizep); }
+/* @since 1.6 */
inline int libsimple_cmp_rev_sizepp(size_t *const *a, size_t *const *b)
{ LIBSIMPLE_CMP_REV_NUMPP__(size_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_rev_sizep(size_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_rev_sizepp); }
+/* @since 1.6 */
inline int libsimple_cmp_nul_rev_sizepp(size_t *const *a, size_t *const *b)
{ LIBSIMPLE_CMP_NUL_REV_NUMPP__(size_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_nul_rev_sizep(size_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_nul_rev_sizepp); }
+/* @since 1.6 */
inline int libsimple_cmp_rev_sizepp_nul(size_t *const *a, size_t *const *b)
{ LIBSIMPLE_CMP_REV_NUMPP_NUL__(size_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_rev_sizep_nul(size_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_rev_sizepp_nul); }
+/* @since 1.6 */
inline int libsimple_cmp_ssizep(const ssize_t *a, const ssize_t *b)
{ LIBSIMPLE_CMP_NUMP__(ssize_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_ssize(ssize_t base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_ssizep); }
+/* @since 1.6 */
inline int libsimple_cmp_ssizepp(ssize_t *const *a, ssize_t *const *b)
{ LIBSIMPLE_CMP_NUMPP__(ssize_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_ssizep(ssize_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_ssizepp); }
+/* @since 1.6 */
inline int libsimple_cmp_nul_ssizepp(ssize_t *const *a, ssize_t *const *b)
{ LIBSIMPLE_CMP_NUL_NUMPP__(ssize_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_nul_ssizep(ssize_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_nul_ssizepp); }
+/* @since 1.6 */
inline int libsimple_cmp_ssizepp_nul(ssize_t *const *a, ssize_t *const *b)
{ LIBSIMPLE_CMP_NUMPP_NUL__(ssize_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_ssizep_nul(ssize_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_ssizepp_nul); }
+/* @since 1.6 */
inline int libsimple_cmp_rev_ssizep(const ssize_t *a, const ssize_t *b)
{ LIBSIMPLE_CMP_REV_NUMP__(ssize_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_rev_ssize(ssize_t base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_rev_ssizep); }
+/* @since 1.6 */
inline int libsimple_cmp_rev_ssizepp(ssize_t *const *a, ssize_t *const *b)
{ LIBSIMPLE_CMP_REV_NUMPP__(ssize_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_rev_ssizep(ssize_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_rev_ssizepp); }
+/* @since 1.6 */
inline int libsimple_cmp_nul_rev_ssizepp(ssize_t *const *a, ssize_t *const *b)
{ LIBSIMPLE_CMP_NUL_REV_NUMPP__(ssize_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_nul_rev_ssizep(ssize_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_nul_rev_ssizepp); }
+/* @since 1.6 */
inline int libsimple_cmp_rev_ssizepp_nul(ssize_t *const *a, ssize_t *const *b)
{ LIBSIMPLE_CMP_REV_NUMPP_NUL__(ssize_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_rev_ssizep_nul(ssize_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_rev_ssizepp_nul); }
+/* @since 1.6 */
inline int libsimple_cmp_intptrp(const intptr_t *a, const intptr_t *b)
{ LIBSIMPLE_CMP_NUMP__(intptr_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_intptr(intptr_t base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_intptrp); }
+/* @since 1.6 */
inline int libsimple_cmp_intptrpp(intptr_t *const *a, intptr_t *const *b)
{ LIBSIMPLE_CMP_NUMPP__(intptr_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_intptrp(intptr_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_intptrpp); }
+/* @since 1.6 */
inline int libsimple_cmp_nul_intptrpp(intptr_t *const *a, intptr_t *const *b)
{ LIBSIMPLE_CMP_NUL_NUMPP__(intptr_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_nul_intptrp(intptr_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_nul_intptrpp); }
+/* @since 1.6 */
inline int libsimple_cmp_intptrpp_nul(intptr_t *const *a, intptr_t *const *b)
{ LIBSIMPLE_CMP_NUMPP_NUL__(intptr_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_intptrp_nul(intptr_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_intptrpp_nul); }
+/* @since 1.6 */
inline int libsimple_cmp_rev_intptrp(const intptr_t *a, const intptr_t *b)
{ LIBSIMPLE_CMP_REV_NUMP__(intptr_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_rev_intptr(intptr_t base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_rev_intptrp); }
+/* @since 1.6 */
inline int libsimple_cmp_rev_intptrpp(intptr_t *const *a, intptr_t *const *b)
{ LIBSIMPLE_CMP_REV_NUMPP__(intptr_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_rev_intptrp(intptr_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_rev_intptrpp); }
+/* @since 1.6 */
inline int libsimple_cmp_nul_rev_intptrpp(intptr_t *const *a, intptr_t *const *b)
{ LIBSIMPLE_CMP_NUL_REV_NUMPP__(intptr_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_nul_rev_intptrp(intptr_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_nul_rev_intptrpp); }
+/* @since 1.6 */
inline int libsimple_cmp_rev_intptrpp_nul(intptr_t *const *a, intptr_t *const *b)
{ LIBSIMPLE_CMP_REV_NUMPP_NUL__(intptr_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_rev_intptrp_nul(intptr_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_rev_intptrpp_nul); }
+/* @since 1.6 */
inline int libsimple_cmp_uintptrp(const uintptr_t *a, const uintptr_t *b)
{ LIBSIMPLE_CMP_NUMP__(uintptr_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_uintptr(uintptr_t base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_uintptrp); }
+/* @since 1.6 */
inline int libsimple_cmp_uintptrpp(uintptr_t *const *a, uintptr_t *const *b)
{ LIBSIMPLE_CMP_NUMPP__(uintptr_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_uintptrp(uintptr_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_uintptrpp); }
+/* @since 1.6 */
inline int libsimple_cmp_nul_uintptrpp(uintptr_t *const *a, uintptr_t *const *b)
{ LIBSIMPLE_CMP_NUL_NUMPP__(uintptr_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_nul_uintptrp(uintptr_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_nul_uintptrpp); }
+/* @since 1.6 */
inline int libsimple_cmp_uintptrpp_nul(uintptr_t *const *a, uintptr_t *const *b)
{ LIBSIMPLE_CMP_NUMPP_NUL__(uintptr_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_uintptrp_nul(uintptr_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_uintptrpp_nul); }
+/* @since 1.6 */
inline int libsimple_cmp_rev_uintptrp(const uintptr_t *a, const uintptr_t *b)
{ LIBSIMPLE_CMP_REV_NUMP__(uintptr_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_rev_uintptr(uintptr_t base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_rev_uintptrp); }
+/* @since 1.6 */
inline int libsimple_cmp_rev_uintptrpp(uintptr_t *const *a, uintptr_t *const *b)
{ LIBSIMPLE_CMP_REV_NUMPP__(uintptr_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_rev_uintptrp(uintptr_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_rev_uintptrpp); }
+/* @since 1.6 */
inline int libsimple_cmp_nul_rev_uintptrpp(uintptr_t *const *a, uintptr_t *const *b)
{ LIBSIMPLE_CMP_NUL_REV_NUMPP__(uintptr_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_nul_rev_uintptrp(uintptr_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_nul_rev_uintptrpp); }
+/* @since 1.6 */
inline int libsimple_cmp_rev_uintptrpp_nul(uintptr_t *const *a, uintptr_t *const *b)
{ LIBSIMPLE_CMP_REV_NUMPP_NUL__(uintptr_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_rev_uintptrp_nul(uintptr_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_rev_uintptrpp_nul); }
+/* @since 1.6 */
inline int libsimple_cmp_ptrdiffp(const ptrdiff_t *a, const ptrdiff_t *b)
{ LIBSIMPLE_CMP_NUMP__(ptrdiff_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_ptrdiff(ptrdiff_t base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_ptrdiffp); }
+/* @since 1.6 */
inline int libsimple_cmp_ptrdiffpp(ptrdiff_t *const *a, ptrdiff_t *const *b)
{ LIBSIMPLE_CMP_NUMPP__(ptrdiff_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_ptrdiffp(ptrdiff_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_ptrdiffpp); }
+/* @since 1.6 */
inline int libsimple_cmp_nul_ptrdiffpp(ptrdiff_t *const *a, ptrdiff_t *const *b)
{ LIBSIMPLE_CMP_NUL_NUMPP__(ptrdiff_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_nul_ptrdiffp(ptrdiff_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_nul_ptrdiffpp); }
+/* @since 1.6 */
inline int libsimple_cmp_ptrdiffpp_nul(ptrdiff_t *const *a, ptrdiff_t *const *b)
{ LIBSIMPLE_CMP_NUMPP_NUL__(ptrdiff_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_ptrdiffp_nul(ptrdiff_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_ptrdiffpp_nul); }
+/* @since 1.6 */
inline int libsimple_cmp_rev_ptrdiffp(const ptrdiff_t *a, const ptrdiff_t *b)
{ LIBSIMPLE_CMP_REV_NUMP__(ptrdiff_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_rev_ptrdiff(ptrdiff_t base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_rev_ptrdiffp); }
+/* @since 1.6 */
inline int libsimple_cmp_rev_ptrdiffpp(ptrdiff_t *const *a, ptrdiff_t *const *b)
{ LIBSIMPLE_CMP_REV_NUMPP__(ptrdiff_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_rev_ptrdiffp(ptrdiff_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_rev_ptrdiffpp); }
+/* @since 1.6 */
inline int libsimple_cmp_nul_rev_ptrdiffpp(ptrdiff_t *const *a, ptrdiff_t *const *b)
{ LIBSIMPLE_CMP_NUL_REV_NUMPP__(ptrdiff_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_nul_rev_ptrdiffp(ptrdiff_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_nul_rev_ptrdiffpp); }
+/* @since 1.6 */
inline int libsimple_cmp_rev_ptrdiffpp_nul(ptrdiff_t *const *a, ptrdiff_t *const *b)
{ LIBSIMPLE_CMP_REV_NUMPP_NUL__(ptrdiff_t, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_rev_ptrdiffp_nul(ptrdiff_t *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_rev_ptrdiffpp_nul); }
+/* @since 1.6 */
inline int libsimple_cmp_floatp(const float *a, const float *b)
{ LIBSIMPLE_CMP_NUMP__(float, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_float(float base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_floatp); }
+/* @since 1.6 */
inline int libsimple_cmp_floatpp(float *const *a, float *const *b)
{ LIBSIMPLE_CMP_NUMPP__(float, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_floatp(float *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_floatpp); }
+/* @since 1.6 */
inline int libsimple_cmp_nul_floatpp(float *const *a, float *const *b)
{ LIBSIMPLE_CMP_NUL_NUMPP__(float, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_nul_floatp(float *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_nul_floatpp); }
+/* @since 1.6 */
inline int libsimple_cmp_floatpp_nul(float *const *a, float *const *b)
{ LIBSIMPLE_CMP_NUMPP_NUL__(float, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_floatp_nul(float *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_floatpp_nul); }
+/* @since 1.6 */
inline int libsimple_cmp_rev_floatp(const float *a, const float *b)
{ LIBSIMPLE_CMP_REV_NUMP__(float, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_rev_float(float base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_rev_floatp); }
+/* @since 1.6 */
inline int libsimple_cmp_rev_floatpp(float *const *a, float *const *b)
{ LIBSIMPLE_CMP_REV_NUMPP__(float, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_rev_floatp(float *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_rev_floatpp); }
+/* @since 1.6 */
inline int libsimple_cmp_nul_rev_floatpp(float *const *a, float *const *b)
{ LIBSIMPLE_CMP_NUL_REV_NUMPP__(float, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_nul_rev_floatp(float *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_nul_rev_floatpp); }
+/* @since 1.6 */
inline int libsimple_cmp_rev_floatpp_nul(float *const *a, float *const *b)
{ LIBSIMPLE_CMP_REV_NUMPP_NUL__(float, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_rev_floatp_nul(float *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_rev_floatpp_nul); }
+/* @since 1.6 */
inline int libsimple_cmp_doublep(const double *a, const double *b)
{ LIBSIMPLE_CMP_NUMP__(double, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_double(double base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_doublep); }
+/* @since 1.6 */
inline int libsimple_cmp_doublepp(double *const *a, double *const *b)
{ LIBSIMPLE_CMP_NUMPP__(double, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_doublep(double *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_doublepp); }
+/* @since 1.6 */
inline int libsimple_cmp_nul_doublepp(double *const *a, double *const *b)
{ LIBSIMPLE_CMP_NUL_NUMPP__(double, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_nul_doublep(double *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_nul_doublepp); }
+/* @since 1.6 */
inline int libsimple_cmp_doublepp_nul(double *const *a, double *const *b)
{ LIBSIMPLE_CMP_NUMPP_NUL__(double, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_doublep_nul(double *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_doublepp_nul); }
+/* @since 1.6 */
inline int libsimple_cmp_rev_doublep(const double *a, const double *b)
{ LIBSIMPLE_CMP_REV_NUMP__(double, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_rev_double(double base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_rev_doublep); }
+/* @since 1.6 */
inline int libsimple_cmp_rev_doublepp(double *const *a, double *const *b)
{ LIBSIMPLE_CMP_REV_NUMPP__(double, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_rev_doublep(double *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_rev_doublepp); }
+/* @since 1.6 */
inline int libsimple_cmp_nul_rev_doublepp(double *const *a, double *const *b)
{ LIBSIMPLE_CMP_NUL_REV_NUMPP__(double, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_nul_rev_doublep(double *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_nul_rev_doublepp); }
+/* @since 1.6 */
inline int libsimple_cmp_rev_doublepp_nul(double *const *a, double *const *b)
{ LIBSIMPLE_CMP_REV_NUMPP_NUL__(double, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_rev_doublep_nul(double *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_rev_doublepp_nul); }
+/* @since 1.6 */
inline int libsimple_cmp_strp(const char *const *a, const char *const *b)
{ LIBSIMPLE_CMP_FUNP__(const char *, strcmp, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_str(const char *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_strp); }
+/* @since 1.6 */
inline int libsimple_cmp_strpp(const char **const *a, const char **const *b)
{ LIBSIMPLE_CMP_FUNPP__(const char *, strcmp, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_strp(const char **base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_strpp); }
+/* @since 1.6 */
inline int libsimple_cmp_nul_strpp(const char **const *a, const char **const *b)
{ LIBSIMPLE_CMP_NUL_FUNPP__(const char *, strcmp, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_nul_strp(const char **base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_nul_strpp); }
+/* @since 1.6 */
inline int libsimple_cmp_strpp_nul(const char **const *a, const char **const *b)
{ LIBSIMPLE_CMP_FUNPP_NUL__(const char *, strcmp, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_strp_nul(const char **base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_strpp_nul); }
+/* @since 1.6 */
inline int libsimple_cmp_rev_strp(const char *const *a, const char *const *b)
{ LIBSIMPLE_CMP_REV_FUNP__(const char *, strcmp, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_rev_str(const char *base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_rev_strp); }
+/* @since 1.6 */
inline int libsimple_cmp_rev_strpp(const char **const *a, const char **const *b)
{ LIBSIMPLE_CMP_REV_FUNPP__(const char *, strcmp, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_rev_strp(const char **base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_rev_strpp); }
+/* @since 1.6 */
inline int libsimple_cmp_nul_rev_strpp(const char **const *a, const char **const *b)
{ LIBSIMPLE_CMP_NUL_REV_FUNPP__(const char *, strcmp, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_nul_rev_strp(const char **base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_nul_rev_strpp); }
+/* @since 1.6 */
inline int libsimple_cmp_rev_strpp_nul(const char **const *a, const char **const *b)
{ LIBSIMPLE_CMP_REV_FUNPP_NUL__(const char *, strcmp, a, b); }
+/* @since 1.6 */
inline void libsimple_qsort_rev_strp_nul(const char **base[], size_t n)
{ qsort(base, n, sizeof(*base), (int (*)(const void *, const void *))&libsimple_cmp_rev_strpp_nul); }