diff options
-rw-r--r-- | libsimple/abs.h | 48 | ||||
-rw-r--r-- | libsimple/ascii.h | 69 | ||||
-rw-r--r-- | libsimple/exec.h | 22 | ||||
-rw-r--r-- | libsimple/net.h | 2 | ||||
-rw-r--r-- | libsimple/path.h | 42 | ||||
-rw-r--r-- | libsimple/printf.h | 8 | ||||
-rw-r--r-- | libsimple/random.h | 6 | ||||
-rw-r--r-- | libsimple/sort.h | 576 |
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); } |